Home / Guides / How to measure crypto KOL ROI

How to measure crypto KOL ROI

Crypto KOL campaigns can be measured properly because the outcome usually happens on chain, where you can see it. The setup is a unique link and referral code per KOL, a dedicated landing page, and a wallet cohort you track for 90 days. This guide covers the tracking, typical CPM, CPE and CPA ranges for crypto campaigns, a worked ROI calculation, and the metrics worth ignoring.

Updated 2026-09-201,843 words · 8 min readBy Bussler & Co

All prices in this guide are illustrative sample ranges, not quotes. They move with the market and with the individual account.

Decide what counts as a result before the campaign starts

Most KOL campaigns cannot be measured afterwards because nobody decided in advance what they were buying. Pick one primary action and one secondary action before any contract is signed. For an exchange or app the primary action is usually a funded account or a first trade. For a protocol it is a wallet that connects and completes one transaction. For a presale it is a deposit. For a launch it is holders added in the first 48 hours.

Write the number you need next to it. If you are spending $40,000 and a customer is worth $120 to you over 90 days, you need roughly 334 customers to break even, and you should know that before you start rather than discovering it in the recap deck.

Every KOL gets their own link. No exceptions, no shared links, no bare domain mentions. A UTM structure that works across a campaign looks like this.

ParameterValueWhy
utm_sourceThe KOL handle, for example cryptoanonAttributes the traffic to one person
utm_mediumkolSeparates paid KOL traffic from organic and ads
utm_campaignThe campaign name, for example mainnet_launch_mar26Groups the campaign across all KOLs
utm_contentThe deliverable, for example thread_1 or yt_reviewTells you which format worked

Use a link shortener you control so you can change the destination without asking the KOL to edit a post, and so you get click counts even if the visitor bounces before your analytics loads. Referral codes matter more than UTMs on mobile, because a lot of crypto traffic goes through in app browsers that strip parameters and because people watch a YouTube video on one device and sign up on another. Give each KOL a memorable code, ask them to say it out loud in video and put it in the post text, and attach a small user incentive to it so people actually use it.

Codes and links measure different things. Links measure traffic, codes measure intent. Run both.

Dedicated landing pages

Send KOL traffic to a page built for that campaign rather than your homepage. A dedicated page gives you a clean funnel to measure, lets you match the message to what the KOL said, and removes the navigation that leaks visitors to your blog. If a KOL's audience is Korean or Turkish, the page should be in that language, and that one change often moves conversion by more than the choice of KOL.

Keep the page to one action. Measure page views, the click on the primary button, and the completed action, so you can see whether a weak result came from bad traffic or a bad page. A campaign with 20,000 visits and 40 conversions usually has a page problem, not a KOL problem.

On chain attribution

On chain data is the part of this that crypto can do and other industries cannot. Three methods, from easiest to most precise.

  • Wallet cohorts by time. Take every wallet whose first transaction with your contract happened in the 24 or 72 hours after a specific post, and treat that cohort as attributable to the post. Crude, but it works well when posts are spread out and you have a quiet baseline to compare against.
  • Referral tagged transactions. If your contract or front end supports a referrer field, encode the KOL code in it. Every transaction then carries the attribution on chain and you get exact numbers rather than a time window guess.
  • Front end session to wallet stitching. Record the UTM parameters in the session, then log the wallet address when it connects. That links the click to the address, which links to everything the address does afterwards.

The metric worth more than first transaction count is cohort retention. Pull each KOL's cohort and check how many of those wallets were still transacting at 30 and 90 days. It is common for the KOL with the most first transactions to have the worst retention, because their audience is made up of airdrop hunters, and for a smaller account to bring 200 wallets that are all still active a quarter later. Judge by the second number.

Dune dashboards

Build one Dune dashboard per campaign and leave it running. The queries worth having are new wallets per day against your contract, first transaction wallets split by the referral tag if you have one, median deposit or trade size per cohort, wallets still active at 7, 30 and 90 days, and total fees or volume produced by the cohort. Put the post timestamps on the chart as a reference line so spikes line up with posts visually.

Make the dashboard public and share it with the KOLs you paid. Good accounts will use it to argue for a higher rate next time, which is fine, because it means you now have evidence for who deserves it.

X analytics and Spaces listener counts

Ask every KOL for screenshots of post analytics within 48 hours of publishing, showing impressions, engagements, profile visits and link clicks. Put it in the contract, since it is hard to get afterwards. Impressions from the KOL's own analytics are more reliable than the public view count, which includes people scrolling past.

For Spaces, the number that matters is not the peak listener count, it is average concurrent listeners and how long people stayed. A Space with 3,000 peak listeners where the median stay is 90 seconds is worth less than one with 600 listeners who stayed 25 minutes. Ask for the host dashboard screenshot showing tuned in count and replay listens, and count replays separately because they usually arrive over the following week. The engagement rate calculator turns these numbers into a rate you can compare across accounts, and running a Twitter Spaces AMA covers the format itself.

Benchmarks for crypto KOL campaigns

These are typical ranges from crypto campaigns, not published figures, and they move a lot by region, token category and market conditions. Use them to spot something badly out of line rather than as targets.

