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
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.