How to measure crypto ads in GA4 with data you control
A working setup to measure crypto ads in GA4: UTM conventions that survive case-sensitivity, the reports that matter, conversion tracking via pixel or S2S postback, and the three numbers to write down weekly.

Three UTM parameters, one report, and one key event are enough to measure crypto ads in GA4 without waiting on anyone's dashboard. GA4 is free, it's already on most crypto sites, and it records what visitors did after the click, which no ad server can see. We put UTM tags on every PraxAds placement so this setup works out of the box, and it works the same way for traffic you buy anywhere else.
Here's the setup, from tagging convention to the reports worth opening every week.
The tagging convention that survives contact with reality
Google's URL builders documentation sets the ground rules: utm_source, utm_medium and utm_campaign should always travel together, values are case-sensitive, and anything untagged shows up as "(not set)". From those rules, one convention:
- utm_source, the network name in lowercase, for example praxads
- utm_medium, the buying model, for example cpm or cpc
- utm_campaign, the offer plus the month, for example staking-launch-2026-08
Add utm_content to tell creatives apart, "300x250-blue" against "300x250-dark", which is the parameter Google designates for differentiating creative variations. GA4 also accepts utm_id, utm_term, utm_source_platform, utm_creative_format and utm_marketing_tactic, but the four above cover a display campaign completely.
Case-sensitivity deserves its own warning. "Praxads" and "praxads" become two separate rows in every report, splitting your data down the middle for no reason. Lowercase everything, once, in a shared document, and never improvise a tag by hand again.
Where the data lands
Open Acquisition, then Traffic acquisition. Per Google's documentation, campaign traffic appears here under session-scoped dimensions, Session source and medium, Session campaign and the rest. Filter for your source and you're looking at every session your banners produced, alongside engagement rate, average engagement time, and any key events those sessions fired.
For creative-level analysis, add Session manual ad content as a secondary dimension, which surfaces your utm_content values. Two clicks and you have a per-creative breakdown that Google built for you.
Before spending, run one end-to-end test. Click a tagged link yourself, confirm the session appears with the right source, medium and campaign, then complete your conversion action and confirm the key event registers. A missing "(not set)" row is the goal. If your tagged traffic arrives untagged, something on your page strips query parameters, usually a redirect chain or a consent gateway, and it's fixable in an afternoon.
Conversions, pixel or postback
GA4 measures sessions natively, but conversions need a decision. If your conversion is a browser event, a form submit, a button click, a page view of /welcome, mark it as a key event in GA4 and you're done. Standard tracking, well documented, works today.
Crypto complicates this in two ways. First, ad blockers and privacy tooling are more common among crypto audiences than the general population, and they eat browser pixels. Second, the conversions that matter often happen off the page entirely, a deposit, an on-chain transaction, a KYC completion hours later.
For those cases we support server-to-server postbacks alongside the pixel. Your backend confirms the conversion happened and notifies us directly, with no browser in the loop, so nothing client-side can block or lose it. If your conversion involves money moving, use the postback. Pixels are for page events, postbacks are for business events, and mixing them up is the most common measurement mistake we see in this category.
Whichever you use, keep GA4 running in parallel. The postback tells you a conversion happened. GA4 tells you what the converting session did first.
Why clicks and sessions never match
Your session count in GA4 will always land below the click count on any ad platform, and knowing why saves you from chasing a problem that isn't there. Some visitors abandon before the page renders. Some block analytics entirely. Some double-click. A modest, stable gap is ordinary plumbing, and the useful number is your own baseline ratio, measured across the first three weeks and then watched for changes.
Impression counting has the same property. Our measurement notes state that we bill on impressions we measure ourselves, and that our counts typically come in 10 to 20 percent below publisher-reported figures. You're billed on the lower number.
A weekly routine for reading your own numbers
Write down three figures every week: sessions carrying your campaign tags, key events fired by those sessions, and cost per key event. That series, rather than any single week's snapshot, is what tells you whether a campaign is getting better or worse.
Compare creatives on engagement rate, not on clicks, since a banner that wins clicks and produces ten-second sessions is optimizing for the wrong thing. Compare placements the same way once volume allows. Kill the bottom performer, keep the top one, and change one variable per cycle so you always know what caused what.
If you're not opening the traffic acquisition report once a week, you're not measuring your campaigns, you're archiving them.
Session engagement is the metric this stack gives you that click reports never will. Fifty highly engaged sessions beat two hundred bounces at any price point, and only your own analytics can tell those two campaigns apart. Everything here works identically whether you spend $100 or $10,000 with us, because the tags are on every placement by default rather than sold as a feature tier.
GA4 treats UTM values as case-sensitive, so "Banner" and "banner" will always be two different rows in your reports.
Sources
- Google Analytics, URL builders: collect campaign data with custom URLsas of 2026-08-22
- PraxAds rate cardas of 2026-08-22