Blueshift · AsyncAPI Specification

Blueshift Webhooks

Version

View Spec View on GitHub customer-data-platformcustomer-engagementmarketing-automationcross-channel-messagingemailsmspush-notificationssegmentationpersonalizationproduct-recommendationsevent-trackingproduct-catalogmartechmcpagent-nativeAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-12'
method: searched
source: >-
  https://developer.blueshift.com/reference/webhook-for-campaign-execution-status,
  https://help.blueshift.com/hc/en-us/articles/39243100396307-Campaign-activity-exports-via-webhooks,
  https://help.blueshift.com/hc/en-us/articles/360024686333-Event-webhook-callback-samples
description: >-
  Blueshift ships a real outbound webhook surface but publishes NO AsyncAPI
  document — searched and confirmed absent, never fabricated here. Two distinct
  webhook products exist and are easy to confuse: a campaign EXECUTION STATUS
  webhook that fires when a customer qualifies for a trigger, and a CAMPAIGN
  ACTIVITY EXPORT that streams messaging engagement events (delivered, opened,
  clicked, bounced, unsubscribed). Both are configured in the Blueshift app, not
  via API — there is no webhook-subscription endpoint in the 81 published
  operations, so an integration cannot register or manage its own webhooks
  programmatically.

asyncapi_published: false
asyncapi_probes:
  - url: https://api.getblueshift.com/asyncapi.yaml
    status: 404
  - url: https://developer.blueshift.com/asyncapi.json
    status: 404
event_catalog_published: false

management:
  api_manageable: false
  configured_in: >-
    Blueshift app > Account Settings (Account Profile) > Campaign Activity
    Export > Webhooks
  console_url: https://app.getblueshift.com/dashboard#/app/account/integrations
  note: >-
    No subscription, registration, listing or rotation endpoint exists in the
    REST API. A tenant cannot enumerate its own webhook configuration
    programmatically, and an agent cannot set one up.

webhooks:
  - name: Campaign execution status
    direction: outbound
    docs: https://developer.blueshift.com/reference/webhook-for-campaign-execution-status
    applies_to: Event-triggered campaigns, including API-triggered campaigns
    transport: HTTP POST with a JSON body
    expected_response: HTTP 200
    delivery: >-
      Fires once per trigger the customer qualifies for. If the customer reaches
      a point where they no longer qualify for any trigger — usually because of
      trigger filters — no notification is sent at all. Silence is therefore
      ambiguous: it can mean success-with-no-qualification or nothing happened.
    authentication: not documented for this webhook
    signature: none — no HMAC signature, no shared secret, no timestamp header
    retries: not documented
    payload_fields:
      - campaign_name
      - campaign_uuid
      - user (object — email, customer_id)
      - status (success | failed)
      - message (on success)
      - error_message (on failure)
      - error_code (on failure)
      - payload (on failure — the original triggering event)
    example_success: >-
      {"campaign_name": "...", "campaign_uuid": "...", "user": {"email": "...",
      "customer_id": "..."}, "status": "success", "message": "message sent"}
    example_failure: >-
      {"campaign_name": "...", "campaign_uuid": "...", "user": {...}, "status":
      "failed", "error_message": "...", "error_code": 502, "payload": {...}}
    semantics: >-
      Status reflects only whether Blueshift successfully handed the message to
      the integrated app. It does NOT track delivery beyond that point.

  - name: Campaign activity export (messaging event notifications)
    direction: outbound
    docs: https://help.blueshift.com/hc/en-us/articles/39243100396307-Campaign-activity-exports-via-webhooks
    transport: HTTP POST with a JSON body
    batching: Notifications are batched and sent every 1 minute
    authentication:
      options:
        - None
        - Basic HTTPS (username and password)
    signature: none
    destinations:
      - Custom webhook URL
      - Segment.com
      - mParticle
      - Mixpanel
      - Amplitude
    events:
      - Delivered
      - Opened
      - Clicked
      - Bounced
      - Unsubscribed
    payload_fields:
      - account_uuid
      - action
      - bucket_uuid
      - campaign_name
      - campaign_uuid
      - creative_name
      - creative_uuid
      - customer_id
      - email
      - event
      - experiment_id
      - message_uuid
      - sg_message_id
      - subject_line
      - transaction_uuid
      - trigger_name
      - trigger_timestamp
      - trigger_type
      - trigger_uuid
      - user_uuid
    docs_samples: https://help.blueshift.com/hc/en-us/articles/360024686333-Event-webhook-callback-samples
    note: >-
      If campaign activity export is disabled, notifications are neither created
      nor queued — they are lost, not backfilled. Campaign activity remains
      downloadable as a campaign report.

inbound_events:
  note: >-
    Blueshift's INBOUND event surface is the REST API, not a webhook: POST
    /api/v1/event and POST /api/v1/bulkevents. Those are documented in
    openapi/blueshift-openapi.yml.

streaming:
  present: false
  note: >-
    No WebSocket, SSE, Kafka, Pub/Sub or message-queue surface is published for
    external consumers. (github.com/blueshift-labs hosts Pulsar tooling, but
    that is internal infrastructure, not a customer-facing event surface.)

gaps:
  - No AsyncAPI document, so the event surface is not machine-readable.
  - >-
    No webhook signing of any kind on either webhook — no HMAC, no shared
    secret, no timestamp. The strongest available authentication is HTTP Basic,
    and only on the activity export. A receiver cannot verify that a payload
    came from Blueshift.
  - >-
    No published retry or redelivery policy, and no dead-letter behaviour, so a
    receiver outage means silent data loss on the activity export.
  - >-
    No API to register, list, rotate or delete webhook endpoints — configuration
    is console-only.