Amazon Pinpoint · AsyncAPI Specification

Amazon Pinpoint Events

Version

View Spec View on GitHub CampaignsCommunicationsEmailMarketingMessagingPush NotificationsSMSVoiceCustomer EngagementSegmentationJourneysAnalyticsAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: >-
  https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams.html,
  https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-app.html,
  https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-campaign.html,
  https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-email.html,
  https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-sms.html,
  https://docs.aws.amazon.com/pinpoint/latest/developerguide/channels-custom.html
spec_type: none
asyncapi_published: false
asyncapi_note: >-
  Amazon Pinpoint has a real, documented event surface but AWS publishes NO AsyncAPI document for
  it - not on the docs host, not in the aws GitHub org, not at any /asyncapi path. This file
  captures the event surface as AWS documents it. It is deliberately not an AsyncAPI: writing one
  on AWS's behalf would assert a contract AWS does not publish.
surfaces:
  - kind: event-stream
    name: Pinpoint event stream
    transport: Amazon Kinesis Data Streams or Amazon Data Firehose
    direction: outbound (Pinpoint -> your stream)
    configured_by:
      - openapi/amazon-pinpoint-apps-api-openapi.yml#PutEventStream
      - openapi/amazon-pinpoint-apps-api-openapi.yml#GetEventStream
      - openapi/amazon-pinpoint-apps-api-openapi.yml#DeleteEventStream
    envelope:
      fields: [event_type, event_timestamp, arrival_timestamp, event_version, application, client, device, session, attributes, metrics, awsAccountId]
      encoding: JSON, one record per event
    excluded:
      - transactional push notifications
      - transactional voice messages
    note: >-
      Pinpoint does not stream events for transactional push or voice - a documented gap in the
      event surface, stated by AWS.
  - kind: webhook
    name: Custom channel webhook
    direction: outbound (Pinpoint -> your HTTPS endpoint)
    trigger: A campaign whose delivery is configured as a custom channel with a webhook URL
    requirements:
      - URL must begin with https://
      - URL must comply with RFC 3986 and use only alphanumerics plus - . _ ~ ? / # :
      - >-
        Pinpoint first issues an HTTP HEAD to the URL; the response MUST carry an
        X-Amz-Pinpoint-AccountId header whose value equals your AWS account ID, or the campaign is
        rejected. This is the ownership handshake.
    payload_fields: [Message, Data, ApplicationId, CampaignId, TreatmentId, ActivityId, ScheduledTime, Endpoints]
    alternative: An AWS Lambda function receiving the same payload shape instead of an HTTPS endpoint
    source: https://docs.aws.amazon.com/pinpoint/latest/developerguide/channels-custom.html
event_catalog:
  app:
    version: '3.0'
    events:
      - {type: _session.start, description: An app session began}
      - {type: _session.stop, description: An app session ended}
      - {type: custom, description: Any custom event name recorded through PutEvents}
    source: https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-app.html
  campaign:
    version: '3.1'
    events:
      - {type: _campaign.send, description: Pinpoint executed the campaign}
      - {type: _campaign.opened_notification, description: Push recipient tapped the notification (AWS Amplify only)}
      - {type: _campaign.received_foreground, description: Push received as a foreground notification (AWS Amplify only)}
      - {type: _campaign.received_background, description: Push received as a background notification (AWS Amplify only)}
    source: https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-campaign.html
  email:
    version: '3.1'
    events:
      - {type: _email.send, description: Email accepted for sending}
      - {type: _email.delivered, description: Email delivered to the recipient}
      - {type: _email.hardbounce, description: Permanent bounce}
      - {type: _email.softbounce, description: Transient bounce}
      - {type: _email.complaint, description: Recipient marked the message as spam}
      - {type: _email.open, description: Recipient opened the message}
      - {type: _email.click, description: Recipient clicked a link}
      - {type: _email.rejected, description: Message rejected before sending}
      - {type: _email.unsubscribe, description: Recipient unsubscribed}
      - {type: _email.rendering_failure, description: Template rendering failed}
    source: https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-email.html
  sms:
    version: '3.1'
    events:
      - {type: _SMS.SUCCESS, description: Message delivered}
      - {type: _SMS.BUFFERED, description: Message accepted and queued by the carrier}
      - {type: _SMS.FAILURE, description: Delivery failed}
      - {type: _SMS.OPTOUT, description: Recipient opted out}
    record_status_note: >-
      SMS events carry a record_status (for example DELIVERED) alongside the event type.
    source: https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-sms.html
  journey:
    events_note: >-
      Journey event data is documented at
      https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-journey.html
      and shares the app/campaign envelope.
inbound_events:
  - name: PutEvents
    direction: inbound (your app -> Pinpoint)
    operation: openapi/amazon-pinpoint-apps-api-openapi.yml#PutEvents
    note: The write side of the same event model - how engagement events enter Pinpoint.
lifecycle_note: >-
  The event stream and custom-channel webhook go away with the service on 2026-10-30. AWS
  recommends Amazon Kinesis directly for event collection after that date.