Dashboard

What does a paid vs. organic acquisition dashboard show in Metabase?

A paid vs. organic acquisition dashboard shows how the growth mix splits between bought and earned traffic — and which way it's drifting. It combines channel-grouped sessions from Google Analytics 4 or Plausible, organic clicks from Google Search Console, and paid spend from the ad platforms in one governed view.

For: heads of marketing, SEO and performance leads, and founders watching CAC. Grain: one row per channel group per day intraffic_rollups, joined to daily spend and Search Console performance.

Which cards belong on a paid vs. organic acquisition dashboard?

  • Sessions by acquisition type over time (stacked area)
  • Conversions, paid vs. organic (combo)
  • Organic clicks trend from Search Console (line)
  • Paid spend vs. organic clicks (combo)
  • Conversion rate by acquisition type (bar)
  • Blended CAC vs. organic share (line)
  • Top landing pages by acquisition type (table)
  • Channel mix shift, trailing 12 months (area)

What data does the dashboard need?

How do you build it?

  1. Sync the three sources into the warehouse: analytics rollups, Search Console daily performance, and unioned ad spend.
  2. Fix the channel mapping — enforce UTM tagging on paid traffic and decide where Direct and Referral land in the paid/organic split.
  3. Join on date at the channel-group grain; keep GSC clicks as their own series rather than forcing them to reconcile with analytics sessions.
  4. Build the mix cards, add a date-range filter, and drill from acquisition type down to landing page.

Example card SQL

Paid vs. organic sessions, conversion rate, and spend by monthPostgreSQL
WITH traffic AS (
  SELECT
    date_trunc('month', session_date) AS month,
    -- everything bought: Paid Search/Social/Shopping/Video/Other,
    -- plus Display and Cross-network
    SUM(sessions) FILTER (
      WHERE channel_group LIKE 'Paid%'
        OR channel_group IN ('Display', 'Cross-network')
    ) AS paid_sessions,
    SUM(key_events) FILTER (
      WHERE channel_group LIKE 'Paid%'
        OR channel_group IN ('Display', 'Cross-network')
    ) AS paid_conversions,
    SUM(sessions) FILTER (WHERE channel_group = 'Organic Search')
      AS organic_sessions,
    SUM(key_events) FILTER (WHERE channel_group = 'Organic Search')
      AS organic_conversions
  FROM traffic_rollups
  GROUP BY 1
),
spend AS (
  SELECT
    date_trunc('month', stat_date) AS month,
    SUM(spend) AS paid_spend
  FROM ad_performance_daily
  GROUP BY 1
)
SELECT
  t.month,
  t.paid_sessions,
  t.organic_sessions,
  ROUND(t.paid_conversions::numeric
    / NULLIF(t.paid_sessions, 0) * 100, 2) AS paid_conversion_rate,
  ROUND(t.organic_conversions::numeric
    / NULLIF(t.organic_sessions, 0) * 100, 2) AS organic_conversion_rate,
  s.paid_spend
FROM traffic t
LEFT JOIN spend s ON s.month = t.month
ORDER BY t.month;

Metrics

Integrations

Dashboards

FAQ

What is a paid vs. organic acquisition dashboard?
A paid vs. organic acquisition dashboard is the mix view of marketing analytics: how much traffic and conversion comes from paid channels versus organic, and how that balance shifts as spend changes. It combines traffic rollups from Google Analytics 4 or Plausible, organic clicks from Search Console, and spend from the ad platforms — so the question "are we buying growth or earning it?" gets answered with one set of numbers.
How is "organic" defined?
Usually by the analytics tool's channel grouping — Organic Search, Organic Social, Direct, Referral — and that's where the pitfalls live. Default groupings misfile traffic: untagged paid campaigns land in Direct or Referral, and dark traffic (apps, messengers, stripped referrers) inflates Direct. Enforce UTM tagging on everything paid, decide explicitly where Direct and Referral sit in the paid/organic split, and document the mapping in the traffic_rollups model so every card in GA4-based reporting uses the same definition.
Why don't Search Console clicks match GA4 organic sessions?
Because they measure different things. Search Console counts clicks on Google results server-side; GA4 counts sessions client-side, after consent banners, ad blockers, and JavaScript have taken their cut — and one session can follow multiple clicks. GSC clicks typically run higher than GA4 organic sessions, and the gap is normal. Track both: GSC for search demand, GA4 for on-site behavior and conversion rate. Don't reconcile them to zero; you can't.
Does paid search cannibalize branded organic traffic?
Sometimes — when you bid on your own brand terms, some clicks that would have gone to the free organic listing go to the ad instead. The honest way to find out is a test: split branded from non-branded queries in Search Console data, pause or reduce branded bids in one market or period, and watch whether branded organic clicks absorb the volume. This dashboard gives you the before/after series; the trap is judging it from platform-reported conversions alone, which credit the ad for clicks you'd have gotten anyway.
Which tools feed a paid vs. organic dashboard?
Three feeds: an analytics source for sessions and key events by channel group — Google Analytics 4 via BigQuery export, or Plausible for a lighter cookieless setup; Google Search Console for query-level organic clicks and impressions; and ad_performance_daily from the ad platforms for spend (see the paid channel performance dashboard for that model). More sources in the marketing and growth integrations catalog.