Skip to content

Latest commit

 

History

History
22 lines (15 loc) · 1.91 KB

File metadata and controls

22 lines (15 loc) · 1.91 KB

Notification Delivery

ec_users_notify_with_receipts() is the only notification insertion API. Every production producer supplies a stable producer namespace and a producer-owned idempotency_key. The network-wide unique receipt is scoped by producer, key, and recipient.

The result contains one recipient status:

  • inserted: this call created the notification.
  • existing: the same producer/key contract already created it; treat this as successful delivery.
  • failed: no verified notification exists for this recipient; apply the producer's retry policy with the same key.

Required payload fields are actor_id, type, title, and link; item_id is optional. Producers that own email delivery must also set producer_owns_email and follow the receipt release contract documented on ec_users_release_notification_receipt().

Users Producers

Producer Idempotency key Outcome policy
extrachill-users.concert.show-reminder user:{user}:event:{event}:blog:{blog} The scheduled callback accepts inserted/existing and preserves its prior no-retry behavior on failure.
extrachill-users.concert.milestone user:{user}:count:{count} Repeated milestone evaluation converges on one row; the mark operation is not failed by notification failure.
extrachill-users.artist-dispatch request:{request}:event:{event} Inserted/existing finalizes the transition delivery ledger. Failed clears the reservation for retry; ambiguous ledger state still requires reconciliation.
extrachill-users.publish-notify context:{context}:blog:{blog}:post:{post} The post guard records every attempted valid recipient, including failed, preserving the observer's attempt-once/no-storm policy.

Registered publish-notify contexts and blog IDs are part of the key because post IDs are only unique within a site and independent sources may watch the same post.