POST request to a URL you control, and your system processes it in real time. There is no need to poll the API on a timer or wait for an overnight batch.
This makes webhooks the right choice whenever you need your ERP, MES, or any downstream system to react immediately to shop-floor events.
How to register a webhook endpoint
Create a publicly accessible endpoint
Your webhook receiver must be reachable over HTTPS from the internet. Deploy a small HTTP handler in your infrastructure — any language or framework works. The endpoint should return HTTP
200 quickly (within a few seconds) to acknowledge receipt.Open webhook settings in Bold
Log in to Bold Factory and go to Settings → Integrations → Webhooks. Click Add Webhook.
Configure the webhook
Enter your endpoint URL, select the event types you want to subscribe to, and optionally add a secret signing key (strongly recommended — see Verifying signatures below). Click Save.
Available event types
Bold Factory emits webhooks across all major operational areas — production, stock, purchasing, maintenance, and quality. The table below shows representative examples of the kinds of events you can subscribe to. Event names follow adomain.action pattern.
| Example event type | Triggered when… |
|---|---|
production.order.completed | A production order is marked as finished and all quantities are confirmed. |
production.order.created | A new production order is created in Bold. |
stock.movement.created | A stock entry or exit is recorded (goods receipt, issue to production, adjustment). |
purchasing.order.received | A goods receipt is confirmed against a purchase order. |
maintenance.work_order.closed | A maintenance work order is closed and labor/parts are logged. |
The examples above are illustrative. The full and up-to-date list of available event types is shown in Settings → Integrations → Webhooks when you create or edit a subscription.
Webhook payload structure
Every webhook Bold sends shares the same envelope structure. Thedata object varies by event type and contains the fields relevant to that event — refer to the Swagger docs for per-event schemas. The example below illustrates a production.order.completed delivery; actual field names may differ.
The
data field contents above are illustrative. The exact fields for each event type are defined in the Swagger reference.| Envelope field | Type | Description |
|---|---|---|
id | string | Unique identifier for this webhook delivery. Use it for idempotency checks. |
event | string | The event type that triggered this delivery. |
timestamp | string (ISO 8601) | UTC timestamp of when the event occurred in Bold. |
version | string | Payload schema version. |
data | object | Event-specific payload. Schema varies by event type. |
Verifying webhook signatures
Bold signs every outgoing webhook request so you can confirm the payload came from Bold and was not tampered with in transit. When you register a webhook, you provide a secret signing key. Bold uses this key to compute an HMAC-SHA256 signature of the raw request body and includes it in theX-Bold-Signature header.
To verify the signature:
Read the raw request body
Compute the HMAC over the raw bytes before any JSON parsing. Parsing first can alter whitespace and break the signature.
Compute your own HMAC-SHA256
Use your stored signing secret as the HMAC key and the raw body as the message.
Compare signatures
Compare the hex digest you computed with the value in
X-Bold-Signature. Use a constant-time comparison function to prevent timing attacks.Handling failures and retries
Bold expects your endpoint to return an HTTP2xx status code within a few seconds of receiving the request. If your endpoint returns a non-2xx response or times out, Bold treats the delivery as failed and retries automatically using an exponential back-off schedule.
After a configurable number of failed attempts, Bold stops retrying and marks the delivery as permanently failed. You can inspect failed deliveries and trigger a manual re-delivery from Settings → Integrations → Webhooks → Delivery Log.
Design for idempotency. Network issues can cause duplicate deliveries even for successful events. Use the id field in the payload envelope to detect and discard duplicates before processing.
Testing webhooks during development
Your local development server is not publicly reachable, so Bold cannot deliver webhooks tolocalhost. Use one of these approaches while building:
Use a tunneling tool (e.g. ngrok)
Use a tunneling tool (e.g. ngrok)
Run a tunnel tool such as ngrok or Cloudflare Tunnel to expose your local port over a temporary public HTTPS URL. Register that URL in Bold’s webhook settings. Tunneling tools also show you the raw request/response, which is useful for debugging.
Use Bold's built-in test delivery
Use Bold's built-in test delivery
In Settings → Integrations → Webhooks, select your webhook and click Send test event. Bold fires a real POST to your registered URL with a sample payload so you can confirm connectivity and signature verification without waiting for a real event.
Inspect the delivery log
Inspect the delivery log
Every webhook delivery — successful or failed — is logged in Settings → Integrations → Webhooks → Delivery Log. You can view the exact headers and body Bold sent and the response your endpoint returned, making it easy to diagnose issues.
