Automate Free Trial Started → 7-Day Onboarding Drip (Day 0, 3, 7) in n8n — Step by Step
A trial signup is the highest-intent moment in your entire funnel — and most SaaS teams waste it. The user hits "Start Free Trial," lands in an empty dashboard, gets one generic welcome email, and the
A trial signup is the highest-intent moment in your entire funnel — and most SaaS teams waste it. The user hits "Start Free Trial," lands in an empty dashboard, gets one generic welcome email, and then silence until the credit-card charge fails to convert. Industry data puts the average freemium-to-paid conversion between 2% and 5%, and the single biggest lever isn't the product page — it's what happens in the first 7 days. This guide shows you how to build a Day 0 / Day 3 / Day 7 onboarding drip in n8n that fires the instant a trial starts, tracks every touch in HubSpot, and moves users from "signed up" to "activated" to "upgraded" — without a marketing-automation seat you have to pay per contact for.
The Problem: The Trial Window Closes Faster Than You Think
The trial period is a countdown clock, and most of the decay happens early. If a user doesn't reach the "aha" moment — the point where they see real value — within the first 48 hours, the odds of them ever paying drop off a cliff. Yet the typical onboarding is either nothing at all or a firehose: five emails on day one, then dead air.
Three failure modes show up again and again:
- No structured cadence. Emails go out when someone remembers to send them, not when the user is at a decision point.
- No behavioral awareness. The "upgrade now" email lands in the inbox of someone who never even logged in a second time. It reads as spam because it is spam.
- No tracking. Sales has no idea who opened, who clicked, or who is warming up. The trial ends and the lead is cold before anyone notices.
Doing this by hand doesn't scale past a handful of signups a week, and full marketing-automation platforms charge per contact and lock the logic inside a UI you can't version-control. You need a system that is deterministic, cheap to run at volume, and transparent about what fires and when.
The Solution: A 3-Email Drip Orchestrated in n8n
The workflow is deliberately simple — three emails over seven days, each with a distinct job:
- Day 0 — Welcome + First Action. Sent within minutes of signup. One goal: get the user to complete the single most important setup step (connect a data source, invite a teammate, create the first project). No feature tour, no 12-point checklist. One action.
- Day 3 — Engagement + Value. The mid-trial nudge. Show what they're missing, surface a use case tied to their signup context, and remove friction. This is where you re-activate the users who bounced after Day 0.
- Day 7 — Upgrade Offer. The trial is ending. Make the paid case concrete: what they'll lose, what they'll unlock, and a clear CTA with urgency (trial expires, discount window, or a "talk to us" path for higher-value accounts).
Every send, open, and click is written back to the HubSpot contact record so your CRM reflects the real state of each trial. n8n is the orchestration layer: it holds the timers, branches on behavior, and talks to both your email provider and HubSpot through their APIs. Because the logic lives in a workflow you own, you can read exactly what happens at each step — no black box.
Step-by-Step: Building the Workflow in n8n
Here's the node-by-node build. The whole thing is a single workflow triggered per signup.
1. Trigger on Trial Started
Add a Webhook node (method POST, path /trial-started). Point your app's signup event or your billing provider's trial_started webhook (Stripe emits customer.subscription.created with status: trialing) at this URL. The incoming payload should carry at minimum the user's email, first name, signup timestamp, and any plan/context fields. If you prefer polling, swap in the HubSpot Trigger node watching for new contacts with a "trial" lifecycle stage.
2. Normalize and Upsert the Contact
Add a Set (Edit Fields) node to map the raw payload into clean variables: email, firstName, trialStart. Then add a HubSpot node set to Contact → Create or Update, keyed on email. Write a custom property like trial_stage = day_0 so every downstream branch and your sales team can see where the contact sits. This upsert also guarantees the contact exists before you attach engagement data.
3. Send the Day 0 Email
Use a Send Email (SMTP) node, or the native Gmail / SendGrid / HubSpot node depending on your stack. Reference merge fields with expressions, e.g. Hi {{ $json.firstName }}. Keep the body focused on one action with one button. Immediately after, add a second HubSpot node to log the send as a timeline event or bump trial_stage, so tracking never depends on the email provider alone.
4. Wait Until Day 3
Add a Wait node set to resume after 3 days. n8n persists the execution to disk and wakes it on schedule — no cron juggling, no external scheduler. For behavioral branching, follow the Wait with an HTTP Request or HubSpot node that checks whether the user completed the Day 0 action (e.g. a last_login or activated property), then an IF node: activated users get the "here's what's next" variant, inactive users get the "you haven't started yet" re-activation variant. Send via the same email node pattern, then update trial_stage = day_3.
5. Wait Until Day 7 and Make the Upgrade Offer
Add another Wait node for the remaining 4 days. Then branch one more time with an IF node on engagement: warm users (opened, clicked, logged in) get a direct upgrade CTA; cold users get a softer "need more time?" or extension offer. Send the Day 7 email, then a final HubSpot node sets trial_stage = day_7_complete and, ideally, creates a task for sales when the contact is warm. Optionally add a NoOp node at the end as a clean termination point for logging.
That's the entire spine: Webhook → Set → HubSpot upsert → Email → Wait → IF → Email → Wait → IF → Email → HubSpot. Two Wait nodes hold the 7-day clock; two IF nodes make the sequence feel personal instead of robotic.
The Benefits: Why This Beats a Manual or SaaS-Locked Setup
- Fires in real time. The Day 0 email lands while intent is still hot — minutes after signup, not the next batch send.
- Behavior-aware without a CDP. The IF branches mean an inactive user and a power user never get the same message, which lifts both re-activation and upgrade rates.
- Full CRM visibility. Because every step writes to HubSpot, sales can filter for "warm trials ending in 2 days" and reach out at exactly the right moment.
- Flat cost at scale. n8n runs on your own infrastructure — you're not paying per-contact fees that punish growth. One instance handles thousands of concurrent trial sequences.
- Version-controlled and auditable. The logic is a workflow you can export, diff, and clone for other lifecycle sequences (dunning, win-back, expansion).
Common Pitfalls (and How to Avoid Them)
- Wait nodes and workflow restarts. A Wait node parks a live execution. If your n8n instance restarts mid-drip in a misconfigured setup, in-flight waits can be interrupted. Run n8n in queue mode with a persistent database (Postgres, not SQLite) so multi-day waits survive restarts and deploys.
- Duplicate triggers. If your app retries the signup webhook, a user can enter the drip twice. Add a dedupe guard: query HubSpot for an existing active
trial_stagebefore starting, and exit early with an IF node if one exists. - Sending to unengaged or bounced addresses. Blindly firing all three emails hurts deliverability. Check for hard bounces or unsubscribes between steps and short-circuit the sequence. Respect the unsubscribe property in HubSpot on every send.
- Timezone-blind sends. A "your trial ends today" email at 3 a.m. local time underperforms. If you capture timezone, add a small offset in the Wait or a Schedule check so sends land during working hours.
- No error handling. An API hiccup on the HubSpot node shouldn't silently kill the whole drip. Attach an Error Trigger workflow or set the node's "Continue On Fail" and route failures to a Slack alert so you catch broken sequences before they cost conversions.
- Hardcoded copy. Keep email bodies in a Set node or an external data store, not buried in each Send node, so marketing can iterate on messaging without touching the workflow wiring.
Build this once and every future trial signup runs through a consistent, tracked, behavior-aware onboarding sequence — the difference between a 2% and a 5%+ trial conversion rate is very often just showing up at Day 0, Day 3, and Day 7 with the right message. Start with the three-email spine above, add the IF branches once it's live, and layer in the safeguards before you scale volume.
Ja construimos isso pra voce
Nao comece do zero. O Free Trial Started → 7-Day Onboarding Drip (Day 0, 3, 7) e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $49 →