Help Center
/
Integrations
/
What UTM parameters are required?

What UTM parameters are required?

The rule is simple: we can only break results down by something your link actually carries. A link with the campaign name alone gives you campaign-level reporting and nothing below it.

Web traffic

Please pass the IDs as well as the names, using your platform’s dynamic macros. A Meta link looks like this:

https://yourfunnel.com/?utm_source=facebookads&campaign_id={{campaign.id}}&campaign_name={{campaign.name}}&adset_id={{adset.id}}&adset_name={{adset.name}}&ad_id={{ad.id}}&ad_name={{ad.name}}&site_source_name={{site_source_name}}&placement={{placement}}

  • utm_source — the network, so the traffic is recognised as paid
  • campaign_id and campaign_name
  • adset_id and adset_name — without these there is no adset breakdown
  • ad_id and ad_name — without these there is no creative breakdown
  • placement / site_source_name — optional, useful for placement analysis

Two more things that matter on web: register every funnel URL in the app before launch, and make sure the funnel fires the cw_subscribe event (plus cw_nrc_purchase for one-time purchases). The link explains where the user came from; the event connects the purchase to them.


This long link is what we receive in the `first visit` event via event analytics (GA4, Amplitude, PostHog).

What We Get from UTM

  • From the link itself → we can tell which funnel** the user came from
  • From the UTM parameters → we understand which campaign / ad set / creative they came from

Without UTM, we only know the funnel. In that case, we can’t link the user to a specific campaign → attribution to the marketing source breaks down.

List of parameters — in our documentation on Attribution Links

The client decides which ones to pass, but the basic set for proper attribution includes: campaign_id, campaign_name, adset_id, adset_name, ad_id, ad_name, plus utm_source.

Mobile traffic

For app installs the equivalent is your MMP’s attribution link, built in the MMP with that network’s macros. The same principle applies: pass campaign, adset and ad IDs, not just names.

  • Self-attributing networks (Meta, Google, TikTok and similar) are wired through the MMP integration rather than a link you write by hand — the important part is that the integration is switched on for every account.
  • For iOS, campaign-level detail comes from the network’s SKAN reporting, so those ad accounts also need to be connected in the MMP.
  • For Web2App, keep the funnel identifiable after the redirect — either a separate attribution link per landing page, or the landing URL passed as a parameter — otherwise all funnels collapse into one row.

Custom segmentation

  • cw_p1–cw_p6 — pass any custom split directly in the link, for example &cw_p1=creative-batch-3. Spend can only be split by the same parameter if it is also set at campaign level in the ad platform. Otherwise revenue will split by it while the matching spend stays on one unassigned row.
  • cw_segment — an event for product-side segmentation, for example a quiz step or an onboarding branch.

A note on renaming

Reporting groups by name, so renaming a live campaign splits its history in two. The ID does not change — if it happens, send us the campaign IDs and we will bring the rows back together.

‍