← Back to Docs
Last updated: 2026-02-24
Webhooks
Webhooks let InvyMate push events to your system automatically, instead of your integration polling APIs.
For endpoint-level details, including filters and replay routes, see API Endpoints (Overview).
Plan availability
- Webhooks are available in the Pro plan.
- During active trial, this feature is available.
Where to configure
- Go to Configuration → Webhooks.
- Create one or more endpoints.
Quick start:
- Create endpoint and choose events.
- Save secret (shown once only).
- Click Verify and ensure your receiver returns
2xx. - Trigger a real event (create/update asset/person).
- Check Deliveries tab and replay failed items if needed.
Each endpoint contains:
- Name
- Destination URL (
https://...) - Subscribed event types
- Active/inactive state
- Verification status
Events in v1
Current lifecycle events:
asset.createdasset.status.changedasset.location.changedasset.assignedasset.unassignedperson.createdperson.updated
Delivery behavior
- Delivery is asynchronous (eventual, usually within minutes).
- Ordering is best-effort.
- Retry policy: 3 total attempts within 24 hours.
- Failed deliveries stay in logs and can be replayed.
- No historical backfill on endpoint create: only events emitted after creation are delivered.
Security and signatures
Each endpoint has a secret.
- You can provide a custom secret on create, or InvyMate generates one.
- Generated secret is shown once in UI.
Each delivery includes signature headers:
X-InvyMate-SignatureX-InvyMate-Signature-TimestampX-InvyMate-Delivery-IdX-InvyMate-Event-IdX-InvyMate-Event-Type
Signature format uses HMAC SHA-256:
- Header value:
t=<unix_timestamp>,v1=<hex_digest> - Signed message:
<timestamp>.<raw_body>
Idempotency (receiver-side)
Webhook delivery is at-least-once, so receivers must deduplicate.
Recommended key:
X-InvyMate-Delivery-Id
Minimal receiver flow:
- Read
X-InvyMate-Delivery-Id. - If ID already processed, return
200and skip side effects. - Verify
X-InvyMate-Signature. - Process event and persist delivery ID as processed.
Example (Node/Express pseudo-code):
const deliveryId = req.header('X-InvyMate-Delivery-Id');
if (!deliveryId) return res.status(400).send('missing delivery id');
if (await alreadyProcessed(deliveryId)) return res.status(200).send('duplicate');
verifySignature(req); // throws on invalid
await handleEvent(req.body);
await markProcessed(deliveryId);
return res.status(200).send('ok');
Verification flow
- Use Verify action on endpoint.
- InvyMate sends a verification event (
webhook.endpoint.verification). - Your receiver must return
2xxand echo the challenge from payloaddata.challenge. - Accepted verification responses:
- JSON:
{ "challenge": "<exact challenge value>" } - Plain text body:
<exact challenge value>
- JSON:
- Endpoint status is updated based on challenge-matched delivery result.
Operations UI
The Deliveries tab provides:
- Filter by endpoint and status
- Attempt count and response code
- Delivery detail view (error, response snippet, payload)
- Replay single delivery
- Replay entire event
Replay actions explained
There are two replay actions and they solve different problems:
- Replay delivery = retry one specific failed delivery row (one endpoint + one event).
- Replay event = re-run the source event flow and enqueue fresh delivery attempts for that event context.
Practical example:
- Asset status changes to
retired. - Endpoint A fails, endpoint B succeeds.
- If only endpoint A failed, use Replay delivery on endpoint A row.
- If receiver logic/outage affected broader processing and you want to re-run event handling, use Replay event.
Health and escalations
GET /api/v1/webhooks/healthreturns delivery health counters for a time window.- Optional query:
windowMinutes(5..1440), default60. - Summary includes success rate, failed/dead counts, retry depth, and top failing endpoints.
Sustained failure automation:
- InvyMate evaluates webhook health every 15 minutes.
- Escalation triggers when:
- any dead deliveries exist in the last 15 minutes, or
- success rate is below 95% with at least 10 deliveries in the window.
- Escalation is sent as in-app notification to configured escalation recipients.
Incident runbook (v1)
When webhook delivery degrades:
- Open Configuration → Webhooks → Deliveries.
- Filter by
failed/deadand inspect response codes + snippets. - Verify receiver availability and signature validation.
- Fix receiver endpoint (or credentials/allowlist).
- Replay failed delivery or replay full event.
Deployment checks:
- Confirm your endpoint is reachable from the public internet.
- Confirm your endpoint returns
2xxand verifies signatures correctly.
Known limitations (v1)
- No per-endpoint custom retry policy
- No strict global ordering guarantee
- No batch replay workflow (single actions only)