UTM Tracking for Insider: How to Build and Validate Campaign Links

Insider is a cross-channel Growth Management Platform (GMP) used by retail, e-commerce, and travel brands to orchestrate personalized customer journeys across email, push notifications, in-app messages, SMS, WhatsApp, and web personalization (AI-powered banners, overlays, and product recommendations). The UTM challenge with Insider is the same one affecting every multi-channel engagement platform: push notifications (mobile and web), SMS, and WhatsApp have no HTTP referrer header. When a user taps a push notification, clicks an SMS link, or opens a URL from a WhatsApp message, the browser opens the destination URL without any referrer, and GA4 classifies the session as Direct traffic. The only reliable fix is to include UTM parameters in every action URL, SMS link, and WhatsApp message link before building the campaign in Insider's Architect journey designer. Build each tracked URL with mlz build --source "insider" --medium "push" (or the channel-appropriate medium), add --validate to confirm the destination resolves correctly, and paste the resulting tracked_url into the Insider campaign editor before the journey activates.

Terminal showing mlz build command with utm_source=insider and utm_medium=email, four channel cards showing utm_medium values for email, push, sms, whatsapp, a utm_source=insider card, a warning panel showing push, SMS, and WhatsApp appear as Direct in GA4 without UTM parameters, and a validated URL pill at the bottom.

Why Insider UTM tracking requires careful setup

Insider sends campaigns across six channel types, and each has a different behavior in terms of GA4 attribution. Email sent from Insider carries a referrer in many email clients when a user clicks a link — GA4 can read the referrer and attribute the session to email. But Insider does not automatically append UTM parameters to email links, so attribution depends on the referrer being present and correctly interpreted, which varies across email clients, device types, and privacy settings. Relying on the referrer alone results in some email sessions appearing as Direct and others as Referral in GA4 — fragmented attribution that underreports email's actual contribution.

For push notifications (both mobile app push and web push from Insider), there is no referrer at all. The notification payload contains the destination URL, and when a user taps the notification, the device opens that URL without passing a referrer header to the destination server. Without UTM parameters in the push notification action URL, every push-driven session in GA4 appears as Direct.

Insider's web personalization features — Smart Recommender (product recommendation widgets), banners, overlays, and exit-intent popups — generate links to product pages and landing pages directly on the website. When a visitor clicks an Insider-powered recommendation widget or banner CTA on the site, the resulting page view is attributed to Direct or Referral in GA4 because the click originates from the same domain. Adding UTM parameters to the destination URLs in these web personalization elements allows GA4 to identify them as Insider-driven traffic with a distinct campaign attribution.

Insider channel Referrer in GA4? Without UTM parameters Recommended utm_medium
Email Sometimes (unreliable) Email or Direct depending on client email
Mobile push notification No Direct in GA4 push
Web push notification No Direct in GA4 web-push
SMS No Direct in GA4 sms
WhatsApp No Direct in GA4 whatsapp
In-app message (web URL) No Direct in GA4 in-app
Web personalization (banners, overlays) Same-domain (Referral or Direct) Direct or self-referral in GA4 web-personalization

Building tracked Insider campaign URLs with mlz build

Build your tracked URLs with mlz build before opening Insider's campaign editors or Architect journey designer. For push notifications, paste the tracked_url into the notification's Action URL or Deep Link URL field in the push editor. For email, paste it into each hyperlink in the email HTML editor. For SMS and WhatsApp, paste the tagged URL as the message link before Insider's link shortening wraps it. For in-app messages with web URL CTAs, enter the tagged URL in the CTA destination field. For web personalization elements (banners, overlays, recommendation widget CTAs), enter the tagged URL as the element's click-through destination. Add --validate to each build command to confirm the destination URL resolves correctly before the campaign activates.

mlz build — Insider multi-channel campaign
# Email campaign
$ mlz build \
  --url "https://store.example.com/flash-sale" \
  --source "insider" \
  --medium "email" \
  --campaign "flash-sale-jun-2026" \
  --validate

