Outbound Webhooks
Push events from FreeMaint to your external systems in real time
5 min read
Webhooks let FreeMaint POST to a URL you control the moment something happens, so another system (ERP, billing, inventory, accounting, a chat channel) stays in step without anyone re-keying it. Configure from /company-settings/webhooks. Starter is capped at 100 deliveries/day; Business and above are unlimited. For the full payload reference, see API & GraphQL > Webhooks.
Available events
- work_order.created
- work_order.completed
- request.created
- request.status_changed
- part.low_stock
- part.out_of_stock
- part.consumed โ consumed on or returned from a work order
- compliance.chain_divergence (Enterprise)
- report.daily_summary โ the day's completed work, once a day at the hour you choose
Delivery semantics
- POST with a JSON body: { event, timestamp, data }
- X-FreeMaint-Signature header โ t=<unix seconds>,v1=<hex>, where v1 is HMAC-SHA256 of "<t>.<raw body>" keyed with your webhook secret. Verify it on every request, against the raw body
- X-FreeMaint-Event and X-FreeMaint-Delivery-Id are sent alongside
- Network errors and 5xx retry up to 3 times with exponential backoff (about 2s, 4s, 8s); a 4xx is a permanent rejection and is not retried
- Every attempt is logged under the webhook with its status, response code and attempt count โ and any settled delivery can be replayed from there
Configuration
- Open /company-settings/webhooks โ Requires the company settings permission.
- Click 'Add Webhook' โ Give it a name, an https:// URL and tick the events you want.
- Copy the signing secret โ It is shown ONCE on creation. You can generate a new one later with 'Rotate secret', which invalidates the old one.
- Watch the deliveries โ Open the delivery history on the webhook to confirm events arrive and to replay anything that failed.
Tier caps
- Starter โ 100 deliveries/day per company (counter resets at 00:00 UTC)
- Business โ unlimited
- Enterprise โ unlimited
- The counter is per delivery ATTEMPT, so three webhooks on the same event burn three units
Tip
Always verify X-FreeMaint-Signature server-side, against the raw request body โ without it you cannot tell a genuine FreeMaint event from a spoofed one, and a spoofed part.consumed could move stock in your ERP.
Related articles
Was this page helpful?