ao link
Affino
Remember Login
Search

UTM Campaign Tracking Guide

UTM (Urchin Tracking Module) is the standard way to tag links so marketing platforms can report where traffic came from. Affino supports UTM in two directions.

 

Outbound - automatic UTM on Message Campaigns (long-standing behaviour).

 

Affino automatically appends UTM parameters to every link in a Message Campaign. The auto-appended values are utm_source=newsletter, utm_medium=email, and utm_campaign={Message Campaign name}. This behaviour has been in place for many years and means clicks from your own newsletters are identifiable in your reports and downstream analytics without manually tagging every link. A per-message toggle ('Exclude Affino GA Code / UTM Parameters') lets you switch it off - see step 6 for the detail and the workaround for advertiser-provided links.

 

Inbound - session capture, attribution, and automation (added in Affino 9.0.11).

 

Affino captures UTM parameters from any visitor arriving on your site. Source, Medium, and Campaign values are recorded at the session level and retained for two years. The data flows into the Contact record for registered visitors, the Order record for purchases, the Campaign Dashboard for filterable reporting, the Referral Analysis and Order Referral Analysis screens, and the Customer Signals automation system through a new UTM trigger. A new UTM Link Builder in Control > Marketing > UTM Link Builder gives your team an in-platform URL generator that tags outbound URLs with Zone-aware base URLs and autocompleted Source/Medium/Campaign fields.

 

Where UTM data surfaces:

 

  • Session - recorded at first touch, retained for two years
  • Contact record - Source/Medium/Campaign on the main panel between First Touch and Last Touch, and consolidated on the Marketing panel
  • Order record - Source/Medium/Campaign on the Marketing panel below the main panel
  • Campaign Dashboard - attribution reporting with Zone/Source/Medium/Campaign/time-frame filters
  • Referral Analysis and Order Referral Analysis - UTM dimensions in filters and Group By options
  • Customer Signals - UTM trigger fires automations on inbound UTM values

 

What is new in 9.0.11: inbound session capture, UTM Link Builder, Campaign Dashboard UTM panel, Customer Signals UTM trigger, Contact Marketing panel, Order Marketing panel, Order Referral Analysis UTM dimensions, and Referral Analysis enhancements.

 

What is unchanged: the automatic UTM tagging of outbound Message Campaign links, and the per-message Exclude GA Code option.

 

The rest of this guide walks through each component in the order you typically use them. If you want to get started immediately, skip to step 2 (Quick Start). If you want background on what makes a good UTM value, see step 3 (UTM Best Practices) first.

2. Quick Start

The fastest path from zero to tracking your first campaign. Five steps, five minutes.

 

1. Pick your campaign values. Decide your Source, Medium, and Campaign before you build any links. Typical first pick: Source = newsletter, Medium = email, Campaign = autumn-2026-launch. Keep them lowercase and stable across channels. See step 3 for best-practice detail.

 

2. Generate a tagged link. Go to Control > Marketing > UTM Link Builder. Pick the Zone, optionally a Page Path, fill in Source/Medium/Campaign, and copy the generated URL.

 

3. Send the campaign. Paste the URL into a newsletter, a social post, an ad, or any outbound channel. For Affino Message Campaigns you do not need to paste a tagged URL - Affino tags links automatically. See step 6 for the detail.

 

4. Wait for traffic. When a visitor clicks the link, Affino captures the UTM at the session level. For registered visitors the values attach to their Contact record. For purchases they attach to the Order record. See step 7.

 

5. Review attribution. Go to Control > Marketing > Campaign Dashboards for impressions, clicks, leads, and orders filtered by UTM. Go to Control > Marketing > Referral Analysis for referral traffic broken down by Source/Medium/Campaign.

 

That is the full loop. The rest of this guide goes deeper on each stage.

 

Before you start:

 

  • You have a Zone configured in Affino
  • You have at least one live Message Campaign (optional, for outbound auto-tagging)
  • You have Customer Signals enabled if you want UTM-driven automation (optional)

3. UTM Best Practices

