UTM Builder — attribution tracking
Last updated: May 19, 2026
UTM Builder — attribution tracking
UTM = URL parameters Wevion auto-appends to your destination URLs for attribution tracking. 5 standard parameters: utm_source, utm_medium, utm_campaign, utm_content, utm_term. Wevion's auto-generator uses sensible defaults tied to campaign + ad IDs. Customize per campaign in the creative step.
Who is this for
Mediabuyers configuring tracking links. Anyone whose Shopify / WooCommerce / HubSpot orders show empty utm_* fields. Teams reconciling Wevion + Google Analytics + BI tools.
The 5 standard UTM parameters
Parameter | Meaning | Example values |
|---|---|---|
| Platform that drove the click |
|
| Channel type |
|
| Specific campaign | Campaign name or ID |
| Ad-level identifier | Ad name or ID |
| Keyword (mostly Google Search) | Search keyword |
Wevion's auto-generator
When you set a destination URL in Campaign Creator, Wevion automatically appends UTM parameters using:
Parameter | Auto-default |
|---|---|
| Platform name ( |
|
|
| Campaign name slugified (or Wevion campaign ID for stability) |
| Ad name slugified (or ad ID) |
| Keyword for Search ads; blank otherwise |
So your destination URL https://store.com/product becomes:
https://store.com/product?utm_source=facebook&utm_medium=cpc&utm_campaign=summer-sale-2026&utm_content=carousel-shoes-v3
No manual UTM entry needed for most campaigns.
Why UTM matters
UTM-tagged URLs power:
Wevion's own attribution (across Cross-Channel Analytics)
Google Analytics / GA4 (per-campaign reporting in your own analytics)
Shopify order attribution (com-102) — Shopify stores UTM in order metadata
WooCommerce attribution (com-105) — via Order Attribution plugin
HubSpot contact source (com-117) — stored in
wevion_utm_*propertiesPostback click_id mapping (com-109) — UTM provides click context
Without UTM: traffic shows as (direct) or (not set) in analytics → impossible to attribute.
Customizing UTM
In Campaign Creator creative step → click URL parameters (or UTM depending on UI version):
See the auto-generated UTM
Override any of the 5 parameters
Add custom parameters (
utm_custom_1,utm_custom_2)
When to customize:
Consistency with existing analytics: your Google Analytics campaigns use specific naming → match in Wevion to keep reports consistent
Internal tagging conventions: agency wants client-prefix in
utm_campaign(e.g.clientA-summerSale-2026)Multi-campaign rollup: same
utm_campaignacross different ad sets to track as one in GA4
UTM template structure
If your team has a UTM convention, save as Campaign Template (cc-118). Future campaigns auto-fill the template UTMs.
Example team-wide convention:
utm_source: always{platform}(auto)utm_medium: alwayscpc-paidutm_campaign:{client}-{campaign-name}-{quarter}-{year}(e.g.clientA-summerSale-Q3-2026)utm_content:{ad-creative-type}-{variation}(e.g.video-v3)utm_term:{keyword}for Search; blank otherwise
Codified in template = consistent across team.
Tracker / click_id
For affiliate / tracker setups (com-107 Keitaro):
Add
click_idparameter for tracker attribution:&click_id={{click_id}}Wevion supports this in the URL template
Tracker reads
click_idfrom URL params
For postback tracking (com-109): same click_id carries through to the postback URL for matching.
UTM in Bulk Launch
Per-row URL parameters in Bulk Launch grid. Use template approach:
Template defines UTM defaults
Bulk Launch fills per-row variants (different
utm_campaignper row)
Wevion validates URL syntax on validate-all step.
How to read UTM data downstream
In Wevion's analytics
/analytics shows campaign-level attribution (auto-derived from UTM + pixel + CAPI). No manual UTM lookup needed.
In Google Analytics 4
GA4 reads UTMs from page URLs:
Reports → Acquisition → Traffic acquisition
Filter by
utm_campaignto see one campaign's trafficCompare
utm_source = facebookvsutm_source = google
In Shopify
Settings → Customers (per-customer view) → Attribution section
Per-order metadata:
utm_*populated for ads-driven orders
In WooCommerce
WooCommerce → Orders → per-order page → Order Attribution (if Order Attribution plugin enabled)
Shows
utm_*per order
In HubSpot
Contact record → properties →
wevion_utm_*populated for ads-driven leads
URL encoding
UTM values must be URL-encoded (spaces become %20 or +, special chars encoded). Wevion auto-encodes:
Input:
summer sale 2026→ URL:summer-sale-2026(slugified by Wevion to avoid encoding issues)Or:
summer+sale+2026(URL-encoded space)
Best practice: use hyphens or underscores in UTM values to avoid encoding issues.
Common mistakes
Inconsistent capitalization:
Facebookvsfacebook= two different campaigns in analytics. Stick to lowercase.Spaces in UTM: causes encoding issues. Use
-or_.Missing UTM: traffic shows as
(direct)in GA4. Always includeutm_*.Same
utm_campaignfor everything: defeats the purpose. One UTM per campaign.Trailing question marks:
https://store.com/?→ Wevion handles, but external systems may break. Clean URLs.
In data model
Stored on the ad's destinationUrl:
ad.destinationUrl = "https://store.com/product"
ad.urlParameters = {
utm_source: "facebook",
utm_medium: "cpc",
utm_campaign: "summer-sale-2026",
utm_content: "carousel-shoes-v3",
utm_term: ""
}
At publish time, Wevion concatenates URL + params before sending to the ad platform.
What you'll see
In Campaign Creator creative step:
Destination URL field (you enter base URL)
URL preview below shows full URL with auto-generated UTMs
Edit URL parameters button → expanded view with per-parameter override
In Bulk Launch:
Per-row URL parameters column (JSON or comma-separated)
Validation on URL format
Best practices
Keep utm_campaign stable
Don't change the utm_campaign value mid-campaign — breaks attribution continuity. Decide naming up-front.
Use template for consistency
Set up your team's UTM convention in a Campaign Template. All future campaigns inherit.
Test with one campaign first
Launch one campaign with full UTM. Check GA4 / Shopify / HubSpot to confirm UTMs flowing through. Adjust if needed before scaling.
Track per-platform separately
Even if all platforms drive to same URL, distinct utm_source per platform lets you compare in analytics.
Common questions
"Should I use Wevion's auto-UTM or my custom?": auto-UTM is fine for most. Customize if your existing analytics naming differs.
"What if my landing page already has UTMs?": Wevion's auto-UTM overrides them. To preserve: pre-pend in your URL or set custom values matching your existing pattern.
"Does UTM affect ad performance?": no — UTM is invisible to the user (URL parameters). Only affects attribution reporting.
"How long do UTM values persist?": depends on your analytics tool. GA4 attributes the click + subsequent activity in that session (default 30 min idle = new session).
Related
Use Creative Hub files — UTM is set at creative step
Shopify orders sync — UTM in Shopify order data
WooCommerce sync — UTM in WooCommerce attribution