Growth · 16 min

Onboarding Design

The first 15 minutes that decide 90 days of retention.

You have 15 minutes. The user has decided by minute 8.

tl;dr
  • Design 1 onboarding path, not 5: Framer + Relume for UX, Attio for state, PostHog for truth.
  • First 15 minutes decide 90 days: cut TTFV to under 7 minutes or churn will spike.
  • Use Clay + Apollo AI to prefill roles, triggers, and ICP signals before the first login.
  • 11x or Lindy should drive the 3-step activation chase; humans only handle edge cases.
  • If onboarding needs 12 fields, it is broken; move to progressive capture in Attio.
Action plan
Action plan0/3 · 0%
Progress saved locally. Sign in to sync
Week one
  1. 01Day 1: Define 1 activation event and map it to 1 lifecycle stage in the CRM.
  2. 02Day 2: Enrich every new signup and backfill role, company size, and intent.
  3. 03Day 3: Redesign the first 3 in-product screens around 1 path to first value.
  4. 04Day 4: Write 3 nudge messages for stalled users and wire them into workflow automation.
  5. 05Day 5: Add 1 dashboard and 1 SQL query for activation by cohort.
  6. 06Day 6: Launch to a 10% rollout and monitor drop-off by step.
  7. 07Day 7: Decide 1 keep, 1 kill, and 1 rewrite based on 7-day retention movement.

Why onboarding is the product

In 2026, onboarding is not a tutorial; it is the first proof that the product can remove work. Framer + Relume should express the path in 3 screens, not 9, while Attio stores the onboarding state as a live workflow object. Use Clay with Apollo AI to infer role, company size, and urgency before the first click, then let PostHog confirm whether the user reaches first value in under 7 minutes. The winning rule is simple: if the first session cannot create a visible outcome, the user was never onboarded, only registered.

  1. 01

    Map the 1 core outcome

    Pick 1 job-to-be-done and delete every secondary path. Use PostHog funnels to find the single action that predicts 30-day retention, then mirror that in Framer + Relume.

    If the retention driver is 'invite 1 teammate', do not optimise around profile completion.
  2. 02

    Prefill the context

    Run Clay enrichment at signup, pass the result into Attio, and preselect the right template, use case, and plan. A Claude 4.5 Sonnet prompt can compress this into 1 routing decision.

    Prompt: 'Given role = RevOps and company_size = 120, return the most likely onboarding branch in 1 line.'
  3. 03

    Instrument the truth

    Use PostHog and June to separate intent from action. Every screen needs 1 event, 1 exit event, and 1 success event, or you are guessing.

    Event names: `onboard_step_1_viewed`, `onboard_step_1_completed`, `first_value_reached`.
IfThen
the onboarding flow has more than 3 decisions before first valuecollapse branches in Framer and push segmentation into Clay plus Attio.
PostHog shows <40% reach the first success eventrewrite the first screen before adding more copy or tooltips.

Agentic personalisation that does not feel fake

Personalisation in 2026 is not {{first_name}} in a headline; it is routing the user into the right path before they see friction. Clay + Common Room should score intent, while Keyplay or Ocean.io can identify segment patterns that matter to onboarding. Then an 11x or Lindy agent should trigger the right nudge sequence: email, in-app, or calendar prompt. Use Claude Code or Cursor for RevOps SQL when you need to verify which cohort actually converts, because dashboards without cohort logic are decorative. The sharp rule is this: personalise only when the data changes the next 2 clicks.

  1. 01

    Score the user before the session

    Use Clay Chat to enrich company, role, and trigger data, then write the score back to Attio. Common Room adds product-usage signals for PLG accounts.

    Score fields: `buyer_role`, `urgency_7d`, `team_size`, `used_competitor`.
  2. 02

    Route with an agent

    Let Lindy or 11x send the correct onboarding message after each missed step. The agent should wait 12 hours, not 12 minutes, unless the user is high-intent.

    Lindy prompt: 'If user has not completed step 2, send 1 concise email and log reply sentiment to Attio.'
  3. 03

    Validate with SQL

    Use Cursor against warehouse tables to compare converted cohorts versus vanity segments. RevOps SQL should answer 1 question: did the personalised branch lift activation by at least 8%?

    Query target: `activation_rate by branch_name, signup_week, source_channel`.
IfThen
a personalised branch does not lift activation by 8% or moredelete it and revert to the default path in Framer.
the agent sends 2 follow-ups without a new user eventthrottle the workflow in n8n or Trigger.dev.

Activation without friction

