# UTM Common Mistakes

> The seven most common UTM parameter mistakes that silently corrupt attribution data, fragment traffic sources, and break campaign reporting, with fixes for each one.

UTM parameter mistakes silently corrupt your attribution data. You get no error message, just wrong numbers in your [Campaign Report](/docs/campaign-report). Here are the seven most common mistakes and how to fix each one.

## 1. Inconsistent Naming Conventions

Different naming patterns fragment your data across multiple line items.

```
utm_source=Facebook    (campaign 1)
utm_source=facebook    (campaign 2)
utm_source=fb          (campaign 3)
```

Google Analytics 4 (GA4) and AnyTrack treat each variation as a separate traffic source. Instead of one consolidated view of your Meta traffic, you see three fragmented entries in your reports.

> ✅ **Fix**
>
> Document naming conventions before launching campaigns. Use lowercase only. Use underscores or hyphens, not spaces. Keep names concise and descriptive. Share the convention with your team and enforce it across all campaigns.

## 2. Using UTM Parameters on Internal Links

Adding UTM parameters to links within your own website is one of the most damaging mistakes because it overwrites the original traffic source.

A visitor arrives from a Meta ad (`utm_source=facebook`). They click a banner on your site tagged with `utm_source=homepage_promo`. The original Meta [attribution](/docs/anytrack-attribution-explained) is overwritten. When they convert, the sale attributes to `homepage_promo` instead of the Meta ad that actually drove the visit.

> ✅ **Fix**
>
> Never add UTM parameters to links on your own domain. UTM parameters are exclusively for external traffic sources: ads, emails, social posts, and partner links. If intermediate platforms (PayPal, Mailchimp) overwrite your UTMs, use [Ignored Sources](/docs/ignored-sources) to protect your attribution.

## 3. Missing Required Parameters

Omitting `utm_source`, `utm_medium`, or `utm_campaign` breaks traffic categorization across all your analytics tools.

A URL with only `utm_campaign=summer_sale` (no `utm_source` or `utm_medium`) shows as "direct" or "unassigned" traffic in GA4. AnyTrack cannot identify which platform drove the visit, so conversions remain unattributed.

> ✅ **Fix**
>
> Always include all three required parameters: `utm_source`, `utm_medium`, and `utm_campaign`. For ad campaigns, also include `utm_id`. This is how GA4 and AnyTrack match campaign-level data from your ad platform API. See the [UTM Parameters](/docs/utm-parameters) reference for the full list.

## 4. Passing Unique Values in `utm_medium`

The `utm_medium` parameter is for channel types, not unique identifiers.

Setting `utm_medium=campaign_12345` or `utm_medium=adset_name` breaks GA4 Default Channel Grouping. GA4 uses `utm_medium` to classify traffic into channels like "Paid Search," "Paid Social," and "Email." Unrecognized values get classified as "Unassigned," making your channel reports unreliable.

> ✅ **Fix**
>
> Use standard medium values: `cpc` for paid search, `cpc` or `paid` for paid social, `email` for email campaigns, `organic` for organic social, `referral` for partner links. Pass campaign IDs and ad set names in `utm_id`, `utm_content`, or `utm_term` instead.

## 5. Not Including ID-Based Parameters

Name-based UTM parameters alone are insufficient for accurate [campaign reporting](/docs/campaign-report) in AnyTrack.

If your UTMs only include `utm_campaign=summer_sale` without `utm_id`, AnyTrack cannot match session data with ad platform campaign data. You see sessions and conversions, but they are not aligned with spend, impressions, and ROAS at the campaign, ad set, or ad level.

> ✅ **Fix**
>
> Use the recommended tracking templates from your AnyTrack dashboard under **Tracking Tags → Ads Integrations**. These templates include both name-based and ID-based parameters. Essential ID parameters: `utm_id` (campaign ID), `adset_id`, and `ad_id`. Platform-specific guides: [Facebook Ads UTM](/docs/facebook-utm), [Google Ads UTM](/docs/google-ads-utm-parameters), [TikTok Ads UTM](/docs/tiktok-utm).

## 6. Spaces and Special Characters in Values

Spaces and special characters cause URL encoding issues and fragmented data.

