Zoho Campaigns · AsyncAPI Specification

Zoho Campaigns Email Api Webhooks

Version

View Spec View on GitHub Email MarketingCampaignsMailing ListsSubscribersEmail TemplatesA/B TestingCampaign AnalyticsMarketing AutomationTransactional EmailWebhookAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
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.