The best onboarding removes setup work, not just explains it. Framer + Next.js on Vercel should support progressive disclosure, while Attio stores only the minimum required fields and the rest is captured later from behaviour. Clay can pre-populate company metadata, and an OpenAI Agents SDK workflow can translate an account's intent into the next action in real time. Use PostHog to watch rage clicks and dead ends; if a field does not change the downstream decision, it is a tax. In 2026, the winner is the flow that feels like 1 conversation, not 1 admin form.

  1. 01

    Remove mandatory fields

    Delete every field that Clay can enrich or that usage can infer. Keep only the 2 fields needed to route the user into the right activation path.

    Keep: `work_email`, `primary_use_case`; remove: `company_name`, `role`, `team_size`.
  2. 02

    Use progressive capture

    Capture missing data after the user gets value, using in-app prompts and Attio updates. Trigger.dev should fire the follow-up when the user completes step 1.

    After first dashboard view, ask for industry with a 1-click selector.
  3. 03

    Automate the rescue

    If the user stalls, an 11x agent should intervene with 1 helpful message, not a sequence. Use Common Room and PostHog to decide whether the stall is product confusion or wrong segment.

    Message: 'Need the fastest path? I can set this up in 90 seconds.'
IfThen
a field can be enriched by Clay with >85% confidenceremove the field from the form.
a step has >20% drop-offrewrite the step or delete it within 7 days.

Operating system for optimisation

Onboarding should run like a weekly revenue system, not a one-off UX project. PostHog and June give event truth, Attio holds lifecycle state, and Clay keeps segment data current. Use MCP servers for product, CRM, and warehouse access so Claude 4.5 Sonnet can inspect why a cohort stalled without manual exports. Then let n8n or Inngest trigger changes: copy tests, route changes, and agent follow-ups. The 2026 rule is ruthless: if a hypothesis cannot be tested in 5 days, it is not a hypothesis, it is theatre. Every experiment needs one owner, one metric, and one rollback path.

  1. 01

    Build the experiment loop

    Create a weekly loop: insight from PostHog, cohort analysis in Cursor SQL, ship in Framer or Next.js, measure again in 5 days.

    Weekly cadence: Monday insight, Wednesday ship, Friday readout.
  2. 02

    Connect systems with MCP

    Use MCP servers so Claude can query Attio, warehouse tables, and Common Room without brittle manual handoffs. This replaces spreadsheet triage.

    Prompt: 'Compare activation by source_channel and onboarding_branch for the last 14 days.'
  3. 03

    Automate rollouts and rollback

    Use Inngest or n8n to push changes to a small cohort first, then expand only if the metric clears target. Keep 1 rollback toggle in Framer or feature flags.

    Rollout rule: 10% traffic first, 50% after 48 hours, 100% only if activation improves.
IfThen
an experiment has no measurable lift after 5 daysship the rollback and archive the idea in Attio.
a change needs 3 tools or more to launchsimplify the workflow before you scale it.
Pitfalls

What goes wrong

Mistake

Treating onboarding as copywriting instead of state design

Fix

Model the journey in Attio and PostHog first, then write Framer screens.

Mistake

Using 9 fields when Clay can enrich 7 of them

Fix

Delete every enrichable field and capture it later with progressive prompts.

Mistake

Running one generic email sequence for all segments

Fix

Use 11x, Lindy, or Relevance AI to branch by role and intent.

Mistake

Measuring completion instead of first value

Fix

Make `first_value_reached` the primary event in PostHog.

Mistake

Shipping onboarding changes quarterly

Fix

Use n8n or Trigger.dev to test 1 variation every 5 days.

FAQ
Should onboarding be different for every persona?

Only when persona changes the next 2 clicks. Use Clay and Common Room to identify the few segments that matter, then keep Framer + Relume on 1 default path. If a persona does not change activation by at least 8%, it is not a segment, it is noise.

How much should AI personalise the flow?

Enough to remove friction, not enough to feel authored. Clay should enrich fields, 11x or Lindy should send the right nudge, and Claude 4.5 Sonnet should only decide branch logic when the data is strong. If the user notices the AI, you probably overfit.

What should the first success event be?

Pick the event that predicts 30-day retention, not the prettiest milestone. In PostHog, that is often invite sent, template published, or first workflow run. Use Cursor SQL to prove the correlation, then make that event the centre of the onboarding path.

When do we ask for more information?

After the user gets value, never before. Attio should start with minimum fields, Clay should fill the rest, and Trigger.dev should ask progressive questions only after the first meaningful action. If a question does not improve routing or activation, delete it.

How do we know the new onboarding is better?

Use a 5-day experiment window, a 10% rollout, and 3 metrics: time to first value, activation, and 7-day retention. If PostHog improves but June or retention does not, the win is fake. Keep only changes that move all 3 in the right direction.

Get one system like this in your inbox each week

No fluff, no upsell. Unsubscribe anytime.