top of page
< Back

How do I measure success and ROI (save rate, by source/country, playlist-level tracking, goals, UTM)?

TL;DR
Put every click, stream, save, follower, and dollar into one sheet. Tag every outbound link with UTMs. Judge each channel by cost per key action, usually save, follower, ticket sold, or email captured. Green rows scale, yellow rows tweak, red rows pause.

Pick one north-star KPI per goal

Awareness
  Goal: reach new ears
  North-star KPI: cost per 1,000 impressions ≤ 6 dollars
  Supporting: CPM, geo match, view-through over 20 seconds

Engagement
  Goal: convert listeners
  North-star KPI: save-to-stream ≥ 10 percent
  Supporting: skip-rate ≤ 25 percent, playlist adds ≥ 3 percent

Ownership
  Goal: own audience data
  North-star KPI: cost per email ≤ 1 dollar
  Supporting: click-through ≥ 5 percent, churn < 3 percent per month

Revenue
  Goal: positive cash flow
  North-star KPI: ROAS ≥ 1.2
  Supporting: cost per ticket ≤ 3 dollars, merch margin ≥ 50 percent

  Pick one north-star per campaign so every dollar has a single purpose.

Tag every link or ad with UTMs

Example
  [https://smart.link/new_single?utm_source=tiktok&utm_medium=organic&utm_campaign=chorus_hook](https://smart.link/new_single?utm_source=tiktok&utm_medium=organic&utm_campaign=chorus_hook)

  utm_source = channel such as instagram, email, groover
  utm_medium = organic, paid, playlist, blog
  utm_campaign = release name or A or B creative label
  utm_content = optional, such as ad set or variant id

  Linkfire, ToneDen, Koji, and Shopify pass UTM parameters into their reports.

Build a single source-of-truth sheet

Include these columns
  Date, Channel, Spend, Streams, Saves, Save percent, Followers, Emails, Revenue, Cost per save, ROAS, Notes

Import cadence
  DSP and ad CSVs weekly
  PRO and SoundExchange quarterly
  Playlist platforms such as SubmitHub, Groover, One Submit after each run

Playlist-level and geo tracking
  Use Chartmetric or Soundcharts to export playlist adds, follower counts, save rate, skip rate.
  Use Spotify for Artists, Music → Audience → listeners by source and country.
  Pivot your sheet by playlist URI or by country.
  Rule of thumb: any placement with saves under 3 percent or skips over 50 percent should be removed within 48 hours.

ROI math in practice, case study “Marble Echo”

SubmitHub, 40 credits
  Spend 46 dollars, saves 540, cost per save 0.085 dollars, ROAS not applicable

Groover, 30 contacts
  Spend 60 euros, about 65 dollars, saves 680, cost per save 0.096 dollars, ROAS not applicable

TikTok Spark Ad
  Spend 120 dollars, saves 950, cost per save 0.126 dollars, ROAS 1.1

PlaylistPush starter
  Spend 325 dollars, saves 4,180, cost per save 0.078 dollars, ROAS 1.3

Decision
  Scale PlaylistPush by another 200 dollars. Keep TikTok only for retargeting. Pause further Groover until euro to dollar exchange improves.

Weekly traffic-light review

Save-to-stream
  Green ≥ 10 percent
  Yellow 6 to 9 percent
  Red under 6 percent

Skip-rate at 30 seconds
  Green ≤ 25 percent
  Yellow 26 to 40 percent
  Red over 40 percent

Cost per save
  Green ≤ 0.15 dollars
  Yellow 0.16 to 0.25 dollars
  Red over 0.25 dollars

Algorithmic share
  Green ≥ 25 percent of streams
  Yellow 15 to 24 percent
  Red under 15 percent

Country ratio top five
  Green ≤ 50 percent from one country
  Red ≥ 70 percent from one country, possible bot risk

  Green means increase budget by 50 percent.
  Yellow means tweak creative or targeting and retest in seven days.
  Red means pause, pull, or dispute bot playlists.

Automation shortcuts

Auto import DSP CSVs
  Tool: Zapier to Google Drive to Google Sheets
  Setup: about 15 minutes

Slack or Discord Monday KPI digest
  Tool: Google Apps Script
  Method: IMPORTRANGE into a webhook

Geo heat map
  Tool: Looker Studio
  Method: connect the Sheet and filter by country code

Common pitfalls and fixes
  Judging by streams alone
  Fix: track saves and follows, streams can be botted

  No UTMs on smart links
  Fix: always add utm_source and utm_campaign

  Mixing organic and paid without a tag
  Fix: use utm_medium = organic or paid

  Forgetting foreign exchange and platform fees
  Fix: add a calculated column, Spend True = Spend times 1.03

  Missing dispute windows
  Fix: set a 90 day calendar alert per payer

Key takeaways
  One master sheet beats five dashboards. Merge spend, traffic, and revenue in one place.
  UTMs plus playlist and geo pivots pinpoint who and where, whether success or fraud.
  Save-to-stream, skip rate, and cost per save decide what to scale.
  A weekly green, yellow, red review keeps budget on winners and throttles losers fast.
  Document everything, including codes, receipts, and hold amounts, so audits and royalty claims are painless.

bottom of page