Leanplum · AsyncAPI Specification

Leanplum Postbacks Webhooks

Version

View Spec View on GitHub Mobile MarketingCustomer EngagementPush NotificationsMessagingA/B TestingAnalyticsCleverTapAsyncAPIWebhooksEvents

AsyncAPI Specification

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