My role
Product Onboarding, owner of the team’s automation work
Team
Onboarding team of three, a data analyst, the Customer Analytics engineer
Timeline
April to October 2026
Outcome
Monthly outreach tripled while reply rates held at 8 to 10%
Why onboarding needed rebuilding
PostHog’s onboarding team gives new paying customers a person to talk to: someone who looks at their setup and their bill and helps them get value out of the product before the invoices start to hurt. That first touch is where we catch the expensive mistakes, like session replay recording every visit with no sampling, while they’re still cheap to fix.
In the first eight months of 2026, 1,448 accounts entered our onboarding queue. Three of us worked it, almost all by hand: a specialist opened the account, researched it, wrote a personal first email and moved it through the pipeline. At my first team meetup, my team lead Magda’s feedback was to think bigger, because onboarding touches a huge share of PostHog’s customer base.
The team, the CRM (Vitally) and the pipeline already existed when I joined in July 2025, so my job was rebuilding a motion that had grown by patches and taking the manual work out of it. The logic that decided who got onboarded was spread across five separate playbooks and seven to nine account traits that nobody could read end to end anymore. And when I looked back at the data later, an account that entered the queue in September 2025 had waited a median of 58 days for its first email, and only 19 of 296 heard from us inside a week.
Constraints
Each of the three of us had a full queue and customer calls, so every hour I spent on the system came out of the same week as my own accounts.
The tooling pushed back too. Vitally runs its playbooks on a background queue with delays, and it forces a single fallback sender, so every automated email went out from my address and every reply landed in my inbox. That alone capped how wide we could roll automation out. PostHog itself had no link tracker, so an automated email couldn’t show what it did.
Then in May, the company set a mid-October deadline to be off Vitally, so anything I built there would have to be rebuilt on PostHog’s own Customer Analytics and Workflows, which were still being built. The Workflows PM’s own verdict in August was that it was a marketing automation tool built around people rather than accounts, and onboarding works account by account. I also had a month of approved leave in September, so whatever I built had to run without me.
What I did
Simplify first
On 8 April I mapped every playbook and how they connected. The next day I replaced the five overlapping entry playbooks with one, and the seven to nine eligibility traits with a single computed trait, and fixed a graduation playbook that had been dropping accounts before the email sent.
Give the calls a shared tool
My Q2 goal was a dashboard any specialist could open on a call. On 29 June the setup and cost review dashboard went live as a one-click template on both PostHog regions, showing billable usage, instrumentation quality and events nobody was using.
Automate the first touch
My Q3 goal was a first touch for every new onboarding account without a person writing it. On 24 July I launched the automated first outreach: an email with a link that opens PostHog AI inside the customer’s own project, with an account audit prompt already written. The first weekday batch after launch sent 13 first outreaches and 20 graduation emails and moved those 20 accounts to completed, with nobody touching them.
Take the next manual batch off the table
On 27 July I worked 17 failed-payment accounts by hand, and on the 28th I built the automation so nobody on the team does that batch by hand again.
Make it measurable
Between 3 and 5 August I shipped a tracked three-email sequence: cost and implementation, adoption and growth, and a last chance to book a call. Every link carried UTM tags, with a dashboard per email. The first version undercounted, because an in-app link loses its tags at the login redirect, so I rebuilt it to match the campaign tag in the page URL and documented the method in the handbook.
Move it all off Vitally
From August on, I rebuilt the pipeline on Customer Analytics and Workflows with the engineer who owns it. Auditing all 14 onboarding workflows before launch, I caught that one had lost its audience filter in a save and would have moved every account to completed the moment it was switched on. On 15 October we switched every Vitally playbook off and the new email sequence on, a day before the cutoff.
The calls I made and what I traded off
One playbook instead of patching five
Patching looked safer, since each playbook mostly worked, but accounts fell through in the overlaps. The cost of consolidating is that one mistake now hits every account, which is why the map came first.
Launch small
I gated the first automated outreach to accounts forecast at $500 to $550 a month, 42 of them on day one, instead of everyone eligible. That gave up weeks of coverage for a batch small enough to read through and fix.
Count clicks instead of calls
Calls booked was the number everyone reached for, but it would have told us almost nothing: in September we ran about one call for every 90 outreach threads. Magda and I agreed the sequence should report prompts clicked and notebooks created. Notebooks turned out to be unmeasurable from our side, because they live in the customer’s own project, so clicks were what we had.
Adoption over revenue
I built dashboards comparing onboarded accounts against self-serve ones, and the revenue lift looked great. Working through it with Abhishek, one of PostHog’s data analysts, we found it was selection bias: the time windows weren’t symmetric, and accounts with an owner were filtered out of the control group but not out of the onboarded one. What held up was product adoption, at 4.68 products on average for onboarded accounts, so we made adoption the team’s provable impact heading into Q3. The cleaner answer was a 10% random holdout, which we kept as a fallback because it needed manual labelling we didn’t have time for.
What happened
In the week of 17 August, my address sent 65 automated onboarding emails against 13 written by hand. Across the team, monthly outreach threads went from 274 in March to 930 in August, and the reply rate stayed between 8 and 10% in most months, with a dip to 5.5% in June. The automated emails got replies less often, about 6.7% against roughly 10% for the mostly hand-written ones, so automation bought reach at some cost per email.
The wait for a first touch is a team result, and it went up and down. From 58 days for September 2025 entrants it was down to single digits by early 2026, climbed to 22 days for June entrants and 18 for July, and came back to 7 days in August, the first full month with automated first outreach. Across January to August, 12.9% of accounts that entered the queue were never contacted at all.
The graduation email didn’t work. It got close to zero replies, its links never carried tracking tags so we couldn’t even see clicks, and the team replaced it in August.
Dan is a true executor… a role model for less tenured members.” Magda Olszewska, onboarding team lead
What I’d do differently
I’d set up the holdout on day one. Without a control group, the first impact question got answered by a dashboard that flattered us, and we only agreed a 10% holdout in October, before scaling the next round of automation.
I’d count automated sends from the first email. For a month, our weekly update counted only hand-written mail, which under-reported outreach about five to one.
And I’d document and pair much earlier. In September Magda pointed out that if I broke my leg, nobody else on the team could run the setup, and she was right, so I’d have a second person running it with me from the first playbook.
