Most SaaS teams treat onboarding like a checkbox rather than an experience. A new customer signs up, receives a generic welcome email, and then watches your product tour video. If they're lucky, they might get a follow-up. If they're not, they churn within the first two weeks. The numbers bear this out: companies with strong onboarding see 23% higher retention than those without. Yet the cost of personalising that experience at scale feels prohibitive when done manually. What if you could generate tailored welcome sequences, turn them into video, and deliver everything through email without anyone touching it after the initial setup? That's not wishful thinking. By combining ChatGPT Writer, Cogram, Hour One, and an orchestration layer, you can build an onboarding machine that adapts to customer profile data and runs entirely in the background. This post shows you how. The workflow captures customer information from intake forms, uses AI to write personalised emails and video scripts, generates video content automatically, and sequences everything through email. No manual handoff. No copy-paste. No human waiting for approval on the fifth email in the sequence.
The Automated Workflow
You'll need an orchestration tool that can handle branching logic, API calls, and scheduled tasks. For this workflow, n8n works well because it's self-hosted, flexible, and handles both synchronous and asynchronous operations without hitting rate limits as quickly. The sequence works like this: a new customer completes an intake form (collected via Typeform, Jotform, or a custom form), their data triggers an n8n workflow, which then branches based on company size or industry. Cogram attends a brief kick-off call if one is scheduled, capturing talking points that inform the video script. ChatGPT Writer generates a personalised welcome email and video script based on company profile and Cogram's notes. Hour One converts the script into a branded video with a virtual presenter. The orchestration tool uploads the video to a hosting service and sends the email with the video embedded or linked, then schedules follow-up emails at day 3, day 7, and day 14. Here's how to wire it in n8n. First, set up the webhook trigger that receives form submissions:
POST /webhook/intake-form
Content-Type: application/json { "company_name": "Acme Corp", "industry": "SaaS", "company_size": "11-50", "primary_contact": "alice@acme.com", "use_case": "inventory management"
}
Your n8n workflow starts with a Webhook node listening on this endpoint. Add a Set node to enrich the data with timestamps and an identifier:
{ "submission_id": "{{ $randomUUID() }}", "submitted_at": "{{ now().toIso() }}", "company_name": "{{ $json.company_name }}", "industry": "{{ $json.industry }}", "company_size": "{{ $json.company_size }}", "email": "{{ $json.primary_contact }}", "use_case": "{{ $json.use_case }}"
}
Next, add a ChatGPT Writer node to generate the welcome email. Configure it with a system prompt that changes based on industry:
You are a SaaS onboarding specialist. Write a personalised welcome email for a customer. Company: {{ $json.company_name }}
Industry: {{ $json.industry }}
Company Size: {{ $json.company_size }}
Primary Use Case: {{ $json.use_case }} The email should:
1. Acknowledge their specific use case
2. Reference a relevant success metric from their industry
3. Invite them to a brief kick-off call
4. Set expectations for the first week
5. Keep tone warm and direct, not corporate Write only the email body, no subject line.
Wire this into a ChatGPT node using GPT-4o mini (it's fast, accurate enough for this task, and cheaper than larger models):
{ "messages": [ { "role": "system", "content": "You are a SaaS onboarding specialist..." }, { "role": "user", "content": "Company: {{ $json.company_name }}\nIndustry: {{ $json.industry }}\n..." } ], "model": "gpt-4o mini", "temperature": 0.7
}
In parallel, if a kick-off call is scheduled, route data to Cogram via its API. Add an HTTP Request node:
POST https://api.cogram.com/v1/meetings
Authorization: Bearer YOUR_COGRAM_API_KEY
Content-Type: application/json { "title": "Onboarding Kick-off: {{ $json.company_name }}", "participant_email": "{{ $json.email }}", "metadata": { "submission_id": "{{ $json.submission_id }}", "industry": "{{ $json.industry }}" }
}
After the call (which Cogram will document), retrieve the meeting notes via another HTTP node:
GET https://api.cogram.com/v1/meetings/{{ $json.cogram_meeting_id }}/summary
Authorization: Bearer YOUR_COGRAM_API_KEY
Cogram returns structured notes and action items. Feed these into a second ChatGPT Writer call to generate a video script that references specific points from the conversation:
You are a video script writer. Based on the customer's use case and their kick-off call notes, write a 90-second welcome video script for a virtual presenter. Customer: {{ $json.company_name }}
Use Case: {{ $json.use_case }}
Call Notes: {{ $json.cogram_summary }} The script should:
1. Open with their specific business challenge
2. Show how our solution addresses it
3. Reference a key point they mentioned
4. Close with next steps
5. Be conversational, not robotic Format as plain text suitable for a video presenter.
Pass this script to Hour One's API to generate the video:
POST https://api.hourone.com/api/v2/videos
Authorization: Bearer YOUR_HOUR_ONE_API_KEY
Content-Type: application/json { "title": "Welcome Video - {{ $json.company_name }}", "script": "{{ $json.video_script }}", "presenter_id": "YOUR_PRESENTER_ID", "background_id": "YOUR_BACKGROUND_ID", "quality": "1080p"
}
Hour One returns a video ID and processing status. Use another HTTP node to poll for completion:
GET https://api.hourone.com/api/v2/videos/{{ $json.hour_one_video_id }}
Authorization: Bearer YOUR_HOUR_ONE_API_KEY
Once the video is ready, upload it to a hosting service like Mux or AWS S3. Add an HTTP node to store the video URL in your n8n context:
{ "video_url": "https://your-bucket.mux.com/{{ $json.hour_one_video_id }}.mp4", "video_title": "Welcome to {{ $json.company_name }}"
}
Now send the welcome email using SendGrid or a similar service. Create an HTTP node:
POST https://api.sendgrid.com/v3/mail/send
Authorization: Bearer YOUR_SENDGRID_API_KEY
Content-Type: application/json { "personalizations": [ { "to": [ { "email": "{{ $json.email }}" } ], "dynamic_template_data": { "company_name": "{{ $json.company_name }}", "welcome_message": "{{ $json.gpt_welcome_email }}", "video_url": "{{ $json.video_url }}" } } ], "from": { "email": "onboarding@yourcompany.com" }, "template_id": "YOUR_SENDGRID_TEMPLATE_ID"
}
Your SendGrid template (created in the SendGrid UI) should reference the dynamic variables:
html
<h2>Welcome, {{ company_name }}!</h2>
<p>{{ welcome_message }}</p>
<a href="{{ video_url }}">Watch your personalised onboarding video</a>
Finally, schedule follow-up emails using n8n's Delay node. Add a node that waits 3 days, generates another email via ChatGPT Writer (different tone, focused on activation), and sends it. Repeat for day 7 and day 14:
{ "delay_days": 3, "email_type": "activation", "prompt": "Write a friendly follow-up email for {{ $json.company_name }} on day 3 of their trial. Ask about their progress, offer help, and suggest one specific feature they should try based on their use case."
}
Store the submission ID and email addresses in a database (PostgreSQL, Supabase, or similar) so you can track opens, clicks, and engagement. This gives you feedback on what's working.
The Manual Alternative
If you want human review before videos go out or emails are sent, insert approval steps into the workflow. Add a Human Wait node after the video is generated; your onboarding lead reviews it in n8n's UI and approves or asks for revisions before the email sends. This adds 1-2 hours of labour per customer but ensures brand consistency and catches any AI quirks. For teams with fewer than five new customers per week, this trade-off often makes sense. Alternatively, generate the sequences but have an ops person schedule and tweak them in your email platform's UI rather than automating the send. This is slower but doesn't require orchestration setup.
Pro Tips Rate limiting and costs:
ChatGPT Writer and Hour One can get expensive fast. GPT-4o mini is significantly cheaper than GPT-4o for email generation; use GPT-4o only for video scripts where quality matters more. Hour One charges per video; request quotes if you're planning more than 50 videos per month. Cache Cogram call notes in n8n so you don't re-fetch them. Error handling: Videos occasionally fail to render on Hour One's side. Add a retry mechanism in n8n; if a video fails, send an email with a fallback link to a recorded demo while a second attempt processes in the background. Store failed video IDs in a logging table so your team can investigate patterns. Testing before scale: Run this workflow with five test customers first. Check that emails arrive, videos play, and links work. Test with different company sizes and industries to catch edge cases in the ChatGPT prompts. Personalisation depth: The more data you collect in the intake form, the better the personalisation. Ask about problem, team size, and technical expertise. Feed all of it into the ChatGPT prompts. A video script that mentions their exact challenge converts better than generic content. Engagement tracking: Send videos through a platform that tracks views (Mux, Wistia, or Vidyard). Log view events back into your n8n workflow; if a customer hasn't watched by day 2, trigger an email reminding them. This is low-touch but catches disengagement early.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| ChatGPT Writer (via OpenAI API) | Pay-as-you-go | £0.15 per 1K input tokens, £0.60 per 1K output tokens | Estimate £15–£30 for 100 customers; GPT-4o mini is most cost-effective here |
| Hour One | Pro or Enterprise | £300–£2,000+ | Depends on video volume; 50 videos = ~£500 |
| Cogram | Professional | £220 | Includes unlimited meeting notes; optional if you skip the kick-off call |
| SendGrid | Pro | £80 | Includes up to 40,000 emails per month; higher tiers for more |
| n8n | Self-hosted or Cloud Pro | £0 (self) or £288 (cloud) | Self-hosted on a £5–£10/month server is cheapest |
| Mux (video hosting) | Creator | £25 | Includes 1,000 concurrent viewers; scales up as needed |
| Total (100 customers/month) | ~£640–£900 | Assumes self-hosted n8n and 1 Cogram call per 3 customers |