Outbound Webhooks

Push events from FreeMaint to your external systems in real time

5 min read
Print this section

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

  1. Open /company-settings/webhooks โ€” Requires the company settings permission.
  2. Click 'Add Webhook' โ€” Give it a name, an https:// URL and tick the events you want.
  3. 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.
  4. 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.

Was this page helpful?