A webhook is a message RecReview sends to a web address you own, the moment something happens — a delivery, an approval, a new version. Point it at Make, Zapier, n8n or your own service and the rest of your tools find out immediately.
This article is for whoever builds the integration. If you only want RecReview to move a task or send an email when something happens, you want automations instead.
Before you start: webhooks need the Pro or Studio plan, and you have to be a workspace owner or admin.
Set one up
- Click your avatar at the top right and choose Workspace Settings.
- Open the Automations tab and scroll to the webhooks section at the bottom.
- Find the event you care about and click Configure.
- Paste the web address that should receive the message.
- Optionally fill in Secret (optional, for HMAC signature), so your side can prove the request came from RecReview.
- Click Save.
- With the webhook enabled, use the send button on its row to fire a test.
A test returns Webhook sent! with the response code, or Failed to send with the error.
One URL per event, per workspace. Saving again replaces the previous URL.
The events
| Event | Fires when |
|---|---|
video.delivery |
A video is sent for client review |
video.delivery_approved |
The client approves the final video |
video.uploaded |
A new version is uploaded |
video.comment_added |
A comment is added |
gallery.delivery |
A photo gallery is sent for client review |
gallery.delivery_approved |
The client approves the photo gallery |
gallery.comment_added |
A comment is added to a gallery photo |
plan.delivery |
A production plan is sent to a client |
script.delivery |
A script is sent to a client |
What arrives
Every request has the same shape: the event name, when it happened, and a data object with the details.
{
"event": "video.delivery",
"timestamp": "2026-09-02T14:03:11.000Z",
"data": { "project_name": "...", "client_name": "...", "video_title": "...", "version_number": 3 }
}
A delivery message also carries stats (versions, hours tracked, days open, comments resolved and total), assets with the download, review and thumbnail links, the AI summary, who delivered it and when, and the linked task.
Downloading the video from your integration
assets carries two download links, and they are for different things:
download_url— the link for PEOPLE. This is the one you forward by message or e-mail: whoever opens it goes through the usual access rules. If your workspace separates manager and reviewer, a program trying to download here without signing in as anyone will be refused — and that is intended.automation_download_url— the link for PROGRAMS. Your integration downloads the file straight from it, with nobody signed in. Use this one in automated steps: uploading to a drive, archiving, publishing.
The automation link is good for 7 days and works for that one video only. It stops working as soon as you rotate or turn off the video’s sharing — that is how you cut the access off.
Warning: These messages include client data such as name and phone number, and the automation link downloads the file without asking for anything else. Send them only to a service you control, and do not pass
automation_download_urlon to the client or outside your automation.
Verify the request
Every request carries these headers:
X-Webhook-Signature—sha256=followed by an HMAC-SHA256 of the request body, keyed with your secret.X-Webhook-Event— the event name.X-Webhook-Timestamp— the same timestamp as the payload.
Compute the same signature over the raw body and compare it with the header. Set a secret when you save the webhook: without one there is nothing to compare against, and you cannot confirm the sender.
Failures and retries
If your address does not answer, RecReview sends the message again a few times before giving up. If your side answers with an error saying it rejected the message, that is final — fix it and trigger the event again. RecReview keeps no delivery history you can browse, so keep your own log.
The address has to be reachable on the public internet: a local or internal address will not work.