POST to a URL you control whenever one of the post events you picked happens in the workspace. Use it to sync a CRM, trigger an internal job, or keep another system in step with TryPost.
Only the account owner and workspace admins can manage webhooks. Find them in Settings → Webhooks.
Create a webhook
1
Create webhook
In Settings → Webhooks, click Create webhook.
2
Endpoint URL
Enter a public
http:// or https:// URL (up to 255 characters). Private, loopback and link-local addresses are rejected with This endpoint is not allowed.3
Events
Select at least one event. There is no wildcard.
4
Copy the signing secret
The webhook’s page opens. Copy the Signing secret to verify deliveries. You can reveal and copy it again at any time, or rotate it.
Events
Status events fire when the status changes, not on every save. A post created already scheduled or queued sends
post.created, with status set to scheduled. Edits that keep the status (text, media, labels, a new time on a scheduled post) send nothing.
There is no event while a post is publishing, and none for notes, approvals, channel changes or member changes. Posts deleted because their channel was disconnected or their workspace was deleted do not send post.deleted.
Receive a delivery
Each delivery is aPOST with a JSON body. Respond with any 2xx status as soon as you have accepted it. Redirects are not followed: a 3xx counts as a failure. TryPost waits up to 10 seconds for a response.
Headers
Envelope
Every delivery, including the test event, uses the same envelope:Verify the signature
Compute HMAC-SHA256 of the raw body bytes with the signing secret and compare the hex digest toX-Webhook-Signature with a constant-time comparison. Do not re-serialize the parsed JSON.
Post payload
For every event exceptpost.deleted, data is the post at the moment of the event:
Media
Platforms
One entry per channel of the post:Test event
From the webhook’s page, open the actions menu and click Send test event. TryPost sends a signedwebhook.test delivery and waits up to 5 seconds. Your endpoint must answer with 2xx; otherwise the test fails with the reason (The endpoint is not reachable. or The endpoint returned HTTP 500.).
A test works even when the webhook is disabled or paused. It is not added to Deliveries and does not affect the webhook’s status.
Status, retries and pause
A failed delivery is tried 3 times, 60 seconds apart. When all three attempts fail, the delivery counts as failed; a successful delivery resets the count. At 5 failed deliveries in a row the webhook becomes Paused and the account owner receives an email with a link to it. That email cannot be turned off in Notifications.
Fix the endpoint, then click Enable endpoint to resume. Events that happened while the webhook was disabled or paused are not sent later.
Deliveries and replay
The webhook’s page lists its Deliveries, newest first, with the event, HTTP status, Attempts, the Response your endpoint returned (first 2,000 characters) and the Message payload. New deliveries appear live. Replay sends a delivery again with the samedata, a new envelope id and a new row in Deliveries. Replays work even when the webhook is disabled or paused, but a successful replay does not re-enable it.
Deliveries are kept for 7 days.
Manage a webhook
From the webhook’s actions menu:- Edit endpoint — change the URL and events.
- Enable endpoint / Disable endpoint.
- Rotate signing secret — creates a new secret. The current one stops working immediately, including for retries already waiting, so update your endpoint first.
- Send test event.
- Delete — after a confirmation, deliveries stop and the webhook’s history is removed.
Self-hosting TryPost? Deliveries run on the
webhooks queue in Horizon, and the live delivery list needs Reverb. Set TRYPOST_USER_AGENT to change the User-Agent, and TRYPOST_ALLOW_PRIVATE_NETWORK=true to allow private endpoints. See Configuration and Production.
