Magellan AI

Datafly Signal delivers conversion events to Magellan AI server-to-server, allowing Magellan to credit conversions back to the podcast ad that drove them. Server delivery gives you reliable attribution coverage that does not depend on third-party cookies or client-side pixels.

Why route Magellan AI through Datafly Signal

  • Conversions survive ad blockers and tracking prevention. A browser tag served from an advertising domain is blocked outright for part of your traffic, and Safari’s ITP shortens the cookies it can set. Signal sends the event from your own server, so the conversions Magellan AI optimises against are not filtered by the browser.
  • Client IP and user agent are preserved. Server-to-server delivery normally loses both, which weakens matching. Signal forwards the genuine visitor values as request headers so Magellan AI attributes the event to the right session.
  • One consent decision governs every destination. Magellan AI is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
  • No vendor tag on the page. Removing it removes its page weight and its independent access to your visitors.

Prerequisites

Before configuring Magellan AI in Signal, you need a Magellan advertiser account and an API key.

Step 1: Identify your advertiser ID

Log in to the Magellan AI dashboard and open Settings > Advertiser. Your numeric Advertiser ID is shown at the top of the page — this is what Signal sends with every conversion event.

Step 2: Generate an API key

  1. In the Magellan dashboard, go to Settings > API.
  2. Click Generate API Key.
  3. Name the key (e.g. Datafly Signal) and copy the value immediately — Magellan only shows it once.
⚠️

Treat the API key as a secret. Store it in your secrets manager and rotate it if you suspect it has leaked. Magellan API keys do not expire automatically.

Configure in Signal

Configuration fields

FieldRequiredDescription
api_keyYesBearer token used to authenticate every request.
advertiser_idYesNumeric Magellan advertiser ID from the Magellan dashboard.

Management UI setup

  1. Go to Integrations > Add Integration > Magellan AI.
  2. Select the Retail preset.
  3. Enter your api_key and advertiser_id.
  4. Set consent categories — defaults to marketing.
  5. Click Save.

Management API setup

curl -X POST http://localhost:8084/v1/admin/integrations \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "source_id": "src_abc123",
    "vendor": "magellan_ai",
    "name": "Magellan AI — Podcast Attribution",
    "enabled": true,
    "config": {
      "api_key": "ak_magellan_abc123...",
      "advertiser_id": "12345"
    },
    "consent_categories": ["marketing"]
  }'

API endpoint

POST https://api.magellan.ai/v2/integrations/conversions
Authorization: Bearer {api_key}
Content-Type: application/json

Each conversion is delivered as a single JSON object.

Identity signals

Magellan matches conversions to podcast impressions using a combination of identifiers. The more identifiers you provide, the higher the match rate.

SignalFieldNotes
external_idDatafly anonymous_idStable cross-session identifier set by Signal as a first-party value. The strongest match key.
ipVisitor IP addressForwarded from the original browser request. Used as a fallback match key.
user_agentVisitor User-AgentForwarded from the original browser request. Used alongside IP for probabilistic matching when no external_id is present.
urlPage URL at conversionOptional context.
referrerReferring URLOptional context.
utm_source / utm_medium / utm_campaignUTM parametersOptional. Useful when conversions also need to be attributed inside Magellan’s UTM-based reports.

Magellan’s primary attribution path is the external_id (Datafly’s anonymous_id). For deterministic credit, ensure Signal’s first-party identification is enabled on every page that participates in the funnel.

Event mapping

Retail preset

Signal eventMagellan event
Order Completedconversion

Magellan’s API is conversion-only — page views and intermediate funnel events are not ingested. If you want to send other conversion types (sign-ups, leads, app installs) to Magellan, duplicate the integration and remap the source event to Order Completed’s slot, or add additional events to the blueprint’s event map.

Example: Order Completed

Datafly.js call:

datafly.track("Order Completed", {
  order_id: "ORD-001",
  revenue: 129.99,
  currency: "GBP",
  coupon: "PODCAST10"
});

Magellan payload sent by Signal:

{
  "advertiser_id": "12345",
  "transaction_id": "ORD-001",
  "value": 129.99,
  "currency": "GBP",
  "coupon": "PODCAST10",
  "external_id": "anon_a1b2c3d4e5f6",
  "ip": "203.0.113.50",
  "user_agent": "Mozilla/5.0 ...",
  "url": "https://example.com/checkout/confirmation",
  "referrer": "https://example.com/cart",
  "utm_source": "podcast",
  "utm_medium": "audio",
  "utm_campaign": "spring_2026"
}

Testing

  1. In the Magellan dashboard, open Reports > Conversions and filter to the last 15 minutes.
  2. Trigger a test Order Completed event from your site or via the Management API preview tool.
  3. The conversion should appear in the Magellan dashboard within a minute, with the external_id and UTM fields populated.
  4. To trace a specific event end-to-end, copy the event_id from the Signal event log and search for the matching transaction_id in Magellan.

Troubleshooting

ProblemSolution
401 UnauthorizedAPI key is invalid or revoked. Generate a new key in Settings > API and update the integration config.
403 ForbiddenThe API key is valid but not authorised for the supplied advertiser_id. Confirm both belong to the same Magellan account.
Conversions arrive but are unattributedThe external_id is missing or doesn’t match any Magellan impression. Confirm Signal’s first-party identification is active on landing pages and that the listener clicked through a Magellan-tracked promo link.
Duplicate conversionsEnsure transaction_id is populated and unique per order. Magellan deduplicates on transaction_id within a 24-hour window.
Low match rateAdd user-level identifiers via datafly.identify() early in the funnel so the anonymous_id is bound to a known user before checkout.