The pages you’ll rebuild
| Page | What it shows | Guide |
|---|---|---|
| Wave list | The Wave version of the events list — same data, campaign-state-centric framing. | Wave list |
| Campaign detail | A single event’s Wave view: stats, taste clusters, and the campaign setup wizard. | Campaign detail |
| Campaigns lifecycle | The setup_processes/{eid} state machine — create, edit, publish, edit-running. | Campaigns lifecycle |
| Attribution | Per-event campaign results and the attribution-model selector. | Attribution |
Recommended build order
Campaign detail (read-only)
Read the existing
setup_process if any, the campaigns, the Meta
auth status. Defer the wizard.What’s tricky in Wave
- One
setup_processper event. NosetupIdin the URL. Concurrent edits across tabs race. The reference webapp uses a module-levelAbortControllerto drop stale PUTs — replicate or you’ll get flicker and lost edits. POST /campaigns_setup≠PUT /setup_processes/{eid}. Different endpoints, different lifecycle stages./campaigns_setupis for editing a published cluster’s creative + targeting; thesetup_processesPUT is for draft edits.- Goal values are enum-style:
UTILIZATION,ROAS,VISIBILITY,LINK_CLICKS— nottickets/revenue/reach. - Attribution lives on the Facebook integration endpoint —
/integrations/facebook/events/{eid}/campaign_results, not the generic/campaign_results/. - Debounce autosave + abort prior PUTs. Without both, the user’s “I changed two fields quickly” becomes a race.
What you don’t need to rebuild
- The cross-tenant
/messages/partner/{partner_id}admin endpoints. - The
/campaigns/by_partner_idendpoint (admin-only — returns auth errors for partner tokens). - The generic
/campaign_results/endpoint (use the Facebook integration endpoint instead). - The
/prompts/*admin endpoints (readprompts/custom_promptonly). - The CR-side bulk ingest pipelines unless your integration owns sales-data delivery.
How Wave depends on Lookout
Wave shares the events list, the taste-cluster endpoints, and the event detail components. If you’ve already built Lookout, you’ve already built roughly half of Wave. The new code is the campaign wizard (thesetup_processes state machine) and the Statistics tab.