UTM parameters are a long-standing convention originating in Urchin Software Corporation's analytics tool (acquired by Google in 2005). Every major analytics platform - Google Analytics, Adobe, Plausible, Matomo - reads the same utm_source, utm_medium, and utm_campaign query parameters. Getting the most from UTM in Affino means following the conventions every tool expects, plus a handful of Affino-specific refinements.

 

Industry best practices:

 

  • Use lowercase throughout. linkedin not LinkedIn. UTM values are case-sensitive in URLs, and most analytics tools treat LinkedIn and linkedin as distinct sources, fragmenting reports. Lowercase is the universal default.
  • Use one canonical vocabulary per parameter. Source is the referring site or platform (google, linkedin, newsletter, partner-x). Medium is the channel type (cpc, social, email, referral, affiliate, display). Campaign is the marketing initiative (summit-2026, q4-brand-awareness, black-friday-24). Treat Source and Medium as a small, stable vocabulary across your organisation; Campaign is the free-text field you vary per initiative.
  • Replace spaces with hyphens or underscores. Spaces get percent-encoded (Summit%202026) and misread by many tools. The UTM Link Builder auto-converts to underscores on the Campaign field; elsewhere prefer hyphens.
  • Skip utm_term and utm_content unless you need them. Affino does not surface these fields by default. Use them only for paid-search keyword tracking (utm_term) or A/B variant tagging (utm_content).
  • Be stingy with campaigns. A campaign is a marketing initiative with a clear start, end, and goal - not every piece of creative. One campaign per product launch is usually the right granularity; distinguish individual posts or ads via Source and Medium, not new campaigns.
  • Keep outbound and inbound consistent. The exact UTM value you use on your outbound link is the exact value you will see in inbound attribution. Drift between what you tagged and what your reports show breaks attribution.

 

Affino-specific refinements:

 

  • Let the UTM Link Builder autocomplete enforce consistency. Every team member picks from the same autocompleted Source and Medium values over time. Vocabulary drift is minimised without needing a written rulebook.
  • Use the Zone selector, not hand-written URLs. The Link Builder picks each zone's canonical default URL for SEO consistency. Hand-writing URLs often introduces duplicate subdomains, stray paths, or protocol mismatches.
  • Leave Affino's auto-UTM on Messages enabled for most sends. The auto-tagging (utm_source=newsletter, utm_medium=email, utm_campaign={Message Campaign name}) is what powers the Campaign Dashboard's mailing attribution. Only disable it (Exclude GA Code) when you have a specific reason. See step 6.
  • Operationalise UTM with Customer Signals. Do not just report on UTM - drive automations. A visitor from paid-social/summit-2026 can automatically join a contact list, receive a welcome message, or trigger a lifecycle action. See step 9.
  • Keep Campaign Dashboard attributes aligned with your outbound UTM values. The dashboard's Source/Medium/Campaign multi-selects should match the exact values your outbound links use. A dashboard attribute of linkedin-paid paired with outbound UTM of paid-social reports zero traffic.

 

Worked example: a multi-channel Q4 summit campaign.

 

  • LinkedIn paid: utm_source=linkedin&utm_medium=paid-social&utm_campaign=summit-2026
  • LinkedIn organic post: utm_source=linkedin&utm_medium=organic-social&utm_campaign=summit-2026
  • Newsletter: handled automatically by Affino Message Campaign tagging - name the Message Campaign summit-2026 for consistency
  • Partner co-marketing link: utm_source=partner-name&utm_medium=referral&utm_campaign=summit-2026

 

Campaign stays stable across all channels; Source and Medium tell you which channel drove the click. At report time you can filter by Campaign to see the full picture, or by Medium to compare paid-social vs organic-social vs email.

4. UTM Link Builder

Control > Marketing > UTM Link Builder

 

The UTM Link Builder generates properly-tagged outbound URLs without needing an external tool. Use it when you want to share a link to one of your own zones with campaign tracking attached - for example a URL pasted into a LinkedIn post, an external newsletter, or a paid ad.

 

