Guides · Render
Get a Mac notification when a Render deploy ends or a service fails
Render's workspace webhooks post a small JSON event when a deploy starts or ends, a build finishes, a cron job runs or a server fails. One EventBar hook with type as the type field gives each its own switch and count.
Needs: the free EventBar app on your Mac, an EventBar account, and a Render account with permission to add webhooks. About five minutes. Generic JSON.
Steps
- Create the webhook URL. In the EventBar dashboard, open the Webhooks tab, pick the group this belongs to (one group per site or app is the usual shape), choose the provider Generic JSON, name it, and press Create. Copy the URL; it stays visible and can be rotated any time.
- Paste it into Render. In Render: Workspace Settings, then Webhooks, then Add Webhook. Paste the hook URL and pick the events;
deploy_endedandserver_failedare the useful pair. Create the EventBar hook as Generic JSON with type fieldtype. - Trigger one. Most services offer a test delivery; otherwise do the real thing once. It shows up in the dashboard's Events tab within a second and in the menu bar, as an undefined type named after the event. That first one is your proof the wiring works.
- Make it read well. Press Define on the new type and give it a title and a body template. Fields come from the payload, nested ones with dots. The table below is a starting point.
What you'll see
| Type | Title | Body template |
|---|---|---|
deploy_ended | Deploy ended | service {data.serviceId} |
server_failed | Server failed | service {data.serviceId} |
cron_job_run_ended | Cron job ran | service {data.serviceId} |
Every type has its own switch in the menu bar, so a noisy one can be quiet on this Mac and still counted. Counts cover the last hour, 24 hours, 7 days, 30 days and all time.
Worth knowing
- Render's payload is thin on purpose:
type,timestampand adataobject with the deploy or runidand theserviceId; the rest is meant to be fetched from the API. Whether a deploy succeeded is not reliably in it, so letserver_failedbe your failure signal, and check one delivery in the dashboard's Events tab before adding fields. - Render signs with Standard Webhooks headers (
webhook-id,webhook-signature) and shows a signing secret when you create the webhook. The generic preset doesn't check it; the URL is the secret. On Plus or Pro the Standard Webhooks preset verifies it and reads the sametype. - Link template
https://dashboard.render.com/web/{data.serviceId}opens a web service from the notification; the path segment differs for cron jobs and private services, so copy it from the dashboard URL you see.
The full contract, including how each preset reads a payload and what the answers mean, is in the API docs. Something about Render's payload changed? Tell us and we'll fix the guide.