Onboarding video creation with talking avatars
- Published
Creating onboarding videos for every new employee or customer is tedious work. You record a script, book studio time, edit footage, add captions, then finally upload somewhere accessible. By the time the first person watches it, you've spent six hours on a fifteen-minute video.......
What if you could generate a polished onboarding video with a talking avatar in under five minutes, with zero manual steps between tools? A new employee gets added to your system, a workflow triggers automatically, and by the time they receive their welcome email, a personalised onboarding video is already waiting for them.
This is exactly what this workflow does. We'll combine three AI video tools—ElevenLabs for natural-sounding voiceovers, HeyGen for avatar video generation, and Hour One for video assembly and branding—along with an orchestration platform to tie everything together. No clicking between tabs, no copying and pasting URLs, no manual uploads.
The Automated Workflow
Choose Your Orchestration Platform
For this workflow, I'd recommend n8n if you're self-hosting or want the most control over API calls. It handles the API rate limiting gracefully and lets you debug each step easily. If you prefer a managed service with less setup, Make (formerly Integromat) works well for most use cases. Zapier is simpler but more expensive at scale. Claude Code is overkill for this specific task unless you're running it on a custom backend.
I'll walk through the n8n approach, but the principles apply to any orchestration tool.
Step 1: Trigger on New Employee Data
Your workflow needs a starting point. This could be a new row in a Google Sheet, a Slack message, a form submission, or a webhook from your HR system.
GET /webhooks/v1/incoming
{
"employee_name": "Sarah Chen",
"department": "Engineering",
"start_date": "2025-01-20",
"role": "Senior Developer",
"company_name": "Acme Corp"
}
In n8n, create a webhook node and give it a publicly accessible URL. Your HR system POSTs employee data to this URL whenever someone is hired. The workflow immediately triggers with that employee's information.
Step 2: Generate a Script Using Claude or Prompt Engineering
Before the AI tools can work, you need a script tailored to each person. Don't hardcode the same script for everyone; that defeats the purpose.
Use an HTTP Request node in n8n to call Claude's API (or GPT-4, or any LLM):
POST https://api.anthropic.com/v1/messages
{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Write a 60-second onboarding script for Sarah Chen, who is a Senior Developer joining the Engineering team at Acme Corp. The script should be warm, professional, and mention their specific role. Keep it under 150 words."
}
]
}
The LLM returns a personalised script. Store this response in a variable for the next steps.
Step 3: Generate the Voiceover with ElevenLabs
With a script in hand, send it to ElevenLabs to create natural speech. ElevenLabs offers several voices; choose one that matches your brand tone.
POST https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}
{
"text": "Hello Sarah, and welcome to Acme Corp. We're thrilled to have you join the Engineering team as a Senior Developer.",
"model_id": "eleven_monolingual_v1",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 0.75
}
}
Replace {VOICE_ID} with an actual voice ID from ElevenLabs. Your API key goes in the Authorization header. The response contains a URL to an MP3 file of the voiceover.
Store this MP3 URL in a variable. ElevenLabs keeps the file available for 30 days, which is plenty of time for the next step.
Step 4: Generate Avatar Video with HeyGen
HeyGen creates a video of a talking avatar speaking the voiceover you just generated. Think of it as a digital presenter delivering your script.
First, create a video generation task:
POST https://api.heygen.com/v1/video_requests
{
"voice": {
"voice_provider": "eleven_labs",
"voice_id": "YOUR_ELEVENLABS_VOICE_ID"
},
"avatar_id": "wayne-public",
"caption": {
"enabled": true,
"font_color": "#000000"
}
}
Wait, that's not quite right. HeyGen actually takes a script text directly. Let me correct that:
POST https://api.heygen.com/v1/video_requests
{
"test": false,
"background_color": "#ffffff",
"clips": [
{
"avatar_id": "wayne-public",
"voice": {
"voice_provider": "eleven_labs",
"voice_id": "YOUR_ELEVENLABS_VOICE_ID",
"input_text": "Hello Sarah, and welcome to Acme Corp."
},
"duration": 10
}
]
}
HeyGen returns a job ID. The video generation happens asynchronously, so you'll need to poll the status endpoint until the video is ready.
Step 5: Poll for Video Completion
Set up a loop in n8n that checks HeyGen's status every 30 seconds:
GET https://api.heygen.com/v1/video_requests/{VIDEO_REQUEST_ID}
This returns something like:
{
"data": {
"id": "abc123xyz",
"status": "completed",
"video_url": "https://files.heygen.com/videos/abc123xyz.mp4",
"created_at": "2025-01-15T10:30:00Z"
}
}
Once the status is "completed", extract the video_url and proceed to the next step. Most onboarding videos render in 2 to 5 minutes.
Step 6: Upload to Hour One for Branding and Assembly
Hour One lets you add your company's branding, logos, background music, and watermarks to video clips. It's especially useful if you want consistency across multiple videos.
POST https://api.hourone.com/api/upload
{
"url": "https://files.heygen.com/videos/abc123xyz.mp4",
"title": "Onboarding: Sarah Chen",
"project_id": "YOUR_PROJECT_ID"
}
Hour One's API is a bit different; check their documentation for exact endpoints. Alternatively, you can skip Hour One if HeyGen's branding is sufficient.
Step 7: Store the Final Video and Send Notification
Once the video is ready, store the URL in your database and send a notification to the new employee or their manager.
POST https://api.airtable.com/v0/YOUR_BASE_ID/Employees
{
"fields": {
"Name": "Sarah Chen",
"Department": "Engineering",
"Onboarding_Video_URL": "https://files.heygen.com/videos/abc123xyz.mp4",
"Video_Generated_At": "2025-01-15T10:35:00Z"
}
}
Then send an email via SendGrid, Mailgun, or your preferred service:
POST https://api.sendgrid.com/v3/mail/send
{
"personalizations": [
{
"to": [
{
"email": "sarah.chen@acmecorp.com"
}
],
"subject": "Welcome to Acme Corp: Your Personalised Onboarding Video"
}
],
"from": {
"email": "onboarding@acmecorp.com"
},
"content": [
{
"type": "text/html",
"value": "<p>Welcome to Acme Corp, Sarah. Watch your personalised onboarding video below.</p><p><a href='https://files.heygen.com/videos/abc123xyz.mp4'>View your onboarding video</a></p>"
}
]
}
Full Workflow Diagram in n8n
The complete flow looks like this:
- Webhook receives new employee data
- HTTP Request to Claude generates personalised script
- HTTP Request to ElevenLabs creates voiceover
- HTTP Request to HeyGen starts video generation
- Wait node pauses for 30 seconds
- HTTP Request polls HeyGen status (loop until complete)
- HTTP Request uploads to Airtable with video URL
- HTTP Request sends welcome email with video link
Each step uses variables to pass data forward. The "Wait and Poll" pattern is essential because HeyGen doesn't support webhooks for completion notifications.
The Manual Alternative
If you prefer more control or want to customise videos beyond what automation allows, here's what a manual process looks like:
- Generate the script yourself in a document, tailoring tone and content to each person.
- Use ElevenLabs' web dashboard to upload the script and download the MP3.
- Open HeyGen, paste your script, choose an avatar and voice settings, and render the video.
- Download the MP4 from HeyGen.
- Upload it to Hour One for branding (optional).
- Upload the final video to a shared drive, Vimeo, or YouTube.
- Send the link to the new employee via email.
This takes 15 to 20 minutes per video if you already have scripts written. It's fine for occasional hires, but once you're onboarding multiple people per week, automation becomes worth the initial setup effort.
Pro Tips
Handle Rate Limiting Gracefully
ElevenLabs and HeyGen both have rate limits. ElevenLabs allows 10,000 characters per month on free tier, and around 100,000 on paid plans. HeyGen limits video renders based on your subscription. In n8n, add error handling that retries failed requests with exponential backoff:
{
"retry": {
"enabled": true,
"maxTries": 3,
"delay": 2000,
"backoff": {
"type": "exponential",
"multiplier": 2
}
}
}
If ElevenLabs returns a 429 (Too Many Requests), wait 60 seconds before trying again rather than failing immediately.
Optimise Script Length for Cost
ElevenLabs charges by character. A 500-character script costs significantly less than a 2,000-character one. Keep onboarding scripts to 100-150 words (about 700-900 characters including spaces). Longer scripts aren't necessarily better for an onboarding video anyway; people absorb more from shorter, focused messages.
Similarly, HeyGen's pricing depends on video duration. A 60-second video is much cheaper than a 5-minute one. If your script is long, split it into multiple shorter videos.
Cache Generated Content to Avoid Duplication
If you have multiple employees starting on the same day with similar roles, don't generate separate voiceovers for each one. Generate a generic "welcome to the company" voiceover once, then generate role-specific content separately. Store URLs in a lookup table so subsequent employees reuse existing assets where possible.
Test with a Dry Run First
Before launching your workflow to production, create a test employee record and run the entire workflow manually. Check that:
- Claude generates sensible scripts
- ElevenLabs produces clear audio without weird pronunciations
- HeyGen's avatar lip-syncs properly
- The final video plays without corruption
- Email notifications arrive correctly
Small issues like incorrect voice IDs or API credentials are far cheaper to fix in testing.
Monitor Video Quality Across Services
HeyGen's avatar quality varies depending on which avatar you choose. The "wayne-public" avatar is free but sometimes has jerky lip-syncing. Paid avatars look more natural. If your onboarding videos are customer-facing (e.g., for new client accounts), invest in a better avatar. If they're internal, the free one is fine.
Similarly, ElevenLabs' voice quality improves with stability settings. A stability of 0.5 and similarity_boost of 0.75 works well for professional voiceovers without sounding robotic.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| ElevenLabs | Starter | $11 | 100,000 characters per month; $0.03 per extra 1,000 characters after |
| HeyGen | Creator | $48 | 10 video credits per month; each video uses 1 credit regardless of length |
| Hour One | Professional | $99 | Includes branding, background music, and watermarks; optional if HeyGen branding suffices |
| n8n (self-hosted) | Self-hosted | $0 | Free if you host it yourself; Starter plan is $20 if you use their cloud |
| Make | Standard | $9 | Per month; covers 10,000 operations, plenty for this workflow |
| Zapier | Professional | $20 | Per month; suitable if you run this workflow fewer than 5 times per week |
| Claude (via API) | Pay-as-you-go | ~$2 | Per 1 million input tokens; a 100-word script uses roughly 50 tokens |
Total minimum monthly cost (self-hosted orchestration, no Hour One):
- ElevenLabs: $11
- HeyGen: $48
- Claude: ~$2
- n8n: $0
- Total: ~$61 per month
This covers unlimited video generation. Even with Claude costs, a single video costs about $0.15 to generate. If you're onboarding 10 people per month, that's $1.50 in API costs, a bargain compared to the time saved.
If you prefer managed orchestration without self-hosting, add Make ($9) instead of n8n ($0), bringing the total to roughly $70 per month.
Once your workflow is live, new employee onboarding videos go from conception to delivery in minutes. No clicking between tools, no manual file uploads, no forgotten steps. Every new hire gets a personalised welcome that costs pennies to produce and takes zero human effort to create.
More Recipes
Automated Podcast Production Workflow
Automated Podcast Production Workflow: From Raw Audio to Published Episode
Build an Automated YouTube Channel with AI
Build an Automated YouTube Channel with AI
Medical device regulatory documentation from technical specifications
Medtech companies spend significant resources translating technical specs into regulatory-compliant documentation.