Fields:

 

  • Zone: dropdown. Automatically uses the zone's canonical default URL as the base, for SEO consistency.
  • Page Path: optional text field for a specific path under the zone (e.g. /events/2026-summit). Leave blank to use the zone's home URL.
  • Source: free text with autocomplete drawn from previously-used values across your team. Typical values: newsletter, linkedin, google, partner-x.
  • Medium: free text with autocomplete. Typical values: email, social, cpc, display.
  • Campaign: free text with autocomplete. Spaces are automatically converted to underscores in the output URL.

 

Live preview:

 

The generated URL updates as you fill in the fields, so you can see the final tagged URL before copying.

 

Buttons:

 

  • Copy to Clipboard: copies the generated URL ready to paste.

 

History panel:

 

Below the builder, the 10 most recently-generated URLs are shown. Up to 50 are stored in total and accessible via pagination. Use the history to pick up a previously-generated URL without rebuilding it.

 

Why autocomplete matters: autocomplete ensures everyone on your team uses the same Source and Medium values over time. Inconsistent naming (LinkedIn vs linkedin vs li) fragments your reports and makes campaign attribution unreliable. Treat Source and Medium as a small, stable vocabulary; Campaign is the free field you vary per initiative. See step 3 for the full best-practice guidance.

5. Campaign Dashboard

Control > Marketing > Campaign Dashboards

 

The Campaign Dashboard (renamed from Client Campaigns in 9.0.11) is where UTM-attributed traffic, impressions, clicks, leads, and orders are reported per campaign. Each campaign record groups message sends, ad placements, and lead-capture contact lists together and shows the combined performance. The 9.0.11 refresh adds a dedicated UTM Campaign panel for attribution configuration and updates the dashboard UI with the Flatpickr date picker and dark/light mode support.

 

UTM Campaign panel (on the campaign edit and view screens, positioned after the Ad Campaigns panel):

 

  • Zone: optional popup selector. Scopes the campaign's inbound UTM filter to one or more zones.
  • Source: required multi-select. Options include search, paid platforms, organic social, CRM, partners, PR/media, offline, and other.
  • Medium: required multi-select. Options include email, CPC, social, paid social, referral, affiliate, display, and other.
  • Campaign: optional text field. Supports pipe-delimited values for multiple UTM campaign identifiers on a single record.

 

Dashboard filters:

 

  • Zone
  • Source
  • Medium
  • Campaign
  • Time frame

 

Filters combine with AND logic. Client-facing shared dashboards inherit the authorising user's configured filters.

 

Click-data sources:

 

  • Mailing-only campaigns: click counts are sourced from the newsletter link-click tracker, which applies bot filtering and deduplication. Impression counts use total newsletter sends.
  • Campaigns with on-site ad placements: click counts are sourced from the campaign click tracker.

 

This alignment keeps the Campaign Dashboard consistent with the Newsletter Message reporting screens.

 

Sharing and permissions:

 

The dashboard is shareable with clients, sponsors, internal management, and cross-functional teams. Each shared view respects the permissions of the receiving user.

 

UX notes (9.0.11):

 

  • The Content Campaign tab is always visible in the navigation, even when no individual article or media item is selected - important for contributor-based campaigns that span multiple items.
  • The Message Campaigns tab no longer lists unsent messages, keeping the view focused on dispatched communications.
  • Key stats with zero values are suppressed to prevent misleading metrics.
  • The Manage button returns to the Campaign Dashboard (earlier 9.0.11 patches routed it incorrectly to the Control Centre home).

6. UTM on Outbound Messages

Control > Marketing > Message Campaigns > (Add/Edit)

 

By default, Affino automatically appends UTM parameters to every link in a Message Campaign. The auto-appended values are utm_source=newsletter, utm_medium=email, and utm_campaign={Message Campaign name}.

 

This behaviour has been in Affino since at least 2020 and means clicks from your own newsletters are identifiable in your reports without manually tagging every link. Affino appends to links - it does not remove anything from the original URL.

 

When the auto-tagging gets in the way:

 

Two common scenarios cause problems:

 

  • An advertiser, sponsor, or partner provides a link with their own UTM parameters. Without intervention, Affino appends its tagging on top, producing a double-UTM URL that breaks the click or corrupts the advertiser's tracking.
  • You manually tag a specific link in the message body (for example to identify a specific ad slot). Affino's auto-tagging appends its own values alongside, changing what downstream analytics tools see.

 

