POST with the event.
Add an endpoint
- Open Settings > Webhooks.
- Select Add endpoint.
- Enter the URL and choose the events to send. Select all also sends event types we add later.
- Copy the signing secret. We show it once.
- Every member can see endpoints and deliveries.
- Only admins can add, change, turn off, delete, roll secrets, resend or send tests.
- A firm can have up to 16 endpoints.
- The URL must be
https, at most 2048 characters, with no user name or password. Private and internal addresses are refused. - An endpoint gets only events that happen after it was added.
webhook.test event straight away. It is tried once.
Event types
GET /event-types returns the same list. The pages under Webhook events in the sidebar show each event’s data.
Payloads hold ids, not details. They never carry a person’s name, an email address, a message body, a note, a file name or an amount. The one exception is client.created, which carries the client’s name. Read the full record through the API, for example GET /clients/{client}.
Envelope
Every request body is one JSON object:
Each request also carries these headers:
Verify the signature
CheckRedbark-Signature on every request before you trust it.
- The secret starts with
whsec_. Use the whole string, prefix included, as the key. - The signed text is the timestamp, a full stop, then the raw body:
<t>.<body>. - The signature is HMAC-SHA256 of that text, as lowercase hex.
- While a secret roll overlaps, the header has one
v1for each active secret. Accept the request if any of them matches. - Reject a timestamp more than 5 minutes from your clock. That stops replays.
express.raw({ type: 'application/json' }) and pass req.body.toString('utf8').
Respond quickly
Answer with any 2xx within 10 seconds. Do slow work after you answer. Anything else counts as a failure, including a redirect.Retries
A failed delivery is tried again, up to 8 attempts in all:- The last attempt is about 45 hours after the first. After it the delivery is marked failed.
- Every result that is not a 2xx is retried, including 4xx.
- Each attempt is signed again with a fresh timestamp.
- You can resend any delivery from the endpoint’s page or with the API. A resend counts toward the 8 attempts and does not restart the schedule.
- The endpoint’s page shows the last 30 days of deliveries, with each response and payload.
Dedupe on id
Deliveries can arrive more than once and out of order. Store each eventid you have handled and skip repeats. Use created_at to put events in order.
Failing endpoints
An endpoint shows as Failing after 20 failed attempts in a row, or once its failures have gone on for 24 hours. One success clears it. If an endpoint keeps failing for 3 days, Advisor turns it off and emails your admins. An admin can turn it back on. Events from while it was off are not sent.Roll the secret
Select Roll secret on the endpoint’s page, or callPOST /webhook-endpoints/{endpoint}/roll-secret. You get the new secret once.
For 24 hours, each request carries a signature for both the new and the old secret. Switch your receiver to the new secret within that time. After 24 hours only the new secret signs.
