UTM Tracking for BigCommerce: How to Build and Validate Campaign Links
To add UTM tracking to BigCommerce campaign links, append UTM parameters to the product, category, or landing page URLs your ads, emails, and social posts link to. MissingLinkz mlz build enforces lowercase-hyphenated formatting across all UTM values, preventing the GA4 source fragmentation that manual entry causes when team members write BigCommerce, bigcommerce, and Bigcommerce as separate source values. mlz check validates that BigCommerce’s CDN layer, storefront URL redirects, and custom domain routing don’t strip query strings before GA4 records the session. The most common BigCommerce UTM tracking failure: BigCommerce’s built-in SEO redirect for category URLs fires a 301 that rewrites the URL without preserving the query string — your campaign drives traffic but GA4 shows it as Direct because the UTM parameters never reach the final page.
How BigCommerce handles UTM parameters
BigCommerce is a hosted SaaS ecommerce platform. Campaign links point to product pages (e.g., /summer-tee/), category pages (/category/summer-apparel/), or landing pages built with BigCommerce’s Page Builder. GA4 reads UTM parameters from the browser URL after the storefront renders. Between the campaign link URL and the rendered page, several platform layers can interfere with query string preservation.
BigCommerce routes traffic through Fastly’s CDN before requests reach the storefront application. The CDN layer handles caching, HTTPS enforcement, and URL normalization. BigCommerce also maintains an internal URL rewrite system that enforces canonical product and category URL slugs — when a campaign link uses an older or non-canonical URL format, BigCommerce issues a 301 redirect to the canonical slug. Depending on how the CDN and storefront handle this redirect, the original query string may or may not survive the hop.
BigCommerce’s custom domain setup adds another potential point of query string loss. If a store uses a subdomain (e.g., shop.example.com) with a proxy pass to the BigCommerce storefront, the proxy configuration controls whether query strings are forwarded. Use mlz build to generate normalized UTM-tagged URLs and mlz check to validate the complete redirect chain before any campaign launches. For the full UTM parameter specification and how GA4 attribution works, see the UTM tracking for developers guide.
Building BigCommerce campaign URLs with mlz build
BigCommerce stores typically run multi-channel campaigns across Google Ads, Meta, email platforms like Klaviyo, and paid social. Without a consistent naming tool, each channel manager independently types UTM values and introduces the casing inconsistencies that fragment GA4’s Acquisition report. GA4 treats google, Google, and Google Ads as three separate sources, and cpc, CPC, and paid-search as three separate mediums.
The recommended UTM naming convention for BigCommerce campaigns: utm_source identifies the traffic origin (google, klaviyo, facebook, instagram); utm_medium identifies the channel type (cpc, email, social); utm_campaign identifies the specific promotion (summer-launch-2026, black-friday-2026). Use utm_content to differentiate between creative versions or product placements within the same campaign. mlz build enforces these values through structured flags, normalizing values to lowercase-hyphenated format automatically.
$ mlz build \
--url "https://mystore.example.com/category/summer-apparel/" \
--source "google" \
--medium "cpc" \
--campaign "summer-launch-2026" \
--content "category-hero" \
--validate
{
"tracked_url": "https://mystore.example.com/category/summer-apparel/?utm_source=google&utm_medium=cpc&utm_campaign=summer-launch-2026&utm_content=category-hero",
"params": {
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "summer-launch-2026",
"utm_content": "category-hero"
},
"destination_url": "https://mystore.example.com/category/summer-apparel/",
"link_id": "lnk_bc_sum26",
"campaign_id": "cmp_summer-launch-2026",
"stored": true,
"created_at": "2026-07-09T08:15:00.000Z"
}
The tracked_url value is what goes into your Google Ads Final URL, Klaviyo template, or Meta ad destination. For product page campaigns linking to a specific BigCommerce product rather than a category:
mlz build --url "https://mystore.example.com/summer-tee/" --source "facebook" --medium "social" --campaign "summer-launch-2026" --content "carousel-product"
For naming conventions and how consistent casing prevents GA4 data fragmentation across BigCommerce campaign sources, see the UTM naming conventions guide. To generate BigCommerce campaign URLs programmatically via the REST API for bulk campaign setups, see how to build UTM links programmatically.
Validating BigCommerce URLs with mlz check
Once you have the UTM-tagged BigCommerce URL from mlz build, validate it end-to-end with mlz check before placing it in any ad, email, or social post. mlz check follows the complete redirect chain from the URL you provide, confirms the server responds with a 200 status code, and verifies that query parameters survive every hop through BigCommerce’s CDN, storefront routing, and custom domain proxy layers. Run this validation before any campaign launch, and re-run it after BigCommerce platform updates, URL slug changes, theme deployments, or CDN configuration changes.
$ mlz check "https://mystore.example.com/category/summer-apparel/?utm_source=google&utm_medium=cpc&utm_campaign=summer-launch-2026"
{
"url": "https://mystore.example.com/category/summer-apparel/?utm_source=google&utm_medium=cpc&utm_campaign=summer-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": 183 } },
{ "check": "redirects", "status": "pass", "message": "No redirects detected." },
{ "check": "response_time", "status": "pass", "message": "Response time: 183ms.", "details": { "response_time_ms": 183 } }
],
"status_code": 200,
"response_time_ms": 183,
"validated_at": "2026-07-09T08:16:00.000Z"
}
A valid: true result confirms the BigCommerce URL resolves with a 200 status code and all query parameters survive the CDN and storefront redirect chain. If valid is false, the checks array identifies the failing step. The most common BigCommerce failure: a redirects check showing parameter loss during BigCommerce’s canonical slug enforcement redirect, or a resolution failure where a category has been unpublished or a product has been deleted. For a walkthrough of diagnosing redirect chain failures, see how to check if a redirect strips UTM parameters.
BigCommerce UTM tracking gotchas
- BigCommerce canonical URL redirect strips query strings for non-canonical slugs
- BigCommerce maintains a canonical URL for every product and category page based on the slug defined in the admin. If a campaign link uses an older URL (from a product name change or category reorganization) or a non-canonical format, BigCommerce issues a 301 redirect to the canonical slug. This redirect is handled at the platform level before GA4 has an opportunity to read the UTM parameters — and the redirect may not preserve the original query string. The fix: always use the current canonical URL when building campaign links. In the BigCommerce admin, navigate to the product or category and copy the URL from the address bar to confirm the canonical slug. Then run it through
mlz buildto append UTM parameters, and validate withmlz checkto confirm no redirect fires. - Fastly CDN layer can cache normalized URLs that drop query parameters
- BigCommerce runs its storefront behind Fastly’s CDN. Fastly caches responses and can be configured to normalize URLs before caching — which may include stripping or sorting query parameters. BigCommerce’s default Fastly configuration is designed to preserve standard query strings including UTM parameters, but custom Fastly configurations or VCL overrides (available on higher-tier BigCommerce plans) can interfere with this behaviour. If you are on a BigCommerce Enterprise plan with custom Fastly configuration, test UTM parameter preservation with
mlz checkfrom a region not served by your local CDN node to test the full Fastly path. - BigCommerce headless or channel storefronts require separate URL validation
- BigCommerce Catalyst (the headless reference storefront) and third-party headless implementations using the Storefront API or GraphQL API introduce their own URL routing layers independent of BigCommerce’s traditional storefront. Campaign links in a headless BigCommerce deployment point to URLs served by the headless frontend (e.g., Vercel, Netlify) rather than the BigCommerce platform directly. The query string handling in this case depends entirely on the headless framework’s server-side routing logic and any CDN configuration in front of the Next.js or Remix application. Run
mlz checkagainst the actual storefront URL your campaign links to — not the BigCommerce admin URL — to test the real customer-facing URL routing behaviour. - BigCommerce multi-storefront setups require per-channel URL validation
- BigCommerce’s multi-storefront feature allows a single BigCommerce account to serve multiple storefronts, each with its own domain and URL structure. Campaign links for each storefront must be validated separately: a URL that resolves correctly on
us.mystore.commay behave differently oneu.mystore.comif the EU storefront has different CDN configuration, redirect rules, or category URL slugs. Runmlz checkagainst the specific storefront URL your campaign targets, not the default storefront URL. For automating validation across multiple storefronts before a coordinated campaign launch, see automating campaign link validation in CI/CD. - BigCommerce’s built-in URL redirects for deleted or moved products do not preserve UTM parameters
- When a BigCommerce product is deleted or its URL slug changes, BigCommerce’s built-in URL redirect manager creates a 301 redirect from the old URL to a new destination. These system-generated redirects do not preserve query strings — a campaign link pointing to a deleted product URL will redirect to the shop page or a 404 without carrying UTM parameters forward. Any campaign running against a BigCommerce product URL is at risk if that product’s status changes mid-campaign. Set a recurring validation step using
mlz checkagainst all active campaign URLs to detect unexpected redirects from product and category changes.
Frequently asked questions
- How do I add UTM parameters to a BigCommerce product or category link?
- Append UTM parameters directly to the BigCommerce product or category page URL used as the destination in your ads, emails, or social posts. The format is:
https://mystore.example.com/summer-tee/?utm_source=google&utm_medium=cpc&utm_campaign=summer-launch-2026. Use MissingLinkzmlz buildto generate these URLs with consistent lowercase-hyphenated formatting. Always use the canonical URL slug from your BigCommerce admin — campaign links using non-canonical slugs will trigger a 301 redirect that may drop the query string. - Why are my BigCommerce UTM parameters disappearing in GA4?
- The most common causes are: (1) BigCommerce’s canonical URL redirect fires for an old or non-canonical product URL slug and does not preserve the query string; (2) a Fastly CDN configuration or custom VCL normalizes the URL and drops query parameters; (3) a BigCommerce built-in redirect for a deleted or moved product routes visitors without preserving UTM parameters; (4) a headless storefront’s server-side routing drops query parameters during URL rewriting. Run
mlz checkagainst the full UTM-tagged URL to identify exactly which step in the redirect chain is stripping parameters. - Does BigCommerce’s Fastly CDN strip UTM parameters?
- BigCommerce’s default Fastly configuration is designed to pass standard query strings including UTM parameters through to the storefront. However, custom Fastly VCL configurations available on BigCommerce Enterprise plans can modify this behaviour. If you have a custom Fastly configuration, check whether your VCL includes query string normalization rules that might strip or sort UTM parameters. Run
mlz checkto validate that the full UTM-tagged URL resolves correctly through the CDN layer. - What UTM values should I use for BigCommerce campaigns?
- Use lowercase-hyphenated values consistently. For Google Ads:
utm_source=google,utm_medium=cpc. For Klaviyo email:utm_source=klaviyo,utm_medium=email. For Meta:utm_source=facebookorutm_source=instagram,utm_medium=social. Campaign slug:utm_campaign=summer-launch-2026. Useutm_contentto differentiate product variants or creative versions:utm_content=carousel-product-v2. Run all URLs throughmlz buildto enforce this convention and prevent GA4 attribution fragmentation from inconsistent casing. - How do I validate BigCommerce campaign links before launch?
- Run
mlz checkagainst the full UTM-tagged BigCommerce URL:mlz check "https://mystore.example.com/category/summer-apparel/?utm_source=google&utm_medium=cpc&utm_campaign=summer-launch-2026". The output confirms whether the URL resolves with a 200 status, whether any BigCommerce platform or CDN redirect drops the query string, and whether the response time is acceptable. Run this validation for every new campaign URL before launch, and again after any BigCommerce or theme update that might affect URL handling or CDN configuration.
Recommended posts
Build and validate BigCommerce UTM campaign links before every launch
mlz build generates normalized, consistently cased UTM destination URLs for BigCommerce campaigns — eliminating source and medium fragmentation in your GA4 Acquisition report. mlz check validates the full redirect chain, catching BigCommerce canonical slug redirects, Fastly CDN configuration issues, multi-storefront routing differences, and built-in product URL redirects that silently strip UTM parameters before GA4 fires.
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.