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, reset. | Campaigns lifecycle |
| Package Builder | List + create + results for audience packages. | Package Builder |
| Messages | Per-partner notifications inbox. | Messages |
| Attribution | Backhaul evaluation + sales adjustments. | 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.- Package status polling has no unmount cancellation in the reference webapp. If you copy that, gate on a mounted flag.
- Two-host architecture. Media uploads via
POST /mediahit the API host without the/v3prefix. Easy to miss. - 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
/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 Affinity recommendation surface, and the event detail components. If you’ve already built Lookout, you’ve already built about half of Wave. The new code is the campaign wizard (thesetup_processes state machine) and the Package Builder.