{
  "tracked_url": "https://store.example.com/flash-sale?utm_source=insider&utm_medium=email&utm_campaign=flash-sale-jun-2026",
  "params": {
    "utm_source": "insider",
    "utm_medium": "email",
    "utm_campaign": "flash-sale-jun-2026"
  },
  "stored": true
}

# Push notification for the same campaign
$ mlz build \
  --url "https://store.example.com/flash-sale" \
  --source "insider" \
  --medium "push" \
  --campaign "flash-sale-jun-2026" \
  --validate

{
  "tracked_url": "https://store.example.com/flash-sale?utm_source=insider&utm_medium=push&utm_campaign=flash-sale-jun-2026"
}

# Web personalization overlay CTA (same campaign, onsite medium)
$ mlz build \
  --url "https://store.example.com/flash-sale" \
  --source "insider" \
  --medium "web-personalization" \
  --campaign "flash-sale-jun-2026" \
  --validate

{
  "tracked_url": "https://store.example.com/flash-sale?utm_source=insider&utm_medium=web-personalization&utm_campaign=flash-sale-jun-2026"
}

In GA4, filter by utm_campaign=flash-sale-jun-2026 to see all sessions from this Insider campaign across email, push, and web personalization in a single campaign report view. Pivot on utm_medium to compare which channel drove the most sessions and conversions. A consistent utm_campaign slug across all channels groups every touchpoint into one campaign row, while distinct utm_medium values allow per-channel attribution analysis and custom channel grouping in GA4.

UTM tracking for Insider Architect journeys

Insider's Architect is its visual customer journey orchestration tool — the primary interface for building multi-step, multi-channel automation sequences. An Architect journey can include email, push, in-app message, SMS, and WhatsApp nodes triggered by events (purchase, browse abandonment, cart abandonment, account creation) or attributes (inactivity, segment membership, lifecycle stage). For each Architect journey node that delivers a message with a URL to an external destination, build a separate tracked URL using a consistent utm_campaign slug for the whole journey and matching utm_medium to the channel of each node. Use utm_content to identify individual Architect nodes so GA4 can show which step in the journey sequence drove each conversion.

mlz build — Insider Architect post-purchase upsell journey
# Node 1: Push notification (1 day after purchase)
$ mlz build \
  --url "https://store.example.com/accessories" \
  --source "insider" \
  --medium "push" \
  --campaign "post-purchase-upsell" \
  --content "push-day1" \
  --validate

{
  "tracked_url": "https://store.example.com/accessories?utm_source=insider&utm_medium=push&utm_campaign=post-purchase-upsell&utm_content=push-day1"
}

# Node 2: Email (3 days after purchase)
$ mlz build \
  --url "https://store.example.com/accessories" \
  --source "insider" \
  --medium "email" \
  --campaign "post-purchase-upsell" \
  --content "email-day3" \
  --validate

{
  "tracked_url": "https://store.example.com/accessories?utm_source=insider&utm_medium=email&utm_campaign=post-purchase-upsell&utm_content=email-day3"
}

# Node 3: WhatsApp with bundle offer (7 days after purchase)
$ mlz build \
  --url "https://store.example.com/bundle-offer" \
  --source "insider" \
  --medium "whatsapp" \
  --campaign "post-purchase-upsell" \
  --content "wa-day7-bundle" \
  --validate

{
  "tracked_url": "https://store.example.com/bundle-offer?utm_source=insider&utm_medium=whatsapp&utm_campaign=post-purchase-upsell&utm_content=wa-day7-bundle"
}

With this tagging structure, GA4's campaign report for utm_campaign=post-purchase-upsell shows all upsell revenue attributable to this Insider Architect journey across push, email, and WhatsApp nodes. The utm_content dimension identifies which Architect step was the last touchpoint before the upsell conversion. Use this data to optimize the journey: if email-day3 drives the most upsell conversions, consider adding a second email node or adjusting the timing of the push and WhatsApp nodes.

Insider UTM tracking gotchas

