the funnel, broken down
press enter

The funnel, stage by stage.

Every hand-off from ad impression to purchase, week over week for the last 12 full weeks, each from its best source. Amber shading on time charts = Rise-2 URL redirect tests live (May 22 – Jun 11). Dotted verticals = popup off / affiliates cut / popup restored. Deep-dives: drop-off radar · diverging steps · CVR-vs-CAC reconciliation · the brief.

Facebook CPM $24.35 → $31.03/wk PDP reach 56.6% → 46.1% of sessions rise-2 landings 62k → 36k/wk listicle landings 13k → 42k/wk at peak cart → checkout → buy: healthy all 12 weeks

CPM & CTR by channel

What a thousand impressions costs (left) and how often people click (right), weekly by channel, with the impression-weighted blend in black. CPM is the auction price you can’t control; CTR is the creative quality you can. Source: Northbeam weekly by channel (clicks-only model).

CPM $ / 1,000 impressions
CTR % — blended (black) + by channel

GeistM was cut mid-May (its line stops). The story: Facebook CPM climbed while CTR held or improved — cost pressure is auction-level, not creative failure. Northbeam weeks start Friday; all other sections use Monday weeks.

Sessions & traffic freshness

sessions / day (weekly avg)
new visits per 100 sessions

Source: the Omni session funnel export (session-scoped GA4). New-visit share rising while volume falls = the cuts removed traffic but didn’t poison the mix.

Landing pages: traffic, conversion & routing

Three views. First, where landings went — the mix shift is the quarter’s biggest single change: rise-2 shrank while the listicle more than doubled. Second, LP → purchase weekly for the top pages (some LPs check out directly — conversion is the fair cross-page comparison). Third, the funnel steps per LP across four checkpoints, including LP→PDP.

share of tracked landings by page, weekly (100% stack)
LP → purchase CVR % weekly — top pages

The listicle absorbed huge traffic in May at a falling CVR (2.6% → 1.7%) while rise-2’s real page held near its range. Source: Intelligems per-landing-page weekly. “/pages/rise-2” here = the canonical path bucket.

Each mini-chart: LP→PDP % (next page is a product page) and LP→purchase % across four checkpoints: Mar 13–26 · Apr 24–May 7 (peak) · May 22–Jun 4 · Jun 5–11. PDP-as-LP pages have no LP→PDP line — visitors already land on the product. Source: Intelligems conversion funnel per LP. These four checkpoints exist because per-week per-LP funnel pulls aren’t batchable; the weekly CVR lines above carry the week-by-week signal.

PDP → add-to-cart, by product

Adds-to-cart per 100 product views, weekly, for the top products by views. If the funnel break lived on the PDPs, these lines would fall. They don’t.

ATC per 100 views — top 5 products by views

Source: GA4 item-scoped events (view_item / add_to_cart), weekly. Two caveats: (1) a tracking change in the week of Mar 30 roughly doubled measured ATC rates for every product simultaneously — the first two weeks are not comparable to the rest (the table’s baseline starts after the change). (2) Upsell/bundle items (Vanilla Chai & Mocha, Hot Chocolate) are added from the cart without a PDP view, so their “rates” exceed 100% at promo peaks — they’re in the table but excluded from the chart. What matters: from April on, every major product’s line is flat through the break period — the PDPs didn’t break.

The bottom of the funnel

checkouts per 100 adds-to-cart
purchases per 100 checkouts

Both flat-to-up all 12 weeks — cart and checkout are exonerated. Source: Omni session funnel.

Intelligems tests, weekly

tests launched (bars) · avg concurrent tests (line) · amber = Rise-2 URL tests live

Concurrency ramped 2 → ~4.6 as CVR slid (correlation r = -0.35 on daily data). All Rise-2 URL tests paused Jun 11 evening. Test-hygiene rules for the restart live on the site-health page.

Site speed & stability

Core Web Vitals are objectively poor — but they were equally poor in the healthy weeks. A standing tax on conversion, not the thing that broke in May. (30-day windows, prior → recent.)

CLS · layout shift
0.72 → 0.71
“poor” is >0.25 — chronic, unchanged
INP · responsiveness
300 → 310 ms
“needs improvement” band
Perf score
67 → 66
Clarity composite, prior vs recent 30d
JS errors / 30d
459,549
“myelement is not defined” ≈ half — CTO ticket

Ad delivery — the audience analysis

Who Meta chose to SHOW the ads to (delivery), as opposed to who bought (next section). Three real shifts this quarter: delivery moved off 65+ and concentrated on 35–54; Reels share collapsed while Feed recovered (and cheap right-column inventory crept in); and the classic burnout signature — reach fell ~57% while frequency climbed 2.0 → 2.8: paying more to show ads more often to fewer people.

share of impressions by age, weekly (100% stack)
CPM $ by age, weekly
share of impressions by placement, weekly (100% stack)
reach (bars, thousands of people) · frequency (line)

Source: Meta insights, account level, weekly. The 65+ delivery cut (16.7% → 9.7% of impressions) tracks the ASC→ABO shift and the buyer-identity briefs — intended direction. The reach/frequency crossover is the strongest argument that creative volume — not just auction prices — caps how much Meta can spend efficiently.

Demographics, week over week

Two lenses. Meta (paid side): share of purchases by age bracket and gender, plus cost-per-purchase by age. GA4 (site side): session share and conversion by state. GA4’s own age/gender data covers only ~10% of sessions (Google Signals thresholding), so Meta is the trustworthy lens for age and gender.

Meta: share of purchases by age, weekly (100% stack)
Meta: cost per purchase by age $, weekly
Meta: share of purchases by gender %
GA4: session share by state % — top 8

State table: latest full week vs the first 4 weeks’ average. Sources: Meta Ads insights (age/gender/region breakdowns, omni_purchase), GA4 region dimension (US only). State-level CVR cells need >500 sessions/week to display.