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:
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.
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:
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:
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.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.Summit%202026) and misread by many tools. The UTM Link Builder auto-converts to underscores on the Campaign field; elsewhere prefer hyphens.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).
Affino-specific refinements:
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.paid-social/summit-2026 can automatically join a contact list, receive a welcome message, or trigger a lifecycle action. See step 9.linkedin-paid paired with outbound UTM of paid-social reports zero traffic.
Worked example: a multi-channel Q4 summit campaign.
utm_source=linkedin&utm_medium=paid-social&utm_campaign=summit-2026utm_source=linkedin&utm_medium=organic-social&utm_campaign=summit-2026summit-2026 for consistencyutm_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.
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:
/events/2026-summit). Leave blank to use the zone's home URL.newsletter, linkedin, google, partner-x.email, social, cpc, display.
Live preview:
The generated URL updates as you fill in the fields, so you can see the final tagged URL before copying.
Buttons:
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.
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):
Dashboard filters:
Filters combine with AND logic. Client-facing shared dashboards inherit the authorising user's configured filters.
Click-data sources:
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):
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:
The per-message toggle: Exclude Affino GA Code / UTM Parameters
Implications of enabling Exclude GA Code:
utm_source=newsletter tagging pattern will not show data for that message.
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:
/redirect/advertiser-name). It must be internal to your Affino domain. External URLs will not validate as Redundant URLs.
Notes:
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.
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:
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.
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:
Orders Listing
Control > Commerce > Orders
Filter orders by UTM to trace which campaigns are driving purchases:
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.
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:
Group By options:
Columns:
Order Referral Analysis
Control > Commerce > Order Referral Analysis
Shows how UTM-tagged traffic converts into orders.
Group By selector:
Columns:
Filters:
Use this report to answer the question 'which campaigns are generating revenue', not just 'which campaigns are generating traffic'.
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:
Matching logic:
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.
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:
LinkedIn and linkedin are treated as different sources by most analytics tools and fragment your reports. Always lowercase.utm_campaign=Summit%202026) and cause validation failures when saving Redirects. Replace with hyphens or underscores.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.linkedin-paid but your outbound UTM says paid-social, the dashboard shows no traffic. Keep dashboard attributes and UTM values aligned.
Naming conventions:
linkedin not LinkedIn.
Zone-aware URLs:
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:
Troubleshooting broken UTM links in Messages:
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:
Meetings:
Google Meet and Zoom
Venue:
Soho House, Soho Works +
Registered Office:
55 Bathurst Mews
London, UK
W2 2SB
© Affino 2026