Attribution

See which ads, posts, searches and referrers bring visitors who convert, first touch and last touch.

day 1, 09:12 UTC
google / cpc (gclid)
day 3, 18:40 UTC
x / referral
day 4, 08:05 UTC
direct
signup
conversion
First touch credits google, last touch credits direct. A new session is 30 minutes without a visit, or any visit carrying UTM tags or a click id.

How a source is read

The proxy reads every new session, in this order:

UTM tagsutm_source, utm_medium, utm_campaign as given.
Click idsgclid, gbraid, wbraid (Google Ads), fbclid (Meta), ttclid (TikTok), twclid (X), msclkid (Microsoft Bing), li_fat_id (LinkedIn), rdt_cid (Reddit). Medium becomes cpc.
ReferrerKnown hosts map to google, bing, x, meta, linkedin, reddit, tiktok, youtube, hackernews, ai-assistant; any other host is kept as is. Medium becomes referral.
Nothingdirect.

First and last touch

The first touch of a visitor is kept forever; the last touch is updated on each new session. A conversion in any experiment is credited to both, so --model first answers "what brought them in" and --model last answers "what brought them back to convert".

Reading it

$ ccat attribution --by source --exp pricing
source   visitors  conv  rate
google   1840      71    3.86%
x        1122      58    5.17%
direct   903       19    2.10%

The dashboard has the same table with every dimension and both models.