The per-message toggle: Exclude Affino GA Code / UTM Parameters

 

  • Location: on the Message Campaign record itself, Control > Marketing > Message Campaigns > (Add/Edit).
  • What it does: when enabled, Affino does not append its own UTM parameters to any link in that message. Any UTM values you have added manually to links remain intact.
  • All-or-nothing: the option applies to every link in the message. It cannot be enabled selectively for individual links.
  • What it does NOT disable: subscriber-level tracking, open tracking, and click tracking all continue to work. Only the UTM parameters on outbound link URLs are suppressed.

 

Implications of enabling Exclude GA Code:

 

  • UTM parameters are not added to any link in that message. Any reporting driven by Affino's standard utm_source=newsletter tagging pattern will not show data for that message.
  • Dynamic article listings in a newsletter cannot have UTM parameters added manually. If Exclude GA Code is enabled, those links carry no UTM at all.
  • UTM codes are for the target site, not the sending site. If the link target has its own analytics, the click is still tracked on arrival, but without the Affino-specific UTM codes, those visits will not be attributed to the originating message campaign in any reports that depend on those codes.

 

Workaround for a single external tagged link:

 

When you want Affino's auto-tagging on most links but need to preserve one advertiser's UTM values, use an Affino Redirect instead of disabling auto-tagging on the whole message:

 

  1. Build the Destination URL - the advertiser's full external URL with their UTM values intact.
  2. Choose a Redundant URL - an unused path on your own Affino zone (for example /redirect/advertiser-name). It must be internal to your Affino domain. External URLs will not validate as Redundant URLs.
  3. Create the redirect in Control > System > Redirects.
  4. Use the Redundant URL as the link in the message body.
  5. When a recipient clicks, Affino appends its auto-UTM to the Redundant URL. Because the Redundant URL is not a real page, the redirect fires and delivers the recipient to the Destination URL, preserving the advertiser's UTM values intact.

 

Notes:

 

  • Redirect propagation: redirects take a short period to kick in after creation. Test the redirect before the campaign goes live.
  • Watch for spaces: advertiser-supplied URLs sometimes contain spaces in UTM values (e.g. utm_campaign=Summit 2026). Spaces cause URL validation to fail when saving a Redirect. Remove them or replace with underscores. The UTM Link Builder auto-converts spaces to underscores for your own links.

 

Cross-reference: the Message Campaign Guide covers the broader Message Campaign setup. This step covers only the UTM-specific behaviour.

7. UTM on Contacts and Orders

UTM attribution is visible on both Contact and Order records. Both listings support Source, Medium, and Campaign text filters.

 

Contact Detail

 

Control > CRM > Contacts > (View)

 

UTM attribution is shown in two places on the Contact Detail screen:

 

  • Main panel: Source, Medium, and Campaign values are displayed between First Touch and Last Touch.
  • Marketing panel (below the main panel): consolidates Referrer (moved to the top), Source, Medium, and Campaign in one place.

 

UTM fields are view-only and display only when data is present - empty rows are not shown.

 

Contacts Listing

 

Control > CRM > Contacts

 

Filter by UTM to find contacts acquired through a specific campaign. The filters support wildcard matching and automatic whitespace trimming.

 

  • Source
  • Medium
  • Campaign

 

The My Contacts checkbox sits in the bottom filter row, closest to the Search button.

 

Order Detail

 

Control > Commerce > Orders > (View)

 

A Marketing panel below the main panel displays the UTM attribution that was attached to the order's originating session:

 

  • Referrer
  • Source
  • Medium
  • Campaign

 

Orders Listing

 

Control > Commerce > Orders

 

Filter orders by UTM to trace which campaigns are driving purchases:

 

  • Source (wildcard, whitespace trimmed)
  • Medium (wildcard, whitespace trimmed)
  • Campaign (wildcard, whitespace trimmed)

 

Export behaviour: the Orders Listing export respects the UTM filters. Only records matching the applied filters are exported. Use this to produce a spreadsheet of orders attributable to a single campaign.

