Skip to main content
modiva.ai
Sign In

Webhooks

Subscribe to the events you care about and Modiva POSTs them to your endpoint. Inbound events from every platform are normalized into one envelope — an Instagram comment and a TikTok DM arrive in the same shape.

{
  "id": "evt_5c1f9a2b",
  "type": "comment.created",
  "platform": "instagram",
  "profile_id": "acme",
  "connection_id": "conn_18a2",
  "payload": { "text": "…", "author": "@mara_k" },
  "received_at": "2026-06-22T09:31:04Z"
}

Delivery flow

1Create a webhook endpoint and signing secret in the dashboard.
2Subscribe only to the event types you actually handle.
3Receive a POST from Modiva whenever a matching event fires.
4Verify the X-Modiva-Signature header, then return 2xx fast.
5Move heavy work to a background job — replay misses from the logs.

Retries & backoff

A delivery counts as successful only when your endpoint returns a 2xx within 5 seconds. Anything else retries on an exponential schedule — up to 8 attempts capped at 24h apart.

AttemptWait beforeElapsed total
1immediate0
230s~30s
32m~2m 30s
410m~12m 30s
51h~1h 12m
66h~7h 12m
724h (capped)~31h
824h (capped)~55h → dead-letter

After the 8th failure the event moves to a dead-letter queue — replay it any time from Dashboard → Webhook logs. Endpoints are never auto-disabled; you pause or remove them yourself.

Idempotency

Retries reuse the same event id. Dedupe on it — treat each delivery as a notification, not a source of truth.

Signature

Every POST carries an X-Modiva-Signature HMAC-SHA256 header. Verify it against your signing secret.

const sig = req.headers["x-modiva-signature"];
const expected = hmacSHA256(rawBody, process.env.MODIVA_WH_SECRET);
if (sig !== expected) return res.status(401).end();

Available events

Posts
post.publishedpost.scheduledpost.failedpost.deleted
Engagement
comment.createdcomment.replymessage.receivedmessage.sentreaction.added
Reviews & leads
review.createdreview.repliedlead.created
Scheduling
queue.publishedqueue.failedschedule.updated
Connections
account.connectedaccount.disconnectedaccount.reauth_required
Webhooks — Modiva