# Email UTM Campaign Builder

> Build consistent Google Analytics campaign URLs for each link placement in an email, preserve the destination's existing query parameters and fragment, and export a tracking manifest for implementation and QA.

- **Category:** Measurement
- **Updated:** July 2026
- **Canonical page:** [https://emailbump.com/tools/utm-builder](https://emailbump.com/tools/utm-builder)
- **Interactive tool:** [Open the UTM builder](https://emailbump.com/tools/utm-builder)

## What the tool does

The Email Bump UTM builder turns one destination and one campaign taxonomy into a set of placement-specific links. It supports the manual campaign parameters documented for Google Analytics 4, validates the campaign before handoff, and creates a compact manifest that an email builder, developer, analyst, or agent can inspect.

The builder can:

- Create separate links for a hero button, text link, image, footer button, or any other placement
- Give every placement a distinct `utm_content` value
- Normalize campaign values to lowercase
- Replace spaces with underscores or hyphens
- Preserve the destination's non-UTM query parameters
- Preserve a URL fragment such as `#pricing`
- Replace stale UTM parameters already present on the destination
- Warn about missing core fields, duplicate content labels, and unusually long URLs
- Flag common personal-data and secret patterns before a campaign is handed off
- Copy one link or all generated links
- Export the campaign manifest as CSV or JSON

All generation happens in the browser. Entered campaign values and destinations are not sent to Email Bump or an external analytics service by this tool.

## The core campaign model

Google Analytics recommends always setting source, medium, and campaign when URLs are manually tagged.

### Source

`utm_source` identifies the publisher, list, platform, or source that sent the traffic. For an owned newsletter, a durable source might be `customer_newsletter`, `product_updates`, or another stable program name.

A source should answer: “Where did this visit come from?” It should not change merely because the email had a new subject line or button color.

Avoid mixing synonyms such as:

- `newsletter`
- `email_newsletter`
- `customer-email`
- `Customer Newsletter`

Those values may appear as separate rows in analytics. Choose one controlled convention and keep it stable.

### Medium

`utm_medium` identifies the channel. For normal email traffic, `email` is the clearest default.

Do not encode the campaign, audience, or placement into the medium. Values such as `email-hero`, `newsletter-prospects`, and `email-summer-launch` make channel-level reporting harder. Those details belong in campaign, content, or an internal manifest field.

### Campaign

`utm_campaign` identifies the initiative being measured. Good values remain understandable after the send is over:

- `summer_launch_2026`
- `onboarding_day_03`
- `weekly_digest_2026_31`
- `renewal_reminder_30d`

A campaign name should be specific enough to find later and consistent enough to group. Teams should decide whether lifecycle stage, date, region, product, or audience belongs in the name before people begin inventing values independently.

## Supported GA4 campaign fields

The builder supports the documented manual campaign parameter set:

| Parameter | Purpose | Typical email use |
| --- | --- | --- |
| `utm_source` | Source of the traffic | Newsletter or program name |
| `utm_medium` | Marketing channel | `email` |
| `utm_campaign` | Campaign or initiative | Launch, digest, onboarding step |
| `utm_id` | Campaign identifier | Stable ID shared with a planning system |
| `utm_source_platform` | Platform that directed traffic | Email Bump or another sending platform |
| `utm_term` | Paid keyword or targeting term | Usually omitted for email |
| `utm_content` | Creative or placement distinction | `hero_cta`, `body_text_link` |
| `utm_creative_format` | Creative format classification | Optional controlled metadata |
| `utm_marketing_tactic` | Marketing tactic classification | Optional controlled metadata |

Google's current documentation notes that `utm_creative_format` and `utm_marketing_tactic` are not presently reported in Google Analytics properties. The builder includes them because they are documented parameters, but it displays that limitation so teams do not assume the values will appear in standard reports.

## Placement-level links with utm_content

An email often points to the same destination more than once. If every link is identical, analytics can attribute the visit to the campaign but cannot distinguish the clicked placement.

Use a distinct `utm_content` value for each meaningful placement:

- `hero_cta`
- `intro_text_link`
- `feature_image`
- `testimonial_cta`
- `footer_cta`

The visible internal label can be friendly, such as “Hero CTA,” while the generated content value follows the campaign naming convention.

Keep the distinction useful. Tagging every linked word with a one-off value can create noisy, high-cardinality reporting. Separate links when the result will influence a design, content, or placement decision. If two visually identical links serve the same role, they may not need separate content values.

The builder warns when two placements normalize to the same `utm_content`. Duplicate content values make the generated links analytically indistinguishable even if their internal labels differ.

## Naming conventions and case sensitivity

Campaign parameter values are case sensitive. `Summer_Launch`, `summer_launch`, and `SUMMER_LAUNCH` can fragment into different rows.

The builder can lowercase values and replace whitespace with underscores or hyphens. That creates consistency at generation time, but a button cannot define governance for an organization. Maintain a short written taxonomy that answers:

- Which source values are allowed?
- Is medium always `email` for email campaigns?
- Do campaign names include a year, date, region, product, or lifecycle stage?
- Are words separated by underscores or hyphens?
- Which placement names are standard?
- Where is the stable campaign ID created?
- Who approves a new source or medium value?

Prefer human-readable tokens over opaque abbreviations. A value should still make sense to an analyst who did not build the campaign.

## Campaign IDs

`utm_id` is useful when a human-readable campaign name can change or appear in more than one system. A stable ID can join analytics events to a campaign record, planning ticket, data warehouse row, or experiment.

Good IDs are:

- Stable throughout the campaign lifecycle
- Unique in the relevant reporting scope
- Free of personal information
- Generated by a controlled system when possible
- Stored with the campaign's source, medium, name, and dates

Do not use a recipient ID, email address, order number, or another person-level identifier as a campaign ID.

## What happens to the destination URL

The builder uses the browser URL parser and serializer rather than joining strings manually.

For a destination such as:

```text
https://example.com/summer-sale?plan=pro#pricing
```

the generated link keeps the existing `plan=pro` parameter and `#pricing` fragment, then adds the campaign parameters:

```text
https://example.com/summer-sale?plan=pro&utm_source=customer_newsletter&utm_medium=email&utm_campaign=summer_launch_2026&utm_content=hero_cta#pricing
```

If the input URL already contains a UTM parameter, the builder removes the old UTM set before appending the normalized campaign values. This avoids silently mixing an inherited campaign source with a new campaign name.

Values are percent-encoded by the standard URL API. A space, ampersand, question mark, Unicode character, or other reserved character inside a value is represented safely rather than being allowed to break the query string.

Only absolute HTTP and HTTPS destinations are accepted. Credentials embedded in a URL are rejected.

## Privacy and secret handling

Campaign URLs can be copied into email, chat, analytics logs, proxy logs, browser history, screenshots, support tickets, referrer data, and data warehouses. Treat every parameter as broadly visible.

Never put these values in UTM fields:

- Email addresses
- Phone numbers
- Recipient or customer names
- Authentication tokens
- API keys
- Session identifiers
- Password-reset or magic-link tokens
- Unhashed customer IDs when they identify a person
- Health, financial, or other sensitive attributes

The builder checks for common email-address, phone-number, bearer-token, API-key, password, and secret patterns. It also warns when the destination contains suspicious query-key names. These are heuristics, not a privacy guarantee. A harmless string can be flagged, and a sensitive value can escape detection.

Transactional and authentication links deserve extra care. A reset or sign-in URL may contain a required token. Do not copy that live personalized URL into a shared campaign manifest. Generate campaign links against a safe template destination or keep authentication links untagged when adding tracking would expose secrets or alter application behavior.

## Existing query parameters

Non-UTM destination parameters are preserved because they may control legitimate application state, such as:

- Product plan
- Locale
- Referral context
- Feature selection
- Landing-page experiment

Preservation does not mean those parameters are safe. Review the destination's existing query string before use. Remove personal data, credentials, internal-only debug switches, and accidental environment parameters.

Also test whether the landing application permits the complete query string. Some security middleware, signed URLs, caches, or application routers reject unknown parameters or require an exact signature.

## Redirects and link wrapping

Email service providers commonly wrap destination URLs for click tracking. Organizations may also use a branded redirect domain or link shortener.

Test the delivered message, not only the raw link. Confirm that:

1. The provider preserves every query parameter.
2. The redirect reaches the expected HTTPS destination.
3. The fragment survives when client-side navigation needs it.
4. Parameters are not decoded or encoded twice.
5. A security scanner visit does not trigger a destructive action.
6. The landing page loads without an open redirect or signature error.
7. Analytics records the expected campaign fields.

A shortener can make a message visually cleaner, but it introduces another dependency and can obscure the actual destination from recipients and security systems. Prefer a trusted branded redirect domain and retain the expanded URL in the campaign record.

## Auto-tagging and manual tagging

Some advertising platforms support auto-tagging and attach platform-specific click identifiers. Manual UTM tags can coexist with those identifiers, but attribution behavior depends on the analytics and advertising configuration.

Do not assume that adding more parameters always creates better attribution. Before applying a manual taxonomy to paid-media links, review the platform's current auto-tagging guidance and the organization's channel-grouping rules. The builder creates URL parameters; it does not configure Google Analytics, ad-platform linking, attribution models, or channel definitions.

## The campaign manifest

The tool creates a normalized campaign manifest containing:

- Destination URL
- Source
- Medium
- Campaign
- Campaign ID
- Source platform
- Optional term, creative format, and tactic
- Internal placement label
- Normalized content value
- Generated final URL
- Generation timestamp

CSV works well for a spreadsheet, campaign QA sheet, or handoff to an operations team. JSON is useful for a build pipeline, internal automation, or version-controlled campaign record.

The manifest is evidence of what the builder generated. It is not evidence that those links were inserted correctly into the final email. Compare the manifest with the actual sent message.

## Recommended campaign workflow

1. Start with the final canonical HTTPS landing page.
2. Remove personal data, secrets, preview tokens, and unnecessary query parameters.
3. Select controlled source and medium values.
4. Create a durable campaign name and stable campaign ID.
5. Add one row for every placement that needs separate measurement.
6. Normalize the values and resolve duplicate-content warnings.
7. Export the manifest before implementation.
8. Insert links into the email without editing them by hand.
9. Send to representative inboxes and inspect the actual wrapped links.
10. Click each placement and confirm the correct destination state.
11. Check real-time or debug analytics with internal/test traffic excluded from production reporting where appropriate.
12. Archive the manifest with the campaign brief and final creative.

## Quality-assurance checklist

Before launch, verify:

- The domain and path are correct
- HTTPS is used
- Source, medium, and campaign match the approved taxonomy
- The campaign ID matches the planning or warehouse record
- Every intentional placement has a unique content value
- Existing query parameters are necessary and safe
- No recipient data or secret is present
- The fragment points to an element that exists
- The final URL is not unexpectedly long
- Redirect and click-wrapping behavior was tested
- The page works with parameters present
- Analytics receives the expected campaign dimensions
- The campaign owner and analyst have the same manifest

## Limitations

The builder does not:

- Send a network request to verify that a destination exists
- Test every redirect in a click-tracking chain
- Configure Google Analytics or Tag Manager
- Guarantee how a custom analytics pipeline parses parameters
- Guarantee attribution after redirects, consent choices, browser privacy controls, or cross-domain navigation
- Detect every form of personal data or secret
- Validate an organization's private taxonomy
- Shorten URLs
- Generate recipient-specific tracking identifiers
- Prove that the final email contains the exported links
- Prevent security scanners from visiting a tracked link

Generated links should therefore be treated as implementation inputs that still require end-to-end campaign QA.

## Frequently asked questions

### Should utm_medium always be email?

For normal email campaigns, `email` is a clear and durable default. Use another value only when a documented analytics taxonomy intentionally requires it. Avoid inventing a new medium for each newsletter or email type.

### Should every link have a different utm_content?

No. Use different values when placement-level attribution can guide a decision. Excessive one-off values create noisy reporting. Repeated links that serve the same analytic role can share a value.

### Can I include spaces?

The URL standard can encode spaces, but analytics taxonomies are easier to query and compare when values use a consistent separator. The builder can convert whitespace to underscores or hyphens.

### Why are my campaigns split into several rows?

Parameter values are case sensitive, and spelling or separator changes create distinct values. Normalize case, use a controlled vocabulary, and avoid synonyms.

### Can UTM parameters hurt deliverability?

UTM parameters are common and are not, by themselves, proof of abusive mail. Reputation, authentication, recipient response, destination safety, redirect domains, and overall sending behavior matter. Extremely long, misleading, or suspicious links can still reduce trust and complicate security scanning.

### Does the builder track clicks?

No. It creates URLs. Click measurement occurs in the email platform, analytics system, redirect service, or landing application.

### Does the builder save my campaigns?

No. Generation is local to the current browser session. Export CSV or JSON and store the manifest with the campaign.

### What if the URL already has UTM parameters?

The existing UTM parameter set is removed and replaced by the current normalized campaign values. Non-UTM parameters and the fragment are preserved.

### Should I tag unsubscribe, preference, or authentication links?

Usually not for campaign attribution. Compliance, preference-center, reset, sign-in, and one-time action links often have different security and measurement requirements. Do not add parameters if they can expose a token, break a signed URL, or confuse a legal or operational action with marketing engagement.

## Primary sources

- [Google Analytics: URL builders and manual campaign parameters](https://support.google.com/analytics/answer/10917952?hl=en)
- [Google Analytics: Manual tagging](https://support.google.com/analytics/answer/11242870?hl=en)
- [WHATWG URL Living Standard](https://url.spec.whatwg.org/)

## Related guidance

- [Campaign analytics documentation](https://emailbump.com/docs/analytics.md)
- [Campaigns documentation](https://emailbump.com/docs/campaigns.md)
- [Click-through rate definition](https://emailbump.com/glossary/click-through-rate.md)
- [Email A/B test calculator](https://emailbump.com/tools/email-ab-test-calculator.md)
- [Email tools index](https://emailbump.com/tools.md)