8. Referral reports

Two core reports surface UTM attribution: the Referral Analysis screen and the Order Referral Analysis screen.

 

Referral Analysis

 

Control > Marketing > Referral Analysis

 

The Referral Analysis screen shows inbound referral traffic with content-level filtering and grouping. UTM, Zone, Section, Article, and date filters all combine with each other using AND logic.

 

Filters:

 

  • Zone (popup multi-select)
  • Section (popup multi-select)
  • Article (popup multi-select)
  • Source (UTM)
  • Medium (UTM)
  • Campaign (UTM)
  • Date range

 

Group By options:

 

  • Referrers
  • Landing Pages
  • Sections
  • Articles

 

Columns:

 

  • Referrer (or grouped dimension)
  • Impressions - each recorded visit from the referrer. Replaces the previous Sessions column; Impressions more accurately reflects repeat visits from the same referrer.
  • UTM Source / Medium / Campaign (where applicable)

 

Order Referral Analysis

 

Control > Commerce > Order Referral Analysis

 

Shows how UTM-tagged traffic converts into orders.

 

Group By selector:

 

  • Referrer
  • Source
  • Medium
  • Campaign

 

Columns:

 

  • Selected group dimension
  • UTM (combined Source / Medium / Campaign values)
  • Order count
  • Revenue

 

Filters:

 

  • Source (wildcard)
  • Medium (wildcard)
  • Campaign (wildcard)
  • Date range

 

Use this report to answer the question 'which campaigns are generating revenue', not just 'which campaigns are generating traffic'.

9. UTM-driven automation

Control > Marketing > Customer Signals > (Add/Edit)

 

Customer Signals fire automated actions when a user matches a defined trigger. The UTM trigger (new in 9.0.11) fires a signal based on inbound UTM parameters, so you can build campaign-aware automations - for example, tagging a contact list when visitors arrive from a specific campaign, or awarding a loyalty credit to users from a partner referral.

 

UTM trigger attributes:

 

  • Zone: optional popup. Scopes the trigger to one or more zones.
  • Source: multi-select from the standard Source categories (search, paid platforms, organic social, CRM, partners, PR/media, offline, other).
  • Medium: multi-select from the standard Medium categories (email, CPC, social, paid social, referral, affiliate, display, other).
  • Campaign: free text. Pipe-delimited for multiple campaign identifiers on a single trigger.

 

Matching logic:

 

  • AND: the visitor must match at least one value in Source AND in Medium AND in Campaign for the signal to fire. Use AND for narrow targeting (e.g. only paid social traffic from a named campaign).
  • OR: any matching value across any of the three fields fires the signal. Use OR for broader targeting (e.g. any traffic from a named campaign regardless of source).

 

Example (AND logic):

 

Source = linkedin, Medium = paid-social, Campaign = summit-2026. The signal fires only when all three match.

 

Example (OR logic):

 

Source = linkedin|twitter, Medium = blank, Campaign = summit-2026. The signal fires for any visitor from LinkedIn, any visitor from Twitter, or any visitor tagged with summit-2026 regardless of source.

 

Note: Customer Signals replace the earlier Conversion Events in 9.0.11. Existing Conversion Event triggers continue to work unchanged.

10. Tips, troubleshooting, and what to avoid

A checklist for running UTM tracking well in Affino, and common mistakes to watch for. Help guides cover both the positive (how to get the most out of a feature) and the negative (what commonly goes wrong); this step sits on the negative-space side.

 

