registration.linked and registration.revoked.
This guide is about those two events only. The endpoint, the signature, the retries, and the
delivery log are the same for every event type and live in Receive
events — wire that first, then come back here.
1
Subscribe to the two registration events
Create a webhook with an Five endpoints per firm, so an onboarding service and a billing service can each hold their own
filter rather than sharing one handler.
events filter when a
system only cares about onboarding. An omitted or empty events list receives everything,
including event types added later.2
Read the payload
Every delivery is a POST with the same envelope: a
type, a createdAt, and a data object.
For these two, data names the registration, the trader’s email, and the account number —
exactly the three things you sent when you created it, so your own record is findable without a
lookup table.There is no event for a registration expiring. A pending registration that nobody links reaches
its
expiresAt silently, so expiry is something you notice on the list, not something that
arrives.3
Make the handler idempotent
A non-
2xx answer — including a timeout — is retried with backoff for about nine hours in
total, so your endpoint may see the same event twice. Key your processing on the delivery id
from the log, or on registrationId in the payload. Either is stable; the arrival is not.4
Reconcile against the list route
List your registrations is the settling read.
It returns every registration your firm has made, newest first, with its current Run it on a schedule and diff it against your own table. Anything your table calls pending that
the list calls
status and
linkedAt, and it is computed from the same records the events are emitted from.linked is a delivery you dropped; anything the list calls expired is a
trader who never arrived.When your records and ours disagree
Work down this order — each step is cheaper than the one after it.- The list route. It is the source of truth for status. If it says
linked, the handoff happened, whatever your table says. - The delivery log. Every attempt for one
endpoint, newest first, each row carrying the exact payload we sent — so an event your receiver
dropped can be replayed from here rather than lost.
pendingmeans the delivery is still inside its retry schedule;failedmeans the schedule was exhausted and we stopped. - A test delivery. A signed
ping, right now, reporting exactly what your endpoint answered. It separates a broken delivery from a handler that is refusing.
Where to go deeper
- Receive events — the endpoint, the signature, the retry schedule, the log.
- Register an account — the lifecycle these events report on.
- Events and webhooks — the delivery contract in full.
- Connect Overview — where registrations sit in the product.