Back to Alchemy
Alchemy RecipeIntermediatestack

Customer onboarding automation combining intake forms, welcome videos and email sequences

Most SaaS companies treat customer onboarding like a factory assembly line. A user signs up, they get a generic "Welcome!" email, and then silence. Maybe a reminder arrives a week later. The company hopes the customer figures out the product on their own. This approach loses customers during the first critical week. Worse, it wastes the opportunity to guide them toward their first success. What if your onboarding could feel personal without requiring a human to spend five minutes per customer? You could send a custom welcome video featuring a real-looking presenter who walks through the exact features relevant to that customer, followed by a series of precisely-timed emails that address common friction points. The customer sees someone on screen explaining their workflow, feels attended to, and moves through setup faster. Your team spends no extra time on each individual onboarding. This workflow is practical to build. You need a form to capture customer information and use case; a video generator to create personalised welcome videos; an email tool to send follow-ups; and an orchestration layer to connect everything without manual work. Here's how to put it together.

The Automated Workflow

You'll use n8n as your orchestration backbone because it handles webhook triggers well, stores customer data without extra friction, and integrates cleanly with both video and email APIs. Here's the architecture: Setmore captures the initial booking and customer details through a web form. That data triggers an n8n workflow. The workflow pulls the customer's industry and use case, sends it to Hour One to generate a personalised welcome video, and fires off the first email through HyperWrite (which provides an API for template-driven email composition). Then n8n schedules three follow-up emails at day 3, day 7, and day 14 using conditional logic based on how the customer has engaged. Start by creating a Setmore booking page that includes custom fields for their role, company size, and primary goal.

Setmore Custom Fields:
- Customer role (dropdown: founder, marketer, operations, developer)
- Company size (dropdown: 1-10, 11-50, 51-250, 250+)
- Primary goal (text field)

Configure Setmore to send a webhook to your n8n instance whenever someone books an appointment. The webhook payload will include the customer's email, name, phone, and custom field answers. Next, set up the n8n workflow. Add a webhook listener node that catches the Setmore data:

POST /webhook/setmore-onboarding
Headers: Authorization: Bearer YOUR_N8N_API_KEY
Body:
{ "customer_name": "string", "customer_email": "string", "customer_role": "string", "company_size": "string", "primary_goal": "string", "booking_timestamp": "ISO 8601 datetime"
}

After the webhook triggers, add a Code node to build the video script. This node transforms the customer data into a personalised narration:

javascript
const customerRole = $input.first().json.customer_role;
const primaryGoal = $input.first().json.primary_goal; const scriptTemplate = { "founder": `Hi ${$input.first().json.customer_name}, welcome to our platform. Since you're scaling your team, we've optimised onboarding around your workflow...`, "marketer": `Hi ${$input.first().json.customer_name}, great to meet you. Your goal of ${primaryGoal} is exactly what we built this for...`, "operations": `Hi ${$input.first().json.customer_name}, let's get you set up to manage your operations effectively...`, "developer": `Hi ${$input.first().json.customer_name}, this API-first approach will save you hours of integration work...`
}; const selectedScript = scriptTemplate[customerRole] || scriptTemplate.founder; return [{ json: { script: selectedScript, customer_name: $input.first().json.customer_name, customer_email: $input.first().json.customer_email }
}];

Connect this to an HTTP Request node that calls the Hour One API. Hour One converts text scripts into videos with virtual presenters in about 2-3 minutes:

POST https://api.hourone.ai/videos
Headers: Authorization: Bearer YOUR_HOUR_ONE_API_KEY Content-Type: application/json Body:
{ "script": "{{ $node.CodeNode.json.script }}", "avatar_id": "professional_presenter_1", "background": "corporate_office", "voice": "en_us_professional", "quality": "hd"
}

Hour One returns a video ID immediately, but the video finishes rendering within minutes. Add a Wait node set to 180 seconds (3 minutes), then add another HTTP Request to fetch the video status and download URL:

