Setting up webhooks
In Settings → Integrations → Developers → Order notifications you can add several channels at once — e.g. Home Assistant and Discord together. Each channel has its own request body format:
- 3D Print Pricing / HA — a generic JSON payload with an HMAC signature, see the section below.
- Discord / Slack — their native incoming webhook format (no signature — the whole secret is already baked into the URL that Discord/Slack issues).
Add a channel, paste the receiver URL, enable it — 3D Print Pricing will show the secret once (only for the “3D Print Pricing / HA” format), copy it right away. Each channel’s “Send test event” button sends a synthetic webhook.test event right now, without waiting for a real order.
order.created / order.status_changed events
3D Print Pricing sends a POST with a JSON body to your URL when an order is created and on every workflow_status change. Delivery is best-effort (no retries on error in the MVP), so don’t rely on webhooks alone — use GET /print-jobs to reconcile.
POST <your URL>
Content-Type: application/json
X-3DP-Event: order.status_changed
X-3DP-Signature: sha256=<hex signature of the request body>
{
"event": "order.status_changed",
"occurred_at": "2026-08-27T18:32:10.000Z",
"data": {
"id": "b6b6c8b0-...",
"model_name": "Кронштейн",
"quantity_pieces": 4,
"material_name": "PETG",
"color_hex": "#000000",
"material_grams": 86.0,
"print_hours": 3.5,
"due_date": "2026-09-01",
"order_notes": "",
"workflow_status": "assigned",
"printer_id": null,
"printer_name": null
}
}Signature verification (pseudocode)
signature_header = "sha256=" + hex(HMAC_SHA256(webhook_secret, raw_request_body))
if signature_header != request.headers["X-3DP-Signature"]:
reject() # payload was tampered with, or the secret doesn't matchManaging subscriptions via API
The same thing as the Settings → Integrations → Developers card, but programmatically — e.g. so n8n/a script can set up a channel on first run without going into the web UI. Up to 10 channels per account.
/webhook-subscriptionsSubscription list
All channels on the account (without secrets — those are returned only once, at creation/recreation).
/webhook-subscriptionsCreate subscription
The secret (for the "3D Print Pricing / HA" format) is returned in the response once — save it right away.
/webhook-subscriptions/{id}/testSend a test event
Sends a synthetic webhook.test event to an existing subscription's URL — doesn't touch real orders.
/webhook-subscriptions/{id}/deliveriesDelivery history
The last 20 delivery attempts for this subscription (status, error, time).
/webhook-subscriptions/{id}Delete subscription
Uses the same subscription id as the field above.