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

ProducerIdempotency keyOutcome policy
extrachill-users.concert.show-reminderuser:{user}:event:{event}:blog:{blog}The scheduled callback accepts inserted/existing and preserves its prior no-retry behavior on failure.
extrachill-users.concert.milestoneuser:{user}:count:{count}Repeated milestone evaluation converges on one row; the mark operation is not failed by notification failure.
extrachill-users.artist-dispatchrequest:{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-notifycontext:{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.