GET https://api.hourone.ai/videos/{{ $node.HourOneCreate.json.video_id }}
Headers: Authorization: Bearer YOUR_HOUR_ONE_API_KEY

Once you have the video URL, use HyperWrite's email API to compose and send the welcome email. HyperWrite can accept a brief, and will structure the email intelligently:

POST https://api.hyperwrite.com/v1/emails/send
Headers: Authorization: Bearer YOUR_HYPERWRITE_API_KEY Content-Type: application/json Body:
{ "to": "{{ $node.HourOneCreate.json.customer_email }}", "subject": "Your personalised {{ $node.HourOneCreate.json.customer_role }} onboarding guide", "body_brief": "Welcome email introducing the customer to the platform. Mention their goal: {{ $node.HourOneCreate.json.primary_goal }}. Embed the video at https://{{ video_url }}. Include 3 quick-start links.", "template_style": "professional"
}

Finally, add a Schedule node to queue three follow-up emails at fixed intervals. Use n8n's built-in scheduling:

Day 3 reminder: "How's your setup going? Here are the top 3 features for {{ role }}."
Day 7 follow-up: "Your first campaign template is ready to use. Click here to get started."
Day 14 check-in: "Let's make sure you're getting full value. Reply to this email with any blockers."

Use conditional logic so emails differ based on customer role. For example, developers get technical documentation links, whilst founders get ROI case studies. Store all customer data in n8n's built-in database or a simple PostgreSQL instance. This lets you query engagement metrics later: did the customer click the video link? Did they open the follow-up emails? Did they log in after day 3?

The Manual Alternative

If you want more control over email content or video scripts, you can trigger parts manually. Set n8n to send you a Slack notification when a new customer books, including their role and goal. You write a custom script, paste it into Hour One, generate the video, and then manually trigger the email sequence from HyperWrite's dashboard. This takes about five minutes per customer but lets you iterate on messaging quickly. It's useful during your first month to test what resonates before full automation.

Pro Tips

Watch your Hour One queue during peak signups.

If fifty customers sign up in a single day, the Hour One API will queue video generation.

Your videos might not be ready for 10-15 minutes instead of 3. Plan your follow-up email schedule to allow a 15-minute buffer, or stagger video generation using n8n's delay nodes.

Rate-limit HyperWrite email sends.

HyperWrite allows 100 emails per minute on most plans. If you're sending personalised emails to 500 customers in one batch, space them out over 5 minutes using n8n's batch node to avoid hitting limits.

Track email deliverability separately.

Configure webhooks from your email service provider (or HyperWrite's webhook events) back into n8n so you know which emails bounced or were marked spam. Flag those customers for manual outreach.

Test your script generation logic with multiple roles.

Before going live, trigger your Code node with test data for each customer role and review the resulting scripts. Occasionally a script template will feel awkward when personalised with a specific goal; adjust the templates in your Code node accordingly.

Measure time-to-first-action.

Store the timestamp when the customer's video email is sent, and log the timestamp when they first log in or create their first project. Use this metric to optimise your follow-up timing. If most customers log in within 6 hours, you might move your day-3 email to day-1 instead.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
SetmorePro£25Covers custom fields, webhooks, and up to 500 monthly bookings. Scale to Premium (£50) if you exceed this.
Hour OneStarter£99100 video minutes per month. One personalised video is usually 2-4 minutes. Covers 25-50 customers monthly. Jump to Growth (£299) for 500 minutes if scaling.
HyperWriteProfessional£40Covers API access, 5,000 monthly email sends, and template generation. Suitable for most SaaS onboarding flows.
n8nSelf-Hosted£0 + hostingDeploy on a £5/month VPS (DigitalOcean, Hetzner). Alternatively, use n8n Cloud Pro (£35/month) for managed hosting and 30,000 monthly executions.
Email service provider (optional)Standard£0-30If using HyperWrite alone, no additional cost. If integrating Mailgun or SendGrid for higher volumes, budget £20-50/month.
Total (self-hosted)£164-259/monthCovers up to 50 personalised customer onboardings. Cost per customer: roughly £3-5.