Every visit, attributed to its source — Google, ads, email, referral, direct —
with conversions, conversion rate and traffic quality per channel.
First-party, per-visit, on your own data. No GA4, no tagging religion, no sampling.
The real thing: seven live screenshots below ↓
"We got 5,000 visits last month." Great — from where? Which of those turned into leads? Which channel quietly delivers bots? If your answer is a GA4 export and a shrug, you're paying for traffic you can't judge.
Most reports stop at visits per channel. Without conversions and CVR per source, "traffic is up" is a vanity metric — the channel could be 100% junk and still look successful.
Ads click without UTMs more often than anyone admits. If your tool only reads UTM tags, paid traffic hides inside "direct" — and you keep funding a channel you think is organic.
Single-page, zero-interaction visits pad your numbers and depress your CVR. Without per-source quality scoring, scrapers and crawlers look identical to customers.
Where your traffic comes from · Visits & conversions per day · Which landing pages pull visitors in · Last-click vs first-touch · Paid coverage · Traffic quality. One report, zero configuration.
Every visit is classified into ads, organic, direct, referral or email — with visits, conversions, CVR% and returning-visitor share per source × medium row, plus period-over-period deltas.
A daily trend chart with channel chips shows when a channel heated up or died — and whether conversions followed traffic or decoupled from it.
Top entry pages with visits, conversions and CVR — attributed to the visit that actually entered there. Click through to see which sources and campaigns feed each landing page.
Conversion credit under both models, side by side — plus a divergence table listing every conversion where they disagree. The exact rows where last-click is lying to you.
gclid, fbclid and gads click-ids are detected directly from the counters layer — so untagged Google Ads or Meta traffic still shows up as paid, with per-source coverage bars.
Engaged% vs Passive% per source — passive means one page, zero clicks, zero scroll: bot signature. Rage and dead clicks per 1,000 visits. Internal traffic excluded automatically.
No tag manager archaeology, no UTM police. Digenio records each visit with its own attribution fields — referrer, UTMs, click-ids, first-ever source — and the report assembles itself from your own data.
The tracker stores source, utm_source, utm_medium, utm_campaign, referrer_class, click-id type (gclid/fbclid/gads), landing URL and the visitor's lifetime first-touch source — one row per navigation, in your own data shard.
Ads (paid medium or click-id present) → direct → organic → referral → email → other. Click-ids win ties, which is exactly what makes untagged paid traffic impossible to miss.
Form completions mark converting visits; engagement signals (scroll, clicks, pages) score quality; the previous equal-length period is fetched for deltas. Pick a date range — the report does the rest.
Click a source row to open campaigns, terms and daily trends. Click a landing page to see which sources and UTMs entered there. No query builder, no export to spreadsheets.
Every widget below is a live screenshot from ?dash=sources_report — the report analyzing our own site. Real dogfood numbers, not mockups.
One row per source × medium: visits, conversions, CVR%, returning%, average scroll depth and dwell time, rage and dead clicks. Deltas vs the previous period are computed automatically, so you always know if a channel is heating up or dying.
Expanding a source row opens its campaigns: a summary line — campaign 24307657083, 7 visits, 0 conversions, 4m dwell — a donut of visits by source/medium, and the daily trend. Below, the keyword table maps ad spend to intent: term-level visits for “electric guitar tutor”, “best electric guitar lessons”.
Last-click credits the source of the converting visit. First-touch credits the source of the visitor’s first-ever visit. Digenio shows both, side by side, and the divergence table lists every conversion where the two disagree.
Every visit carries its click-id — gclid, gads, fbclid — read straight from the counters layer. Paid cells are badged in blue, organic in gray, and each row links source × first-touch campaign × click-id so you can audit exactly which visits your ads paid for.
Paid traffic doesn’t always arrive tagged. Digenio detects gclid, fbclid and gads click-ids directly from the counters layer, so untagged Google Ads or Meta traffic still shows up as paid — with per-source coverage bars that make the paid share of each channel instantly visible.
Passive visits — one page, zero clicks, zero scroll — are the signature of bots and scrapers. Digenio scores every source on Engaged% vs Passive%, and surfaces rage clicks and dead clicks per 1,000 visits, so you can cut spend on channels delivering junk.
The top 20 entry pages with visits, conversions and CVR — attributed through the visits that entered on the page, not everyone who passed through. Click any landing page to open the sources and UTMs behind it.
Every query is scoped to your tracking ID and your site's own data shard. No cross-site sampling, no cookie-consent whitelisting gymnastics, no data you can't export.
Visits, conversions and attribution fields live in your shard of the backbone — materialized per site, queryable only through your authenticated session.
Your own team's visits are filtered out automatically and counted separately — no IP allowlist to maintain, no "why is direct up 400%" mysteries.
First-party collection without third-party ad cookies. Attribution works on referrer, UTMs and click-ids — no cross-site fingerprinting required.
See exactly which marketing drives revenue —
from first click to closed deal.