Note: This feature is currently in gradual release and available for web and mobile app traffic. Mobile requires a minimum SDK version — see Prerequisites below.
Unveiling the Organic Black Box
Organic traffic has traditionally been a black box. When a user arrives at your website without clicking a paid ad, attribution platforms report a single bucket — "Organic" — with no visibility into where that user actually came from.
This gap is becoming more costly. A growing share of organic traffic now originates from AI assistants such as ChatGPT, Perplexity, Gemini, and Claude, as users ask for recommendations and click through directly from AI-generated responses. At the same time, SEO teams, content teams, and owned-media managers struggle to prove ROI because they cannot distinguish high-intent search traffic from social discovery, email campaigns, or AI referrals — all of which look identical in standard attribution reports.
Singular's Organic Sources feature resolves this by reading the HTTP referrer header on organic sessions — across web and mobile app traffic — and classifying it into two new dimensions: Organic Type and Organic Source. These dimensions are available across a dedicated Organic Insights dashboard and user-level data exports.
Prerequisites
Web
| Requirement | Notes |
|---|---|
| Web Attribution enabled | Required to collect web session data |
| Web SDK (Native JavaScript or Google Tag Manager) | Referrer data is collected automatically — no additional configuration needed |
| Web S2S | Supported, but requires updating your existing implementation. Contact your Singular POC or support team for guidance. |
For setup instructions, see Web SDK — Native JavaScript Implementation Guide and Web SDK — Google Tag Manager Integration.
Mobile
| Requirement | Notes |
|---|---|
| Minimum SDK version | iOS 12.12.0+, Android 12.13.0+, Unity 5.8.0+ |
How It Works on Web vs. Mobile
On web, the browser attaches a referrer to every page load, whether it's a brand-new visitor or someone returning — so Organic Source/Type can be set on both new and repeat sessions.
On mobile, a referrer is only available when the app is opened via a deep link (for example, a Universal Link or App Link) that carries the referring context. Therefore, today, Organic Source/Type can only be set on mobile through a deep-link open by a user who already has the app installed — not on that user's very first install.
Viewing Your Data
Aggregated Reporting
Organic Source and Organic Type are available in the Organic Insights dashboard — a dedicated preconfigured report providing a breakdown of your organic traffic by source and type, with key performance metrics.
User-Level Data (Export Logs)
For granular, event-level analysis, the following fields are available in Export Logs:
| Field | Description |
|---|---|
| Web Page Referrer | The raw referring URL for that specific page view event |
| Organic Source | The classified source name (e.g., Google, ChatGPT, Instagram) — persisted until updated by a new organic session |
| Organic Type | The classified source category (e.g., Search, AI, Social) — persisted until updated by a new organic session |
| Organic Update Time | Timestamp of the last time the organic dimensions were updated for this browser |
How to Identify Organic-Sourced Sessions in the User-Level Data
Organic Update Time only changes when a session is identified as an organic interaction — one with no paid signal and a referrer present (see When Organic Dimensions Update above). Once set, Organic Source, Organic Type, and Organic Update Time persist across every later session, so you can continue to see the value of that original organic interaction over time, even as the same user returns directly on subsequent visits.
If you want to identify exactly which session was the one identified as organic-sourced — rather than just seeing the persisted result — you can find it in your export data by comparing two timestamp fields:
| Field | What it tells you |
|---|---|
| Server Timestamp | When Singular's server logged this specific row/event. |
| Organic Update Time | When the Organic Source and Organic Type currently stored for this browser were last set. |
For the session that triggered the update, Organic Update Time will be close to that session's Server Timestamp — typically within a few seconds. For any later session that didn't trigger a new update, Server Timestamp keeps advancing with each new event while Organic Update Time stays fixed at whatever it was set to previously — so the gap between the two grows the further you are from the session that actually did the update.
Note: Server Timestamp and Organic Update Time are captured at different points in the pipeline, so even for the session that performed the update, the two values are not expected to be identical — a difference of a few seconds is normal. Look for "close," not "exact," as the signal that a row is the update event.
To see the actual referring URL behind a classified source (for example, to check why a session was classified as "Referral" or "Other"), use the Web Page Referrer field — it holds the full, unclassified referrer URL for that page view, before Singular's domain mapping is applied.
How Organic Sources Works
When Organic Dimensions Update
Organic dimensions are evaluated once per session — on the first page view of a new session. They are not re-evaluated on subsequent page views within the same session.
At the start of each new session, Singular checks two conditions:
- No paid signal is present — the session URL contains no Singular tracking parameters (wp params) or UTM parameters associated with a paid source
- A referrer is present — the browser's HTTP referrer header has a value, meaning the user navigated from another site
Both conditions must be met for the organic dimensions to be updated. If the session has a paid signal, or if there is no referrer, the existing values are kept as-is.
When both conditions are met, Singular maps the referrer domain to an Organic Source and Organic Type using a built-in lookup table (see below).
Persistence
Once set, Organic Source, Organic Type, and Organic Update Time are stored and persist across subsequent sessions until a new organic session arrives with a referrer — at which point the values are updated.
This means a user who returns directly (no referrer) retains the last known organic source from their prior organic visit.
No Impact on Attribution
Organic Sources operates as a separate enrichment layer and has no effect on attribution:
- It does not create attribution touchpoints
- It does not trigger re-engagement attribution
- A user attributed to a paid campaign retains that attribution regardless of any subsequent organic sessions
Example Walkthrough
Here is one browser's activity over nine days, showing how Organic Type/Source and attribution Source move independently, and how that shows up in reporting.
Day 1: organic click in Google search. Day 4: direct return, $40 purchase. Day 6: a paid Facebook ad click. Day 7: direct return, $90 purchase. Day 9: organic click from a ChatGPT link. One continuous journey for the same user.
| Day | 1 | 4 | 6 | 7 | 9 |
|---|---|---|---|---|---|
| Session Origin | Organic click in Google search | Direct return, purchase | Clicks a paid Facebook ad | Direct return, purchase | Organic click from a ChatGPT link |
| Organic Type | Search | Search | Search | Search | AI |
| Organic Source | ChatGPT | ||||
| Source (Attribution) | Organic | Organic |
Organic Type and Organic Source stay Search/Google until Day 9 — Day 6's paid click doesn't touch them. Source stays Organic until Day 6, then flips to Facebook — Day 9's organic click doesn't touch it. Bold marks each day a value actually changes.
Here is how that same activity rolls up in your reports.
| Source | Revenue |
|---|---|
| Organic | $40 |
| $90 |
| Organic Type | Organic Source | Revenue |
|---|---|---|
| Search | $130 | |
| AI | ChatGPT | $0 |
The same $130 splits differently depending on which report you're in. Attribution splits it $40 Organic / $90 Facebook, because Day 6's touchpoint landed between the two purchases. Organic Sources keeps it as one $130 Search/Google row, since Day 9's ChatGPT update comes after both purchases — and that new value shows up immediately, even at $0.
Organic Type and Organic Source Values
Organic Types
| Organic Type | Description |
|---|---|
| Search | Traffic from search engines |
| Social | Traffic from social media platforms |
| AI | Traffic from AI assistants and chat tools |
| Traffic from email clients and marketing platforms | |
| Communication | Traffic from messaging and collaboration tools |
| Referral | Traffic from other mapped websites; any unmapped domain also falls here |
| Direct | No referrer present — Organic Source is set to N/A |
Domain Mapping
Note: Singular strips www., m., l., and lm. prefixes before lookup. All international Google search domains (e.g., google.co.uk, google.com.br) are mapped to Google / Search.
| Domain(s) | Organic Source | Organic Type |
|---|---|---|
| chatgpt.com, chat.chatgptplus.cn | ChatGPT | AI |
| claude.ai, claude.com | Claude | AI |
| copilot.microsoft.com | Copilot | AI |
| gemini.google.com | Gemini | AI |
| perplexity.ai (all subdomains) | Perplexity | AI |
| poe.com | Poe (Quora AI) | AI |
| you.com | you.com | AI |
| grok.com | Grok | AI |
| meta.ai | Meta AI | AI |
| mistral.ai | Mistral | AI |
| mail.google.com, mail-attachment.googleusercontent.com, com.google.android.gm | Gmail | |
| outlook.live.com, outlook.office.com, outlook.office365.com, *.safelinks.protection.outlook.com | Outlook | |
| mail.yahoo.com and country variants | Yahoo Mail | |
| *.admin.mailchimp.com | Mailchimp | |
| mail.qq.com, wx.mail.qq.com, wap.mail.qq.com | ||
| mail.aol.com | AOL | |
| mail.yandex.ru | Yandex | |
| mail.rambler.ru | Rambler | |
| braze.com | Braze | |
| klaviyo.com | Klaviyo | |
| discord.com | Discord | Communication |
| messages.google.com, chat.google.com, meet.google.com | Communication | |
| teams.microsoft.com, teams.cloud.microsoft, statics.teams.cdn.office.net | Microsoft Teams | Communication |
| app.slack.com, com.slack | Slack | Communication |
| t.me, web.telegram.org, org.telegram.* | Telegram | Communication |
| l.whatsapp.com, wa.me, www.whatsapp.com, web.whatsapp.com | Communication | |
| app.zoom.us and subdomains | Zoom | Communication |
| l.messenger.com, www.messenger.com | Facebook Messenger | Communication |
| facebook.com and all variants (m., l., lm., mobile., etc.) | Social | |
| instagram.com, www.instagram.com, l.instagram.com | Social | |
| www.linkedin.com | Social | |
| pinterest.com and all country variants | Social | |
| www.reddit.com | Social | |
| www.snapchat.com, com.snapchat.android | Snapchat | Social |
| l.threads.com, www.threads.com | Threads | Social |
| www.tiktok.com | TikTok | Social |
| vk.com | VK (Vkontakte) | Social |
| weibo.com, t.cn | Social | |
| t.co | X (Twitter) | Social |
| xiaohongshu.com | Xiaohongshu | Social |
| twitch.tv and subdomains | Twitch | Social |
| youtube.com, www.youtube.com, com.google.android.youtube | YouTube | Social |
| bio.link | bio.link | Social |
| linktr.ee | Linktree | Social |
| lnk.bio | Lnk.bio | Social |
| ok.ru | OK.ru | Social |
| google.com and all country variants | Search | |
| www.bing.com | Bing | Search |
| duckduckgo.com | DuckDuckGo | Search |
| baidu.com | Baidu | Search |
| yandex.ru, yandex.com | Yandex | Search |
| search.naver.com, com.nhn.android.search | Naver | Search |
| search.yahoo.com and variants | Yahoo | Search |
| search.yahoo.co.jp, jp.co.yahoo.android.yjtop | Yahoo Japan | Search |
| seznam.cz | Seznam | Search |
| sogou.com, com.sogou.activity.src | Sogou | Search |
| search.daum.net, net.daum.android.daum | Daum | Search |
| news.google.com, docs.google.com, drive.google.com, trends.google.com, notebooklm.google.com | Referral | |
| www.msn.com, ntp.msn.com | MSN | Referral |
| en.wikipedia.org | Wikipedia | Referral |
| apple.news | Apple News | Referral |
| flipboard.com | Referral | |
| www.cnn.com | CNN | Referral |
| www.reuters.com | Reuters | Referral |
| theguardian.com | The Guardian | Referral |
| dailymail.co.uk | Daily Mail | Referral |
| news.yahoo.com, uk.news.yahoo.com, tw.news.yahoo.com | Yahoo | Referral |
| news.yahoo.co.jp, jp.co.yahoo.android.news | Yahoo Japan | Referral |
| n.news.naver.com, news.naver.com, blog.naver.com | Naver | Referral |
| news.nate.com, www.nate.com and subdomains | Nate | Referral |
| zen.yandex.ru, ru.yandex.zen | Yandex | Referral |
| smartnews.com | SmartNews | Referral |
| newsbreak.com | NewsBreak | Referral |
| operanews.com | Opera News | Referral |
| auto.rambler.ru, news.rambler.ru | Rambler | Referral |
| quickaccess.internet.apps.samsung.com, www.samsung-news.com | Samsung | Referral |
| globo.com | Globo | Referral |
| uol.com.br | UOL | Referral |
| indiatimes.com | Times of India | Referral |
| ndtv.com | NDTV | Referral |
| bild.de | Bild | Referral |
| spiegel.de | Der Spiegel | Referral |
| lefigaro.fr | Le Figaro | Referral |
| elmundo.es | El Mundo | Referral |
| baomoi.com | Bao Moi | Referral |
| 24h.com.vn | 24h News | Referral |
| Any unmapped domain | Other | Referral |