Proposed v2 · wireframe for review

WKT Portfolio Performance

Storefront

Needs attention

1

Month to date & full-month forecast

· paced on business days, not calendar days
1

Business-day pacing and a full-month forecast

So the month can be called before it ends. Calendar pacing over-reads early: on 24 Aug we are 60.0% through by business days but 58.1% by calendar.
  • BuildBusiness-day calendar per month = weekdays minus AB statutory holidays. Forecast = last month × last year's own month-to-month ratio. Upgrade to a daily pacing curve once daily revenue is stored.
  • BuildLike-for-like comparisons cut prior periods at the same point in the month, never the full prior month.
  • DecidePlan line is LY +10%, a working assumption. Confirm it or replace it with a budget number — it is one setting.
Where we are in the month
Business day of i
Forecast ·
i
i
How the forecast is built
Like-for-like · cut at the same business day, every period

Portfolio at a glance

7

Budget pacer

Ad spend as a share of revenue ·
7

Ad spend as a share of revenue

Glenn and Ricky's ask — ROAS turned the other way up, which makes it easier to discuss with finance.
  • ReadSpend is allowed to move ±10% either way before it means anything, so the Read column stays quiet inside that band. Outside it: if we underspend, revenue should come down with it; if we overspend, it should go up with it. A ratio that moves past the band while revenue does not follow is the flag — and the follow-up is what the extra spend bought.
  • Decide±10% is one setting and applies to every storefront. Tighten it for the larger brands if Glenn wants an earlier warning on Danatec.
  • NoteFinance uses booked revenue and billing-period spend, so their ratio differs: Guard Training Jan–Jul reads 24% on their sheet and 20.6% here. Both are right for what they measure.
Ad spend as % of revenue
Ratio by month —
This yearSame month last year
Finance view — ad spend as % of revenue, Jan–Jul 2026, as reported
Finance reports per domain on booked revenue with billing-period spend; this page reports per website on online revenue with spend booked to the month it ran. The two will not tie out.
4

Paid channels

· spend, revenue and ROAS per channel
4

Paid and Non-paid as two blocks

One combined table put Direct next to Google Ads with no spend column, so nothing on the page was about efficiency.
  • BuildPaid block carries sessions, spend, revenue and ROAS. Non-paid carries sessions, revenue and revenue per session only.
  • BuildMeta and LinkedIn sessions and revenue come from the platform consoles via the existing n8n connections, then deduct from Direct / Unassigned and credit on first-user source / medium. Portfolio totals do not change.
Paid vs non-paid ·
Paid channelSessionsSpendRevenueROASRev / sessionShare of paid spend
The dashed cells are Meta and LinkedIn revenue. Each platform reports its own purchase conversion value; that figure fills the cell and lifts the paid total, the ROAS and the paid share with it.
4

Non-paid channels

Non-paid channelSessions% of non-paid sessionsRevenue% of non-paid revenueRev / session
Direct and Unassigned come down as paid-social revenue is credited to the channel that brought the first visit. Portfolio revenue is unchanged either way.
1

Trends over time

Revenue, actual August forecast + 80% bandi Same month last year
36

Storefront summary

· performance and pacing per storefront
3

BCC and CIRO as one storefront

One business, one P&L. Split apart, CIRO reads 0.74x — a four-purchase sample, not a failing brand. Together, BCC reads 3.78x.
  • VerifyConfirm GA4 sends a correct value on purchase for both CIRO and LLQP before merging.
  • BuildOne row, purchases as the primary metric, contact-form submissions as a Leads column. Retires the separate lead-gen CPL table.
6

Relo on revenue, not sign-ups

Relo carries $6,391 of July spend against no revenue in the feed, so it reads as pure cost.
  • VerifyCompare Relo's booked revenue and purchase count against GA4 before adding either to the feed.
  • BuildAdd revenue and purchases, held out of the portfolio total until the variance is inside tolerance.
StorefrontSessionsPurchasesLeadsRevenueAd spendPaid ROASSpend % of revenuevs last yearRead

Channel mix

·
ChannelTypeSessions% of sessionsRevenue% of revenueRev / session
5

Channel drill-down

Pick a channel · 20-month trend, efficiency and storefront split
5

One channel at a time, over time

The overview answers how the portfolio is doing. This answers what is happening inside a channel — the question that drives a budget move.
  • BuildTwo single-axis charts, never one with two y-axes. Storefront split for the selected channel.
  • LaterA campaign tier under the storefront split, once naming is enforced across all four platforms.
Paid
Non-paid
Revenue · Jul 2026
Sessions · Jul 2026
Rev / session
Share of portfolio revenue
Trailing 12m revenue
Revenue by month —
This yearSame month last year
Sessions by month —
This yearSame month last year
Storefront split — , July 2026
StorefrontSessions% of channel sessionsRevenue% of channel revenueRev / session