Skip to main content
Webhooks enable real-time communication between Matcher and external systems. This guide covers outbound event notifications and inbound resolution callbacks.

Overview


Matcher supports bidirectional webhook communication, keeping your operational tools in sync with every reconciliation event in real time.
  • Outbound webhooks: exception routing dispatches exceptions to external targets: JIRA, ServiceNow, or an HTTP webhook endpoint you configure
  • Inbound callbacks: External systems notify Matcher when they take an action
When exception routing sends an exception to a webhook target, Matcher delivers a signed HTTP request to your endpoint. External systems like JIRA or ServiceNow can then send callbacks to update exception status or close items automatically. This two-way flow keeps your tools in sync without manual intervention. Beyond exception dispatch, Matcher publishes its full lifecycle event catalog on the platform’s streaming backbone. Those events reach you as a stream, not as HTTP webhooks.
Matcher Webhooks Callbacks

Two-way flow between Matcher and external systems.

Outbound events


Matcher emits events when significant actions occur in the reconciliation process. Matcher publishes the catalog below on the streaming backbone. Exception events also reach HTTP webhook endpoints through exception routing.

Available events

Matcher defines its event catalog centrally. The tables below group the most commonly consumed events by domain. Configuration Discovery Ingestion Matching Exceptions and disputes Governance and reporting

Webhook delivery payload

Exception dispatches to a webhook target carry a consistent payload with eventId, eventType, timestamp, the exception snapshot under data, and routing/tracing information under metadata:
Matcher omits data.dueAt and the metadata fields traceId, queue, ruleName, and assignee when they have no value. Streaming catalog events (the tables above) follow their own per-event schemas on the event stream. Matcher does not deliver them in this HTTP shape.

Inbound callbacks


External systems send callbacks to Matcher to update exception status after processing. The callback endpoint accepts status updates, resolution notes, and assignee changes from any external system.

Process a callback

The X-Callback-Token header authenticates the callback endpoint. An operator JWT does not authenticate it. The header carries an opaque token from the callback credentials surface. Every field below is mandatory. dueAt and updatedAt accept null, and payload can be an empty object:
cURL
The externalSystem field identifies the external system that processed the exception. Common values include "JIRA", "SERVICENOW", or "WEBHOOK", but callbacks can report any system identifier. Omitting any of the nine required fields returns a 422.

Response

API Reference: Process callback
When Matcher processes a callback, it updates the exception status and records the resolution in the audit trail. Use the X-Idempotency-Key header to prevent duplicate processing.

Automatic retry for failed callbacks

If a previous callback for the same idempotency key failed during processing, Matcher automatically attempts to reacquire the idempotency lock and reprocess the callback. This means you don’t need to generate a new idempotency key when retrying a failed callback. Resend the same request and Matcher handles the recovery. The retry behavior applies only to callbacks with an internal failed state. Matcher still deduplicates callbacks that completed successfully.

Callback credentials


An opaque bearer token authenticates inbound callbacks. The external system sends this token in the X-Callback-Token header. You mint, list, rotate, and revoke these callback credentials through a dedicated CRUD surface under /v1/exceptions/callbacks/credentials. Each credential belongs to the caller’s tenant. Matcher stores only the token’s SHA-256 hash server-side. The mint and rotate responses return the raw token exactly once.

Mint a credential

The request body is optional. Provide externalSystem as an operator-legible label for the system this token authenticates.
cURL
The 201 response (CredentialSecretResponse) returns:
Only the mint and rotate responses show the raw token. Store it securely on receipt. You cannot retrieve it again. If you lose or leak the token, rotate or revoke the credential.

Rotate a credential

cURL
Rotation returns a new CredentialSecretResponse (new raw token) and revokes the previous credential atomically, so external callers experience no gap when you swap the token.

Revoke a credential

cURL
Revocation is terminal: the credential can no longer authenticate inbound callbacks.

Webhook security


Signature verification

When you configure a webhook shared secret, Matcher signs each delivery with an HMAC-SHA256 over the raw request body. Matcher sends the signature in the X-Signature-256 header, formatted as sha256=<hex-digest>:
Each delivery also carries an X-Idempotency-Key header so receivers can deduplicate retries. Verification process:
  1. Compute HMAC-SHA256 of the raw request body using the webhook shared secret
  2. Prefix the hex digest with sha256=
  3. Compare (constant-time) with the X-Signature-256 header
Example (Node.js):
Example (Python):

Network posture

Matcher deploys in your own infrastructure, so webhook deliveries originate from your deployment’s egress. There is no fixed Lerian IP range to allowlist. Serve webhook endpoints over HTTPS with a valid certificate. As an SSRF guard, Matcher refuses to deliver to private or loopback IP addresses unless the deployment explicitly allows them (development only).

Retry logic


Matcher retries failed webhook deliveries with exponential backoff.

Default retry policy

By default, Matcher retries a failed delivery up to 3 times. Delays follow exponential backoff from a 1-second base, with jitter to spread retries. The exact spacing varies from attempt to attempt rather than following a fixed ladder.

Retry conditions

Retries occur for:
  • HTTP 429 responses
  • HTTP 5xx responses
  • Transport errors (connection failures, timeouts)
No retry for:
  • Other HTTP 4xx responses

Best practices


Always verify the HMAC signature before processing webhook payloads. This prevents spoofed requests.
Return a 2xx response within 5 seconds. Process the event asynchronously if needed.
Deliveries may arrive more than once. Deduplicate on the X-Idempotency-Key header or the payload’s eventId.
Set up alerts for webhook failure rates. Investigate persistent failures promptly.

Next steps


Exception Routing

Configure how exceptions trigger webhook events.

External Sources

Set up data sources that can push via webhooks.