DEV Community

Altiora
Altiora

Posted on

How to Build an AI-Powered Client Onboarding Pipeline with n8n

Every freelancer and agency hits the same wall: you close a deal, then spend the next two hours copy-pasting info into spreadsheets, sending welcome emails, creating project folders, and scheduling follow-ups. By the time you finish onboarding one client, you have lost momentum on the next lead.

What if a single form submission triggered all of it automatically — and an AI layer made it smart enough to personalize every touchpoint?

In this guide, we will build a complete AI-powered client onboarding pipeline using n8n, the open-source workflow automation platform. By the end, you will have a system that:

  1. Captures leads from a form or webhook
  2. Uses AI to classify the lead and draft a personalized welcome message
  3. Creates records in your CRM (Google Sheets, Airtable, or whatever you use)
  4. Sends a tailored onboarding email sequence
  5. Schedules an automated review request after project delivery

No paid Zapier tiers. No code deployments. Just n8n running on your machine or a $5 VPS.

Architecture Overview

Here is the high-level flow:

[Typeform / Webhook]
    → [n8n Webhook Node]
    → [AI Classification Node (OpenAI/Ollama)]
    → [Google Sheets / Airtable CRM Node]
    → [Personalized Welcome Email]
    → [Wait Node — 7/14/30 days]
    → [Review Request Email]
Enter fullscreen mode Exit fullscreen mode

Each stage is a node in n8n. Let us build them one by one.

Step 1: Set Up the Lead Capture Webhook

Every pipeline starts with an entry point. In n8n, the Webhook node gives you a URL you can plug into any form tool, landing page, or even a direct API call.

Create a new workflow and add a Webhook node:

{
  "node": "Webhook",
  "parameters": {
    "httpMethod": "POST",
    "path": "new-client",
    "responseMode": "onReceived",
    "responseData": "allEntries"
  }
}
Enter fullscreen mode Exit fullscreen mode

Your webhook URL will look like https://your-n8n-domain.com/webhook/new-client. Point your Typeform, Tally, or HTML form at this URL.

The incoming payload should include at minimum:

{
  "name": "Jane Smith",
  "email": "jane@hercompany.com",
  "company": "Smith & Co",
  "service_interest": "Website redesign and SEO setup",
  "budget_range": "2000-5000",
  "message": "We need a full rebrand of our site. Current one is from 2019."
}
Enter fullscreen mode Exit fullscreen mode

Tip: If you are using Typeform or Tally, both support native webhook integrations — no middleware needed.

Step 2: AI Lead Classification and Personalization

This is where the pipeline gets smart. Instead of sending everyone the same generic email, we let an AI model analyze the lead and produce two things: a priority tier and a personalized welcome draft.

Add an HTTP Request node (or the OpenAI node if you have it installed) that calls your LLM:

{
  "node": "HTTP Request",
  "parameters": {
    "method": "POST",
    "url": "https://api.openai.com/v1/chat/completions",
    "headers": {
      "Authorization": "Bearer {{ $env.OPENAI_API_KEY }}",
      "Content-Type": "application/json"
    },
    "body": {
      "model": "gpt-4o-mini",
      "messages": [
        {
          "role": "system",
          "content": "You are a client intake assistant. Analyze the lead and return JSON with: priority (hot/warm/cold), service_category, personalized_welcome (2-3 sentences), and estimated_value."
        },
        {
          "role": "user",
          "content": "Name: {{ $json.name }}\nCompany: {{ $json.company }}\nService: {{ $json.service_interest }}\nBudget: {{ $json.budget_range }}\nMessage: {{ $json.message }}"
        }
      ],
      "response_format": { "type": "json_object" }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

The AI returns something like:

{
  "priority": "hot",
  "service_category": "web_redesign",
  "personalized_welcome": "Thanks for reaching out about your rebrand, Jane. A 2019 site is definitely due for a refresh — we have helped several companies in your space modernize their web presence with measurable SEO gains.",
  "estimated_value": 3500
}
Enter fullscreen mode Exit fullscreen mode

Budget-conscious? Swap gpt-4o-mini for a local model via Ollama. n8n connects to any OpenAI-compatible API, so just change the URL to http://localhost:11434/v1/chat/completions and use llama3 as the model. Zero API costs.

Step 3: Write the Lead to Your CRM

Now we persist the enriched lead data. Add a Google Sheets node (or Airtable, Notion — whatever you use):

{
  "node": "Google Sheets",
  "parameters": {
    "operation": "append",
    "sheetId": "YOUR_SHEET_ID",
    "range": "Pipeline!A:H",
    "values": {
      "Date": "={{ $now.format('yyyy-MM-dd') }}",
      "Name": "={{ $json.name }}",
      "Email": "={{ $json.email }}",
      "Company": "={{ $json.company }}",
      "Service": "={{ $json.service_category }}",
      "Priority": "={{ $json.priority }}",
      "Est. Value": "={{ $json.estimated_value }}",
      "Status": "New"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

You now have a living pipeline spreadsheet that updates itself every time a lead comes in — with AI-enriched data you did not have to manually enter.

Step 4: Send the Personalized Welcome Email

Add a Send Email node (SMTP) or a Gmail / SendGrid node:

{
  "node": "Send Email",
  "parameters": {
    "to": "={{ $json.email }}",
    "subject": "Welcome to Altiora, {{ $json.name }}!",
    "html": "<p>Hi {{ $json.name }},</p><p>{{ $json.personalized_welcome }}</p><p>Here is what happens next:</p><ol><li>We review your project details (already done automatically)</li><li>You will receive a proposal within 24 hours</li><li>Once approved, we kick off immediately</li></ol><p>Talk soon,<br/>The Altiora Team</p>"
  }
}
Enter fullscreen mode Exit fullscreen mode

Notice the personalized_welcome field from Step 2 is injected directly into the email body. Every client gets a message that feels hand-written but was generated in milliseconds.

Step 5: Branch by Priority

Not every lead deserves the same follow-up cadence. Add an IF node to branch:

{
  "node": "IF",
  "parameters": {
    "conditions": {
      "string": [
        {
          "value1": "={{ $json.priority }}",
          "operation": "equal",
          "value2": "hot"
        }
      ]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode
  • Hot leads: Send a Slack/Discord notification to yourself immediately so you can follow up fast.
  • Warm leads: Normal email sequence, check back in 3 days.
  • Cold leads: Add to a nurture list, follow up in 14 days.

This single IF node replaces what most CRMs charge $50/month for.

Step 6: The Automated Review Request

Here is the part most people forget — and it costs them social proof. After project delivery (say, 14 days after onboarding), you want to automatically ask for a review.

Add a Wait node followed by another Send Email node:

{
  "node": "Wait",
  "parameters": {
    "amount": 14,
    "unit": "days"
  }
}
Enter fullscreen mode Exit fullscreen mode

Then the review request email:

{
  "node": "Send Email",
  "parameters": {
    "to": "={{ $json.email }}",
    "subject": "How did we do, {{ $json.name }}?",
    "html": "<p>Hi {{ $json.name }},</p><p>It has been a couple of weeks since we wrapped up your {{ $json.service_category }} project. We would love to hear how things are going.</p><p>If you have 30 seconds, a quick review on Google would mean the world to us:</p><p><a href='YOUR_GOOGLE_REVIEW_LINK'>Leave a Review</a></p><p>Thanks for trusting us with your project!</p>"
  }
}
Enter fullscreen mode Exit fullscreen mode

This single automation has generated more organic reviews for agencies than any manual follow-up system. The secret is consistency: it fires every time, for every client, without you remembering.

The Complete Workflow

When you wire it all together, your n8n canvas looks like this:

Webhook → AI Classify → Google Sheets → Welcome Email → IF (priority)
                                                          ├─ Hot → Slack Alert + Wait 14d → Review Email
                                                          ├─ Warm → Wait 3d → Follow-up → Wait 14d → Review Email
                                                          └─ Cold → Wait 14d → Nurture Email
Enter fullscreen mode Exit fullscreen mode

Total nodes: about 12. Total setup time: under 2 hours. Total monthly cost if self-hosted with Ollama: zero.

Going Further: What This Pipeline Unlocks

Once the base pipeline is running, you can extend it:

  • Proposal generation: Have the AI draft a scope-of-work PDF based on the lead's message.
  • Calendar booking: Add a Cal.com node so hot leads can self-schedule a call.
  • Invoice automation: Trigger a Stripe payment link after project completion.
  • Analytics dashboard: Pipe everything into a Google Sheet pivot table to track conversion rates by source.

Each of these is just one or two more nodes on the same workflow.

Skip the Build: Get the Pre-Built Template

If you want this entire pipeline ready to import — with the AI classification prompt already tuned, email templates polished, the priority branching logic wired up, and the review request sequence built in — I packaged it as a plug-and-play n8n workflow template.

AI Client Pipeline - Lead to Review Automation includes:

  • Complete n8n workflow JSON (one-click import)
  • Pre-configured AI prompt for lead classification
  • Email templates for welcome, follow-up, and review request
  • Setup guide with Google Sheets and SMTP configuration
  • Works with OpenAI, Ollama, or any OpenAI-compatible API

It saves you the 2 hours of wiring and testing, and you get a production-tested version that has already been refined across multiple client projects.

Grab the template here for EUR 39 →


Building automation workflows is what we do at Altiora. If you found this useful, check out our other n8n templates for DevOps inbox triage and AI daily standups.

Top comments (0)