UTM Tracking for Voluum: How to Build and Validate Campaign Links
Voluum is a professional cloud-based ad tracking platform used by performance marketers, media buyers, and affiliate marketers to consolidate campaign data across multiple ad networks — Facebook, Google, Taboola, TikTok, and programmatic DSPs — alongside affiliate offers from networks like ClickBank and MaxBounty. Voluum works by generating campaign tracking URLs that route every click through Voluum's servers, recording click data, device type, IP, and geo before redirecting traffic to your lander or offer URL. That redirect layer is where UTM tracking for Voluum gets complicated. Voluum's own internal attribution uses its {clickid} token and postback tracking — a completely separate system from UTM parameters. But GA4, Triple Whale, Northbeam, and every other analytics tool that fires a pixel on your landing page reads UTM parameters from the URL at page load. For those tools to correctly attribute Voluum campaign traffic, UTM parameters must survive the full redirect chain from the ad network click through Voluum's servers and onto the landing page URL where the analytics pixel fires. Use mlz build to generate correctly normalized UTM destination URLs for the Lander URL and Offer URL fields inside Voluum's campaign configuration. Use mlz check on the Voluum campaign tracking URL — the one you hand to the ad platform — to verify the complete redirect chain preserves UTM parameters from Voluum's servers all the way to the final landing page.
How Voluum campaign tracking interacts with UTM parameters
Voluum's campaign model has a distinct redirect architecture that sets it apart from most ad tracking scenarios. When a user clicks an ad, the click goes to Voluum's campaign URL first. Voluum records the click event — timestamp, IP, device, geolocation, and its own {clickid} — then redirects the user to the Lander URL configured in the Voluum campaign. If you have A/B path testing enabled, Voluum may split traffic between multiple lander URLs before optionally forwarding to an Offer URL. At each step, the only URL that matters for GA4 and third-party analytics attribution is the final destination URL where the analytics pixel fires. That is the Lander URL (or, in direct-tracking or lander-free campaigns, the Offer URL).
UTM parameters must be present on the Lander URL itself — the URL you enter in Voluum's campaign configuration. When Voluum redirects a click to https://yourdomain.com/landing?utm_source=facebook&utm_medium=paid-social&utm_campaign=spring-offer-2026, the browser lands on that URL with the query string intact. GA4 reads utm_source, utm_medium, and utm_campaign from that query string and assigns the session to Paid Social. If the Lander URL was entered into Voluum without UTM parameters — or if Voluum's redirect configuration is set to strip query strings from the destination URL — GA4 reads a clean URL and the session is classified as Direct traffic. Voluum's click data is intact on the Voluum side; the attribution failure is invisible inside Voluum's own dashboard. It only shows up as unexplained Direct traffic in GA4.
The following table shows the four common UTM tracking failure modes in Voluum campaigns and the attribution consequence in GA4:
| Scenario | What GA4 reads at lander load | Attribution result |
|---|---|---|
| Lander URL has correct UTM params, Voluum redirect passes them through | utm_source=facebook, utm_medium=paid-social |
✓ Paid Social attributed correctly |
| Lander URL embedded in Voluum but redirect strips query string | (empty) | ✗ Direct traffic in GA4 |
Capitalized source value in Voluum lander URL (Facebook Ads vs facebook) |
utm_source=Facebook Ads |
✗ Non-standard channel in GA4; no Default Channel match |
| Landing page has its own redirect (custom domain, link rotator, affiliate hop) that strips params before GA4 fires | (empty) | ✗ Organic or Direct in GA4 |
All four failure modes are silent from Voluum's perspective. Voluum records the click, fires its own {clickid} postback on conversion, and reports the campaign as performing. The data problem only surfaces when you cross-reference Voluum click volume against GA4 Paid Social sessions and find the numbers diverging. Prevent it by building correctly normalized UTM destination URLs before you configure any Voluum campaign.
Building UTM destination URLs for Voluum with mlz build
mlz build generates UTM-tagged destination URLs with normalized, lowercase-hyphenated parameter values. These are the URLs you enter in Voluum's Lander URL field (or Offer URL field for direct-to-offer campaigns). The --validate flag checks that the destination resolves with a 200 and that no redirect in the path strips query strings before the analytics pixel fires. Below are three channels commonly tracked through Voluum: Facebook Ads, Taboola native, and TikTok Ads.
# Facebook Ads — prospecting campaign, video creative
$ mlz build \
--url "https://yourdomain.com/landing" \
--source "facebook" \
--medium "paid-social" \
--campaign "spring-launch-2026" \
--content "video-30s" \
--validate
{
"tracked_url": "https://yourdomain.com/landing?utm_source=facebook&utm_medium=paid-social&utm_campaign=spring-launch-2026&utm_content=video-30s",
"params": {
"utm_source": "facebook",
"utm_medium": "paid-social",
"utm_campaign": "spring-launch-2026",
"utm_content": "video-30s"
},
"destination_url": "https://yourdomain.com/landing",
"link_id": "lnk_fb_spring26_v30s",
"campaign_id": "cmp_spring-launch-2026",
"stored": true,
"created_at": "2026-06-20T07:14:22.000Z"
}
# Taboola native — content ad campaign
$ mlz build \
--url "https://yourdomain.com/landing" \
--source "taboola" \
--medium "native" \
--campaign "spring-launch-2026" \
--content "headline-variant-a" \
--validate
{
"tracked_url": "https://yourdomain.com/landing?utm_source=taboola&utm_medium=native&utm_campaign=spring-launch-2026&utm_content=headline-variant-a",
"params": {
"utm_source": "taboola",
"utm_medium": "native",
"utm_campaign": "spring-launch-2026",
"utm_content": "headline-variant-a"
},
"stored": true,
"created_at": "2026-06-20T07:15:08.000Z"
}
# TikTok Ads — short-form video campaign
$ mlz build \
--url "https://yourdomain.com/landing" \
--source "tiktok" \
--medium "paid-social" \
--campaign "spring-launch-2026" \
--content "ugc-creator-01" \
--validate
{
"tracked_url": "https://yourdomain.com/landing?utm_source=tiktok&utm_medium=paid-social&utm_campaign=spring-launch-2026&utm_content=ugc-creator-01",
"params": {
"utm_source": "tiktok",
"utm_medium": "paid-social",
"utm_campaign": "spring-launch-2026",
"utm_content": "ugc-creator-01"
},
"stored": true,
"created_at": "2026-06-20T07:15:51.000Z"
}
The tracked_url from each JSON response is the URL you paste into the Lander URL field in Voluum's campaign configuration. mlz build normalizes all parameter values to lowercase-hyphenated format, so Voluum will never redirect traffic to a destination with utm_source=Facebook Ads, utm_medium=Paid Social, or utm_campaign=Spring Launch 2026 — all formats that produce non-standard GA4 channel groupings. The stored: true field confirms the link is saved to the MissingLinkz campaign library for audit and team reference. For Taboola, note the utm_medium=native — this is the correct value for native ad placements. Using display or cpc for Taboola traffic misaligns the channel grouping in GA4's Default Channel Grouping and prevents Native from appearing as a distinct channel in attribution reports.
Validating the Voluum campaign redirect chain with mlz check
Building a correct Lander URL for Voluum is half the work. The other half is confirming that the Voluum campaign tracking URL — the URL you hand to the ad platform — actually delivers traffic to that lander with UTM parameters intact. Voluum's redirect layer can drop query strings if pass-through is not configured correctly, or if the landing page itself has an additional redirect (a custom domain redirect, a link rotator hop, or an affiliate network bounce) that strips params before the analytics pixel fires. mlz check walks the complete redirect chain from the Voluum campaign tracking URL through every hop to the final response, confirming that UTM parameters survive to the page where GA4 loads.
$ mlz check "https://yourdomain.com/landing?utm_source=facebook&utm_medium=paid-social&utm_campaign=spring-launch-2026"
{
"url": "https://yourdomain.com/landing?utm_source=facebook&utm_medium=paid-social&utm_campaign=spring-launch-2026",
"valid": true,
"checks": [
{ "check": "url_format", "status": "pass", "message": "URL format is valid." },
{ "check": "ssl", "status": "pass", "message": "URL uses HTTPS." },
{ "check": "resolution", "status": "pass", "message": "Destination responded with 200.", "details": { "status_code": 200, "response_time_ms": 231 } },
{ "check": "redirects", "status": "pass", "message": "No redirects detected." },
{ "check": "response_time", "status": "pass", "message": "Response time: 231ms.", "details": { "response_time_ms": 231 } }
],
"status_code": 200,
"response_time_ms": 231,
"validated_at": "2026-06-20T07:22:14.000Z"
}
Run mlz check on the UTM-tagged destination URL — the exact URL with query string that Voluum will deliver traffic to after its internal redirect. The redirects check in the output is the key result: a pass confirms no redirect in the path stripped the query string. A fail on redirects means something in the chain — Voluum's pass-through configuration, the landing page's custom domain, a link rotator, or an affiliate network bounce — is dropping UTM parameters before the analytics pixel fires. Fix the redirect configuration, update the Lander URL in Voluum's campaign, and run mlz check again before activating the campaign. For campaigns with A/B path testing in Voluum (multiple landers), run mlz check against each lander URL — a failed redirect on one path means half your traffic arrives at GA4 without UTM attribution.
Voluum UTM tracking gotchas for performance marketers
- Voluum's
{clickid}token is not a UTM parameter — do not confuse the two tracking systems - Voluum's
{clickid}is Voluum's internal identifier for each click event. It is passed in Voluum's postback URL for server-side conversion tracking — when an affiliate network fires a conversion postback, it sends the{clickid}back to Voluum so Voluum can match the conversion to the original click record. This is entirely separate from UTM parameters. Do not use{clickid}as autm_termvalue and do not place it in any UTM field. UTM parameters (utm_source,utm_medium,utm_campaign,utm_content,utm_term) are read by GA4 and third-party analytics pixels. Voluum's{clickid}is read by Voluum's server. They serve different attribution systems and must not be mixed. - A/B path testing in Voluum requires correct UTM parameters on every lander URL — not just one
- Voluum's campaign path testing can split traffic between Lander A (50%) and Lander B (50%). If Lander A has a correctly formatted UTM destination URL but Lander B was configured without UTM parameters — or with inconsistent parameter values — exactly half of your campaign traffic will arrive at GA4 without UTM attribution. GA4 classifies those sessions as Direct traffic. The split shows up as anomalously high Direct traffic for that campaign date range. Every lander URL in every Voluum path must have correct UTM parameters. Build each lander URL with
mlz buildand runmlz checkon each one independently before activating the campaign. - Voluum's "direct tracking" mode changes the redirect architecture — validate each campaign regardless of tracking mode
- Voluum offers a direct tracking mode that skips Voluum's redirect server and instead uses JavaScript on the landing page to record click data. In direct tracking mode, the ad platform click goes directly to the landing page URL rather than through Voluum's campaign URL first. This changes how UTM parameters are passed — instead of Voluum redirecting to the lander with UTM params, the params are already in the URL the user lands on. Direct tracking can simplify UTM delivery, but the landing page JavaScript tracker must load correctly for Voluum to record click data. Run
mlz checkagainst the landing page URL regardless of tracking mode to confirm the destination resolves with 200, SSL passes, and no redirect in the path drops the query string. - Native ad networks use
utm_medium=native— notdisplayorcpc - Taboola, Outbrain, MGID, and Revcontent are native ad networks. Traffic from these platforms should use
utm_medium=nativeto match GA4's Default Channel Grouping definition for the Native channel. Usingutm_medium=displaymisattributes native traffic to the Display channel; usingutm_medium=cpcmerges it with search traffic into Paid Search. Both create misleading channel performance data. Many Voluum users run native campaigns alongside search and social, and the medium value is the primary signal GA4 uses to separate them. Build all native campaign lander URLs withmlz build --medium "native"to enforce correct channel grouping across GA4, Triple Whale, and Northbeam simultaneously. - When Voluum routes directly to an affiliate network offer URL, UTM tracking stops at the lander — not the offer
- A common Voluum workflow sends traffic through a lander then on to an affiliate network offer URL (ClickBank, MaxBounty, CJ Affiliate, etc.). The affiliate network hop after the lander is a separate domain redirect that does not preserve your UTM parameters. This is expected behavior — you do not control the affiliate network's redirect. UTM attribution is recorded at the lander, where your GA4 pixel fires and reads the UTM parameters present in the lander URL. The affiliate offer URL will appear in GA4 as a separate referral event, not as a UTM-attributed session. Build UTM parameters into the lander URL (the destination Voluum sends traffic to first), validate that lander URL with
mlz check, and accept that attribution ends at the lander for affiliate offer flows. Attempting to add UTM parameters to the affiliate offer URL does nothing useful — the analytics pixel does not load on the affiliate network's page.
FAQ
- Do I put UTM parameters in the Voluum campaign URL or the lander URL?
- Put UTM parameters in the Lander URL — the destination URL you configure inside Voluum's campaign settings, under the campaign's path or lander field. Voluum generates its own campaign tracking URL (the URL you put in your ad platform) which points through Voluum's servers. Voluum's redirect then delivers traffic to your lander URL. GA4 reads UTM parameters from the URL that the browser lands on at page load, which is the lander URL after Voluum's redirect. The Voluum campaign tracking URL itself does not need UTM parameters — it is Voluum's internal routing URL, not the final destination where analytics pixels fire. Build your lander URLs with
mlz buildto get correctly normalized UTM parameters, then paste thetracked_urloutput into the Lander URL field in Voluum. - How do I verify UTM parameters survive the Voluum redirect to my landing page?
- Run
mlz checkon the landing page URL with the UTM parameters appended — the exact URL Voluum will deliver traffic to after its internal redirect. For example:mlz check "https://yourdomain.com/landing?utm_source=facebook&utm_medium=paid-social&utm_campaign=your-campaign". Theredirectscheck in the output confirms whether any redirect in the chain drops the query string. Ifredirectsreturnsfail, inspect the full redirect chain from the landing page URL and identify which hop strips the UTM parameters. Common culprits are custom domain redirects on the landing page's root domain, link rotators, and affiliate network hops inserted between the lander and the offer. - Can I use Voluum and GA4 attribution simultaneously?
- Yes — Voluum and GA4 operate completely independently. Voluum records click data via its own redirect server and tracks conversions via server-side postback using its
{clickid}. GA4 records sessions via its JavaScript pixel on the landing page and attributes them using UTM parameters in the URL at page load. Both systems run in parallel. A correctly configured Voluum campaign — where the lander URL contains properly formatted UTM parameters that survive the Voluum redirect — feeds both Voluum's click record and GA4's session attribution simultaneously. The same applies to Triple Whale and Northbeam, which also read UTM parameters from the landing page URL independently of Voluum's tracking. - What UTM medium should I use for native ad networks in Voluum?
- Use
utm_medium=nativefor Taboola, Outbrain, MGID, and Revcontent. This matches GA4's Default Channel Grouping definition for the Native channel and keeps native traffic cleanly separated from paid social (paid-social), search (cpc), and display (display) in attribution reports. Many Voluum users running multi-network campaigns mixcpcanddisplayfor native networks — which merges native into the wrong channel bucket and makes it impossible to evaluate native network performance independently. Build native campaign lander URLs withmlz build --source "taboola" --medium "native"(oroutbrain,mgid,revcontent) to enforce correct channel grouping from the start. - How do I handle UTM tracking for Voluum campaigns that go directly to an offer without a landing page?
- For offer-direct Voluum campaigns (where Voluum redirects straight to an affiliate offer URL with no lander in between), UTM tracking via GA4 is not possible — the offer URL is on the affiliate network's domain, where your GA4 pixel does not load. Voluum's own click tracking still functions via its
{clickid}postback, but GA4 attribution is not available for lander-free flows. The practical solution is to insert a thin pre-sell or bridge page on your own domain between Voluum and the offer URL. That bridge page is where you place the GA4 pixel, and its URL is what you configure with UTM parameters usingmlz build. The bridge page then passes traffic onward to the affiliate offer. This is a best practice for any Voluum workflow where analytics attribution matters.
Related reading
Build Voluum-compatible destination URLs and validate every campaign redirect chain
mlz build generates correctly normalized UTM links to embed as lander and offer URLs inside Voluum's campaign configuration. mlz check validates the full Voluum campaign tracking URL redirect chain — confirming UTM parameters survive from Voluum's servers to the landing page where GA4 and other analytics tools fire.
1,000 links/month free. No credit card.
Your API key
Save this now — it won't be shown again.
npm install -g missinglinkz
Free plan: 1,000 links/month. No credit card. See the UTM tracking for developers guide for the full programmatic workflow including API and MCP integration.