Where does your onboarding copy actually live?
Try to answer this without looking: where is the text of your onboarding?
Most teams start with the first screen and stop halfway through the list. The welcome step is in a React component. The empty state is in another component, written by someone else. The tooltip on step three is in a constants file. The checklist labels are in the onboarding library you bought. Two of the emails are in your transactional mail service, and one is in a marketing tool nobody has logged into since the person who set it up left.
That is not disorganisation. It is what happens when each piece was added by whoever was building that part, at the time they were building it.
Why it matters more for onboarding than anywhere else
In onboarding, the order is part of the message. Step two assumes step one happened. The empty state promises what the tour is about to show. The email that arrives on day three refers to something the user was supposed to have done on day one.
When those sentences live in five systems, nobody reads them in order. They are written in order, once, and then they drift apart one edit at a time. The tour gets updated because someone complained about it. The email does not, because it belongs to a different tool and a different person. Six months later your onboarding promises a button that was renamed in spring.
The question that finds the damage
Pick the thing your product is for. The one action a new user has to take before any of this was worth it.
Now write down every sentence a user reads on the way to that action, in order, from the first screen to the confirmation. Include the empty states and the emails.
Two things usually come out of that list. It is longer than anyone expected. And at least two entries contradict each other.
What a single source actually fixes
Not the sequence. You still decide who sees which step, in what order, and when it counts as done. That logic belongs in your product, where it can look at your data, and no external tool knows your product well enough to own it.
What a single source fixes is the wording. Every step, every empty state, every tooltip in the flow requests its text by an address. They sit next to each other in one place, so reading them in order is possible, and changing one is changing it everywhere it appears.
That also means the same sentence can serve your onboarding step and your help panel without being written twice. Two copies of an explanation are two things that drift.
The part people skip
Your emails.
They are part of the sequence and they almost never live where the rest of the text lives, which is why they are the first thing to go stale. If your mail service can fetch a string by key, the same content can feed the email as the screen. If it cannot, at least put the wording in the same place and paste it, so a change is visible to whoever maintains the mails.
Where to start
Take the list you wrote. Give each line an address, in the order they appear. Publish them as they are, wrong and contradictory and all.
The first time you read your onboarding as one document instead of six, you will rewrite half of it in an afternoon. That is the value, and it arrives before you have changed a single line of code.