Zoho Campaigns · AsyncAPI Specification
Zoho Campaigns Email Api Webhooks
Version
View Spec
View on GitHub
Email MarketingCampaignsMailing ListsSubscribersEmail TemplatesA/B TestingCampaign AnalyticsMarketing AutomationTransactional EmailWebhookAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: https://www.zoho.com/campaigns/help/emailapi/webhook-events.html
spec_type: null
spec_note: >-
Zoho publishes NO AsyncAPI document for Zoho Campaigns. Probed the docs host,
the API host and the GitHub org; nothing served. What the provider does
publish is a complete, documented webhook event catalog with per-event payload
attribute tables and sample payloads, plus a CRUD management API for the
webhook subscriptions themselves. That catalog is captured below verbatim from
the published pages — it is a real event surface, not a fabricated AsyncAPI.
name: Zoho Campaigns Email API webhooks
description: >-
Event webhooks for the Zoho Campaigns Email API. Delivery-lifecycle events for
a transmission (Zoho's term for a campaign send) are POSTed to a subscriber URL
configured through the Webhook Settings API.
transport: HTTP POST
docs:
events: https://www.zoho.com/campaigns/help/emailapi/webhook-events.html
management: https://www.zoho.com/campaigns/help/emailapi/webhooks.html
user_guide: https://help.zoho.com/portal/en/kb/campaigns/user-guide/settings/developer-space/articles/how-to-configure-webhooks
management_api:
base: https://campaigns.zoho.com/emailapi/v2/settings/webhook
auth: 'Authorization: Zoho-zapikey <api_key>'
operations:
- name: Create a webhook
method: POST
path: /emailapi/v2/settings/webhook
docs: https://www.zoho.com/campaigns/help/emailapi/webhooks/create-webhook.html
- name: Modify a webhook
method: PUT
path: /emailapi/v2/settings/webhook/{webhook_id}
docs: https://www.zoho.com/campaigns/help/emailapi/webhooks/modify-webhook.html
- name: Get webhook details
method: GET
path: /emailapi/v2/settings/webhook/{webhook_id}
docs: https://www.zoho.com/campaigns/help/emailapi/webhooks/get-webhook.html
- name: Get all webhooks
method: GET
path: /emailapi/v2/settings/webhook
docs: https://www.zoho.com/campaigns/help/emailapi/webhooks/get-all-webhooks.html
- name: Delete a webhook
method: DELETE
path: /emailapi/v2/settings/webhook/{webhook_id}
docs: https://www.zoho.com/campaigns/help/emailapi/webhooks/delete-webhook.html
subscriber_auth_modes:
- none
- auth-token
- custom-header
note: >-
The provider's own Postman collection ships three Create-a-webhook variants
("no auth", "auth token", and the default), which is how the three
subscriber authentication modes above are evidenced.
envelope:
fields:
- {name: webhook_name, type: String, description: Name of the webhook you configured}
- {name: webhook_id, type: String, description: ID of the configured webhook}
- {name: action, type: String, description: Name of the event}
- {name: actionType, type: String, description: Type of action}
- {name: action_by, type: String, description: Indicates by whom the action was made}
- {name: data, type: JSON Array, description: An array of data about the events}
note: >-
Every event shares this outer envelope; the per-event attributes below appear
inside each element of `data[]`.
events:
- name: Delivered
action: email_delivered
actionType: email_delivered
action_by: user
description: >-
A delivered event occurs when a mail successfully reaches the recipient's
mail server. This does not mean the email landed in the inbox or was read.
docs: https://www.zoho.com/campaigns/help/emailapi/events/delivered.html
data_fields:
- {name: action_time, type: Long, description: Time in UTC milliseconds at which the delivered event happened}
- {name: contact_id, type: Long, description: ID of the contact}
- {name: contact_email, type: String, description: Email address of the contact}
- {name: rcpt_additional_data, type: JSON Object, description: Additional recipient data supplied in the Transmission or Recipient List API}
- {name: transmission_name, type: String, description: The name you provided for the transmission}
- {name: injected_time, type: Long, description: Time in UTC milliseconds at which the transmission was created}
- {name: transmission_id, type: String, description: Unique system-generated transmission ID}
- {name: zuid, type: Long, description: ID of the user that sent the transmission API request}
- name: Bounce
action: bounce
description: >-
Called whenever one of your emails bounces. On a hard bounce the contact is
automatically added to the suppression list.
docs: https://www.zoho.com/campaigns/help/emailapi/events/bounce.html
data_fields:
- {name: bounce_code, type: String, description: Bounce code provided by the recipient email service provider}
- {name: bounce_type, type: String, description: hard bounce or soft bounce}
- {name: bounce_extended_code, type: String, description: Additional code indicating a specific bounce case}
- {name: bounce_reason, type: String, description: Reason for the bounce}
- {name: action_time, type: Long, description: Time in UTC milliseconds at which the bounce happened}
- {name: sending_ip, type: String, description: IP through which the mail was attempted}
- {name: contact_id, type: Long, description: ID of the contact}
- {name: contact_email, type: String, description: Email address of the contact}
- {name: rcpt_domain, type: String, description: Domain of the recipient}
- {name: rcpt_additional_data, type: JSON Object, description: Additional recipient data}
- {name: from, type: String, description: Sender address}
- {name: subject, type: String, description: Subject of the transmission}
- {name: message_id, type: String, description: Message ID of the bounced email}
- {name: transmission_name, type: String, description: Transmission name}
- {name: injected_time, type: Long, description: Transmission creation time}
- {name: transmission_id, type: String, description: Transmission ID}
- {name: zuid, type: Long, description: Sending user ID}
side_effect: Hard bounce adds the contact to the suppression list automatically
- name: Spam
action: spam
description: >-
Occurs when one or more recipients mark your email as spam. Some providers
only trigger it after a threshold is crossed.
docs: https://www.zoho.com/campaigns/help/emailapi/events/spam.html
data_fields:
- {name: action_time, type: Long, description: Time in UTC milliseconds at which the spam event happened}
- {name: sending_ip, type: String, description: IP through which the email was sent}
- {name: contact_id, type: Long, description: ID of the contact who marked the email as spam}
- {name: contact_email, type: String, description: Email address of that contact}
- {name: rcpt_domain, type: String, description: Domain of the recipient}
- {name: rcpt_additional_data, type: JSON Object, description: Additional recipient data}
- {name: from, type: String, description: Sender address}
- {name: subject, type: String, description: Subject of the transmission}
- {name: message_id, type: String, description: Message ID}
- {name: transmission_name, type: String, description: Transmission name}
- {name: injected_time, type: Long, description: Transmission creation time}
- {name: transmission_id, type: Long, description: Transmission ID}
- {name: zuid, type: Long, description: Sending user ID}
- name: Opens
action: email_open
actionType: email_open
action_by: contact
description: An open event occurs when a recipient opens your email.
docs: https://www.zoho.com/campaigns/help/emailapi/events/opens.html
data_fields:
- {name: action_time, type: Long, description: Time in UTC milliseconds at which the open happened}
- {name: contact_id, type: Long, description: ID of the contact who opened the email}
- {name: contact_email, type: String, description: Email address of that contact}
- {name: rcpt_additional_data, type: JSON Object, description: Additional recipient data}
- {name: transmission_name, type: String, description: Transmission name}
- {name: injected_time, type: Long, description: Transmission creation time}
- {name: transmission_id, type: String, description: Transmission ID}
- {name: zuid, type: Long, description: Sending user ID}
- name: Clicks
action: email_click
actionType: email_click
action_by: contact
description: A click event occurs when a recipient clicks any URL in your content.
docs: https://www.zoho.com/campaigns/help/emailapi/events/clicks.html
data_fields:
- {name: action_time, type: Long, description: Time in UTC milliseconds at which the click happened}
- {name: contact_id, type: Long, description: ID of the contact who clicked}
- {name: contact_email, type: String, description: Email address of that contact}
- {name: click_url, type: String, description: The link which was clicked by the contact}
- {name: rcpt_additional_data, type: JSON Object, description: Additional recipient data}
- {name: transmission_name, type: String, description: Transmission name}
- {name: injected_time, type: Long, description: Transmission creation time}
- {name: transmission_id, type: String, description: Transmission ID}
- {name: zuid, type: Long, description: Sending user ID}
- name: Unsubscribes
action: unsubscribed
actionType: doNotMail
action_by: contact
description: >-
Occurs when a recipient clicks the unsubscribe link in your content or the
unsubscribe button offered by their email service provider.
docs: https://www.zoho.com/campaigns/help/emailapi/events/unsubscribes.html
data_fields:
- {name: action_time, type: Long, description: Time in UTC milliseconds at which the unsubscribe happened}
- {name: contact_id, type: Long, description: ID of the contact who unsubscribed}
- {name: contact_email, type: String, description: Email address of that contact}
- {name: rcpt_additional_data, type: JSON Object, description: Additional recipient data}
- {name: transmission_name, type: String, description: Transmission name}
- {name: injected_time, type: Long, description: Transmission creation time}
- {name: transmission_id, type: String, description: Transmission ID}
- {name: zuid, type: Long, description: Sending user ID}
summary:
event_count: 6
asyncapi_published: false
webhook_management_api: true
signature_verification: >-
Not documented. Zoho documents an optional auth token / custom header on the
subscription, but no HMAC request signature over the payload.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/zoho-campaigns-email-api-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.