← StrategyJourney 4 campaign brief
Journey 4, CRM briefPack version: 15 Oct 2026, 10:39 (London)
Leave feedback
The CRM brief

The journey by phase, and the Phase 1 Braze build

This journey’s strategy. An auction only works when losing feels fair. Give every loser a straight account of the close, then one reason to bid again, drawn from their own loss history. The full statement and the case: the campaign brief tab.

For the CRM team and the Braze developer. The journey as it runs today and as it should run by phase, then the Phase 1 build: one row per send Braze builds, with what starts it, what stops it and what it needs. The words per version are on the Design brief; the full logic per row, and the copy of record, sit on the Decisioning matrix.

Work from this brief in FigJam: the send changes as cards, today beside proposed↗▶Watch the customer experience: this journey as the customer receives it↗

The journey maps

today's journey, and the proposed journey by phase: what the canvases must become
THE AUCTION, FROM THE BID TO THE CLOSEWON THE UPGRADEDROPPED OUT OF THE AUCTION, BEFORE THE CLOSEFAILURE CLOSES: PAYMENT, EARLY CLOSE, WITHDRAWN🕐 the auction is scheduled🕐 bidding opensa bid stands🕐 to the close🕐 the auction closeswonhands off to Journey 1lost🕐 next morningstopped bidding,did not come backpayment fails, or the auctioncloses earlyoutbidoutbid,Standard Premiumno bidoutbidwinningalready wonknocked out⚡Entry: the auction's clocknot the customerthe auction's own state fires almost all ofthis:opens, outbid, closing, closed. Only the twoabandonment canvases watch what theperson didBefore bidding opens?The moment bidding opens:which state is the bidder in?four states, seven sends, no arbitrationbetween themWhile bidding is liveNear the close?At the close:won or lost?Won at the close🚪Hands off to Journey 1on auction_won. The receipt is theboardingdocument, so this episode ends hereAfter the closeGAPNo off-app statusre-open the app to check,or miss the close entirelyPILE-UP3 to 4 touches, within minutesof a losing-money momentand no payment reassurance in any of them:the anxiety lands on support insteadSILENCEDay 1 to day 50: no designed recoverythe biggest recovery pool in the journey,left to the lapse timers. No second look, no differentangle, and no send triggered by what they did next🚪Exit: the day-50 lapse timersthe first designed touch after day one,and it is not this journey'sDrop-off before the closethe only behaviour-triggered sendsin the episodeWhen the close fails, or comes earlyNOT CAPTUREDWhat this canvas does nextthe trigger event was never captured and the canvascontinues past the push above. Closed by a consolepullemailEMAILBRAZEOutbid email“It’s time to up the ante. Raise yourbid now and outdo that sneakyso-and-so. You can still win thatupgrade.”2,326 sends in 30 days*CHANGING🖼 the outbid emailemailEMAILBRAZEOutbid emailStandard Premium“Your bid’s been beaten, but theauction’s still live.”names the class,the standard one does not6 sends in 30 days, so dead*KEEPING AS ISemailEMAILBRAZELast chance email“Does extra legroom, plush seats andWiFi float your boat? Get bidding andthat epic upgrade could be yours.”12,078 sends in 30 days*KEEPING AS ISemailEMAILBRAZEAuction lost email“We’re adding more seats and servicesto Seatfrog every day so keep an eye onyour inbox to make sure you catchour...”and the buy-now email:both land at once8,792 sends in 30 days*CHANGINGDOUBLE SEND🖼 auction-closed loss email🖼 auction-lost emailemailEMAILBRAZEBuy-now email“Just open the app, find your trip, andtap Buy first class upgrade now to lockin your upgrade.”same tips moduleas the loss email2,674 sends in 30 days*463 a week, open 57%FOLDED INTO THE CLOSE EMAILDOUBLE SEND🖼 the buy-now-available emailpushPUSHBRAZEAbandonment nudge“You’re so close! Don’t miss out onyour upgrade, {{first_name}}.”KEPT · PRE-CLOSE ONLYDOUBLE SENDpushPUSHBRAZEAvanti class cross-sell“Avanti Standard Premium upgradesstart at a fraction of the price of FirstClass, with (nearly) the same perks!”different job,same trigger: they stackKEPT · PRE-CLOSE ONLYDOUBLE SEND🖼 the abandoned-auction pushemailEMAILBRAZEAbandonment emailpoints at a staging serverRETIRINGNEVER RUNemailEMAILCAMPAIGN MONITORUpgrade confirmationcarries the barcodesthe only comm herea customer cannot board withoutANOTHER JOURNEYCOPY NOT CAPTUREDemailEMAILCAMPAIGN MONITORPayment failed emailANOTHER JOURNEYCOPY NOT CAPTUREDpushPUSHNATIVEOpens soonbid placed“Bidding starts in a few minutes. Goodluck!”volume TBC: app-fired, not in BrazeCHANGINGSHOULD MOVE TO BRAZEpushPUSHNATIVEOpens soon, no bid“Bidding starts in a few minutes. Bidearly here. You could be in line for anupgrade.”template exists,nothing publishes itvolume TBC: app-fired, not in BrazeRETIRINGNO PRODUCERpushPUSHNATIVEOpened, no bid“Body default: Bidding has now started.Join the auction for your chance at anupgrade.”Journey 3 owns thisvolume TBC: app-fired, not in BrazeANOTHER JOURNEYpushPUSHNATIVEOpened, outbid“You've been outbid. 😧 Bid again totake back the lead.”volume TBC: app-fired, not in BrazeKEPT · NEW WORDING (PHASE 1)SHOULD MOVE TO BRAZEpushPUSHNATIVEOpened, winning“Bidding has started. You're winning.😎”volume TBC: app-fired, not in BrazeKEEPING AS ISpushPUSHNATIVEOpened, already won“You won! 🎉 Looks like you'll betravelling {class} all the way to{destination}.”volume TBC: app-fired, not in BrazeANOTHER JOURNEYpushPUSHNATIVEKnocked out at open“There are not enough last-minuteupgrades to fulfil your opening bid.”volume TBC: app-fired, not in BrazeKEPT · REWRITE AT PHASE 2SHOULD MOVE TO BRAZEpushPUSHNATIVEOutbid push“You’ve been outbid. Take back thelead.”carries the live figuresvolume TBC: app-fired, not in BrazeKEPT · NEW WORDING (PHASE 1)SHOULD MOVE TO BRAZEpushPUSHNATIVEKnocked out“There are not enough last-minuteupgrades to fulfil your previous bid.”volume TBC: app-fired, not in BrazeKEPT · REWRITE AT PHASE 2SHOULD MOVE TO BRAZEpushPUSHNATIVETime left, losing“Just a few minutes left to bid. Swoopin now and snatch the lead.”copy never capturedvolume TBC: app-fired, not in BrazeKEPT · NEW WORDING (P1), THEN REPLACED (P2)SHOULD MOVE TO BRAZEpushPUSHNATIVETime left, winning“Just a few minutes left. The upgrade'salmost yours...”volume TBC: app-fired, not in BrazeKEPT · NEW WORDING (PHASE 1)SHOULD MOVE TO BRAZEpushPUSHNATIVEEnded, winner“You won! 🎉 Looks like you'll betravelling {class} all the way to{destination}.”volume TBC: app-fired, not in BrazeANOTHER JOURNEYpushPUSHNATIVEEnded, loser“Bidding has ended. See the finalprice.”volume TBC: app-fired, not in BrazeKEPT · STRIPPED (PHASE 1)SHOULD MOVE TO BRAZEpushPUSHNATIVEEnded, loserwith a buy-now sell“Sorry, you missed out on theauction. You can still buy a {class}Upgrade. Tap to Upgrade Now.”the newer systemhas replaced it alreadyvolume TBC: app-fired, not in BrazeSTOPS AT LAUNCHNEARLY DEADpushPUSHNATIVEClosed early“Sorry, no upgrades are available forthis trip. Try again next time - we'realways adding new routes.”can send twicevolume TBC: app-fired, not in BrazeKEEPING AS ISSHOULD MOVE TO BRAZEiamIN-APPNATIVELock-screen status“Structured state rather than copy:current price, the customer’s bid,winning or losing, and a countdown.”no opt-out of any kindvolume TBC: app-fired, not in BrazeCHANGINGpushPUSHNATIVEInstant win, card retry“Sorry, we couldn’t place your bid asthere was a problem with your paymentcard. Give it another go.”volume TBC: app-fired, not in BrazeKEEPING AS ISpushPUSHNATIVEInstant win, card dead“Sorry, we couldn’t place your bid asthere was a problem with your paymentcard. Update it to keep bidding.”volume TBC: app-fired, not in BrazeKEEPING AS ISpushPUSHNATIVEUpdate your details“SOFT: ⚠️Your card was declined!You've got a few minutes to fix it.”ten minutes to act;arrives silently on iPhonevolume TBC: app-fired, not in BrazeKEEPING AS ISpushPUSHNATIVEPayment failed at opentwo nearly dead,one unreachablevolume TBC: app-fired, not in BrazeDECIDE FIRSTNEARLY DEADpushPUSHNATIVEUpgrade timed out“We had to allocate this upgrade tosomeone else because we couldn’t takeyour payment in time.”the newer systemsends nothing at allvolume TBC: app-fired, not in BrazeCHANGINGNEARLY DEADSHOULD MOVE TO BRAZEemailEMAILBRAZEDay-one loser emailthe only comm after the close,and nothing follows it20 sends in 30 days, so effectivelydormant*open 60.3%, reads 3.73% below itscontrolREPLACED · IN PLACECOPY NOT CAPTURED🖼 the day-one loser email

