← Back to Howard
Onboarding UX Research — Working Document

Onboarding Findings Report

Cumulative pool: ClickUp, Notion, PostHog, Attio, Linear

Prepared by Howard Pool size: 5 of 6–8 — case-study section not yet triggered
How to read this report

Three new onboarding recordings were processed this cycle — PostHog, Attio, and Linear — and are analyzed in full below, screen by screen, with embedded evidence frames. ClickUp and Notion were evaluated in a prior session; their footage is not present in this session's working files, so they are carried forward at their existing ratings with a short summary rather than re-analyzed from scratch. This keeps the pool cumulative without fabricating evidence for tools whose source frames aren't available to re-check.

Every friction point below was checked against five possible causes — copy, hierarchy, placement, load time, motivation — with the ones that don't apply explicitly ruled out and a reason given, not just assumed. Two of the three new recordings contained short stretches of unrelated desktop content that were excluded from the analysis as recording noise rather than product evidence; this is noted inline where it occurred.

Carried forward from prior session
ClickUp Slightly Help

Rated in a previous run; source frames aren't available in this sandbox, so no new screens are analyzed here. Should be re-verified with fresh footage if a client conversation depends on specifics rather than the headline rating.

Notion Slightly Help

Rated in a previous run; source frames aren't available in this sandbox, so no new screens are analyzed here. Same re-verification caveat as ClickUp.

PostHog

Acquisition effectSlightly hurt

~8 min 55 sec  ·  ~14 distinct product states  ·  signup via Google OAuth

PostHog's signup completes and the account is technically usable within the recording window, but the path from “click Continue with Google” to “see your own data” is long, decision-heavy, and ends, in this session, without ever showing the tester real data. Four findings below, in the order they occurred.

P1 — Organization-name field looks pre-filled, isn't, and throws a validation error

Organization creation form
The organization-creation form: “Hogflix Movies” is placeholder text styled almost identically to a filled value. The tester left it untouched and submitted, triggering “Please enter your organization name.”

The role dropdown sat on “Select a value” for roughly 20 seconds while the tester read the form, then the placeholder was never edited before the Create click — a direct sign the text was read as already filled in.

Ruling out

Copy ruled out — the label and helper text are accurate; the failure is visual, not verbal.

Hierarchy ruled out — field order is logical, nothing buried below the fold.

Placement ruled out — sits in the primary vertical flow with Create directly beneath.

Load time ruled out — the error renders instantly; no server round-trip involved.

Motivation ruled out as root cause — the tester had already completed three prior fields and picked a role, showing clear intent to finish.

P2 — Two consecutive decision screens before any product value appears

Goal picker
“What do you want to do with PostHog?” — six goal cards plus “I'll pick myself” and “Hand off setup,” shown immediately after account creation.
Product picker
Immediately after: “Which products would you like to use?” — twelve more cards, several aimed squarely at engineers.

The cursor hovered across every goal card in turn over ~20 seconds before landing on “I'll pick myself,” then repeated the same scanning pattern across the twelve-card grid — textbook Hick's Law: decision time scaling with the number of options.

Ruling out

Copy ruled out — each card's label and description accurately describe the product behind it.

Hierarchy partially responsible — “I'll pick myself”/“Hand off setup” are equal-weighted with the six goal options rather than a lighter-weight skip.

Placement ruled out — both screens centered, above the fold, no scrolling to act.

Load time ruled out — both render instantly, no spinner observed.

Motivation ruled out as primary driver — the friction is architectural (two stacked choice screens), not a dip in willingness to continue.

P3 — The only paths to real data assume a codebase

Install step
Install step for AI observability: “Open a pull request” (needs GitHub repo access) or “Run it yourself,” gated behind “Waiting for LLM generations.”
SDK setup modal
“Manual SDK setup” modal: over 20 framework/platform tiles to choose from before any code is written.

“Skip the install. Get 10–20 minutes back” is honest framing, but both offered paths assume the person at the keyboard can write or approve code. The tester clicked “Skip for now.”

Ruling out

Copy ruled out — transparent about time cost and prerequisites.

Hierarchy ruled out — two paths clearly differentiated with icons, labels, descriptions.

Placement ruled out — “Skip for now” sits directly next to “Next,” not hidden.

Load time ruled out — no delay reaching or reading this screen.

Motivation is the core issue — a non-technical evaluator has no reason to go find a repository mid-signup, so skipping is rational, and skipping is exactly what leaves the rest of the session with no data to show.

P4 — Skipping install leaves every later screen empty, and a real error surfaces unprompted

