BuyEbooks.Store guide
Build a client onboarding workflow with n8n and ChatGPT
Form in, folder + welcome + checklist + first invoice draft out. ChatGPT writes the first pass; you still approve the price.
2026-04-18 · 11 min read

Client onboarding is where one-person businesses leak evenings. A new yes arrives. You create a folder, write a welcome email, copy a checklist, open the invoice tool, and forget one of those four things until the client asks. An n8n workflow will not replace judgment. It will make the boring half of onboarding happen the same way every time.
This walkthrough uses a form, Google Drive (or any folder API), a task list, email, and an OpenAI chat node for a first-draft welcome. Swap the apps if you use Notion, Dropbox, or a different model provider. Keep the shape: intake → create places → draft messages → stop for a human.
Decide what “onboarded” means
Write a one-line definition before you open n8n. Example: “Within one business day of a signed yes, the client has a shared folder, a welcome email, a kickoff checklist, and a draft first invoice sitting in my queue.” If you cannot finish that sentence, the workflow will become a junk drawer of nodes.
List the fields you need from the form: full name, company, email, project type, start date, fixed fee or hourly, any files they must upload. Anything you will not use in the first week does not belong on the form. Long forms get abandoned. You can ask for brand guidelines later.
Trigger: form webhook, not a spreadsheet poll
Use a form tool that can POST to a webhook (Tally, Typeform, Fillout, or n8n’s own form). Polling a sheet every five minutes works until two clients submit in the same window and you race yourself. A webhook fires once per submission. Respond quickly with a 200 so the form does not retry into duplicates.
In n8n, start with Webhook (or the form node). Immediately add a Set node that renames fields to boring names: client_name, client_email, project_name, fee_cents, start_date. Downstream nodes should not care what the form vendor called the field last month. Deduplicate on client_email + project_name if your form allows resubmits.
Create the places work will live
Next node: create a Drive folder named YYYY-MM — Client — Project. Put a template folder structure under it: 01-contracts, 02-intake, 03-deliverables, 04-invoices. Copy a checklist doc into the folder from a template file you maintain. If you use Notion, create a page from a template database instead. The point is one URL you can paste into the welcome email.
Create three tasks in your task tool: send welcome (due today), schedule kickoff (due in two days), send first invoice or deposit request (due on the start date). Assign them to yourself. Automations that create tasks for “the team” when the team is you are still useful; they beat sticky notes.
Where ChatGPT helps — and where it must not
Call the OpenAI (or compatible) node with a tight prompt. Give it the client name, project type, your service name, and a short paragraph of your voice rules: short sentences, no hype, no “thrilled to partner.” Ask for a welcome email under 150 words that includes the folder link placeholder and a question about the kickoff time. Temperature low. Max tokens capped.
Do not let the model invent the fee, the contract terms, or the start date. Those come from the form and your templates. Do not auto-send the email on the first version of this workflow. Write the draft to a Drafts label, a Google Doc, or a Slack message to yourself. You hit send after a sixty-second read. That human gate is the difference between a helpful bot and an accidental promise.
Invoice stub without charging anyone
Create a draft invoice or a row in an invoices sheet: client, project, amount, status = draft, due date = start date + your terms. If your accounting tool’s API only creates sent invoices, stop at the sheet and create the real invoice by hand. An automation that emails a wrong amount is worse than no automation.
If you collect a deposit, the workflow can attach your standard deposit language to the draft email. It still should not process a card. Payment links belong in tools built for payments. n8n can attach the link you already generated; it should not invent one.
Error path and a dry run
Attach an Error Trigger workflow that emails you the workflow name, the client email, and the node that failed. Folder creation fails more often than people expect: permissions, shared-drive quirks, duplicate names. When it fails, you want to know before the client wonders why nothing arrived.
Dry-run with your own email as the client. Check that one folder appeared, three tasks appeared, one draft email appeared, and nothing was sent to a real client. Then run a second test with a deliberate bad email field to confirm the error path fires. Only then flip the form to production.
Version the workflow JSON into a private git repo or a Drive folder. When you change the welcome prompt, note the date. Future you will not remember why the tone shifted in March.
Keep the scope mean
A good first onboarding workflow does five things and stops. Form, folder, checklist, draft welcome, draft invoice row. ChatGPT is one node inside that path, not the product. If you later add contract e-sign or a portal, add them as separate workflows triggered by status changes. Monolith onboarding graphs are how you spend Saturday untangling Sunday’s client.