Common mistakes to avoid:

 

  • Mixed-case UTM values. LinkedIn and linkedin are treated as different sources by most analytics tools and fragment your reports. Always lowercase.
  • Spaces in UTM values. Spaces get percent-encoded (utm_campaign=Summit%202026) and cause validation failures when saving Redirects. Replace with hyphens or underscores.
  • Inconsistent Source and Medium vocabulary. When one team member uses linkedin-paid and another uses paidsocial-linkedin, your Campaign Dashboard shows two different sources for the same channel. Agree a small, stable vocabulary; use the Link Builder's autocomplete to enforce it.
  • One UTM campaign per creative. Campaigns should be marketing initiatives, not individual posts or ad variants. Use Source and Medium to distinguish channel; keep Campaign stable across a single initiative.
  • Disabling Exclude GA Code when you do not need to. Exclude GA Code switches off Affino's automatic UTM tagging for a message. If left off unnecessarily, you lose the Campaign Dashboard's mailing attribution for that send.
  • Double-tagging advertiser links. When an advertiser provides a pre-tagged link, pasting it straight into a Message Campaign adds a second UTM on top. Use the Redirect workaround (step 6) to preserve the advertiser's tagging without disabling auto-tagging on the rest of the message.
  • Campaign Dashboard attributes that do not match UTM values. If the dashboard's Source multi-select has linkedin-paid but your outbound UTM says paid-social, the dashboard shows no traffic. Keep dashboard attributes and UTM values aligned.
  • Hand-written URLs that skip the Zone selector. The UTM Link Builder picks each zone's canonical URL for SEO consistency. Hand-writing URLs often introduces duplicate subdomains or stray paths that break tracking or SEO.

 

Naming conventions:

 

  • Use lowercase throughout. linkedin not LinkedIn.
  • Replace spaces with underscores. The UTM Link Builder auto-converts spaces to underscores on the Campaign field; external URLs need manual handling.
  • Establish a small, agreed vocabulary for Source and Medium. Autocomplete on the Link Builder enforces consistency over time.
  • Treat Campaign as the free-text field you vary per initiative. Source and Medium should be stable across campaigns.

 

Zone-aware URLs:

 

  • Use the UTM Link Builder's Zone dropdown. It picks up the canonical default URL for each zone, keeping SEO consistent.
  • Do not hand-write URLs with stray paths or duplicate subdomains.

 

Guest tracking:

 

UTM data is retained against guest sessions, not just logged-in users. This extends UTM visibility to the top of the acquisition funnel. When a guest registers or purchases, the UTM values on their pre-registration sessions are attributed to the newly-created Contact and Order records.

 

Zapier and third-party integration:

 

UTM values on Contact and Order records flow into any Zapier export. Combined with Zapier's integrations to ad platforms, CRMs, and data warehouses, you can push UTM-attributed contacts and orders into your wider marketing stack.

 

When to enable Exclude GA Code on a Message Campaign:

 

  • The message contains pre-tagged advertiser UTM links you need to preserve and you do not want auto-tagging on the rest of the message. Alternative: use the Redirect workaround in step 6 for a single-link exception.
  • Every link in the message is external and pre-tagged, and you want no Affino UTM tagging at all.
  • For most newsletter sends, leave Exclude GA Code off. The automatic tagging is usually what you want.

 

Troubleshooting broken UTM links in Messages:

 

  • Symptom: link 404s or redirects incorrectly. Likely cause: Affino appended its own UTM on top of a pre-tagged URL, producing a double-tagged URL. Fix: enable Exclude GA Code on the message, or use the Redirect workaround in step 6.
  • Symptom: advertiser's UTM tracking is not showing up in their analytics. Likely cause: Affino's UTM is appended alongside the advertiser's, confusing downstream tracking. Fix: same as above.
  • Symptom: link breaks on save because of spaces in the URL. Cause: a space left in a UTM value (e.g. utm_campaign=Summit 2026). Fix: remove the space before saving. The UTM Link Builder auto-converts spaces to underscores for your own links.

 

Common questions:

 

  • 'Does Exclude GA Code disable open or click tracking?' No. Only UTM parameters on outbound links are suppressed. Open tracking, click tracking, and subscriber-level metrics are unaffected.
  • 'Can I use Exclude GA Code on a single link rather than the whole message?' No. The toggle is all-or-nothing per message. Use the Redirect workaround in step 6 for single-link exceptions.
  • 'How long is UTM data retained on Contacts?' Two years at the session level. Once attributed to a Contact or Order, the values are retained with that record.

Did you find this content useful?

Thank you for your input

Thank you for your feedback

Product Version

Version 9.0.11.22
VIEW
Affino

Driving business at some of the world's most forward thinking companies

Our Chosen Charity

Humanity Direct