Developer Guide
Webhook Events Reference
Overview
AcelleMail fires webhooks to your URL when key events occur. Configure endpoints at Settings → Webhooks → Add.
Event Types
| Event | When it fires |
|---|---|
subscriber.created |
New subscriber added to a list |
subscriber.unsubscribed |
Subscriber opts out |
subscriber.bounced |
Hard or soft bounce recorded |
subscriber.complained |
Spam complaint received |
campaign.sent |
Campaign delivery completed |
campaign.opened |
First open tracked |
campaign.clicked |
Link click recorded |
Payload Example
All events share a common envelope:
{
"event": "subscriber.created",
"fired_at": "2026-03-15T10:23:00Z",
"data": {
"subscriber": {
"uid": "sub_abc123",
"email": "user@example.com",
"first_name": "Jane",
"status": "subscribed",
"list_uid": "list_xyz"
}
}
}
Verifying Webhook Signatures
AcelleMail signs each webhook with HMAC-SHA256. Verify in PHP:
$secret = 'your_webhook_secret';
$signature = $_SERVER['HTTP_X_ACELLE_SIGNATURE'] ?? '';
$payload = file_get_contents('php://input');
$expected = hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(401);
exit('Invalid signature');
}
Retry Logic
If your endpoint returns a non-2xx status, AcelleMail retries up to 5 times with exponential backoff (1 min, 5 min, 30 min, 2 hrs, 8 hrs). After 5 failures the webhook is marked inactive.