Insider's web personalization links create self-referral sessions in GA4 without UTM parameters
Insider's Smart Recommender, In-App Messages (web), and web banners are served on your website's pages through the Insider tag (JavaScript snippet). When a visitor clicks a recommendation widget or banner CTA, the destination page is typically another page on the same domain. GA4 treats this as a self-referral — it may record the session as a new session with a Direct source, or continue the existing session depending on whether the destination domain matches the referring domain's configuration in GA4. Adding UTM parameters to Insider web personalization CTA URLs creates a distinct attribution event. Build tracked URLs with utm_source=insider&utm_medium=web-personalization and enter them as the CTA destination in each web personalization element. Add your domain to GA4's referral exclusion list (Admin > Data Streams > Configure Tag Settings > Unwanted Referrals) to prevent Insider's redirect domains from creating session interruptions.
Insider's Smart Recommender generates product URLs dynamically — static UTMs may not work
Insider's Smart Recommender generates product recommendation links at render time based on each visitor's personalization profile. Each product link points to a different product page URL, which makes it impractical to pre-build a static tracked URL for each recommendation. For Smart Recommender widgets, Insider's configuration allows you to append a static UTM string as a URL suffix to all recommendation links generated by the widget — configure this in the Smart Recommender settings as a URL parameter append rule: utm_source=insider&utm_medium=web-personalization&utm_campaign=recommender-[zone-name]. For static-destination web personalization elements (banner CTAs, overlay CTAs), use mlz build to pre-build the tagged destination URL and confirm it resolves correctly with --validate.
Insider's email link click-tracking may wrap your UTM-tagged URLs in a redirect
Insider email campaigns include click-tracking that wraps all email links through an Insider redirect URL for click count measurement. The final destination URL (including its UTM parameters) is encoded in the Insider redirect URL. In most cases, the redirect preserves all query string parameters including UTM values when the user arrives at the destination. Confirm this by building a test email link with mlz build --validate and opening the resulting URL from a real Insider email — verify that GA4 records the session with the correct utm_source=insider, utm_medium=email, and campaign values. If the redirect strips UTM parameters, check Insider's link-tracking configuration or contact Insider support for the appropriate parameter-passing option.
Insider push notifications support both web push and app push with different URL types
Insider sends two types of push notifications: web push (browser notifications for website visitors who have opted in) and app push (mobile push to users of your iOS or Android app). Web push notifications open a browser tab directly — use utm_medium=web-push for web push action URLs. App push notifications can link to either a deep link (in-app screen) or a web URL opened in the device browser — use utm_medium=push for app push URLs that open web destinations. Deep links to in-app screens do not generate web sessions in GA4, so UTM parameters on deep links only take effect if the app explicitly reads them and fires a GA4 event. For app push notifications pointing to web URLs, always use utm_medium=push with a validated URL.
Insider's A/B testing in Architect may require distinct utm_content values per variant
Insider Architect journeys support A/B testing at individual nodes — for example, testing two versions of a push notification with different copy or images. If both variants link to the same destination URL but with different copy, you may want to track which variant drove more conversions in GA4. Build separate tracked URLs for each variant with distinct utm_content values: --content "push-variant-a" and --content "push-variant-b". This requires configuring Insider to use the appropriate variant URL for each branch of the A/B test node in Architect. Without distinct utm_content values, GA4 cannot differentiate between conversions driven by each variant.

Insider UTM naming conventions

Recommended UTM parameter values for Insider, aligned with GA4 channel reporting and a lowercase-hyphenated taxonomy:

  • utm_source: insider for all campaigns sent from the Insider Growth Management Platform across all channels. Always lowercase, single word. A single source value for all Insider channels makes it easy to filter GA4 to see all Insider-attributed traffic, then pivot on utm_medium for channel breakdown. Avoid compound source values like insider-push or insider-email — the channel belongs in utm_medium.
  • utm_medium: Match the delivery channel — email for email campaigns and Architect email nodes; push for mobile app push notifications; web-push for web browser push notifications; sms for SMS messages; whatsapp for WhatsApp Business messages; in-app for in-app message CTAs linking to web URLs; web-personalization for banners, overlays, and Smart Recommender CTAs on the website. GA4's default channel grouping does not include push, web-push, whatsapp, in-app, or web-personalization — add custom channel grouping rules (Admin > Data Display > Channel Groups) for each medium value.
  • utm_campaign: A consistent slug per campaign or Architect journey. For broadcast campaigns: flash-sale-jun-2026, new-arrivals-jun, winback-jun-2026. For Architect journeys: post-purchase-upsell, cart-abandon-journey, onboarding-journey, browse-abandon-journey. Use the same slug across all channel nodes in an Architect journey so GA4 groups all touchpoints into one campaign row.
  • utm_content: Architect journey node identifier or A/B variant label. For multi-step journeys: push-day1, email-day3, wa-day7-bundle. For A/B test variants: variant-a, variant-b. For web personalization elements: homepage-banner, exit-overlay, recommender-pdp. Omit for single-message campaigns with no variants.
  • utm_term: Rarely used for Insider campaigns. Reserve for cases where the same Architect journey targets meaningfully different audience segments: utm_term=vip, utm_term=lapsed-60d, utm_term=new-customer.