MetricTypical rangeNotes
CPM, cost per 1,000 impressions$8 to $60Large accounts price higher per impression, not lower. Under $5 usually means bot inflated reach
CPE, cost per engagement$1 to $10Video and threads come in lower than single posts
CPC, cost per click$0.50 to $4Telegram and YouTube descriptions convert clicks better than X posts
CPA, wallet connected$10 to $60Cheap and largely meaningless on its own
CPA, first real transaction or funded account$40 to $300The number to negotiate against
CPA, retained user at 90 days$150 to $800The only figure that should drive renewals
Engagement rate on a real audience1 to 4 percentAbove 8 percent with no comments usually means bought engagement

A simple ROI formula with a worked example

The formula is return on investment equals attributed value minus total cost, divided by total cost. Total cost includes the KOL fees, the agency fee if you use one, and the incentives you paid out through referral codes, because those are real money.

Worked example. You spend $30,000 across six KOLs for a mainnet launch, plus $3,000 in referral rewards, so total cost is $33,000. The campaign produces 1.8M impressions, 22,000 link clicks, 1,900 wallets connected and 610 wallets completing a first trade. Over the following 90 days those 610 wallets generate $95 each in fee revenue to you, which is $57,950 in attributed value.

  • CPM is $33,000 divided by 1,800, which is $18.33 per thousand impressions.
  • CPC is $33,000 divided by 22,000, which is $1.50 per click.
  • CPA per funded trader is $33,000 divided by 610, which is $54.10.
  • ROI is $57,950 minus $33,000, divided by $33,000, which is 0.76, or a 76 percent return.

Then run the same arithmetic per KOL rather than for the campaign as a whole. It is normal for two of six accounts to produce most of the value and for one to produce almost nothing, and you only find that out if you tagged every link separately. The KOL budget planner does this split for planning, and crypto KOL rates gives the fee side.

Attribution windows

Set the window by action. Clicks and signups should be attributed within 7 days of the post, since the vast majority of clicks arrive within 48 hours. First on chain transactions should use a 30 day window, because people bookmark a project and come back. Revenue should be counted over 90 days from the user's first transaction, which matches how long it takes for a trading or fee based product to show its real value.

YouTube needs a longer window than X. An X post is over in 48 hours, while a YouTube video keeps producing signups for months from search, so check the referral code numbers again at 60 and 90 days before you judge a video deal. Write the windows into your reporting so nobody changes them halfway through to make a result look better.

Vanity metrics to ignore

  • Follower count. It is the price input, not the result. Judge the account on what it delivered.
  • Total reach added up across KOLs. The audiences overlap heavily, so the sum is always wrong.
  • Likes without replies. Likes are the easiest thing to buy. A post with 4,000 likes and 11 replies is a bought post.
  • Peak Spaces listeners. Use average concurrent listeners and time listened.
  • Impressions on a post you also boosted. Separate paid amplification from the organic number or you are counting your own ad spend as KOL performance.
  • Telegram member growth during the campaign. A large share of that is airdrop farmers who leave within two weeks. Measure the number still in the group after 30 days.
  • Price action on the day. It is not attribution, and treating it as a KOL deliverable creates the incentive problems covered in KOL scams and red flags.

A reporting template

One row per KOL, one table per campaign, updated at 7, 30 and 90 days.

ColumnWhat goes in it
KOL and platformHandle and channel
Fee paidCash plus the value of any tokens at the delivery date
Deliverables completedDelivered versus contracted
Impressions and engagementsFrom the KOL's own analytics screenshots
Clicks and code usesFrom your link shortener and referral system
Wallets connectedFrom front end session stitching
First transactionsFrom Dune or your own indexer
Wallets still active at 30 and 90 daysCohort retention, the number that decides renewals
Attributed revenueFees, volume or deposits from the cohort
CPM, CPC, CPA and ROICalculated from the columns above
Renew, retest or dropA written decision, not a score

Ending each row with a decision is what makes the report useful. After two or three campaigns you have a shortlist of accounts that actually produce users, which is worth more than any vetting process. Screening before you spend is covered in how to vet crypto KOLs, and the measurement clauses belong in the contract, which is covered in KOL contract terms.

Questions

What is a good CPM for a crypto KOL campaign?

A typical range is $8 to $60 per thousand impressions, with larger accounts costing more per impression rather than less. Anything under about $5 usually means the reach is inflated by bots, so check the engagement quality before treating it as a bargain.

How do I attribute wallets to a specific KOL?

Use a referral tag in the transaction if your contract supports one, otherwise stitch the UTM parameters recorded in the session to the wallet address when it connects. The rough fallback is taking wallets whose first transaction happened in the 24 to 72 hours after a specific post.

What attribution window should I use?

Seven days for clicks and signups, 30 days for a first on chain transaction, and 90 days for revenue counted from the user's first transaction. YouTube needs the longer windows because videos keep producing signups from search for months.

How do you calculate KOL campaign ROI?

Attributed value minus total cost, divided by total cost, where total cost includes fees, agency commission and any referral incentives paid out. A campaign costing $33,000 that produces $57,950 in 90 day revenue returns 76 percent.

Which KOL metrics are not worth reporting?

Follower count, summed reach across overlapping audiences, likes with no replies, peak Spaces listeners, and Telegram growth measured during the campaign rather than 30 days later. Price action on the day is not attribution either.

Do I need a Dune dashboard for every campaign?

One per campaign is enough, showing new wallets per day, first transactions by referral tag, median trade or deposit size, and cohort retention at 7, 30 and 90 days. Mark the post timestamps on the chart so spikes line up with the posts.