Skip to content

Channel Attribution

import { Aside } from ‘@astrojs/starlight/components’;

analyze.swiss automatically classifies traffic into marketing channels, helping you understand where your visitors come from and which channels drive the most value.

Every visitor is automatically classified into one of these channels:

ChannelDescriptionExample Sources
DirectNo referrer or direct URL entryBookmarks, typed URLs
Organic SearchSearch engines (non-paid)Google, Bing, DuckDuckGo
Paid SearchPaid search adsGoogle Ads, Bing Ads
SocialSocial media (organic)Twitter, LinkedIn, Facebook
Paid SocialSocial media (paid)Facebook Ads, LinkedIn Ads
EmailEmail campaignsNewsletters, transactional
ReferralOther websitesPartner links, blogs
DisplayDisplay advertisingBanner ads, remarketing
AffiliateAffiliate programsPartner referrals
OtherUnclassified trafficUnknown sources

analyze.swiss uses multiple signals to classify traffic:

https://yoursite.com?utm_source=google&utm_medium=cpc&utm_campaign=spring
ParameterUsed For
utm_sourceTraffic source (google, facebook, newsletter)
utm_mediumMarketing medium (cpc, email, social, banner)
utm_campaignCampaign name
utm_contentAd variation
utm_termPaid search keyword

If no UTM parameters are present, we analyze the referring URL:

Referrer: https://www.google.com/search?q=analytics
→ Channel: Organic Search
→ Source: Google

We detect ad platform click IDs:

Click IDPlatform
gclidGoogle Ads
fbclidFacebook/Meta
msclkidMicrosoft Ads
li_fat_idLinkedIn Ads
ttclidTikTok Ads

Detected when:

  • Referrer contains known search engines
  • No paid indicators (gclid, etc.)

Search engines detected:

  • Google, Bing, Yahoo, DuckDuckGo
  • Baidu, Yandex, Ecosia
  • And 50+ more

Detected when:

  • utm_medium = cpc, ppc, paid-search, paidsearch
  • Or gclid, msclkid present
  • Or referrer is Google/Bing with ad indicators

Detected when:

  • Referrer from social networks
  • utm_medium = social, organic-social

Networks detected:

  • Facebook, Twitter/X, LinkedIn
  • Instagram, TikTok, Pinterest
  • Reddit, YouTube, and more

Detected when:

  • utm_medium = paid-social, paidsocial, social-paid
  • Or fbclid, li_fat_id with ad indicators
  • Or utm_source = facebook, instagram with utm_medium = cpc

Detected when:

  • utm_medium = email, e-mail, newsletter
  • Or utm_source = mailchimp, hubspot, sendgrid, etc.

Detected when:

  • Has referrer from external domain
  • Not classified as search or social

Detected when:

  • No referrer present
  • No UTM parameters
  • Or referrer is the same domain (internal)

analyze.swiss supports multiple attribution models:

100% credit to the first touchpoint that brought the user.

Visit 1: Google Ads → Browse
Visit 2: Email → Browse
Visit 3: Direct → Convert
Credit: Google Ads = 100%

100% credit to the last touchpoint before conversion.

Visit 1: Google Ads → Browse
Visit 2: Email → Browse
Visit 3: Direct → Convert
Credit: Direct = 100%

Equal credit across all touchpoints.

Visit 1: Google Ads → Browse
Visit 2: Email → Browse
Visit 3: Direct → Convert
Credit: Google Ads = 33%, Email = 33%, Direct = 33%

More credit to touchpoints closer to conversion.

Visit 1: Google Ads → Browse (7 days ago)
Visit 2: Email → Browse (2 days ago)
Visit 3: Direct → Convert (today)
Credit: Google Ads = 15%, Email = 30%, Direct = 55%

40% to first, 40% to last, 20% distributed to middle.

Visit 1: Google Ads → Browse
Visit 2: Email → Browse
Visit 3: Organic → Browse
Visit 4: Direct → Convert
Credit: Google Ads = 40%, Email = 10%, Organic = 10%, Direct = 40%

The attribution window defines how far back to look for touchpoints:

// Via SDK
analyze.track('$conversion', {
attribution_window_days: 30
});

Or set workspace-wide in Settings → Attribution.

WindowBest For
7 daysImpulse purchases, short sales cycles
30 daysSaaS, B2C products
90 daysB2B, enterprise sales
  1. Go to Attribution in the dashboard
  2. Select your conversion event (e.g., $signup, $purchase)
  3. Choose attribution model
  4. Analyze channel contribution

Override default classification for specific sources:

// Mark specific referrer as Partner
analyze.set({
channel_override: 'Partner'
});

Or configure in Settings → Channels.