Empty dashboard
Home dashboard: “This project has no events yet” banner, plus an unprompted toast — “Invite team members failed: A user with this email address already belongs to the organization.”
Empty observability dashboard
The last screen visited in the session — AI observability dashboard, still empty, banner still present.

The “no events yet” banner persisted across every screen for the remainder of the ~9-minute session. The invite-team error was not triggered by any visible tester action — a genuine backend issue, not a self-inflicted mistake.

Ruling out

Copy ruled out — “no events yet” is accurate and links to onboarding/settings.

Hierarchy & placement ruled out — the banner is top-of-page and unmissable everywhere it appears.

Load time ruled out — pages render promptly; the absence of data traces to the skipped install (P3), not performance.

Motivation traces back to Finding P3 rather than a separate cause.

Outside signal

Independent reviews converge tightly on the same theme observed directly here. G2's aggregated pros/cons summary lists “Steep Learning Curve” and “Confusion” among the most frequent tags, and reviewers describe the first-run experience in almost identical language: “the UI presented a lot of features all at once, and it felt overwhelming,” and “non-technical users may need onboarding” because the platform “can feel technical or overwhelming at first.” A dedicated alternatives write-up frames the exact gap seen in Finding P3: “PostHog is a great developer tool, but product managers shouldn't have to learn SQL or wait on engineering just to see if a feature is being used.”

RatingSlightly hurt

Self-serve signup succeeds and the workspace is real and usable — this is not a hard block. But a placeholder-styling bug produces an avoidable validation error, two stacked choice screens tax a brand-new user before any product value is shown, and the only realistic route to seeing real data requires developer involvement, which independent reviews confirm is exactly where non-technical evaluators stall out. Net effect on acquisition is negative but not fatal.

Attio

Acquisition effectGreatly hurt

~9 min 16 sec  ·  ~18 distinct states  ·  signup attempted: email, then Google OAuth, then a brand-new Google account

This is the most severe onboarding failure in the current pool: the tester never reached the Attio product itself. The entire session was consumed by a blocked signup, a disproportionate workaround, and a dead end into a sales-contact form.

A1 — A plausible business email is rejected as a “public web email”

Public web email rejection
Sign-in screen: “It looks like you've tried to sign in with a public web email,” shown against an entered address ending in a business-style domain, not a free consumer provider.

The error message names a category without confirming what specifically about the input triggered it, and offers no secondary path — just a blind retry.

Ruling out

Copy partially responsible — “public web email” is a generic catch-all that gives no clear next action beyond guessing.

Hierarchy ruled out — message and input field are directly adjacent.

Placement ruled out — retry field and Continue sit directly below, no scrolling.

Load time ruled out — the rejection is instant, not a timeout.

Motivation ruled out as root cause — a company-style domain signals clear intent to convert, not disengagement.

A2 — The only recovery path was building an entirely new Google account

New Gmail account creation
A fresh Gmail inbox, created from scratch — the workaround needed before Attio would accept a sign-in.

After rejection, “Sign in with Google” routed to an account that didn't yet exist, leading into Google's own account-creation flow — including a phone-verification wall — before a usable identity was available roughly four minutes later.

Ruling out

Copy ruled out — this isn't about wording; it's the absence of any lighter-weight alternative.

Hierarchy / placement ruled out — the Google button is prominent and correctly placed; the cost is step count, not layout.

Load time ruled out — each step loaded normally; the cost was step count, not speed.

Motivation — this is the direct, compounding consequence of A1, not an independent cause.

A3 — The flow dead-ends in a sales-contact form, not the product

Sales contact form
“Nearly there! Just a few more details…” — name, company email, phone, region, team size, free-text, gated behind reCAPTCHA.

Seven fields — several not needed to spin up a self-serve trial — stand between the visitor and the product the homepage advertises as “Start for free.”

Ruling out

Copy ruled out — the modal doesn't hide what it is; labels are accurate.

Hierarchy ruled out — fields are logically grouped in a single column.

Placement ruled out — modal is centered and unmissable.

Load time ruled out — no delay opening or submitting.

Motivation a genuine cost — asking for phone number and team size before ever seeing the interface directly contradicts “Start for free.”

A4 — The full session ends back on the public marketing homepage

Marketing homepage
The recording's final state: still the public attio.com marketing homepage, “Sign in” and “Start for free” both still visible.

Roughly nine minutes of testing produced zero minutes inside the actual Attio product.

