---
title: UTM Builder
description: Build a correctly encoded campaign URL with source, medium, campaign, term, and content parameters while preserving existing URL data.
last_updated: 2026-09-12
---

# UTM Builder

The [interactive UTM Builder](/tools/utm-builder) creates a campaign URL using the browser's URL parser. It preserves existing query parameters and fragments, adds or replaces the UTM fields, and encodes values safely.

## Campaign parameters

The builder requires the three fields that establish the basic acquisition hierarchy:

- `utm_source` identifies the platform, publisher, newsletter, partner, or other traffic source;
- `utm_medium` identifies the channel type, such as `paid-social`, `email`, or `cpc`;
- `utm_campaign` identifies the initiative or campaign grouping.

Two optional fields provide more detail:

- `utm_term` can identify a paid keyword or targeting dimension;
- `utm_content` can distinguish a creative, placement, call to action, or experiment variant.

## Naming conventions matter

Choose one lowercase convention and use it everywhere. `paid-social`, `paid_social`, and `Paid Social` become three separate values in many reports. Stable names make campaign joins, dashboards, and conversion analysis easier.

Do not place personal data, secrets, or raw customer identifiers in UTM parameters. URLs can appear in browser history, analytics systems, logs, referrer headers, screenshots, and shared messages.

## A UTM naming convention for Meta ads

This example describes a Facebook ad promoting a demo in the United States. Keep names lowercase and use one separator. For an Instagram placement, use `instagram` as the source. Keep the campaign name consistent across its links and change content when the creative changes.

| Parameter | Convention | Example |
| --- | --- | --- |
| `utm_source` | One source per platform | `facebook` |
| `utm_medium` | One name for the paid social channel | `paid_social` |
| `utm_campaign` | `{market}_{offer}_{objective}_{period}` | `us_demo_leads_2026q4` |
| `utm_content` | `{format}_{angle}_{version}` | `video_problem_v1` |
| `utm_term` | Paid keyword when relevant; otherwise leave blank | (blank) |

Copy this naming template and replace its placeholders with your own values:

```text
utm_source=facebook
utm_medium=paid_social
utm_campaign={market}_{offer}_{objective}_{period}
utm_content={format}_{angle}_{version}
```

This is a team naming template, not an ad-platform macro. UTMs label traffic; they do not establish ad attribution by themselves. See [Google's UTM naming guidance](https://support.google.com/analytics/answer/10917952) for parameter meanings and case sensitivity.

For Google Ads URL settings, use the [tracking template and Final URL suffix examples](/library/google-ads-tracking-template).

## Test redirects after building the URL

A correct starting URL can still lose its parameters in a redirect chain. Open the generated URL and confirm that:

1. every redirect retains the full query string;
2. the final HTTPS page loads successfully;
3. the canonical landing page is the intended destination;
4. the acquisition parameters are captured before client-side routing removes or rewrites them;
5. consent rules are applied before the values are associated with an event.

UTM parameters describe campaign acquisition; they do not replace first-party conversion events, stable event IDs, or permitted match identifiers. Use the [Event ID pairing check](/library/meta-event-id-deduplication.md) for browser/server pairing and [Plainrouter Signals](/product/signals.md) for end-to-end measurement evidence.

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
