Leanplum · AsyncAPI Specification
Leanplum Postbacks Webhooks
Version
View Spec
View on GitHub
Mobile MarketingCustomer EngagementPush NotificationsMessagingA/B TestingAnalyticsCleverTapAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: >-
https://docs.leanplum.com/reference/post_api-action-addpostback and the published
OpenAPI at openapi/leanplum-api-openapi.json (/api?action=addPostback)
docs: https://docs.leanplum.com/reference/post_api-action-addpostback
description: >-
Leanplum's outbound event surface is "postbacks": customer-registered URL
templates that Leanplum POSTs to when a message or A/B test event occurs.
Postbacks are managed through the REST API itself (addPostback / listPostbacks /
deletePostback), all of which require the DATA EXPORT clientKey. Leanplum
publishes no AsyncAPI document and no event schema registry — this file is the
webhook catalog derived from the published postback reference, and the apis.yml
pointer is `Webhooks`, not `AsyncAPI`.
asyncapi_spec_published: false
transport:
protocol: https
method: POST
target: customer-supplied URL template (`postbackUrl`)
payload_style: >-
URL-template substitution, not a JSON body schema. Values are interpolated into
the registered URL using the same curly-brace template syntax as Leanplum
dashboard message templates.
management:
register: addPostback
list: listPostbacks
delete: deletePostback
key_class_required: data export clientKey
max_postbacks_per_app: 3
delivery:
timeout_seconds: 30
retry_on: 5xx
max_attempts: 10
retry_schedule: exponential backoff starting at 1 hour, up to 10 hours
on_exhaustion: data is lost
verbatim: >-
"If your app is unresponsive, Leanplum's request will timeout in 30 seconds. If
the error code is 5xx, we will retry up to 9 more times with exponential
backoff, starting from 1 hour, up to 10 hours. If all 10 times fail, the data is
lost."
signature_verification: none published
note: >-
No HMAC signature, shared secret, or signing header is documented, so a receiver
cannot cryptographically verify a postback came from Leanplum. Authenticate by
embedding a secret in the registered URL template if that matters to you.
postback_types:
- id: messageEvents
description: Triggered by message events on the selected channels.
- id: abTestEvents
description: Triggered by the A/B test impression/enter event.
channels:
- name: Push Notification
events: [Sent, Open, Held Back]
- name: Email
events: [Sent, Deferred, Delivered, Bounce, Open, Click, Marked as spam, Dropped, Unsubscribe, Held Back]
- name: In-app Message
events_by_template:
all_templates: [View, Held back]
center_popup_confirm_interstitial: [Accept]
rich_interstitial: [Select Button 1, Select Button 2]
note: >-
The published parameter description enumerates further per-template events
(e.g. Satisfaction Survey); the ones recorded here are those read verbatim.
default: If no `channels` value is supplied, all three channels trigger postbacks.
payload_values:
all_events:
- name: User ID
description: The user ID that triggered the postback.
- name: Device ID
description: The device ID that triggered the postback.
- name: Trigger time
description: >-
Time in milliseconds at which the postback was triggered. May be in the past
if the triggering event occurred in the past.
message_events:
- name: Message ID
description: The message ID that triggered the postback.
- name: Message event
description: The message event that triggered the postback.
related_streaming:
- name: exportData
description: >-
Bulk raw-session export (submit/poll job), not an event stream. Data becomes
available every 2 hours, only for complete sessions, retained 60 days, files
deleted 24 hours after export, maximum 24 exports per day.
docs: https://docs.leanplum.com/reference/get_api-action-exportdata