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.

Terminal showing mlz build generating a Voluum lander destination URL with UTM parameters, with the Voluum campaign flow showing Traffic Source to Voluum Campaign URL to Landing Page, with UTM parameter cards and check indicators showing successful UTM preservation, and an mlz check JSON result confirming the redirect chain passes.

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.

mlz build — Voluum lander destination URLs by channel
# 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 — validate the Voluum campaign URL redirect chain
$ 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 a utm_term value 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 build and run mlz check on 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 check against 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 — not display or cpc
Taboola, Outbrain, MGID, and Revcontent are native ad networks. Traffic from these platforms should use utm_medium=native to match GA4's Default Channel Grouping definition for the Native channel. Using utm_medium=display misattributes native traffic to the Display channel; using utm_medium=cpc merges 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 with mlz 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 build to get correctly normalized UTM parameters, then paste the tracked_url output into the Lander URL field in Voluum.
How do I verify UTM parameters survive the Voluum redirect to my landing page?
Run mlz check on 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". The redirects check in the output confirms whether any redirect in the chain drops the query string. If redirects returns fail, 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=native for 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 mix cpc and display for 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 with mlz build --source "taboola" --medium "native" (or outbrain, 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 using mlz 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.

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.

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.