Batch delivery
EffiLink delivers webhook events in batches. Each HTTP POST to your endpoint contains a JSON array of event objects — up to 1,000 events per push. A single push may contain events of different types, so your handler should branch on theEventCode field of each object in the array.
Common fields
The following fields appear across most or all event types. Individual events may include additional fields documented in their own sections below.Event types
Dropped — email not sent due to filter
Dropped — email not sent due to filter
EventCode:
DroppedFired when EffiLink prevents an email from being sent because the recipient’s address is flagged by a suppression filter. The email is never submitted to the mail server.When it fires: Before send, when properties.email_bounced_flag is non-zero on the contact record.Reason codes
Bounced — delivery failed
Bounced — delivery failed
EventCode:
BouncedFired when an email was submitted to the receiving mail server but delivery failed. EffiLink distinguishes between permanent failures (hard bounce) and temporary failures (soft bounce).When it fires: After submission to the receiving mail server, upon receiving a failure response.Reason codes
Delivered — email accepted by recipient server
Delivered — email accepted by recipient server
EventCode:
DeliveredFired when the recipient’s mail server accepted the email. Note that “Delivered” means the server accepted the message — it does not guarantee the email reached the inbox (it may still be filtered to spam by the recipient’s mail client).When it fires: Upon receiving a successful 250 OK (or equivalent) response from the receiving mail server.Opened — recipient opened the email
Opened — recipient opened the email
EventCode:
OpenedFired each time a recipient opens the email. If the same recipient opens the email multiple times, a separate Opened event is generated for each open. Open tracking works via a hidden 1×1 pixel image embedded in the email body.When it fires: When the tracking pixel is loaded by the recipient’s email client.Open tracking requires images to be loaded by the recipient’s email client. Some clients block image loading by default, which means opens may be under-counted. Apple Mail Privacy Protection (MPP) may also cause inflated or delayed open events.
Clicked — recipient clicked a tracked link
Clicked — recipient clicked a tracked link
EventCode:
ClickedFired each time a recipient clicks a tracked link in the email. One event is generated per click, so a recipient clicking three different links produces three Clicked events. Click tracking must be enabled on your EffiLink account or campaign for this event to fire.When it fires: When a recipient clicks a tracked link and is redirected through the EffiLink click-tracking service.Unsubscribed — recipient opted out
Unsubscribed — recipient opted out
EventCode:
UnsubscribedFired when a recipient clicks the unsubscribe link in an email. EffiLink automatically updates the contact’s email_bounced_flag to 2 (unsubscribe filter), preventing future sends.When it fires: When the unsubscribe action is confirmed (either one-click or via a confirmation page, depending on your settings).SpamReport — recipient marked as spam
SpamReport — recipient marked as spam
EventCode:
SpamReportFired when a recipient reports the email as spam via their email client’s “Report Spam” or “Mark as Junk” button (feedback loop events). EffiLink automatically updates the contact’s email_bounced_flag to 3 (complaint filter).When it fires: When a feedback loop complaint is received from the recipient’s email provider.TaskStatus — campaign task status change
TaskStatus — campaign task status change
EventCode:
TaskStatusFired when the status of a campaign task changes. This event is useful for triggering downstream workflows — for example, starting a post-campaign report job when a send completes.When it fires: When a campaign transitions to Created (task scheduled or queued) or Completed (all sends attempted).Further reading
- Webhooks overview and setup — configure your endpoint, security best practices, and the API reference.
- Webhook Config API — programmatically get and save your webhook configuration.
- Contact Properties — understand
email_bounced_flagvalues that appear in Dropped event reason codes.