How webhooks work
- An event occurs — for example, a recipient opens an email.
- EffiLink batches the event — events are grouped into batches of up to 1,000 per push to keep throughput high without overwhelming your endpoint.
- EffiLink POSTs to your endpoint — a JSON array is sent to your configured callback URL over HTTPS.
- Your server processes the payload — parse the array and handle each event object.
Configure your webhook URL
Via the dashboard
The simplest way to get started is to set a default webhook URL in the EffiLink dashboard:- Go to Settings → Webhooks.
- Enter your HTTPS callback URL.
- Select the event types you want to receive.
- Toggle webhooks to Enabled and save.
Via the API
Use the Webhook Config API to read or update your webhook settings programmatically. Get current configuration —POST /v5/webhook/get
No request body required. Returns the current webhook configuration:
Save configuration —
POST /v5/webhook/save
Example — enable delivered and opened events with a default URL:
Example incoming webhook payload
Below is what your endpoint receives when EffiLink delivers a batch. The array may contain events of mixed types in a single push.Supported event types
For complete field-level documentation for each event type, see Webhook Events.
Security considerations
Validate the User-Agent header
Every webhook request from EffiLink includes the headerUser-Agent: YiyeWebhooks. Check for this value on your endpoint as a first-line filter to reject requests from unknown sources.
Plan for duplicate delivery (idempotency)
EffiLink may retry delivery if your endpoint does not respond with an HTTP2xx status code within the expected window. This means your application can receive the same event more than once. Design your event handler to be idempotent — use UniqueMsgID combined with EventCode as a composite key to detect and skip duplicate events before writing to your database or triggering downstream actions.
Use HTTPS
Always configure an HTTPS callback URL. Plain HTTP endpoints are not recommended and may be blocked in future platform versions.Respond quickly
Return an HTTP200 response as fast as possible — ideally before any heavy processing. Offload work to a background queue so your endpoint does not time out and inadvertently trigger retries.