Webhooks
A routine can send a webhook instead of running an agent: an HTTP POST, no model involved. If you already run n8n, Zapier, Make, or something you wrote yourself, this is how your meetings get there.
Set one up
Create a routine as usual, and under What it does choose Send a webhook rather than Run an agent. Three templates start you off: Push to an automation, Meeting started ping, and Full meeting export.
You then fill in three things: where it posts, what it sends, and the secret it signs with.
Where it posts
Paste the Destination URL your receiver gave you. It must be https — with one exception: plain http is allowed on localhost. An n8n running on your own machine is the same machine, and refusing it would push you to route your meetings through a public relay for something that never needs to leave the Mac.
Redirects are not followed. A 3xx to another host would hand a signed body to a destination you never named.
Events
Which event fires depends on the routine's trigger.
Trigger | Event |
|---|---|
When a meeting starts |
|
After a meeting ends |
|
A schedule, a calendar trigger, or a manual run |
|
A cron firing, a calendar trigger, and a button press are all "the routine ran". Your receiver learns which from the payload rather than from three more event names to subscribe to.
What it sends
Tick what you want in the body:
Summary
Action items
Attendees
Transcript
Notes
Links to the recording and files
The envelope only is a valid choice too — with nothing ticked, the delivery is still a usable ping.
The editor previews exactly what your receiver gets. If the body would be too large, the transcript is trimmed first: a body your receiver rejects outright is worse than one that arrives without its transcript.
Signing
Add a Signing secret and every delivery carries an X-Hyprcore-Signature header. Without one, deliveries go out unsigned.
The signature is an HMAC-SHA256 over the timestamp and the body together, not the body alone. A signature over the body by itself is replayable forever — anyone who captures one request can re-POST those exact bytes a month later and you cannot tell. Binding the timestamp in lets your receiver reject anything outside its own freshness window.
Every delivery carries four headers:
X-Hyprcore-Event— the event nameX-Hyprcore-Delivery— an ID that stays the same across retries, so you can dedupe on itX-Hyprcore-Timestamp— the signed timestampX-Hyprcore-Signature— the HMAC
The secret can only be added once the routine exists. Until then, a test posts unsigned. The secret is stored on your Mac and is never included in the routine file that syncs between your machines, so a routine arriving on a second machine has its URL and no secret until you add one there.
Retries
A delivery is attempted six times, over roughly eight hours:
Attempt | After |
|---|---|
1 | Immediately |
2 | 30 seconds |
3 | 2 minutes |
4 | 10 minutes |
5 | 1 hour |
6 | 6 hours |
A 5xx, a timeout, or a connection failure retries. A 4xx does not — a request your receiver rejected as malformed will not become valid on the sixth attempt, so it fails immediately rather than burning the retry budget.
Test it
Send test posts a real payload, built from your most recent matching meeting and marked as a test, to the destination you entered. Do this before you turn the routine on.
The delivery log
Every attempt is recorded: when it went, what came back, and the exact body that was sent. When something breaks at 3am, this is where you find out whether Hyprcore posted and your receiver refused, or Hyprcore never posted at all.
Troubleshooting
Signature checks are failing. Verify over <timestamp>.<body>, not the body alone, using the raw bytes you received rather than a re-serialized version of the parsed JSON.
Deliveries stopped after six tries. The log shows what your endpoint returned each time. Fix the endpoint and run the routine again — attempts are not resumed.
"That isn't a URL Hyprcore can post to." The destination must be http or https, and plain http only on localhost.
Nothing arrives and there is no log entry. Check the routine is enabled and that its trigger has actually fired — a meeting-ended routine needs a recorded meeting that matches its filters.
Was this article helpful?