Phase 1 ships on Braze and Analytics with no app release; Phase 2 is anything that needs engineering.

For the Braze developer

the Phase 1 build, one row per send Braze builds: what it fires on, its caps and what stops it, what it needs, and the questions still open on it
The buildFires onCaps, and what stops itWhat it needs, and what is open
The outbid moment · email
Email
Phase 1
The real-time outbid event, once per state change.The live auction owns this customer, from an active bid to two hours after the close. Operational class, so it always sends and is never capped; each send counts toward the six-send ceiling.
Stops: Render guard: the price block renders only when the current bid is above the customer’s maximum. Any other state gets state-only copy, and a push firing there is reported as a possible defect, never papered over.
liquid
Nothing. Both source blocks exist in live Braze campaigns and are ours to edit. Both outbid variants carry an undocumented control group.
  • What is the split on each of the six campaign control groups? Lisa, and the Braze developer
  • Can we change the conversion setting on the five auction campaigns from app-open to a purchase event, and which event should it be? Lisa, and the Braze developer
  • Can the rule that only sends a Braze email after the matching push succeeds be removed? Engineering, via Sophie
The outbid moment · Braze push
Braze Push
Phase 1
The real-time outbid trigger, the API-triggered event the outbid email fires from today; a rejected bid on the newer system rides the same trigger until Phase 2 splits it. The auction-open outbid (the newer system's push at the open) rides the same send as a second trigger, so one Braze push covers both.Operational class, so it always sends and is never capped; each send counts toward the six-send ceiling. The live auction owns this customer from an active bid to two hours after the close.
Stops: Critical-only where the lock-screen status is active.
native send switch-off
Engineering switch the native outbid push off in the same release, outside the final minutes before a close where the app keeps its own push. Both figures are on the trigger today: the live outbid email prints current_price as the current winning bid and current_bid as the customer's maximum.
No push permission, email held
Email
Phase 1
The existing transactional triggers: the outbid event, and thirty minutes to close.Service class: outside the marketing caps, bound by the auction-only copy rule.
Stops: The opt-in is only ever re-asked at a post-intent moment, a re-search tap or a route watch (on hold), never cold on a loss screen.

The lock-screen build is the only thing that widens in-auction reach. The email fallback rides sends that already exist.
The close, off the app · email
Email
Phase 1
The auction closing, any reason.Transactional, so it always sends and is exempt from quiet hours. Sheran, 4 Sep: the buy-now email is not stopped before the party-size check exists.
Stops: Phase 1: no you-lost wording for closes that never ran; the buy-now email unchanged. Phase 2: the buy-now branch renders only where the offer is confirmed open and an upgrade is confirmed available for the whole party, failing closed; never to a customer whose in-app offer converted, never an expired price.
prior-loss count, loss-cause counts
Phase 1: nothing new; the live loss campaign carries a control group Analytics sizes before the template swap. Phase 2: the party-size availability signal (D10), then the merge in Braze.
  • What is the split on each of the six campaign control groups? Lisa, and the Braze developer
  • Can we change the conversion setting on the five auction campaigns from app-open to a purchase event, and which event should it be? Lisa, and the Braze developer
  • Can the rule that only sends a Braze email after the matching push succeeds be removed? Engineering, via Sophie
  • The outcome box is authored for a loss. Does the win branch get its own two jobs: what you actually won, and whether you still need your original ticket? Sheran
Day one after a loss
Email
Phase 1
Day one after a competitive loss.Marketing, never the same day as recovery.
Stops: Its own holdout from day one: control customers get nothing. No other suppression; eligibility is the audience column.
late-bid flag
Braze for the build. The bid-gap should be derivable from the highest-bid stream Braze already receives plus the customer's own maximum: confirm at build before commissioning any new feed. The survey answers must land as warehouse-visible custom attributes, with the sync path named before build. Analytics reconciles the twenty-against-forty-five-a-week volume conflict. The late-bidder lead needs a first-bid-to-close-minutes attribute computed from bid timestamps; the generic timing tip ships without it, and Analytics sizes late-bidder losers and their re-bid rate before the attribute is commissioned (the ask is on the analytics board).
  • What is the split on each of the six campaign control groups? Lisa, and the Braze developer
  • What are the frequency caps and quiet hours currently set on this journey's campaigns? Lisa, and the Braze developer
  • Can we pull the day-one loser email canvas: its copy, entry criteria and holdout? Lisa, and the Braze developer
Day three after a loss
Email, Braze Push
Phase 1
The day-three gate, with a send-time re-check because the nightly trait can miss a same-day return.One recovery per auction, family cap of three. A cross-episode dial holds it to two recovery sends per customer per rolling thirty days, then in-app on next open only. Copy forks on prior loss count, so the identical message never sends twice. Send-priority, never eligibility: mid and low value ordered first under the daily cap. Sends inside the 08:00 to 22:00 optimised window.
Stops: Out: anyone who has come back to the auction flow on their own before day three (a silent exit, no send), power users, failure closes, active disruption; and once the has-contacted-support flag exists, anyone who has contacted support since the close is left alone. If a live auction is running the send waits four hours and is then dropped rather than sent late. No second knock.
computed trait
The day-three gate trait, the power-user suppression trait, the journey-state and cap counter, the nightly from-price attribute extended to the lost route, and the buy-now availability flag for the CTA fork. The return-leg variant needs the route-level return-window distribution and a return-search signal; the typical-price tip needs route-level winning-price statistics. The repeat-loser variant needs a prior-competitive-loss count from the warehouse, which the copy fork in the caps already assumes. Gated on the repeat-loser analysis; the first-timer and default variants ship without it.
  • What are the frequency caps and quiet hours currently set on this journey's campaigns? Lisa, and the Braze developer
  • What is the recovery-eligible cohort at the day-three boundary, and the control-arm baseline for day-three non-returners? Analytics, via Ivi
The abandonment pushes
Braze Push
Phase 1
Drop-off from the auction flow. Four variants are live: five, ten and fifteen minutes, plus a control.Suppressed the moment the auction closes for that auction. It also needs de-stacking against the Avanti cross-sell in the row below: see the go-live gates.
Stops: Journey 3 owns the never-bid slice: replace, not stack. Boundary with the search-abandon recovery (Sheran, 6 Sep 2026, rulings J3-01 and J4-01): opened an auction, this journey owns them; searched only and never opened an auction, Journey 3's row 7b owns them, never this push.
liquid, catalogue
Nothing. Liquid conditionals and a station catalogue lookup, both inside Braze. The timing test has run for over two years without a decision and still carries an undocumented control group.
  • Is there any suppression between the two abandonment canvases, and if not, can we add it? Lisa, and the Braze developer
  • The five, ten and fifteen minute abandonment test, and the Avanti one and two hour test: which arm wins, or should they be closed? Lisa, and the Braze developer
  • The draft abandonment email points at a staging server. Archive it, or correct the address? Lisa, and the Braze developer
The Avanti class cross-sell
Braze Push
Phase 1
Time since the trip was added. Three variants are live: one hour, two hours, and a control.De-stacking against the abandonment nudge is a go-live gate, not a later refinement.
Stops: Suppressed the moment the auction closes, on the same rule as the abandonment nudge.

Nothing. The timing test has run for over two years without a decision and still carries an undocumented control group.
  • Is there any suppression between the two abandonment canvases, and if not, can we add it? Lisa, and the Braze developer
  • The five, ten and fifteen minute abandonment test, and the Avanti one and two hour test: which arm wins, or should they be closed? Lisa, and the Braze developer

Build paused until written sign-off. Every build carries its exit, cap and suppression; a control group is verified real, never assumed; Liquid never renders raw; a dependency that does not exist yet is flagged, not faked.

Not in this build

Phase 2, and the app surfaces: do not build any part of these, because each waits on an engineering release, and half-building one splits a moment across two owners
The treatmentWho it reachesWhy it waits
Bid status off the app
Live Activity (Ios)
Any bidder, from the later of the bid and 7h45m before the close, to the closeWaits on an app release.
The outbid moment · Braze push
Braze Push
Bidder who has been outbid, and bidder whose own bid was rejectedWaits on a backend release.
The outbid moment · Braze push
Braze Push
Bidder whose own bid was rejected for being below the current bidWaits on a backend release.
Knocked out
Braze Push, Braze In-App Message
Bidder knocked out while the auction is still runningWaits on a backend release.
Minutes to close, not in the lead · native push
Native Push
Bidder not currently winning, minutes from the closeWaits on a backend release.
Minutes to close, in the lead
Native Push
Bidder currently winning, minutes from the closeWaits on a backend release.
The close, in the app
Native Screen Or Modal, Braze In-App Message
Everyone who bid and did not get the upgrade, whatever the reason, who is in the app at the closeWaits on a backend release, then an app release.
The close, off the app · Braze push
Braze Push
Everyone who bid and did not get the upgrade, away from the app at the closeWaits on a backend release.
A failure on our side
Braze Push, Email
Loser whose auction did not run as intendedWaits on a backend release.
Working detailPack version: 15 Oct 2026, 10:39 (London)