Skip to main content
Engagement export rows include playlist_position. On playlist campaigns, use it to see which slot each engaged track held on the campaign playlist for that day.

Get the data

Same endpoint as other engagement rows — no new route: GET /v1/campaigns/{campaignId}/metrics/engagement/export?engagementContext=playlist Requires the metrics:read scope. See JSONL exports for streaming and date windows.
Each line is a JSON object. Read playlist_position when engagement_context is playlist. Catalog rows always have null.

What the value means

Position comes from that day’s playlist crawl for report_date.

When null is expected

  • Catalog rows (engagement_context = catalog) — position only applies to playlist rows
  • Current UTC day — often null until the morning crawl finishes; it fills on the next data refresh
  • Track not on the playlist that day — playlist engagement can include tracks Spotify played from the playlist context (autoplay, recommendations), or tracks that could not be matched to that day’s crawl
  • No crawl for that day — a missed crawl that was not recovered (only recent days are retried), or a playlist that has no crawl coverage at all
To tell these apart, check whether the campaign has a non-null position on other rows for the same report_date. Treat null as unavailable — not an error. If a day looks wrong after crawl coverage should be complete, contact hello@getsoundlink.com.

Next

Campaign metrics · JSONL exports · API Reference