Chapter 4
Journey blueprints for trial conversion, churn prevention, feature adoption, expansion, enterprise onboarding, across SaaS, healthcare, HR, and marketplaces.

Last updated: July 2026
Each blueprint is built from the nodes in Chapter 2.
The trial-to-paid journey is where most product-led growth investment concentrates. The goal is helping users reach the activation milestones that predict conversion before the trial ends.
| Day | Trigger or check | Action |
|---|---|---|
| 0 | trial_started | Welcome message, personalized by {{data.use_case}} |
| 1 | Logged in? | If no, a login reminder via push or SMS |
| 3 | Feature activated? | Yes: next-step tips. No: getting-started help |
| 5 | Team invited? | If no, an invitation prompt with team value |
| 7 | Fetch engagement score | High: expansion talk plus a sales Slack alert. Medium: usage tips. Low: CS outreach |
| 13 | Final day | Conversion message, tailored to engagement level |

The branches at day 3 and day 7 are where behavior-driven journeys beat static sequences: by day 7 the journey has enough data to route confidently. When a user converts before the trial ends, cancel the run using the runId from the original invocation and start a post-conversion onboarding journey instead.
Churn prevention journeys spot at-risk accounts before they cancel and route each to the right intervention. The most reliable early signals are engagement drops, not stated intent to leave.
Define risk tiers from behavioral data, then let the AI node score each account and return a level plus a one-line reason:
[Trigger: daily_risk_check]-> AI node: score churn risk -> { risk_level, reason }-> Branch on risk_levelhigh -> CS Slack alert + outreach task -> wait 3 days -> escalate if no contactmedium -> usage tips with the reason -> wait 7 days -> re-checklow -> feature discovery -> wait 14 days -> re-check
The reason field makes outreach feel specific instead of automated, and no scoring model has to be built or hosted. Cancel the journey when the account upgrades, when CS marks it contacted, or when usage recovers; running a churn journey at an active user creates friction.
New features often launch with one announcement and no follow-through. Adoption journeys deliver education at the moment a user hits the relevant context. "You can export your data" three days after signup is noise if the user has no data yet; the same message when they create their first report and try to share it is useful.
Structure adoption journeys around context signals: a user reaches a milestone that makes the feature relevant, or activates a related feature that usually precedes it, with a time-based fallback only for users who never hit the trigger. Track the feature_activated event to measure what share of recipients actually adopted the feature inside the journey window, which separates adoption that works from clicks that go nowhere.
Expansion journeys watch for growth signals and route each to the right conversation.
For per-seat pricing, monitor seat fill rate. When an account reaches 80% of its limit, a seat_utilization_update event triggers the journey: it messages the account owner with current utilization and the upgrade path, alerts the CSM, and starts a seven-day follow-up. A branch first checks whether an expansion conversation happened in the last 30 days, so accounts already in one are suppressed rather than messaged again. Don't wait for 100%: accounts that hit the wall without a conversation tend to churn.
Advanced-feature usage is another expansion signal. When an account activates multiple advanced features, send a message about the capabilities they're approaching that need a plan upgrade, framed around what they're trying to do, not upsell pressure.
Enterprise accounts need coordinated onboarding across stakeholders who each need different information. Map contacts to roles at setup and run a timeline per role:
Track technical milestones (SSO configured, first integration live, provisioning set up) as product events, and have journey steps check milestone completion before advancing. Incomplete milestones past a deadline escalate to the CSM. Courier's tenant architecture keeps each enterprise customer's configuration isolated while the journey logic stays shared.
The structure holds across industries; the channels, data, and constraints change.
B2B SaaS trial onboarding follows the trial conversion blueprint above. The differentiator is routing on product usage: developer-focused users get API and SDK docs, dashboard users get UI walkthroughs, driven by a feature_type property on the same feature_activated event.
Healthcare platforms face HIPAA constraints: no protected health information in email or SMS, yet patients need timely reminders. The pattern is channel separation enforced at the journey level. Appointment reminders escalate across channels (email with prep instructions at day 7, an SMS confirmation at day 3, a final reminder at day 1), and lab results branch on sensitivity: normal results send with a portal link, abnormal results notify the provider first. In-app messages can carry detail because the app requires authentication. Trusted Health coordinates staffing across hospital systems on this pattern, keeping sensitive details in authenticated in-app delivery and using email for the rest.
HR platforms serve many companies with different policies and channel preferences. Tenant-based routing defines the journey once and respects each company's setup through group associations. New-hire onboarding, benefits enrollment with reminders at 14, 7, and 1 day before a deadline, and performance-review cycles all run as journeys that batch reminders into digests and respect quiet hours. Lattice runs this pattern for its performance-review cycles.
Marketplaces coordinate parties with competing needs. The same order_placed event splits into a buyer path (email confirmations, tracking, delivery) and a seller path (push for immediate awareness, detailed emails, payout confirmations), with disputes escalating to support when an SLA approaches. High-volume sellers get throttling so updates arrive at a manageable frequency. Side coordinates real estate transaction milestones between agents and clients on this multi-party pattern.
Users are never in one journey at a time, so coordination is what keeps a good journey from becoming noise.
Hi {{profile.first_name}}, activating {{data.feature_name}}) so one template serves many segments. Every trait sent through Segment's identify call becomes a variable.Match the length to the lifecycle phase and the signals you have. Trial onboarding usually spans 7 to 14 days with three to eight touchpoints depending on engagement; post-purchase sequences often run 30 to 90 days. Add a step only when it serves a goal based on real behavior. A four-step journey that reacts to signals outperforms a twelve-step one that fires regardless.
Track completion rate (the share of users who reach the goal event) and drop-off points (which steps see the highest exits), then compare the paths of converted and non-converted users to see where they diverge. Courier's message logs show delivery, open, and click data per step; layer that on product analytics that track the goal event. A journey that generates clicks but no feature activations is measuring the wrong thing.
Check whether the user already completed the goal before starting the journey, for instance whether they're already on a paid plan or already activated the feature. Cancellation handles the case where the goal is met mid-journey, and frequency throttling prevents re-entry within a defined window even if the trigger fires again.
There's no hard per-user limit, but a user in more than three or four active journeys is probably getting more messages than any single journey would send. Set cross-journey frequency caps so total daily volume per user stays bounded; the cap applies at delivery time and suppresses lower-priority sends once the limit is reached.
After a set number of sends with no engagement, drop to a low-frequency maintenance mode instead of continuing the cadence. For a trial user who hasn't opened anything by day 7, send one final message at day 13 rather than the full mid-journey sequence. For an unresponsive churn-risk account, route to CS for direct contact. Continuing to send to disengaged users hurts deliverability and adds no value.
You now have the full picture: what a customer journey is, how to build one node by node, what to look for in a platform, and the patterns that hold up in production. Building this yourself means event consumers, a workflow engine, delay queues, conditional evaluation, multi-channel dispatch, preference management, analytics, and now AI, before you send a single message. Courier handles that layer so your team designs the flow and ships changes without a deploy, while engineers keep one integration point.
Ready to build customer journeys that respond to what users actually do? Talk to a solutions expert or get started for free with 10,000 sends a month.
Related resources:
© 2026 Courier. All rights reserved.