Metric · Marketing

What is landing-page conversion rate, and how do you measure it in Metabase?

Landing-page conversion rate is conversions divided by sessions, per landing page. The per-page part is the point: sitewide conversion rates move with channel mix, not page quality, so the actionable number lives at the page level. Measure it in Metabase from session data synced from Google Analytics 4 or Plausible.

TL;DRconversions / sessions grouped by landing page, with a minimum-sessions threshold (HAVING sessions >= 100) before ranking anything. Read rate and volume together: a 20% page with 50 sessions loses to a 5% page with 10,000.

What landing-page conversion rate measures

How well a specific page turns its visitors into signups, leads, or purchases. Because it's scoped to one page, it isolates page quality from traffic quality — mostly. A page's rate still reflects who lands on it: a pricing page converts high-intent visitors a blog post never sees. Compare pages against their own history and against pages with similar intent, and segment by source via UTM parameters when a rate moves and you need to know whether the page changed or the traffic did.

And always read rate next to volume. Ranking pages by rate alone crowns low-traffic flukes; the pages worth optimizing are the ones where volume times rate-improvement is largest.

What data does it need?

  • A sessions table with landing_page, session_start, and a converted flag (or a join to a conversions table keyed by session).
  • UTM fields (utm_source, utm_medium, utm_campaign) captured on the session, so email and ad clicks credit their sources.
  • One conversion definition, owned in SQL — not one number from GA4, another from the CRM, and a third from the ad platform.

SQL patterns

Conversion rate by landing page (trailing 30 days, min 100 sessions)PostgreSQL
SELECT
  landing_page,
  COUNT(*) AS sessions,
  COUNT(*) FILTER (WHERE converted) AS conversions,
  ROUND(
    100.0 * COUNT(*) FILTER (WHERE converted) / COUNT(*), 2
  ) AS conversion_rate_pct
FROM sessions
WHERE session_start >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
HAVING COUNT(*) >= 100
ORDER BY conversions DESC;
Landing-page conversion by UTM source and campaignPostgreSQL
SELECT
  landing_page,
  utm_source,
  utm_campaign,
  COUNT(*) AS sessions,
  COUNT(*) FILTER (WHERE converted) AS conversions,
  ROUND(
    100.0 * COUNT(*) FILTER (WHERE converted) / COUNT(*), 2
  ) AS conversion_rate_pct
FROM sessions
WHERE session_start >= CURRENT_DATE - INTERVAL '30 days'
  AND utm_source IS NOT NULL
GROUP BY 1, 2, 3
HAVING COUNT(*) >= 50
ORDER BY sessions DESC;

Pitfalls

Ranking pages below sample-size thresholds.→ A page with 3 conversions from 15 sessions tops the leaderboard every time — and means nothing. Apply a HAVING floor before sorting by rate, and raise it when the base rate is low.
Using the sitewide rate as a KPI.→ It's a channel-mix artifact. More blog traffic drops it, more branded search lifts it, and neither says anything about the site. Keep it as context; optimize per page.
Ignoring intent differences between pages.→ A blog post converting at 0.5% may be outperforming; a pricing page at 3% may be underperforming. Compare pages within an intent tier — top-of-funnel content against content, high-intent pages against high-intent pages.
Letting the conversion definition drift between tools.→ GA4 counts a key event, the ad platform counts a pixel fire, the CRM counts a qualified lead — three "conversion rates" that never reconcile. Define the event once in your warehouse and compute every rate from it.

Where this metric applies

Metrics

Dashboards

FAQ

How do you calculate landing-page conversion rate?
Conversions divided by sessions, grouped by the landing page — the first page of the session, not every page the visitor touched. In SQL: COUNT(*) FILTER (WHERE converted) / COUNT(*) per landing_page. Define one conversion event, count it once per session, and hold that definition steady — a rate whose numerator quietly changed meaning is worse than no rate at all.
Why page-level instead of a sitewide conversion rate?
Because a sitewide rate is mostly a channel-mix report in disguise. Send more blog traffic and the sitewide number drops with nothing on the site getting worse; run a branded-search push and it rises with nothing getting better. Page-level rates isolate what each page actually does with its visitors. Keep the sitewide number as context on a marketing funnel dashboard, but diagnose and optimize at the page level with data from Google Analytics 4 or Plausible.
How many sessions before a page's rate is trustworthy?
Set a floor before you rank anything — 100 sessions is a reasonable default, higher if your base rate is low. At 30 sessions, one conversion swings the rate by three points; the top of an unthresholded leaderboard is always small-sample noise. A HAVING COUNT(*) >= 100 clause keeps flukes off the chart. For A/B-level decisions you need proper significance testing, but for monitoring, a minimum-sessions threshold removes most of the lying.
How do you credit email and ad traffic to landing pages?
Through UTM parameters. Tag every campaign link, capture utm_source, utm_medium, and utm_campaign on the session, and group conversion rate by landing page and source. That joins clicks from Mailchimp campaigns or paid ads to the sessions and conversions they produced — so you can see that the same page converts newsletter traffic at 8% and cold display traffic at 1%, which is a targeting insight, not a page problem. It's the same join that powers cost per lead by channel.
How do you track landing-page conversion rate in Metabase?
Sync sessions with landing page, UTM fields, and a conversion flag from GA4 (BigQuery export) or Plausible into a SQL database, then build a table of rate and volume per page with a minimum-sessions threshold. Chart rate and session count together — never rate alone — and pin it next to CTR on the marketing funnel dashboard so the click-to-conversion path reads in one place.