HeyGen + Slack: video renders you do not babysit
You hit “render,” then you wait. Then you check again. Then you forget about it for 40 minutes and realize the video failed, and now your deadline is suddenly your problem.
This is where HeyGen Slack updates automation saves your sanity. A marketing manager trying to ship weekly campaigns feels it first. A content lead running variants feels it too. So does the agency owner who has clients asking “is it ready yet?” every afternoon.
This workflow sends your script to HeyGen, waits, checks render status on a loop, and pushes the result to Slack so you always know what finished (or what broke). You’ll learn what it does, what you need, and how to think about customizing it.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: HeyGen + Slack: video renders you do not babysit
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>HeyGen"]
n1@{ icon: "mdi:cog", form: "rounded", label: "Wait4", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>HeyGen : Check Video"]
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "heygen_response", pos: "b", h: 48 }
n1 --> n2
n0 --> n1
n3 --> n1
n2 --> n3
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n3 decision
class n0,n2 api
classDef customIcon fill:none,stroke:none
class n0,n2 customIcon
Why This Matters: Stop Losing Hours to Render Check-Ins
HeyGen makes it possible to turn scripts into avatar videos fast, but the “fast” part still has a human tax. Someone has to submit the request, remember to come back, refresh the status page, and notice failures early enough to re-run before your posting window closes. If you create variants (different hooks, different offers, different audiences), it gets worse because you’re tracking multiple renders at once. The end result is familiar: missed deadlines, awkward Slack pings, and a lot of context-switching that drains your day.
The friction compounds. Here’s where it breaks down in real life.
- Renders finish at random times, so you end up checking HeyGen far more often than you want to admit.
- Failures get caught late, which means you re-run at the worst possible moment.
- Variant testing turns into a messy spreadsheet of “submitted at” and “maybe done?” notes.
- Teams lose confidence because nobody can answer “what’s still processing?” without manually looking.
What You’ll Build: HeyGen Rendering That Reports Back to Slack
This workflow turns HeyGen rendering into a tracked, hands-off process. You start by sending a script (and the avatar/voice settings you want) into n8n, which makes an API request to HeyGen to begin generating the video. After that, it waits for a short interval, checks the video’s current status, and keeps looping until HeyGen says the render is finished or failed. Once it reaches a final state, the workflow routes the result down the right path, so your team gets a clear Slack update instead of silence. The biggest win is simple: you stop babysitting a render page and start working on the next asset.
The workflow begins with a “generate video” call to HeyGen. Then it repeats a wait-and-check cycle (every 30 seconds in the default setup). Finally, a status switch decides what happens next based on completed, failed, or still-processing results.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Let’s say you generate 5 HeyGen videos a week for ads and landing pages. Manually, you might check status about 6 times per video at roughly 2 minutes each (open tab, refresh, skim, copy a link, tell someone). That’s about an hour of pure “checking,” plus the occasional missed failure that costs you another hour later. With this workflow, you submit once (a couple minutes), then Slack tells you when it’s done or failed. Most teams get roughly an hour back each week immediately, and more when they scale variants.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- HeyGen for generating avatar videos from scripts.
- Slack to receive completion or failure notifications.
- HeyGen API key (get it from your HeyGen developer/API settings).
Skill level: Beginner. You’ll connect two accounts, paste an API key, and edit a couple fields like channel and message text.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A script triggers the run. In practice, you’ll feed the workflow a script and a few render settings (avatar, voice, background, dimensions). The workflow’s “Generate HeyGen Video” request sends that to HeyGen so rendering starts immediately.
A timed pause prevents noisy polling. The “Pause Interval” node waits 30 seconds. That spacing matters because it keeps the workflow stable and avoids hammering HeyGen with constant status checks.
Status gets checked until it’s final. The “Check Video Status” request asks HeyGen if the render is still processing, completed, or failed. Then “Route Status Results” decides what happens next. If it’s still processing, it loops back to the pause and checks again.
Slack gets the update you actually need. When the status becomes completed (or failed), you send a message to the right Slack channel with the finished video link or a clear error signal, so someone can fix it quickly.
You can easily modify the wait interval to fit your typical HeyGen render times, or change Slack routing based on project or campaign. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Trigger Type
This workflow does not include a trigger node, so you must add one to start the video generation process.
- Add your preferred trigger node (for example, a manual trigger, webhook, or schedule) to initiate the workflow.
- Connect the trigger output to Generate HeyGen Video so the request payload is sent when the workflow runs.
- Ensure the trigger provides required fields like
full_script, and optionallyAvatarIdandHeygenVoiceId.
full_script, the HeyGen API will fail because the text input is missing.Step 2: Connect HeyGen API Request
Configure the video generation request that sends the script and avatar settings to HeyGen.
- Select Generate HeyGen Video and set URL to
https://api.heygen.com/v2/video/generate. - Set Method to
POSTand enable Send Body with Specify Body set tojson. - Paste the request body exactly as shown in the node:
={ "video_inputs": [ { "character": { "type": "avatar", "avatar_id": "{{ $json.AvatarId ?? "Amy_standing_outdoor_side"}}", "avatar_style": "normal" }, "voice": { "type": "text", "input_text": "{{ $json.full_script }}", "voice_id": "{{ $json.HeygenVoiceId ?? '26b2064088674c80b1e5fc5ab1a068eb' }}" }, "background": { "type": "color", "value": "#000000" } } ], "dimension": {"width": "340","height": "340"} }. - Credential Required: Connect your httpHeaderAuth credentials.
AvatarId or HeygenVoiceId are missing.Step 3: Add Delay Before Status Check
This workflow waits briefly after requesting the video so HeyGen has time to process.
- Select Pause Interval and set Amount to
30seconds. - Connect Generate HeyGen Video to Pause Interval.
Step 4: Check Status and Route Results
After waiting, the workflow checks the video status and routes results based on completion state.
- In Check Video Status, set URL to
https://api.heygen.com/v1/video_status.getand enable Send Query and Send Headers. - Set the query parameter video_id to
={{ $('Generate HeyGen Video').first().json.data.video_id }}and header Accept toapplication/json. - Credential Required: Connect your httpHeaderAuth credentials.
- Configure Route Status Results rules: completed when
={{ $json.data.status }}equalscompleted, processing when={{ $json.data.status == 'processing' || $json.data.status == 'pending' || $json.data.status == 'waiting' }}is true, and failed when={{ $json.data.status }}equalsfailed. - Connect Pause Interval → Check Video Status → Route Status Results.
Step 5: Test and Activate Your Workflow
Run a manual test to verify that HeyGen receives the request, the status check works, and routing behaves correctly.
- Click Execute Workflow and provide test data containing
full_script. - Confirm Generate HeyGen Video returns a
video_id, then verify Check Video Status retrieves a validstatus. - Check that Route Status Results outputs to completed, processing, or failed as expected.
- When satisfied, toggle the workflow to Active for production use.
Troubleshooting Tips
- HeyGen credentials can expire or your API key may not include the right permissions. If things break, check your HeyGen API settings and regenerate the key first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Slack messages can silently fail if the bot is not invited to the channel. Confirm the app is in the target channel and that your token has chat:write permission.
Quick Answers
About 20–30 minutes once you have your HeyGen API key and a Slack channel picked out.
No. You’ll paste credentials, edit the HeyGen request fields, and choose where Slack messages go.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in HeyGen usage costs based on your plan.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s usually just swapping inputs and routing. You can change what you send to HeyGen in the “Generate HeyGen Video” HTTP Request (avatar, voice, background color, dimensions, and the script). You can also adjust the “Pause Interval” wait time to match your typical render duration. Common customizations include posting completions to different Slack channels per campaign, adding a second Slack message when a render fails, or extending the status routing in “Route Status Results” to handle extra states.
Usually it’s an expired or incorrect API key, so regenerate it in HeyGen and update the credential in n8n. It can also be a malformed request body (wrong avatar/voice ID) that HeyGen rejects. If it fails only sometimes, you may be hitting rate limits while running lots of renders back-to-back.
A typical setup handles dozens of renders a day, as long as your HeyGen plan and n8n execution limits support it.
Often, yes. The key issue is the polling loop: you need to wait, check status, then repeat until a final result shows up, and those repeating checks can get awkward (and expensive) in simpler automation tools. n8n handles looping logic cleanly, which means your workflow can keep checking without you building a tangle of separate Zaps or scenarios. You also get the option to self-host for unlimited executions, which matters once you’re doing lots of variants. Zapier or Make can still be fine for a basic “send request, get one update” flow, but this workflow is built for real rendering reality. Talk to an automation expert if you’re not sure which fits.
Once this is live, HeyGen renders stop being a guessing game. You get clean Slack signals, faster turnarounds, and fewer last-minute scrambles.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.