What is UTM performance?

UTM performance breaks attributed results down by the UTM tags on the visits that led to each order: utm_source, utm_medium, utm_campaign, utm_content and utm_term. It answers "which of my tagged links earned margin?" at whatever level of detail you tag at, for the period you pick.

Formula

attributed margin (UTM group, period) = Σ credit given to touches carrying those tags
orders (UTM group, period)            = number of distinct orders with such a touch

Worked example

An order books €76 of contribution margin after a newsletter visit (newsletter / email) and a paid search click (google / cpc). Under linear attribution each touch is credited €38. Grouped by source / medium, both rows show one order and €38 of margin. If the same order had two google / cpc clicks with different utm_campaign values, the source / medium row would still count it as one order; grouped by campaign, it appears once in each campaign's row.

How Saldo Metrics computes it

The attribution engine credits every order's revenue and margin across its tracked touches, per model, in fact_attribution. v_utm_attributed_touch keeps the touches of your default attribution model with their order date, UTM tags and the channel / campaign the engine tied them to; v_utm_performance sums them per UTM tag set and day. The section groups those rows by the level you choose. Revenue, margin and attributed orders add up; the Orders column is a distinct count of the orders in the group, because one order can carry several tags that merge into the same row. Touches with no UTM at all form their own "(no UTM)" row. Channel and campaign show the single value the group's touches resolved to, or "mixed" when they disagree. All amounts are EUR at the order's own dates, converted to your display currency.

Why it matters

Ad platforms report their own campaigns. UTM tags also cover newsletters, influencer links, QR codes and anything else you tag — traffic no ad platform reports on. Reading those at margin rather than revenue shows which links actually pay for themselves.

Common mistakes

  • Dividing campaign spend by a UTM row. Spend exists per channel, campaign and ad, not per utm_content; the section deliberately shows no ROAS.
  • Expecting history past your pixel retention window. Attribution is rebuilt from pixel events, which are anonymised after your retention period (365 days by default), so older attributed orders drop out.
  • Summing the Orders column. An order can appear in several rows; the total row counts it once.

Where you see this in the app

Marketing → Attribution, in the UTM performance section at the bottom of the tab. It is the only section there that follows the period filter.