Skip to content
DocsReference

Webhooks overview

Webhooks let LetsPost push real-time event notifications to your server the moment something happens — a post goes live, an account disconnects, a payment clears. No polling required.

How delivery works

When an event fires, LetsPost sends an HTTP POST request to your registered endpoint with a JSON body and two important headers:

  • X-LetsPost-Event — the event type, e.g. post.published.
  • X-LetsPost-Signature — an HMAC-SHA256 signature of the raw body, prefixed with sha256=. Always verify this before trusting the payload.

Your endpoint must respond with a 2xx status within 10 seconds. Anything else (timeout, 4xx, 5xx) is treated as a delivery failure and triggers the retry schedule below.

Retry schedule

LetsPost retries failed deliveries up to 5 attempts with exponential backoff:

AttemptDelay after previous failure
1st retry1 minute
2nd retry5 minutes
3rd retry30 minutes
4th retry2 hours
5th retry12 hours

After 5 failed attempts the event is marked permanently failed and no further retries are made. Each delivery attempt includes the same id field in the payload — use it to deduplicate events on your end.

Plan limits

PlanWebhook endpoints
FreeNot available
StarterNot available
Pro3 endpoints
MaxUnlimited

Quick start

  1. Register an endpoint via POST /v1/webhooks and save the secret returned — it's shown only once.
  2. In your handler, verify the X-LetsPost-Signature header using the secret before processing the payload.
  3. Respond with 200 OK as quickly as possible — offload slow work to a queue.

See the Events page for full payload shapes, and Verifying signatures for copy-paste code in Node.js, Python, PHP, and Ruby.

Was this page helpful?

Something unclear? Email us — we read every message.