Same causal chain as A1–A3, not a new independent failure — the failure sits entirely in the account-creation logic and the absence of a graceful recovery route.

Outside signal

This precise scenario — a business email rejected as “public” — was not found in public G2, Capterra, or Reddit commentary at time of writing, so this finding rests primarily on direct observation; that gap is flagged rather than papered over. What outside signal does confirm is the contrast: independent reviews describe Attio's normal setup as fast and low-friction — “one founder documented full CRM setup in under thirty minutes, no technical resources involved,” and “basic setup takes 15–30 minutes.” That reputation makes this session's outcome a sharper-than-average miss.

RatingGreatly hurt

This is the clearest acquisition-blocking failure in the pool. A plausible real-world signup attempt was rejected at the door, the only recovery path required a disproportionate detour through building a new Google account, and the fallback led to a sales form rather than the product. A prospective buyer evaluating Attio alongside competitors in the same sitting would very likely have closed the tab and moved to the next one over.

Linear

Acquisition effectGreatly help

~10 min 13 sec  ·  ~16 distinct states  ·  signup via Google OAuth (two full signups completed)

Linear is the strongest onboarding in the current pool by a wide margin. Two independent signups were completed within the single recording, both reaching a working, populated workspace in well under a minute.

L1 — Sign-up to a working workspace in well under 30 seconds

Create your workspace
“Create your workspace” — exactly three choices (Google, email, SAML SSO), with Google pre-highlighted as the likely returning-user default.
Live workspace
~15 seconds after clicking Continue with Google: a live workspace, populated sidebar, and an “Ask Linear…” prompt ready to use — with a “Try:” section offered, not forced.

No organization-name form, no role picker, no multi-card product-selection screen sat between the OAuth click and a usable workspace — the opposite pattern from PostHog and Attio above.

Ruling out (confirming this is a genuine strength, not a corner cut)

Copy n/a — no error state was produced; the copy used is minimal and accurate throughout.

Hierarchy confirmed strong — Google, the fastest path, sits above email and SSO in order and weight.

Placement confirmed strong — every option needed is in one centered card, no scrolling.

Load time the only wait was a standard OAuth redirect, not a workspace-generation delay.

Motivation this is where the design earns the result — nothing is asked beyond what's strictly required, so motivation never gets the chance to drain.

L2 — Deeper integrations are optional, not gating

Cursor, GitHub, and Codex connections are reachable from an optional “Try:” section in the sidebar rather than forced into the critical path. The new workspace is immediately usable for its core job — issue tracking — without touching any of them.

Copy, hierarchy, placement, and load time all check out cleanly for the same reasons as L1 — a continuation of the same low-friction pattern.

L3 — The one real friction point: GitHub's own install flow, not fully completed on screen

GitHub integration settings
Linear's GitHub integration settings page — clear Overview, Configure, and Coding sessions sections before any handoff to GitHub.
Enable not yet confirmed
End of recording: still showing “Enable,” not “Enabled” — the GitHub App install was opened but not confirmed complete before the session ended.
Ruling out

Copy ruled out — Linear's integration page over-explains rather than under-explains.

Hierarchy / placement ruled out — “Enable” is a single, clearly labeled primary button.

Load time partially responsible, on GitHub's side — their hosted install page rendered blank briefly, but that's GitHub's page, not Linear's.

Motivation not a factor — the tester proceeded without hesitation both times; reads as “ran out of session time,” not a drop-off signal.

A ~3-minute stretch of this recording contained an unrelated background application briefly visible during normal app-switching. Excluded from findings as recording noise, called out here for transparency only.

Outside signal

Independent sources converge strongly with what was observed. G2's aggregation lists “I liked how simple it was; there was no onboarding needed, it was very intuitive and easy to get started” as representative, and a dedicated onboarding teardown independently documents the same sequencing choice seen here — GitHub and team invites deliberately deferred until after a working team exists. A separate review: “We were able to fully onboard our team within literally 5 minutes… our team intuitively picked it up with zero training or hand holding.”

RatingGreatly help

Linear's onboarding removes essentially every avoidable decision between clicking sign-up and having a working, populated workspace, a pattern independently confirmed across G2, an outside teardown, and Linear's own documentation. The one friction point identified — the external GitHub handoff — is a bounded, optional, expected cost of any GitHub-App-based integration, not a barrier to activation.

Cross-cutting observations across the three new tools

Pool is currently 5 tools (ClickUp, Notion, PostHog, Attio, Linear). Per standing instructions, the 3-finalist case-study section is held back until the pool reaches 6–8 tools.