Webhook Events
Complete list of webhook event types and their payloads.
Event Types
| Event | Description |
|---|---|
email.sent | Email accepted by recipient's mail server |
email.delivered | Email confirmed delivered to inbox |
email.bounced | Email bounced (hard or soft) |
email.complained | Recipient marked email as spam |
email.opened | Email was opened (if tracking enabled) |
email.clicked | Link in email was clicked (if tracking enabled) |
email.delivery_delayed | Email delivery was delayed |
email.suppressed | Email was suppressed (recipient on suppression list) |
email.scheduled | Email was scheduled for future delivery |
email.received | Inbound email was received |
contact.created | New contact was added to an audience |
contact.updated | Contact information was updated |
contact.deleted | Contact was removed from an audience |
domain.created | New domain was added |
domain.updated | Domain settings were changed |
domain.deleted | Domain was removed |
domain.verified | Domain verification completed |
email.sent
Fired when the email is accepted by the recipient's mail server.
{
"id": "evt_abc123",
"type": "email.sent",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"tags": ["welcome"]
}
}email.delivered
Fired when delivery is confirmed. Not all mail servers report this.
{
"id": "evt_def456",
"type": "email.delivered",
"timestamp": "2024-01-15T10:30:02Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"deliveredAt": "2024-01-15T10:30:02Z"
}
}email.bounced
Fired when an email bounces. Includes bounce type and reason.
{
"id": "evt_ghi789",
"type": "email.bounced",
"timestamp": "2024-01-15T10:30:01Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"bounceType": "hard",
"bounceReason": "User unknown",
"diagnosticCode": "550 5.1.1 User not found"
}
}Bounce Types
hard- Permanent failure (invalid address, domain doesn't exist)soft- Temporary failure (mailbox full, server unavailable)
email.complained
Fired when a recipient marks your email as spam.
{
"id": "evt_jkl012",
"type": "email.complained",
"timestamp": "2024-01-15T11:45:00Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"complainedAt": "2024-01-15T11:45:00Z"
}
}email.opened
Fired when an email is opened (requires open tracking to be enabled).
{
"id": "evt_mno345",
"type": "email.opened",
"timestamp": "2024-01-15T12:00:00Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"openedAt": "2024-01-15T12:00:00Z",
"userAgent": "Mozilla/5.0...",
"ipAddress": "203.0.113.1"
}
}email.clicked
Fired when a link in the email is clicked (requires click tracking).
{
"id": "evt_pqr678",
"type": "email.clicked",
"timestamp": "2024-01-15T12:05:00Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"clickedAt": "2024-01-15T12:05:00Z",
"link": "https://example.com/offer",
"userAgent": "Mozilla/5.0...",
"ipAddress": "203.0.113.1"
}
}email.delivery_delayed
Fired when email delivery is temporarily delayed due to recipient server issues.
{
"id": "evt_stu901",
"type": "email.delivery_delayed",
"timestamp": "2024-01-15T10:35:00Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"delayedAt": "2024-01-15T10:35:00Z",
"reason": "Recipient server temporarily unavailable",
"retryCount": 1,
"nextRetryAt": "2024-01-15T10:50:00Z"
}
}email.suppressed
Fired when an email is not sent because the recipient is on your suppression list.
{
"id": "evt_vwx234",
"type": "email.suppressed",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"suppressedAt": "2024-01-15T10:30:00Z",
"reason": "BOUNCE",
"originalEventAt": "2024-01-10T08:00:00Z"
}
}Suppression Reasons
BOUNCE- Previous email to this address bouncedCOMPLAINT- Recipient previously marked email as spamMANUAL- Manually added to suppression list
email.scheduled
Fired when an email is scheduled for future delivery.
{
"id": "evt_yza567",
"type": "email.scheduled",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"emailId": "clx1abc123def456",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello!",
"scheduledFor": "2024-01-16T09:00:00Z",
"timezone": "America/New_York"
}
}email.received
Fired when an inbound email is received on your configured receiving address.
{
"id": "evt_bcd890",
"type": "email.received",
"timestamp": "2024-01-15T14:20:00Z",
"data": {
"emailId": "clx1xyz789abc123",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Re: Your inquiry",
"receivedAt": "2024-01-15T14:20:00Z",
"textBody": "Thank you for reaching out...",
"htmlBody": "<p>Thank you for reaching out...</p>",
"attachments": [
{
"filename": "document.pdf",
"contentType": "application/pdf",
"size": 102400
}
]
}
}contact.created
Fired when a new contact is added to an audience.
{
"id": "evt_efg123",
"type": "contact.created",
"timestamp": "2024-01-15T09:00:00Z",
"data": {
"contactId": "clx1contact123",
"audienceId": "clx1audience456",
"audienceName": "Newsletter Subscribers",
"email": "[email protected]",
"firstName": "John",
"lastName": "Doe",
"createdAt": "2024-01-15T09:00:00Z",
"source": "api",
"customFields": {
"company": "Acme Inc",
"plan": "pro"
}
}
}contact.updated
Fired when contact information is updated.
{
"id": "evt_hij456",
"type": "contact.updated",
"timestamp": "2024-01-15T11:30:00Z",
"data": {
"contactId": "clx1contact123",
"audienceId": "clx1audience456",
"audienceName": "Newsletter Subscribers",
"email": "[email protected]",
"updatedAt": "2024-01-15T11:30:00Z",
"changes": {
"firstName": {
"old": "John",
"new": "Jonathan"
},
"customFields.plan": {
"old": "pro",
"new": "enterprise"
}
}
}
}contact.deleted
Fired when a contact is removed from an audience.
{
"id": "evt_klm789",
"type": "contact.deleted",
"timestamp": "2024-01-15T15:00:00Z",
"data": {
"contactId": "clx1contact123",
"audienceId": "clx1audience456",
"audienceName": "Newsletter Subscribers",
"email": "[email protected]",
"deletedAt": "2024-01-15T15:00:00Z",
"reason": "unsubscribed"
}
}Deletion Reasons
unsubscribed- Contact unsubscribed from the audiencemanual- Manually deleted via dashboard or APIbounced- Removed due to hard bouncecomplained- Removed due to spam complaint
domain.created
Fired when a new sending domain is added to your account.
{
"id": "evt_nop012",
"type": "domain.created",
"timestamp": "2024-01-15T08:00:00Z",
"data": {
"domainId": "clx1domain123",
"domain": "mail.yourdomain.com",
"createdAt": "2024-01-15T08:00:00Z",
"status": "pending",
"dnsRecords": [
{
"type": "TXT",
"name": "_dmarc.mail.yourdomain.com",
"value": "v=DMARC1; p=none"
}
]
}
}domain.updated
Fired when domain settings are changed.
{
"id": "evt_qrs345",
"type": "domain.updated",
"timestamp": "2024-01-15T10:00:00Z",
"data": {
"domainId": "clx1domain123",
"domain": "mail.yourdomain.com",
"updatedAt": "2024-01-15T10:00:00Z",
"changes": {
"openTracking": {
"old": false,
"new": true
},
"clickTracking": {
"old": false,
"new": true
}
}
}
}domain.deleted
Fired when a domain is removed from your account.
{
"id": "evt_tuv678",
"type": "domain.deleted",
"timestamp": "2024-01-15T16:00:00Z",
"data": {
"domainId": "clx1domain123",
"domain": "old.yourdomain.com",
"deletedAt": "2024-01-15T16:00:00Z"
}
}domain.verified
Fired when domain DNS verification is completed successfully.
{
"id": "evt_wxy901",
"type": "domain.verified",
"timestamp": "2024-01-15T12:00:00Z",
"data": {
"domainId": "clx1domain123",
"domain": "mail.yourdomain.com",
"verifiedAt": "2024-01-15T12:00:00Z",
"dkimVerified": true,
"spfVerified": true,
"dmarcVerified": true
}
}