Spotify Ads
Datafly Signal sends conversions to Spotify Ads Manager server-to-server through the Spotify Conversions API (CAPI), Spotify’s tagless attribution surface.
Prerequisites
Create a Conversions API connection
In Ads Manager go to Events > Connect Data Source > Conversions API. Submitting the form shows the Connection ID (a UUID).
Generate a CAPI token
On the same page choose Generate Token. The token is long-lived and separate from Ads API tokens; up to three can be active.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
access_token | Yes | The long-lived Conversions API token generated in Spotify Ads Manager under Events > Connect Data Source > Conversions API > Generate Token. This is separate from your Ads API OAuth token, does not expire, and is sent as a Bearer token. Up to 3 tokens may be active per connection. |
capi_connection_id | Yes | The Connection ID (UUID) shown in Ads Manager when you create the Conversions API data source. Identifies which CAPI connection events are attributed to. |
Management UI Setup
- Go to Integrations > Add Integration > Spotify Ads Manager.
- Choose a preset: Default (
default), Retail (ecommerce), Lead Generation (lead_gen), Insurance (insurance), Media & Subscription (media_subscription). - Fill in the fields above and click Save.
Request format
POST https://capi.spotify.com/capi-direct/events/
{
"conversion_events": {
"capi_connection_id": "3f1c2a8e-0000-4000-8000-00000000abcd",
"events": [
{
"action_source": "WEB",
"event_details": {
"amount": 259.99,
"currency": "GBP"
},
"event_id": "ORD-1001",
"event_name": "PURCHASE",
"event_source_url": "https://shop.example.co.uk/checkout/done?x=1",
"event_time": "2025-09-22T00:13:20Z",
"opt_out_targeting": false,
"user_data": {
"hashed_emails": [
"86e0b9e56c17cc4d12387e1949b85053fbe73bc3ce5a1188713a9d300cc6133d"
],
"hashed_phone_number": "9e1919ad78a34fd67a84bfbcf2fea14074065517bea32e92924771c3f92e5462",
"ip_address": "203.0.113.9"
}
}
]
}
}capi_connection_id, and on each event event_name, event_id, event_time (ISO 8601) and user_data are required. Signal sends one event per request.
Event Mapping
| Signal event | Vendor event | Presets |
|---|---|---|
page | VIEW | Default, Retail, Lead Generation, Insurance, Media & Subscription |
view_item | PRODUCT | Default, Retail |
add_to_cart | ADD_TO_CART | Default, Retail |
begin_checkout | CHECK_OUT | Default, Retail, Insurance |
purchase | PURCHASE | Default, Retail, Insurance, Media & Subscription |
generate_lead | LEAD | Default, Retail, Lead Generation, Insurance |
sign_up | SIGN_UP | Default, Retail, Lead Generation, Media & Subscription |
lead_submitted | LEAD | Lead Generation |
quote_requested | LEAD | Insurance |
quote_completed | LEAD | Insurance |
trial_started | CUSTOM_EVENT_1 | Media & Subscription |
subscription_started | PURCHASE | Media & Subscription |
Signal forwards properties the preset does not map unless the integration’s strict output contract is on. Turn on strict_output_contract for this integration so only the documented fields are sent.
Identity
user_data carries ip_address, hashed_emails (array) and hashed_phone_number as normalised SHA-256 (phone in E.164 first), and device_id as the SHA-256 of the mobile advertising ID. At least one is required, so every web event qualifies through its IP. event_id de-duplicates against the Spotify Pixel; on purchases it is the order ID.
Consent
Spotify is an advertising destination and requires marketing consent by default. opt_out_targeting is true when marketing consent is denied (the event then counts for attribution only).
Troubleshooting
| Problem | Solution |
|---|---|
| 400 | Check the event name is one of VIEW, PRODUCT, CHECK_OUT, ADD_TO_CART, PURCHASE, LEAD, SIGN_UP or CUSTOM_EVENT_1..5. |
| 404 | The Connection ID is wrong or belongs to another business. |
Blueprint
The Spotify Ads blueprint version is 0.9.0. It was last reviewed against the vendor’s documentation on 2026-09-22.