Lean payload. Webhook bodies carry IDs and status only, never the full proposal document. After a notification, call the integrations API to fetch what you need.
Add a webhook endpoint
1
Open Account → Webhooks
You must hold Manage integrations to see this screen. Org admins have it by default.
2
Add your HTTPS URL
Enter the endpoint that will receive
POST requests and give it a descriptive name.3
Choose the events
Pick the event types you want to receive (see the event catalog below). Most partners subscribe to
quotation.proposal.completed and quotation.failed.4
Pick a trigger mode
- Headless only (default): only notify when the quote was started with an API key. Recommended for partner integrations to avoid noise from UI activity.
- Always: notify for both UI Quick Quotes and API-key runs.
5
Copy the signing secret
The
whsec_... value is shown once. Store it securely; you will need it to verify signatures.6
Send a test delivery
Use Send test to confirm your URL accepts deliveries. Check the delivery log for HTTP status codes and errors.
Event catalog
Payload shape
Lean webhook JSON
status is failed, error_code may be set, and step is the failed step when known. Always deduplicate on id because delivery is at-least-once.
Delivery headers
Every delivery includes these headers:Verify signatures
Every request is signed with your endpoint’s secret. Verify the signature before trusting the payload.1
Keep the raw body bytes
Do not parse and re-serialize the JSON before checking the signature; whitespace differences will break the HMAC.
2
Compute HMAC-SHA256
Compute
HMAC-SHA256(secret, timestamp + "." + rawBody) using the whsec_... value you stored when creating the endpoint.3
Compare in constant time
Compare your hex digest against the value after
v1= in X-Prophic-Signature. Use a constant-time comparison to prevent timing attacks.4
Check the timestamp
Reject the request if
X-Prophic-Timestamp is more than about five minutes from your server clock. This blocks replay attacks.5
Deduplicate on event ID
Track processed
id values so at-least-once retries do not double-process the same event.Example: Node.js verification
verify.js
Delivery behavior
- HTTPS only. Prophic will not deliver to plain HTTP endpoints.
- ~10 second timeout. Return
2xxquickly. Do the heavy work asynchronously. - Exponential backoff. Failed deliveries retry up to 8 times.
HTTP 410is permanent. Return410 Goneto stop future retries for a specific event.- At-least-once. Deduplicate on
id.
Trigger modes
End-to-end checklist
- API key created and stored
-
POST /quotationsreturns202and aquotation_id - Webhook endpoint enabled with the events you care about
- Test event succeeds in the delivery log
- Signature verification works in your receiver
-
GET .../document-urlreturns a working short-lived URL afterquotation.proposal.completed
Related
API Reference
Full contracts for managing endpoints and delivery logs.
API Keys
Create the credentials that scope your headless quotes.