The gap between “deal won” and “client actually onboarded” is where small agencies and service businesses quietly bleed trust. The contract gets signed on Tuesday; the welcome email goes out Thursday (if the account manager remembers); the shared folder gets created with last client’s name still in a subfolder; the kickoff call gets scheduled “sometime next week.” The client’s enthusiasm peaks at signature and you spend it on silence.
This tutorial builds an onboarding pipeline in Zapier that fires the moment a deal moves to Closed Won in your CRM and, within two minutes:
- Sends a welcome email personalized by AI from the actual deal notes — not a mail-merge template with
{{first_name}}swapped in - Creates a client folder structure in Google Drive from a standard skeleton
- Generates the kickoff task list in your project tool (Asana here; Trello/ClickUp are drop-in swaps)
- Schedules a day-3 and day-14 check-in sequence
A shorter Make variant follows. Budget about 1.5 hours, mostly spent on the prompt and testing.
What you’re building
CRM: Deal → Closed Won
↓
Zapier (one multi-step Zap)
1. Trigger: HubSpot deal stage change
2. Filter: stage = Closed Won
3. AI: draft personalized welcome email from deal notes
4. Gmail: create draft (or send) welcome email
5. Google Drive: create client folder + subfolders
6. Asana: create kickoff project tasks
7. Delay Until: +3 days → check-in email #1
8. Delay Until: +14 days → check-in email #2
Two design choices worth defending. First, the AI email goes out as a Gmail draft by default, not a send — for a high-touch service business, 30 seconds of human review on the single most important email of the relationship is worth it. Flip it to auto-send once you trust the output. Second, the check-ins live inside the same Zap via Delay steps rather than separate scheduled Zaps: one Zap means one place to debug and the client’s context flows through without re-querying the CRM.
Prerequisites
- A CRM with deal stages — this walkthrough uses HubSpot (free tier works); Pipedrive’s equivalent trigger is noted inline
- Zapier account on a plan with multi-step Zaps and Delay (as of mid-2026 that’s any paid tier — check current pricing)
- Google Workspace (Gmail + Drive), Asana (or similar)
- An OpenAI API key if you use the ChatGPT step; Zapier’s built-in AI by Zapier also works for lighter usage
Step 1: Trigger on the won deal
- Create a new Zap. Trigger app: HubSpot. Event:
Deal Recently Updated in Stage(on Pipedrive:Updated Dealwith a stage filter). - Connect HubSpot — the OAuth flow will ask for CRM read scopes; accept the deal and contact scopes or step 1 returns empty records.
- In Trigger configuration, set Property Name to
dealstage. - Pull a test record. You need a real deal in Closed Won for this — create a dummy deal and drag it across the board if your pipeline is empty.
Add a Filter by Zapier step right after: Only continue if Deal Stage exactly matches closedwon (HubSpot’s internal value — check the test record, not the display label). The trigger fires on every stage change; the filter makes sure paying clients are the only thing downstream.
You’ll also want the contact attached to the deal. Add HubSpot — Find Associated Contact (or “Get Contact” with the association from the deal record) so you have the client’s first name and email as mappable fields.
Step 2: AI-personalized welcome email
Add a ChatGPT step (or AI by Zapier → Analyze and Return Data). Event: Conversation. Connect your own OpenAI API key rather than the shared allowance — it’s cheaper and the rate limits are yours.
The quality of this step lives and dies on what’s in your CRM notes. If your deal notes say “spoke w/ Dana, wants the rebrand done before their Sept trade show, worried about timeline, decision was between us and BigAgency, budget approved at $12k” — the AI can write a genuinely personal email. If the notes say “good call,” it can’t. Garbage in applies.
System instructions — paste in full:
You write welcome emails for new clients of a small professional services business. You receive CRM data about a just-closed deal. Write the onboarding welcome email.
Hard rules:
- Use ONLY facts present in the deal data. Never invent project details, dates, prices, or promises. If a detail is missing, leave it out gracefully.
- Do not mention competitors, internal notes, discounts, or anything from the notes that reads as internal-only. Use judgment: notes are written BY the sales team FOR the sales team.
- 120-180 words. Warm, confident, zero corporate filler ("We are thrilled to embark...” is banned).
Structure:
1. Greeting by first name. One sentence of genuine welcome.
2. One sentence proving we listened: reference their specific goal or concern from the notes in plain words.
3. What happens next, as 2-3 short bullets: (a) they'll receive a shared folder link today, (b) kickoff call within 5 business days — we'll send times, (c) who their point of contact is: {{ACCOUNT_MANAGER_NAME}}.
4. One-line sign-off from {{ACCOUNT_MANAGER_NAME}}.
Output the email body only. No subject line, no preamble, no markdown.
User message — map Zapier fields into it:
Client first name: [Contact First Name]
Company: [Deal Company Name]
Service purchased: [Deal Name]
Deal amount: [Amount]
Deal notes:
[Deal Description / Notes]
Replace {{ACCOUNT_MANAGER_NAME}} with a literal name, or map an owner field from the CRM if account managers vary per deal.
Then add Gmail — Create Draft. To: contact email. Subject: Welcome aboard, [First Name] — next steps. Body: the ChatGPT step’s reply. The draft lands in the account manager’s drafts folder; they read, tweak, send. Once you’ve reviewed a dozen and stopped editing them, change the step to Send Email.
Step 3: Drive folder scaffolding
Add Google Drive — Create Folder:
- Drive: your shared drive. Parent Folder:
Clients. - Folder Name:
[Deal Company Name] — [Deal Name].
Then add three more Create Folder steps for the skeleton — 01 Contract & Admin, 02 Working Files, 03 Deliverables — each with Parent Folder mapped to the ID output of the first Create Folder step (use the custom value option and map the field; picking a static folder from the dropdown here is the classic mistake that nests every client’s subfolders inside the first client’s folder).
If you maintain template documents (kickoff agenda, contract checklist), add Google Drive — Copy File steps targeting the new folder. Tip: for a heavyweight skeleton, it’s cleaner to keep a _TEMPLATE folder and use one Copy Folder action via Zapier’s Google Drive integration where available, instead of six individual steps.
Step 4: Kickoff tasks in Asana
Add Asana — Create Project (from a template if you have Asana’s project templates): Workspace, Team, Project Name: [Company Name] Onboarding.
Then Asana — Create Task steps for the kickoff checklist. Keep this list boringly standard — the AI personalizes the email, but task lists should be identical for every client so nothing gets skipped:
Send kickoff call scheduling link— due in 1 dayConfirm contract countersigned & filed in 01 Contract & Admin— due in 2 daysHold kickoff call— due in 5 daysInternal: write project brief from kickoff notes— due in 6 days
Map Due Date using Zapier’s date math: {{zap_meta_human_now}}+1d style modifiers, and assign each task to the account manager.
Step 5: The check-in sequence
- Add Delay by Zapier — Delay For:
3 days. Then Gmail — Send Email: a short plain-text check-in (“How’s the first week feeling? Anything unclear on the folder or next steps?”). This one can auto-send — it’s low-stakes by design and the AI step isn’t needed; a fixed template reads more human for a two-line nudge. - Add a second Delay For:
11 days(3 + 11 = day 14). Then another short email or, better, Asana — Create Task:Day-14 check-in call with [Company Name]so a human makes contact.
Caveat: delayed steps queue inside the Zap run. If you edit the Zap while runs are mid-delay, queued steps continue on the old version — finish your edits before closing real deals through it, and remember Zapier caps delays (historically around 30 days; longer cadences belong in your CRM’s sequence tool).
Turn the Zap on, drag a test deal to Closed Won, and watch the run in Zap History step by step.
Try it yourself
Zapier
One multi-step Zap replaces the onboarding checklist your team forgets 20% of the time.
Start with ZapierThe Make variant
In Make, the same pipeline is one scenario and noticeably cheaper at volume:
- HubSpot CRM → Watch Deals module (or an instant webhook from a HubSpot workflow for zero polling lag), then a Filter on the connection line:
dealstage = closedwon. - OpenAI → Create a Completion module with the same system prompt from Step 2.
- Gmail → Create a Draft, mapping the completion output.
- Google Drive → Create a Folder, then subfolders — Make’s visual mapping makes the parent-folder-ID chaining more obvious than Zapier’s dropdowns.
- Asana → Create a Task inside an Iterator fed by a JSON array of your task list — one module instead of four.
- Sleep modules cap at a few minutes, so for the day-3/day-14 sequence use Make’s Scheduling differently: store the client in a Google Sheet with a
next_checkindate and run a tiny daily scenario that emails anyone due today. More moving parts, but it survives scenario edits — arguably more robust than Zapier’s in-flight delays.
Make’s per-operation pricing means this whole run costs ~10 operations per client versus 8–10 Zapier tasks; the difference is negligible at agency volume (a few deals a week) and only matters if you onboard hundreds of clients monthly. As of mid-2026, both have workable free-to-cheap tiers for this — check current pricing.
Common errors and fixes
HubSpot trigger fires on every stage change, sequence runs for lost deals. The Filter step is missing or matches the display label (“Closed Won”) instead of the internal value (closedwon). Always check the raw test record.
403: insufficient authentication scopes on Gmail or Drive. The Google connection was authorized before you added the Drive steps, so its token lacks Drive scopes. Reconnect the Google account in Zapier (My Apps → Google Drive → Reconnect) and re-accept the consent screen with all boxes checked.
Subfolders all appear under the wrong client. A parent-folder field is set to a static folder picked from the dropdown instead of the mapped ID from the Create Folder step. Use “Custom” mapping for every subfolder’s parent.
AI email leaks internal notes (“you mentioned you were also considering BigAgency…”). The model followed the data, not the rules — usually because the notes field is huge and the instruction got diluted. Two fixes: keep the “internal-only” rule near the top of the system prompt, and consider a dedicated onboarding_context CRM field that sales fills in deliberately, instead of feeding raw call notes.
ChatGPT step intermittently fails with 429 on launch day. Multiple deals closed at once and burst the OpenAI rate limit on a fresh key. Fresh OpenAI keys have low rate tiers; either fund the account to bump the tier or enable Zapier’s autoreplay (Settings → Advanced) so failed steps retry.
Delay steps vanish after editing the Zap. Runs that were mid-delay completed on the old Zap version, or the Zap was turned off (turning a Zap off cancels queued delays). Check Zap History → Delayed before toggling a live onboarding Zap.
Zapier vs Make vs n8n for client onboarding
Onboarding is low-frequency and high-stakes: a handful of runs per week where each run touches five apps. That profile favors Zapier — per-task pricing is irrelevant at this volume, the app coverage is unmatched, and non-technical teammates can read the Zap top to bottom. Make wins if you’re already there or want the iterator/array handling and cheaper ops. n8n is overkill for this one unless you’re self-hosting anyway or need the onboarding flow to share logic with high-volume workflows like email triage — the full trade-off is in Make vs Zapier vs n8n.
Where to go next
This Zap starts at Closed Won — the natural prequel is automating the top of the same pipeline with AI lead capture into your CRM, so deal notes are rich by the time they reach the welcome-email prompt. After kickoff, meeting notes to tasks turns the kickoff call itself into the project’s first task list, and automated invoice processing closes the loop when the first invoice goes out.