Instantly · AsyncAPI Specification
Instantly Ai Webhooks
Version
View Spec
View on GitHub
Cold EmailOutboundSalesDeliverabilityLead DatabaseEmail VerificationWebhookAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: https://developer.instantly.ai/guides/webhook-events
also:
- https://github.com/Instantly-ai/instantly-starter-kit/blob/main/docs/api/webhooks.md
- openapi/instantly-ai-api-v2-openapi.yml
spec_type: null
asyncapi_published: false
asyncapi_note: >-
Instantly documents a complete webhook event surface — 17 named event types with a documented
payload schema, plus 12 REST operations for managing subscriptions — but publishes no AsyncAPI
document. Nothing was fabricated to fill the gap; this file is the captured webhook catalog and
the apis.yml pointer is type Webhooks, not AsyncAPI.
transport: http-post
subscription:
management_operations:
- listWebhook
- createWebhook
- getWebhook
- patchWebhook
- deleteWebhook
- testWebhook
- resumeWebhook
- listWebhookEventTypes
- listWebhookEvent
- getWebhookEvent
- getWebhookEventsSummary
- getWebhookEventsSummaryByDate
scopes:
- webhooks:read
- webhooks:create
- webhooks:update
- webhooks:delete
- webhook_events:read
required_field: target_hook_url
optional_fields:
- event_type
- campaign
- headers
detail: >-
Only target_hook_url is required. Scope a subscription with event_type (or "all_events") and
optionally to a single campaign. Subscriptions auto-disable after repeated delivery failures and
are re-enabled with resumeWebhook; testWebhook validates a receiver.
security:
signature: none
detail: >-
No HMAC and no signature header. The only delivery authentication available is the optional
`headers` object set on the subscription, which the receiver must verify itself.
gotcha: >-
Event-type naming differs between the subscription and the payload. Subscribe with e.g.
email_link_clicked or reply_received, but match on the payload's actual event_type value, e.g.
link_clicked or auto_reply_received. Custom workspace labels arrive as the raw label string.
listWebhookEventTypes enumerates the full set.
payload:
content_type: application/json
base_fields:
- {name: timestamp, type: string, description: ISO timestamp when the event occurred}
- {name: event_type, type: string, description: Type of event}
- {name: workspace, type: string, description: UUID of the workspace}
- {name: campaign_id, type: string, description: UUID of the campaign}
- {name: campaign_name, type: string, description: Name of the campaign}
optional_fields:
- {name: lead_email, type: string}
- {name: email_account, type: string}
- {name: unibox_url, type: string, description: URL to view the conversation in Unibox (reply events only)}
- {name: step, type: integer, description: Step number in the campaign, starting at 1}
- {name: variant, type: integer, description: Variant number of the step, starting at 1}
- {name: is_first, type: boolean}
- {name: email_id, type: string, description: 'The reply_to_uuid — pass it to replyToEmail to respond in-thread'}
- {name: email_subject, type: string}
- {name: email_text, type: string}
- {name: email_html, type: string}
- {name: reply_text_snippet, type: string}
- {name: reply_subject, type: string}
- {name: reply_text, type: string}
- {name: reply_html, type: string}
note: Additional lead-data fields from the workspace database may appear as extra keys.
event_count: 17
events:
- {name: email_sent, group: email, description: An email was sent}
- {name: email_opened, group: email, description: A lead opened an email}
- {name: reply_received, group: email, description: A reply was received from a lead}
- {name: auto_reply_received, group: email, description: An auto-reply was received}
- {name: link_clicked, group: email, description: A lead clicked a tracked link, subscribe as email_link_clicked}
- {name: email_bounced, group: email, description: An email bounced}
- {name: lead_unsubscribed, group: email, description: A lead unsubscribed}
- {name: account_error, group: email, description: An account-level error occurred}
- {name: campaign_completed, group: email, description: A campaign completed}
- {name: lead_neutral, group: lead-status, description: Lead marked as neutral}
- {name: lead_interested, group: lead-status, description: Lead marked as interested}
- {name: lead_not_interested, group: lead-status, description: Lead marked as not interested}
- {name: lead_meeting_booked, group: meeting, description: A meeting was booked}
- {name: lead_meeting_completed, group: meeting, description: A meeting was completed}
- {name: lead_closed, group: lead, description: Lead marked as closed}
- {name: lead_out_of_office, group: lead, description: Lead is out of office}
- {name: lead_wrong_person, group: lead, description: Lead marked as wrong person}
custom_events:
supported: true
detail: Any custom label configured in the workspace is sent as the event_type value as-is.