The snag
Polling for record changes is slow, expensive, and always missing the edge case you care about.
How Zivvy helps
Register a webhook subscription against 100+ events; every delivery is HMAC-SHA256 signed with your secret and retries with exponential backoff for 24 hours.
Before Zivvy
Handoffs go missing, owners are unclear, audits get painful.
What you get
- 100+ typed event slugs (sales-orders.submitted, payment-entries.paid, ...)
- HMAC-SHA256 signature via X-Zivvy-Signature header
- Exponential retries for 24h + per-event delivery log
Workflow stream
Ship a payload only when sales-invoices.submitted actually fires
Common uses
01
Ship a payload only when sales-invoices.submitted actually fires
02
Chain Zivvy → Slack → PagerDuty for on-call alerts
03
Warehouse ingest that mirrors every /v1/... row change
Integration code
Open API referenceRegister a subscription
curl -X POST https://integrate.zivvy.xyz/v1/webhook-subscriptions \
-H "Authorization: Bearer $ZIVVY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://api.your-app.com/hooks/zivvy",
"events": ["sales-invoices.paid", "sales-orders.submitted"],
"secret": "whsec_..."
}'Verify + handle
import crypto from "crypto";
function verify(rawBody, signature, secret) {
const digest = crypto
.createHmac("sha256", secret)
.update(rawBody)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(digest),
Buffer.from(signature)
);
}
export async function POST(req) {
const raw = await req.text();
const ok = verify(raw, req.headers.get("x-zivvy-signature"), process.env.WHSEC);
if (!ok) return new Response("bad signature", { status: 401 });
const evt = JSON.parse(raw);
// ...handle evt.event
return new Response("ok");
}Verify in Python
import hmac, hashlib
def verify(raw: bytes, signature: str, secret: str) -> bool:
digest = hmac.new(secret.encode(), raw, hashlib.sha256).hexdigest()
return hmac.compare_digest(digest, signature)API endpoints
POST /v1/webhook-subscriptionsGET /v1/webhook-subscriptionsDELETE /v1/webhook-subscriptions/{id}GET /v1/webhook-deliveries
Events emitted
HMAC-SHA256 signed webhooks, retried for 24 hours.
- customers.created
- sales-orders.submitted
- sales-invoices.paid
- payment-entries.paid
- stock-entries.submitted
0
free seats forever
0
card required to start
1
workspace for the workflow
Questions
Ready to try it?
Free plan. Two seats. No card.