Unbounce · AsyncAPI Specification
Unbounce Webhooks
Version
View Spec
View on GitHub
Landing PagesConversion Rate OptimizationMarketingA/B TestingLead GenerationMarketing AutomationAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: https://documentation.unbounce.com/hc/en-us/articles/203510044-Using-a-Webhook
source_updated: '2026-02-06'
spec_type: null
asyncapi_published: false
note: >-
Unbounce publishes NO AsyncAPI document and no event catalog. It does document one
real outbound webhook — the Form Submit Webhook — in its help center, captured here
verbatim. This is a single-event, page-scoped, UI-configured surface: there is no API
to register, list, or delete a webhook, so it cannot be provisioned programmatically.
Nothing below was authored or inferred by API Evangelist.
transport: HTTP POST
security:
signing: false
secret: false
note: >-
Unbounce does not sign webhook payloads and publishes no shared secret or HMAC
header, so a receiver cannot verify authenticity from the request alone. The
documented mitigation is source-IP allowlisting; custom headers can be added
per webhook for services that require them.
source_ips:
- 54.241.34.25
- 50.19.99.184
custom_headers: supported (optional, configured per webhook)
delivery:
expected_response: '200'
detail: >-
"Be sure to return a 200 response to ensure our webhook sees the post as successful."
retries: not documented
ordering: not documented
configuration:
where: Page Overview -> Integrations tab -> Webhooks tab -> +Add Webhook
scope: per page, popup, or sticky bar
api_managed: false
content_types:
- application/x-www-form-urlencoded
- application/json
- application/xml
default_content_type: application/x-www-form-urlencoded
field_mapping: >-
Fields can be removed or renamed when the content type is JSON or XML; the
urlencoded default sends the raw form field IDs.
events:
- name: form_submit
title: Form Submit Webhook
trigger: A visitor submits a form on an Unbounce landing page, popup, or sticky bar.
method: POST
payload_variants:
- data.json
- data.xml
top_level_fields:
- {name: page_url, description: The URL of the page that contains the form.}
- {name: page_name, description: The name given to the page.}
- {name: page_id, description: The page identifier.}
- name: variant
description: 'The page variant the visitor saw — "a", "b", ... continuing "aa", "bb" past 26 variants.'
data_fields:
- name: <form field IDs>
description: "The form's own field IDs, verbatim (e.g. full_name, email)."
- {name: ip_address, description: The visitor's IP address.}
- name: page_uuid
description: '36-character UUID identifying the page, e.g. a2838d98-4cf4-11df-a3fd-00163e372d58.'
- name: variant
description: The page variant identifier.
- name: time_submitted
description: 'Time of lead capture in UTC, e.g. "10:57 PM UTC". UTC is the only timezone.'
- {name: date_submitted, description: 'Day of lead capture, YEAR-MM-DD.'}
- {name: page_url, description: The URL of the page containing the form.}
- {name: page_name, description: The name given to the page.}
example_payload: |
{
"email": ["test@test.com"],
"ip_address": ["1.1.1.1"],
"page_uuid": ["a2838d98-4cf4-11df-a3fd-00163e372d58"],
"variant": ["a"],
"time_submitted": ["10:57 PM UTC"],
"date_submitted": ["2023-06-06"],
"page_url": ["http://my-landing-page.ca/"],
"page_name": ["My Landing Page"]
}
example_note: >-
Every value is an ARRAY, including single-valued fields — a receiver must unwrap
them. Reproduced verbatim from Unbounce's documentation.
related_rest: >-
The same submissions are readable after the fact through the REST API
(listLeadsForPage / getLeadForPage), so the webhook is the push twin of the leads
collection.
gaps:
- No AsyncAPI or event-catalog document.
- Only one event type; no page/variant/publish/test lifecycle events.
- Webhooks cannot be created, listed, or deleted through the API — UI only.
- No payload signature or shared secret; authenticity rests on IP allowlisting.
- No documented retry or dead-letter behaviour.