2026-11-01 · 5 min read
Captions for SaaS Onboarding Videos: Fewer Lost Users in the First Five Minutes
The first session decides whether a new user stays. Teams record onboarding walkthroughs because showing beats telling, then embed them where sound is often off: inside the app, in the help center, in the welcome email. If the explanation is only in the audio, the video is furniture. Captions make it do its job in every context it appears.
Onboarding content also changes constantly. Every release reshapes a screen, and the walkthrough gets re-recorded. caption.sh keeps captions from being the bottleneck in that loop: POST the new cut, get back a captioned MP4, swap the embed. No editor, no timeline, no drift between what the video says and what the screen shows.
The re-caption loop after each release
KEY=$CAPTION_API_KEY
resp=$(curl -s -X POST https://api.caption.sh/v1/videos \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"source_url":"https://cdn.example.com/onboarding/getting-started-v8.mp4","options":{"font":"inter"}}')
job=$(echo "$resp" | jq -r .job_id)
if [ -z "$job" ] || [ "$job" = "null" ]; then echo "submit failed: $resp"; exit 1; fi
deadline=$((SECONDS + 900))
while [ $SECONDS -lt $deadline ]; do
resp=$(curl -s https://api.caption.sh/v1/jobs/$job -H "Authorization: Bearer $KEY")
status=$(echo "$resp" | jq -r .status)
if [ "$status" = "done" ]; then
curl -sL -H "Authorization: Bearer $KEY" https://api.caption.sh/v1/jobs/$job/result -o onboarding-captioned.mp4
break
fi
if [ "$status" = "error" ]; then echo "job failed: $resp"; exit 1; fi
sleep 5
done
[ -f onboarding-captioned.mp4 ] || { echo "timed out"; exit 1; }Because the captions are burned in, the same file works in the app, the help center, and the email client that strips everything fancy. Results are stored for 24 hours and then deleted, so the pipeline should download right after the job completes. Submissions are rate-limited per key; if a release re-captions a whole series at once, wait and retry on a 429.
Why onboarding teams automate this
- Every release touches the videos, so the manual version of this task recurs forever. Automation makes re-captioning a side effect of shipping.
- Support load drops when users can actually follow the walkthrough, and most users watch with sound off.
- One configured style across every video keeps the onboarding experience looking like one product.
At $0.10 per minute, re-captioning a whole onboarding series after a big release costs a few dollars. Get an API key at caption.sh and run your getting-started video through it.