Get a phone notification when your DaVinci Resolve render finishes
Use DaVinci Resolve's built-in post-render script to send yourself an iPhone notification the instant your export finishes. Setup takes 5 minutes.
You hit Render All and walk away. Twenty minutes later you're back at your desk — only to find the render finished twelve minutes ago and you've been wasting time waiting around for nothing. Or worse, it failed and you didn't know.
DaVinci Resolve has a built-in feature almost nobody talks about: a post-render script. It runs a script automatically the moment a render job completes. Combine that with TheNotificationApp and your iPhone buzzes the instant the export is done — no polling, no terminal window to babysit, no third-party software.
This guide shows you how to set it up in about five minutes.
What you'll need
| Requirement | Notes |
|---|---|
| DaVinci Resolve | Free or Studio — both support post-render scripts |
| macOS or Linux | The script uses Bash and curl, both pre-installed |
| TheNotificationApp | Free tier is plenty — download on the App Store |
| Your API key | Found in the app after creating a project |
How the post-render script works
On the Deliver page, DaVinci Resolve lets you attach a script to each render job. When the job finishes, Resolve executes that script automatically — no manual steps, no open terminal window. The script runs in the background whether you're in Resolve or not.
You write a small Bash script that calls TheNotificationApp's API with a single curl command. That's it. One HTTP request and your phone gets the alert within seconds.
Step 1 — Get your API key
Download TheNotificationApp on your iPhone, sign in with Apple, and create a new app — call it "DaVinci Renders" or whatever you like. Tap into it and copy the API key. You'll need it in the next step.
Step 2 — Create the script
Open TextEdit (or any text editor), switch to plain text mode, and paste the following:
#!/bin/bash
API_KEY="YOUR_API_KEY_HERE"
FILENAME="${RESOLVE_RENDER_OUTPUT_FILE:-Unknown file}"
BASENAME=$(basename "$FILENAME")
/usr/bin/curl -s -X POST https://thenotification.app/api/sendNotification \
-H "app_key: ${API_KEY}" \
-H "Content-Type: application/json" \
-d "{
\"title\": \"Render complete\",
\"body\": \"${BASENAME}\"
}"
Replace YOUR_API_KEY_HERE with the key you copied.
Save the file as resolve-notify.sh somewhere permanent — your home folder works well:
~/resolve-notify.sh
Important: Do not save it in a folder that might move or get cleaned up. Resolve stores the script path per render job — if the file moves, the script won't run.
Step 3 — Make the script executable
Open Terminal and run:
chmod +x ~/resolve-notify.sh
Test it immediately — run it directly from Terminal and check your phone:
~/resolve-notify.sh
You should get a notification saying "Render complete" within a second or two. If you don't, double-check your API key.
Step 4 — Attach it to a render job in DaVinci Resolve
- Open the Deliver page
- Set up your render settings as usual — format, codec, output path
- In the render settings panel, scroll down to the File section
- Look for Execute Script After Render Job — it's a text field with a browse button next to it
- Click browse and navigate to
~/resolve-notify.sh(your home folder) - Select the script
- Click Add to Render Queue
- Hit Render All
When the job finishes, Resolve runs the script and your iPhone gets the notification.
What the notification looks like
If your output file is Final_Cut_v3.mov the notification will show:
Render complete Final_Cut_v3.mov
The basename command strips the full file path so only the filename appears — cleaner than seeing /Users/yourname/Movies/Projects/... in the notification body.
Attaching the script to every job
The post-render script field gets saved with each individual render job in the queue. To avoid setting it manually every time:
- Set up your render settings exactly how you want them — including the script
- Click the ... menu next to the render settings panel
- Save as a Preset
Next time, load that preset and the script path comes with it. One click and you're set up.
Handling batch renders
If you're rendering a batch of jobs, each job in the queue runs the script independently when it finishes. You'll get a notification per job, each showing its own filename. No extra setup needed.
If you'd rather get a single notification when the entire queue is done rather than one per job, attach the script only to the last job in your queue and leave it off the others.
Troubleshooting
No notification arrives after the render
Run the script manually in Terminal first to confirm it works in isolation. If it works there but not from Resolve, the issue is usually the PATH — Resolve runs scripts with a limited environment. The script above uses /usr/bin/curl (full path) specifically to avoid this. If you're on a different macOS version and curl isn't at that path, find it with:
which curl
Then update the script with the correct full path.
The script field is greyed out
You need to add at least one job to the render queue before the script field becomes editable. Set up your render settings, click Add to Render Queue, then edit the job in the queue to attach the script.
Notification arrives but shows "Unknown file"
The RESOLVE_RENDER_OUTPUT_FILE environment variable is only set when Resolve calls the script — it won't be set when you run the script manually from Terminal. That's expected. The filename will appear correctly when triggered by an actual render.
Going further
Once this is set up you can extend the script in a few directions.
Add a render duration — log the start time before the render and include it in the notification:
#!/bin/bash
API_KEY="YOUR_API_KEY_HERE"
FILENAME="${RESOLVE_RENDER_OUTPUT_FILE:-Unknown file}"
BASENAME=$(basename "$FILENAME")
START_TIME="${RESOLVE_RENDER_START_TIME:-}"
NOW=$(date +%s)
if [ -n "$START_TIME" ]; then
ELAPSED=$(( NOW - START_TIME ))
MINS=$(( ELAPSED / 60 ))
SECS=$(( ELAPSED % 60 ))
DURATION=" · ${MINS}m ${SECS}s"
else
DURATION=""
fi
/usr/bin/curl -s -X POST https://thenotification.app/api/sendNotification \
-H "app_key: ${API_KEY}" \
-H "Content-Type: application/json" \
-d "{
\"title\": \"Render complete\",
\"body\": \"${BASENAME}${DURATION}\"
}"
Use the same script for any long export — the script works for any tool that supports a post-process hook. ffmpeg, Compressor, Handbrake — if it can run a shell command when it finishes, you can wire it up the same way.
ffmpeg -i input.mov output.mp4 && ~/resolve-notify.sh
Wrapping up
Five minutes of setup and you never have to babysit a render again. DaVinci Resolve's post-render script runs automatically, TheNotificationApp delivers it to your iPhone via Apple Push Notifications, and you get on with your day.
The free tier includes 100 notifications
Questions or want to share how you're using it? Reach out at contact@thenotification.app.
Stop babysitting your scripts.
Free to download. Free tier available. Swiss-hosted, private by design.