✅ Progress — 2026-06-19: Google Ads auth fully set up & verified end-to-end. Developer token (Explorer access — Basic access is not needed for our read-only reporting), OAuth client ID/secret + refresh token, MCC login-customer-id (
8090836637) + per-school customer IDs, and the Google Ads API enabled in the GCP project are all in Vercel. A one-off smoke test confirmed the full chain (refresh token → access token → developer-token read of 18 accounts). Remaining for Google Ads = the integration code only. GA4 (update 2026-06-21): partially set up — NOT yet working. Service accountga4-reader@…created in GCP project773704825353+ key downloaded; added as Viewer on Lauralton's property only (Janet isn't admin on the other 3 schools' GA4 properties). Blocked on a Vercel paste mishap (theGA4_SERVICE_ACCOUNT_KEYvalue got set to the key filename instead of its base64) and the Analytics Data API enablement was never confirmed. Meta: still just needs a 2-min confirm it's a non-expiring System User token. → Full checklist under Open auth tasks at the bottom.
🧭 What this is. The plan for the next phase of dashboard work, written so it can be handed to the PM/EA and worked through with Claude Code one piece at a time. Three workstreams: (1) fix the cadence/usability flow, (2) move off Coefficient sheets onto direct ad-platform APIs, (3) clear the bug backlog. Last mapped 2026-06-19.
| # | Workstream | Goal | Blocker risk | Owner of the hard part |
|---|---|---|---|---|
| 1 | Cadence & usability | Home view shows a real weekly schedule; problems surface loudly | Low — no external access needed | PM/EA + Claude Code |
| 2 | Off Coefficient → direct APIs | Reliable auto-pull from Meta, Google Ads, GA4; retire the sheets | Medium–High — gated on credential/approval setup | Janet (auth) |
| 3 | Bug backlog | Catalog and clear known defects | Low | PM/EA + Claude Code |
Recommended sequence: Start Workstream 1 (high daily impact, nothing blocks it) and the Workstream 3 triage immediately. Kick off the Workstream 2 auth provisioning in parallel. Update: Google Ads auth is already done & verified — Explorer access covers our read-only reporting, so no Basic-access application was needed and the feared long pole never applied. GA4 is partway there; Meta just needs a token check. Migrate channels as their code is wired: Meta first (almost free), GA4 second, Google Ads last.
The home view has a This Week / Next Week toggle that buckets every school into one of two groups. It's lossy: anything not due this week is dumped into "Next Week" even if it's actually weeks out, and there's no place for a school that isn't ready to be worked. Bugs and stale data can hide.
The new home view has three stacked zones:
current_period with start/end/due AND not paused/archived AND data is current (channel sheet_last_date not behind the period).report_status ≠ sent → Needs attention (overdue lane).