Activity on an advanced (multichannel) campaign
Sent to URLs registered with type: advanced.
- EMAIL_SENT: email step sent (the documented name MAIL_SENT never fires).
- OPENED, CLICKED, UNSUBSCRIBED: same tracking rules as legacy email, delivered 30 to 60 seconds later; contact without id, no sender.
- MAIL_REPLIED: first email reply, with reply, sentiment, sender, senderName, messageId, campaignId.
- BOUNCED: bounce detected; no campaign field, step 0.
- VISITED, INVITED, ACCEPTED, MESSAGE_SENT (text in content), INMAIL_SENT, LIKED: LinkedIn actions.
- LINKEDIN_REPLIED: LinkedIn reply with reply and sentiment; campaignId, linkedinUrlProfile and linkedinId only when detected in real time.
- WHATSAPP_MESSAGE_SENT, WHATSAPP_REPLIED: WhatsApp message sent, reply received (reply).
- CAMPAIGN_ENDING: see the campaignEnding webhook.
Never sent: SENT, MAIL_SENT, FOLLOWED, TASK_COMPLETED, TASK_FAILED, FAILED_ACTION, EXCLUDED, RE_REPLY_EMAIL, RE_REPLY_LINKEDIN. Only the real time LinkedIn path retries (once, network errors).
Delivery. One POST per event and per registered URL, header Content-Type: application/json, JSON body, no signature or secret header, default User-Agent of the HTTP library. No timeout is set. Your response (status and body) is ignored: an HTTP error is never retried. Network errors are retried only for some events (see each list). No event ID, no ordering guarantee, no replay; a URL registered twice receives everything twice. Absent fields are omitted, never null.
Payload
Response
Any response is accepted. Emelia ignores the status and the body.
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.