Most SaaS companies watch new customers arrive through the front door and then immediately hand them a generic spreadsheet or PDF checklist. No wonder so many stall at activation. The real issue is that onboarding happens in fragments: someone fills out an intake form, a human reads it three days later, a welcome email gets sent (maybe), and by then the customer has already mentally moved on. The data doesn't connect. The messages don't match what they actually told you. And your team spends hours doing work that should be automatic. What if instead, the moment a customer submitted an intake form, the entire sequence triggered without touching a single button? Their answers flow into a personalised welcome video with their name and company mentioned by name. That same data populates an email sequence calibrated to their industry and use case. Follow-up tasks appear on your team's board only when they actually need to step in. This is not theoretical. It is entirely possible with the right connections between tools. The workflow I'm about to show you uses four core pieces: a form tool to capture intake data, an AI video generator to turn text into on-brand welcome videos, an email engine to send personalised sequences, and an orchestration layer to wire it all together so nothing falls through the cracks.
The Automated Workflow
I recommend using n8n for this workflow because it handles branching logic well, maintains form data elegantly, and lets you create conditional branches based on customer attributes. Zapier would work fine too, but n8n gives you more control without extra cost at this scale. Here is the high-level flow: 1. Customer submits intake form (Google Forms, Typeform, or your own form endpoint).
-
Webhook triggers n8n, which extracts form data.
-
Data is sent to Claude Sonnet 4.6 to generate a personalised video script and email copy.
-
Video script goes to Hour One API to generate a branded welcome video.
-
Generated video URL and personalised email copy flow into your email service (SendGrid, Mailgun, or Klaviyo).
-
Confirmation task is created in your project management tool (Slack, Asana, Notion). Let's walk through the n8n setup. First, trigger the workflow with an incoming webhook:
POST /webhook/customer-intake
Content-Type: application/json { "company_name": "Acme Corp", "first_name": "Alice", "email": "alice@acme.com", "industry": "manufacturing", "team_size": "25", "primary_goal": "reduce production downtime"
}
Next, pass this data to Claude Sonnet 4.6 for content generation. You'll want to craft two prompts: one for video script and one for email body. Here is a sample prompt for the video script:
Generate a 30-second welcome video script for a new customer. Company: {{company_name}}
Contact Name: {{first_name}}
Industry: {{industry}}
Goal: {{primary_goal}} The script should:
- Address the customer by first name
- Mention their company name
- Reference their stated goal
- Be professional but warm
- End with a clear next step Output ONLY the script text. No stage directions or formatting.
Use the Claude API to call this:
POST https://api.anthropic.com/v1/messages
Authorization: Bearer YOUR_CLAUDE_API_KEY
Content-Type: application/json { "model": "claude-sonnet-4.6", "max_tokens": 500, "messages": [ { "role": "user", "content": "Generate a 30-second welcome video script for a new customer.\n\nCompany: Acme Corp\nContact Name: Alice\nIndustry: manufacturing\nGoal: reduce production downtime\n\nThe script should:\n- Address the customer by first name\n- Mention their company name\n- Reference their stated goal\n- Be professional but warm\n- End with a clear next step\n\nOutput ONLY the script text. No stage directions or formatting." } ]
}
Claude will return a script like: "Hi Alice. We're thrilled to have Acme Corp on board. We know reducing production downtime is critical for your operation. Over the next two weeks, we'll show you exactly how to cut your downtime in half using our platform. Let's get started." Now send that script to Hour One. Their API accepts text and returns a video URL:
POST https://api.hourone.com/v1/videos
Authorization: Bearer YOUR_HOURONE_API_KEY
Content-Type: application/json { "script": "Hi Alice. We're thrilled to have Acme Corp on board. We know reducing production downtime is critical for your operation. Over the next two weeks, we'll show you exactly how to cut your downtime in half using our platform. Let's get started.", "presenter_id": "YOUR_PRESET_PRESENTER", "title": "Welcome to Acme Corp"
}
Hour One returns:
json
{ "video_id": "vid_12345678", "url": "https://videos.hourone.com/vid_12345678", "status": "processing"
}
While that video renders (typically 2 to 10 minutes), trigger the second Claude call for email copy. Use a different prompt:
Write a personalised onboarding email for a new SaaS customer. Company: {{company_name}}
Contact Name: {{first_name}}
Industry: {{industry}}
Goal: {{primary_goal}}
Video URL: {{video_url}} The email should:
- Be 150-200 words
- Explain the next steps in onboarding
- Embed the video URL as a CTA
- Reference their specific goal
- Sound authentic and personal, not templated Output ONLY the email body in plain text.
Once you have the video URL (poll Hour One every 30 seconds until status is "complete"), insert it into the email, and send via your email service. Using SendGrid:
POST https://api.sendgrid.com/v3/mail/send
Authorization: Bearer YOUR_SENDGRID_API_KEY
Content-Type: application/json { "personalizations": [ { "to": [{"email": "alice@acme.com", "name": "Alice"}], "substitutions": { "-first_name-": "Alice", "-company_name-": "Acme Corp", "-video_url-": "https://videos.hourone.com/vid_12345678" } } ], "from": {"email": "onboarding@yourcompany.com"}, "subject": "Welcome to [YourProduct], Alice", "html": "<p>Hi -first_name-,</p><p>Welcome to [YourProduct]. We've prepared a brief welcome message tailored to -company_name- and your goal of -primary_goal-.</p><p><a href='-video_url-'>Watch your welcome video</a></p><p>Next steps: [Your next step text]</p>"
}
Finally, create a task in your internal system so your onboarding team knows to follow up. This ensures nothing falls through the cracks. Using Slack:
POST https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
Content-Type: application/json { "text": "New customer onboarding started", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*New customer: Alice from Acme Corp*\nIndustry: manufacturing\nGoal: reduce production downtime\nVideo sent: Yes\nEmail sent: Yes\nAction: Schedule implementation kickoff call" } } ]
}
The entire flow, from form submission to video generation to email delivery, happens in under 15 minutes with zero manual intervention.
The Manual Alternative
If you want more control over messaging or prefer to review each video and email before sending, modify the n8n workflow to pause at approval stages. Add a "Wait for Approval" node after video generation. This sends an internal notification to your team with the generated video URL and email copy. Someone reviews for tone and accuracy, then approves the send manually. This adds 30 minutes to 2 hours per customer but keeps the campaign hyper-controlled. Use Notion or Asana to collect approval sign-offs and maintain an audit trail.
Pro Tips
Handle video generation delays.
Hour One videos sometimes take longer than expected.
Set a polling interval of 30 seconds and a maximum wait time of 15 minutes. If the video is not ready after 15 minutes, send the email anyway with a note that the video will follow shortly within the next hour. Store the video ID so you can retrieve it later and send a follow-up email with the link once rendering completes.
Rate limit your Claude calls.
The Anthropic API has rate limits on token throughput. If you onboard multiple customers simultaneously, you may hit limits. Use n8n's "Rate Limit" node to queue requests and space them out by 2 to 3 seconds. This prevents failures without materially slowing the workflow.
Validate email addresses before sending.
Add a validation step using a tool like ZeroBounce or Abstract API before sending to SendGrid. Bounce rates affect your sender reputation. A single bad email list can land you in spam folders for weeks.
Track video watch rates.
When you send the video URL from Hour One, include a UTM parameter or tracking code so you know which customers actually watched their welcome video. Pair this with email open tracking from SendGrid. If someone opened the email but did not watch the video after two days, trigger a secondary notification.
Segment follow-up sequences.
Use the industry field to branch the workflow. Manufacturing customers might get a different follow-up sequence than SaaS companies. Create separate email sequences in your email service and use conditional logic in n8n to select the right one based on intake data. This increases activation rates substantially.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| n8n | Professional (self-hosted or cloud) | £50–£150 | Handles workflows, webhooks, API calls. Self-hosted is cheaper. |
| Claude Sonnet 4.6 | Pay-as-you-go | £10–£30 | ~500 tokens per script generation × customers onboarded. Budget generously. |
| Hour One | Starter or Standard | £150–£500 | Video generation and presenter access. Per-video costs apply. |
| SendGrid | Standard or Pro | £40–£120 | Email delivery and tracking. Scale with volume. |
| Slack (notifications) | Free or Pro | £0–£8 | If you use Slack already, add webhook notifications. |
| Total | – | £250–£808 | Scales with customer volume. Covers 50–200 onboardings per month. |