See the UTM naming conventions guide for the full cross-platform reference and the UTM tracking for developers guide for programmatic generation and validation at scale.

FAQ

Does Insider automatically add UTM parameters to campaign links?
No. Insider does not automatically append UTM parameters to push notification action URLs, SMS links, WhatsApp message links, or in-app message CTA URLs. For email campaigns, Insider applies click-tracking redirect wrapping for its own click measurement, but this does not add UTM parameters for GA4 attribution. For web personalization elements (banners, overlays), Insider does not add UTM parameters to destination URLs. You need to manually build tracked URLs with UTM parameters and enter them in the appropriate Insider campaign editors and Architect journey nodes. Use mlz build --source "insider" --medium "[channel]" --campaign "your-slug" --validate for each URL.
What utm_source should I use for Insider?
Use utm_source=insider for all campaigns across all Insider channels (email, push, SMS, WhatsApp, in-app, web personalization). A single source value makes it easy to filter GA4 to see all Insider-attributed traffic in one report, then break it down by utm_medium for channel comparison. Avoid channel-specific source values like utm_source=insider-push — the channel distinction belongs in utm_medium.
How do I track Insider Architect journeys (multi-step automations) in GA4?
Use a consistent utm_campaign slug for all nodes in the journey, match utm_medium to the channel of each node (push, email, sms, whatsapp, in-app), and use utm_content to identify each node (e.g., push-day1, email-day3, wa-day7-bundle). In GA4, filter by utm_campaign to see all sessions from the Architect journey across all channels, then pivot on utm_medium to compare channel performance and on utm_content to compare individual node performance.
How do I track Insider web personalization elements in GA4?
For static-destination web personalization elements (banner CTAs, overlay CTAs), build tracked URLs with mlz build --source "insider" --medium "web-personalization" --campaign "element-name" --validate and enter the tracked_url as the CTA destination in the Insider personalization editor. For Smart Recommender widgets that generate product links dynamically, configure Insider's Smart Recommender settings to append a static UTM query string (e.g., utm_source=insider&utm_medium=web-personalization&utm_campaign=recommender) to all generated product URLs. Also add your site domain to GA4's referral exclusion list to prevent Insider's redirect domains from creating self-referral session interruptions.
How do I validate Insider campaign URLs before they go live?
Run mlz build --url "your-destination" --source "insider" --medium "[channel]" --campaign "your-slug" --validate for each campaign URL before entering it in Insider. The --validate flag confirms HTTPS, resolution (200 response), redirect chain integrity, and query string preservation through any redirects — including Insider's click-tracking redirects if applicable. For email campaign landing pages that will also be promoted on other channels, run mlz inspect "your-tracked-url" to verify OG tags, Twitter Card metadata, and viewport configuration before the campaign sends. See the campaign link preflight check guide for the complete pre-launch validation workflow.

Build Insider campaign links from the terminal

Use mlz build --source "insider" --medium "email" (or the channel-appropriate medium) to generate tracked URLs for every Insider campaign and Architect journey node before entering them in the Insider editor. Build a separate URL per channel node within each Architect journey — using the same --campaign slug but a different --medium for each channel step. Add --content "push-day1", --content "email-day3", etc. to identify individual Architect nodes in GA4 reports. Add --validate to confirm each destination URL resolves correctly and that UTM parameters are preserved through any redirect chain before the Architect journey goes live.

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.