No send in this journey is fired natively by the app itself, so there is no native-to-Braze migration roster here: everything that sends today already lives in the messaging platform or an external one, and each row’s call sits on the As-is tab.
7 rows: 2 new events and feeds, 0 sends moving into Braze, and 5 computed traits (Analytics builds, no engineering hours). The D badge is the walkthrough pin number, coloured by what exists today: BUILDABLE TODAY EXISTS, NOT USABLE YET DOES NOT EXIST YET. Delivery fixes and app defects follow in their own sections.
The flags the governance rides. Each row is the contract: what it carries, who reads it, what exists today.
| The data point | The work | What it must carry | Phase · status · depends on |
|---|---|---|---|
D4The ownership flag at the freezejourney_state, campaign-written, wave-readableMake the campaign-written flag readable by wave segments: the stand-down's whole mechanism. | Braze configuration and convention | Suppression in from the save and win-back journeys, hand-off out. A fresh win, an imminent trip, a loss recovery, a win-back or a save all outrank the wave. | PHASE 1 ships now The engine's first governance build The owning journeys' canvas builds. ▸ What exists today, and where it is usedWhat exists today DOES NOT EXIST YETDoes not exist; each journey writes its own at build. Used where The wave freeze, every wave |
D9The active-trip flagactive_trip, at the freezePlumb the trip state to wave segments. | Attribute plumbing | No wave lands on a travel day: service states own the slot. | PHASE 1 ships now Queued Nothing. ▸ What exists today, and where it is usedWhat exists today EXISTS, NO ROUTE TO BRAZEThe state exists; wave segments cannot read it. Used where The freeze suppression |
No new data in this band: logic, integration and release work.
| The change | The work | Phase · status · depends on |
|---|
Named here so the full picture is one table. The contract is the row: what each trait computes, what reaches the sender today, and what remains to build.
| The computed trait | The work | Phase · status · depends on |
|---|---|---|
D1The lifecycle bandlifecycle_band, dailyThe tier spine for both wave audiences, on the standing pattern. | Computed trait | PHASE 1 ships now With Analytics The sync extension. ▸ The contractWhat it must carry Prospect against lapsed against churned: the register picker.What exists today BUILDABLE TODAYDerivable; wave 1 ran on Braze-native recency as the interim. Used where Every wave's tiers |
D6The zero-completed-bids flagnever_bid_completed, dailyThe prospect fence: enforce the never-transacted boundary with the never-transacted journey. | Computed trait | PHASE 1 ships now With Analytics The sync extension. ▸ The contractWhat it must carry Defines the prospect audience; the never-transacted journey's waves and this engine share one fence.What exists today DOES NOT EXIST YETNot built. Used where The prospect tier |
D8Per-route comparison figuresroute_from_price · walkup, nightly computedCompute nightly on the standing pattern so every claim names a real number. | Computed traits | PHASE 1 ships now With Analytics The sync extension. ▸ The contractWhat it must carry The real-number rule: a claim that cannot be substantiated does not render.What exists today DOES NOT EXIST YETNot built for the wave routes. Used where Every wave send and the window card |
D10The power and organic-return exclusion flagspower_user · organic_returnerSync the exclusion flags: the hard fence the minus 11.8 percent read demands. | Sync payload extension | PHASE 1 ships now With Analytics The sync extension. ▸ The contractWhat it must carry Blanket contact of this group measured minus 11.8 percent on the estate's one historic holdout.What exists today EXISTS, NOT IN BRAZEThe model exists; the flags do not reach wave segments cleanly. Used where Every freeze |
D11The transaction-frequency bandtxn_frequency_band, dailyThe strongest single discriminator of who reactivates: phase 2 tier refinement. | Computed trait | PHASE 2 gated Queued The sync extension. ▸ The contractWhat it must carry Refines the tiers once the engine runs; never a wave 1 gate.What exists today DOES NOT EXIST YETNot built. Used where Tier refinement, phase 2 |
Not listed because there is nothing to build: the wave calendar and snapshot (Braze-native), open and click events (live), and the recency tiers wave 1 already ran on.
Four changes the customer never sees: what is broken today, the fix we are asking Engineering for, and why it belongs in this journey rather than a general engineering backlog. None is a comm and none needs a decision from Marketing. Each one either loses a message this journey depends on, or decides whether something else can be built at all.
One governance build carries the headline change: the shared episode flag, written by every owning journey and read at the wave freeze.
| The delivery fix | The fix we are asking for | Who does it | Phase |
|---|---|---|---|
| The shared episode flag, readable at the wave freeze | One shared journey_state convention: every owning journey's canvas writes it; wave segments read it at the freeze. | BACKEND ENG | PHASE 1 ships now ▸ The problem today, and why it sits hereThe problem today Waves must stand down for any live journey episode; the flag does not exist, and it is already a launch gate on the first-slip journey.Why it sits in this journey The engine's first governance build, and the headline change of the whole journey. |
| The active-trip flag at the freeze | Plumb the active-trip flag to where wave segments can filter on it. | BACKEND ENG | PHASE 1 ships now ▸ The problem today, and why it sits hereThe problem today No wave lands on a travel day; the trip state is not readable by wave segments today.Why it sits in this journey The travel-day suppression is a standing estate rule; the wave engine is its biggest consumer. |
| The sync extensions: frequency band, anniversary date, business against leisure | Extend the daily sync on the standing pattern; Analytics compute and pipe from their side. | BACKEND ENG | PHASE 2 gated ▸ The problem today, and why it sits hereThe problem today The finer tiers and the yearly slot ride attributes the sync does not carry.Why it sits in this journey Phase 2 refinements: wave 1 ran without them and phase 1 continues to. |
One shared instrumentation gap; it blocks the window card's direct read, not the wave.
| The defect | The fix we are asking for |
|---|---|
| Content-card impressions and clicks do not register | Fix the shared content-card instrumentation so impressions and clicks register.▸ The problem today, and why it matters hereThe problem today The estate-wide instrumentation gap: the window card would run blind.Why it matters here The wave's in-app leg cannot be read directly until it lands. |
Source: the 20 Aug 2026 data-availability sweep in the journey spec, the pins record, and the wave 1 reads. Board rows are raised from these contracts once sized.