All 1 sends the app fires itself, out of the app, each with its call: 0 move to Braze, 1 stay native, the rest retire, need a decision or belong to another journey. These calls are this pack’s proposals, to be agreed with Engineering. The full reasoning per send is its card on the As-is tab; what each move is built from is the Braze developer’s list on the TO-BE journey map tab.
| The send | When in the journey | The call | Who does the work |
|---|---|---|---|
| Booking and ticket confirmation view (in-app surface) In-App | STAYS NATIVE | No work▸ What fires it, and whyWhat fires it Live. The app's confirmation view shows the booked trip and the won upgrade. It is the only surface in the window that requires no marketing permission.Why, in one line Evolves into the persistent trip state: the consent-free home of the whole arc, the deep-link target of every send, and the entire journey for the non-contactable.What decides or enables it The Product surface decision; the interim platform and coach payload source, since the live rail feed integration is blocked and product-led. |
One rule across the moved sends: a trigger that fires in the final minutes before a close is sent by the app, not Braze, so a delayed message can never land after the auction has closed. The release work sits on the switch-off row below.
8 rows: 5 new events and feeds, 0 sends moving into Braze, and 3 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 events and payloads the arc fires on. Each row is the contract; the board carries the sized asks.
| The data point | The work | What it must carry | Phase · status · depends on |
|---|---|---|---|
D1The arc's entry and anchorupgrade_confirmed + departure timestampNothing new: both are live, and the webhooks already fire on the departure offset. | Existing events | The arc's entry, and every anchored send's clock. | PHASE 1 ships now Nothing to build Nothing. ▸ What exists today, and where it is usedWhat exists today Live and console-confirmed. Used where Entry, and every beat's timing |
D2The platform and coach payloadplatform + coach, at fire timeThe fire-time lookup for the wayfinding push and the trip state; the interim source pre the live rail feed. | Connected Content + the interim source | The wayfinding push without wayfinding is a sell slot in disguise: no payload, no send. | PHASE 2 gated Engineering confirms the source The interim-source confirmation; the platform-change event. ▸ What exists today, and where it is usedWhat exists today DOES NOT EXIST YETDoes not exist in Braze. Used where The wayfinding push and the trip state |
D5The episode flagtrip / arc state, canvas-writtenThe canvas writes it at entry and clears it at exit; the seasonal weekly and successors exclude on it. | Braze configuration | Broadcasts stand down inside the arc; one owner per customer, made real in audiences. | PHASE 1 ships now With the Braze developer Nothing new. ▸ What exists today, and where it is usedWhat exists today BUILDABLE TODAYThe shared convention exists; this journey's wiring lands with the build. Used where The broadcast stand-down |
D6The disruption flag at fire timelive disruption, booked routeCheckable when a send fires, not at entry: every commercial send in the arc suppresses on it. | Live event / fire-time check | Until it is readable, the yield rule cannot bind and nothing commercial launches inside the arc. | PHASE 1 ships now Launch gate, with Backend Engineering Nothing else. ▸ What exists today, and where it is usedWhat exists today Source and freshness unconfirmed. Used where Every send's eligibility |
D8The Live Activity start tokenstart token, existing attributeThe canvas fires the pin's start webhook where the device and token allow. | Existing Braze attribute + webhook | The Phase 2 pin; the push stands where the start fails. | PHASE 2 gated With App Engineering, on the release train The re-scope decision. ▸ What exists today, and where it is usedWhat exists today The attribute exists; the surface build is the open scope. Used where The lock-screen pin |
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 standing pattern: computed nightly, synced as traits, never live lookups at send time (fire-time Connected Content is the deliberate exception, and only for the wayfinding payload).
| The computed trait | The work | Phase · status · depends on |
|---|---|---|
D3The persona register labelpersona_register + confidence, nightlyThe register label for the day-before copy: register changes copy only, never timing. | Computed trait | PHASE 1 ships now With Analytics The nightly sync. ▸ The contractWhat it must carry Three copy registers on the journey's biggest reachable beat.What exists today BUILDABLE TODAYDerivable; the same classifier other journeys consume. Used where The day-before beat |
D4Booked cabin and operatorcabin + operator, at fire timeGates the per-operator inclusions and the Avanti First-against-Standard-Premium label. | Fire-time attribute | PHASE 1 ships now Nothing to build The per-operator content block (Design). ▸ The contractWhat it must carry The one place the class confusion (1,856 tickets a year) is resolved before travel.What exists today On the trip attribute. Used where The wait email and the inclusions block |
D7The realised savingsaved_amount per trip, batchSubstantiate the figure first: the walk-up anchor is unconfirmed, and no figure renders on the modal until it lands. | Computed trait | PHASE 2 gated With Analytics The substantiation. ▸ The contractWhat it must carry The value moment's number; a made-up saving at that moment would be the worst possible lie.What exists today Derivable; the anchor needs substantiation. Used where The on-board modal |
Not listed because there is nothing to build: the purchase entry event and departure timestamp (live today, the webhooks fire on them), and the day-before family's trigger, kept unchanged as the control.
Six 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.
The builds and investigations the arc waits on: the two data paths that decide phases, the two app builds, and the estate's one unexplained send path.
| The delivery fix | The fix we are asking for | Who does it | Phase |
|---|---|---|---|
| The interim platform-and-coach source | Engineering confirms the interim source and its freshness; a platform-change event Braze can act on comes with it. | BACKEND ENG | PHASE 2 gated ▸ The problem today, and why it sits hereThe problem today The wayfinding payload does not exist in Braze today, and the live rail feed integration is blocked and product-led.Why it sits in this journey It decides the wayfinding row's phase: an existing attribute pulls it into Phase 1, a new feed holds it in Phase 2. |
| Refund and cancel events at Braze | Confirm the path and latency; wire arc suppression on both. | BACKEND ENG | PHASE 2 gated ▸ The problem today, and why it sits hereThe problem today Whether the events reach Braze fast enough for instant arc suppression is unconfirmed, and nothing consumes them today.Why it sits in this journey A cancelled trip must flip the state and suppress pending sends instantly, or the arc congratulates a dead trip. |
| The trip-state surface and the on-board modal | Product rules the surface; App Engineering builds both; the reskin is the smaller build. | BACKEND ENG | PHASE 2 gated ▸ The problem today, and why it sits hereThe problem today The persistent trip state (reskin or net-new is Product's call) and the consent-free on-board modal are the journey's two app builds.Why it sits in this journey The state serves the 18 percent with no proactive channel and is the deep-link target of every send in the arc. |
| The legacy swap push's caller | Identify the caller in the console with Lisa, confirm the rebuild covers its cohort, then retire under the archiving rule, reason recorded. | BACKEND ENG | PHASE 1 ships now ▸ The problem today, and why it sits hereThe problem today It fired daily through 13 August though its only known trigger stopped on 20 July: the estate audit's one unexplained send path.Why it sits in this journey A duplicate reminder from an unidentified trigger, in the window where contact pressure costs most. |
Live defects in the window: the swap-eligibility defect, and the legacy swap push firing with no known caller.
| The defect | The fix we are asking for |
|---|---|
| The swap-eligibility defect | The fix date is with Product and Engineering.▸ The problem today, and why it matters hereThe problem today The defect gates the seat-swap path inside the arc.Why it matters here Until it lands, the swap path stays closed for the won-trip cohort. |
| The unexplained send path | Identify, confirm coverage, retire.▸ The problem today, and why it matters hereThe problem today The legacy swap push fires with no known caller, outside every rule.Why it matters here A customer in scope for both can receive the same reminder twice in one morning. |
Source: the console trigger pass of 14 to 16 August 2026, the 13 August pull, and the matrix spec. Board rows are the system of record for the sized asks.