How to Set Up Trial Onboarding in Customer.io

A trial flow can look polished and still fail if it starts at the wrong moment. In Customer.io, most trial onboarding issues come from bad timing, missing data, or loose exit rules.

Fix those first, and the build becomes much easier. The setup below gives you a working Customer.io trial onboarding flow you can use as a repeatable template.

Pick the Event That Starts the Trial

Your first decision is simple, but it controls everything after it. You need one event that defines day zero for the trial.

These are the three common choices:

TriggerUse it whenMain risk
signed_upEvery new signup gets a trial immediatelyReminder timing breaks if trials start later
trial_startedTrial access begins after billing, setup, or approvalYou need a reliable event from your app or billing system
First key eventThe trial starts only after a user completes setupSome users may never enter the flow

For most products, trial_started is the cleanest trigger. It lines up with the real countdown, which makes expiry reminders and conversion checks much easier.

If every signup starts a trial at once, signed_up is fine. If trial access begins only after a setup step, then trigger from that step instead. Don’t mix signup time and trial time in the same flow unless they are always the same.

Also decide how late entries should work. If a user can start a trial through a billing page, sales assist, or import, keep a fallback segment like “in trial and not yet enrolled.” That catches edge cases without changing the main trigger.

Pick one day-zero event and build the whole timeline around it. Mixing signup time with trial time causes most reminder bugs.

Define the Data Customer.io Needs

Customer.io runs on two data types, person attributes and events. Your trial onboarding logic needs both.

At a minimum, send these person-level fields:

  • email
  • id or another stable user key
  • trial_start_at
  • trial_end_at
  • timezone
  • plan_name or trial type
  • is_paid or a paid status flag
  • activated_at, if you store milestone dates as attributes

Then send the events that move people through the flow:

  • signed_up
  • trial_started
  • your activation event, such as project_created or first_report_published
  • converted_to_paid
  • trial_extended, if extensions are possible
  • canceled or subscription_deleted

Name events once and keep them stable. If your app sends workspace_created today and created_workspace next month, your branches become hard to trust.

Use timestamps from the system that owns the truth. For example, if billing controls trial end dates, take trial_end_at from billing, not from a guessed value in the app. Send dates in a consistent format, usually ISO 8601.

If your product is account-based, decide whether the flow follows a person or a workspace. Many B2B teams send onboarding to the account owner while storing workspace status on that person’s profile. That works, but only if the data model is clear.

Customer.io’s feature set changes over time, so verify current options in the Customer.io onboarding overview and recent release notes. If you’re also documenting event tracking or lifecycle automation for your team, use this same data map as the source document.

Create Segments Before You Build Messages

A good trial onboarding flow is easier to read when the audience rules live in segments, not inside long branch conditions.

Start with a few practical segments:

  • Active trial users
  • Trial users who reached activation
  • Trial users who have not activated
  • Trial users expiring soon
  • Paid users, to use as an exclusion group
  • Internal and test users, to exclude from sends

In Customer.io, you can trigger entry from an event, a segment, or both, depending on how your workspace is set up. Keep the logic simple. If your main entry is trial_started, segments should support the journey, not compete with it.

A useful pattern is to keep one segment for operational safety, such as “trial active and not in paid status.” Then use branches inside the journey for behavior-based steps.

If a condition reads like a legal contract, split it out. Segments are easier to QA, easier to reuse, and easier to hand off to another person later.

Build the Journey Logic With Delays, Branches, and Exits

Now create the campaign or journey, depending on the current UI in your workspace.

Thin grey lines connect various geometric shapes arranged in a flowing sequence on a plain background. Soft shadows beneath the floating nodes create a sense of depth and structured logic.

A reusable trial onboarding template usually looks like this:

  1. Enter the journey on trial_started, or on entry to your active trial segment.
  2. Send the first message right away. Keep it focused on the next action, not a full product tour.
  3. Wait for either the activation event or a short time limit, such as 24 hours.
  4. Branch based on activation status.
  5. Schedule mid-trial guidance.
  6. Schedule trial expiry reminders from the actual end date.
  7. Exit the person when they convert, cancel, or leave the trial window.

The first branch matters most. If a user activates early, stop pushing setup content. Move them to deeper guidance, milestone tips, or account expansion steps.

Mid-trial messages should reflect behavior. If someone has done nothing, send one concrete task. If they already activated, send a usage prompt or a second-step action. For message ideas, ProductLed’s onboarding email examples and this SaaS email sequence guide are useful references.

For delays, use trial_end_at whenever possible. A fixed wait of seven days works only if every trial lasts seven days and no one gets an extension.

Use date-based waits tied to trial_end_at when the end date can change. Fixed waits break as soon as a trial is extended.

Your expiry path is usually simple: remind users a few days before the end, one day before, and on the last day if your product and local rules allow it. Respect timezone data if you have it. A “last day” email sent at 2:00 a.m. local time is easy to ignore.

If your plan includes in-app, SMS, mobile push, or tooltips, use them for time-sensitive or context-based steps, not as a copy of every email. A tooltip near the activation action can work well, but only if the user is already in the product.

Finally, add exit rules at multiple points. Don’t wait until the last step. If a person becomes paid after the second email, remove them from the trial flow right there.

Test the Flow Before You Turn It On

Testing matters more than copy changes. A short flow with clean rules beats a polished sequence that misfires.

A silver magnifying glass rests above uniform rows of colorful geometric shapes on a pristine white surface. Soft lighting highlights the precise alignment of the icons during a detailed inspection.

Create at least three test profiles. Use one fresh trial user, one user who already activated, and one converted customer. Then replay events in the right order and in the wrong order.

Check these points as you test:

  • The person enters only once
  • Delays use the expected timestamp
  • Activation branches switch correctly
  • Paid users exit right away
  • Expiry reminders respect timezone and trial extensions
  • Internal domains stay excluded

Also inspect the activity log for each test person. Look for skipped steps, duplicate sends, or waits that schedule from the wrong date.

Track a small set of metrics from the start. For most teams, the important ones are activation rate, time to activation, and trial-to-paid conversion. Those numbers tell you whether the workflow is helping, not just sending.

If you keep separate internal guides, this is a good point to document related topics like customer onboarding emails, trial expiry reminders, lifecycle automation, and activation metrics.

Common Mistakes That Break Trial Onboarding

Most broken Customer.io trial onboarding setups fail for predictable reasons.

Missing attributes are the first problem. If trial_end_at or paid status is blank, reminder timing and exit rules fall apart.

Race conditions are next. If the activation event lands before trial_started, the user can enter the flow already “late.” In that case, add a short initial delay or fix event order at the source.

Duplicate enrollment is common when a person can enter from both an event and a segment. Pick one primary entry path, then use the other only as a backup with strict filters.

Timezone issues show up near the end of the trial. If your account stores UTC but your users live across regions, a “tomorrow” email can arrive too early or too late.

Missing conversion or exit criteria causes the most visible damage. Paid users keep getting trial nudges, canceled users stay in reminders, and extended trials keep old schedules. Define those exits before you write the second email.

One more problem is flow overload. If self-serve users and sales-assisted trials behave differently, split them early. One journey can support both only if their timing and milestones are close.

Conclusion

The hard part of Customer.io trial onboarding is not the email copy. It’s the rule set behind the flow.

When you pick one clear trigger, send clean event data, branch on real behavior, and exit people the moment they no longer belong, the automation stays readable and reliable. That structure gives you a trial journey you can test, reuse, and improve without guessing.

About the author

The SAAS Podium

View all posts

Leave a Reply

Your email address will not be published. Required fields are marked *