`utm_campaign=Summer Sale 2026` gets URL-encoded to `utm_campaign=Summer%20Sale%202026`. Different browsers handle encoding inconsistently, which fragments your data across multiple entries in reports.

> ✅ **Fix**
>
> Replace spaces with underscores (`summer_sale_2026`) or hyphens (`summer-sale-2026`). Avoid special characters: `&`, `=`, `?`, `#`, `%`. Most ad platforms handle encoding automatically when you use dynamic tokens in the recommended tracking templates.

## 7. Not Testing URLs Before Launch

Launching campaigns with broken UTM parameters means every click generates bad data.

A missing `&` between parameters, a typo in a token name, or a trailing space silently breaks tracking. You do not notice until you check reports days or weeks later, by which time the budget has been spent on untrackable traffic.

> ✅ **Fix**
>
> Click every tagged URL before launching. Verify parameters appear correctly in your browser address bar and in the AnyTrack real-time dashboard. For Meta Ads, use the **VERIFY ADS SETTINGS** feature to scan all your ads for UTM issues automatically. See the [setup validation checklist](/docs/verify-and-validate-anytrack-setup) for a full walkthrough.

## Summary

| Mistake | Impact | Fix |
| --- | --- | --- |
| Inconsistent naming | Fragmented data | Document conventions, use lowercase |
| UTMs on internal links | Overwrites traffic source | UTMs only on external links |
| Missing required parameters | Traffic classified as direct | Always include source, medium, campaign |
| Unique values in `utm_medium` | Breaks GA4 channel grouping | Use standard medium values |
| No ID-based parameters | Cannot match sessions with ad data | Use recommended templates |
| Spaces and special characters | URL encoding issues | Use underscores or hyphens |
| Not testing URLs | Silent tracking failures | Test every URL before launch |

<Cards columns={2}>
  <Card title="UTM Parameters Reference" href="/docs/utm-parameters" icon="fa-book" iconColor="blue-500">
    <p>Standard UTM parameters, recommended tracking templates, and how AnyTrack uses UTMs for attribution.</p>
  </Card>
  <Card title="Validate Your Setup" href="/docs/verify-and-validate-anytrack-setup" icon="fa-check-circle" iconColor="green-500">
    <p>Step-by-step checklist to verify your Tracking Tag, UTM parameters, and ad platform connections.</p>
  </Card>
</Cards>

<FaqAccordion
  title="UTM Common Mistakes FAQ"
  icon="fa-duotone fa-circle-question"
  items={[
    {
      question: "How do I check if my UTM parameters have issues?",
      answer: "Use the VERIFY ADS SETTINGS feature in your AnyTrack dashboard. Go to Tracking Tags, select your Tracking Tag, open Ads Integration, and click VERIFY ADS SETTINGS. AnyTrack scans your ads and flags any UTM issues with suggested fixes. See the <a href='/docs/verify-and-validate-anytrack-setup'>setup validation checklist</a> for the full verification process."
    },
    {
      question: "Can mixed-case UTMs be fixed retroactively?",
      answer: "No. UTM parameters are case-sensitive, so <code>utm_source=Facebook</code> and <code>utm_source=facebook</code> are treated as separate sources. You cannot merge them after collection. Standardize on lowercase going forward and update all active campaigns."
    },
    {
      question: "What happens if I forget utm_id in my tracking template?",
      answer: "AnyTrack can still track sessions and attribute conversions using other UTM parameters. However, you lose the ability to match sessions with campaign-level data (spend, impressions, clicks) from your ad platform API. Your <a href='/docs/campaign-report'>Campaign Report</a> cannot show ROAS or cost-per-conversion at the campaign level."
    },
    {
      question: "Do UTM parameters work with all AnyTrack plans?",
      answer: "Yes. UTM parameter tracking and attribution work on all AnyTrack plans, including the Free plan. The Tracking Tag captures UTM values from any visitor session regardless of plan tier."
    },
    {
      question: "Should I use UTM parameters on email links?",
      answer: "Yes. Add UTM parameters to links in your email campaigns so AnyTrack can attribute conversions back to the specific email. Use <code>utm_source=newsletter</code> (or your email platform name), <code>utm_medium=email</code>, and <code>utm_campaign</code> with your campaign name. Do not add UTM parameters to transactional emails like order confirmations."
    }
  ]}
/>
