Skip to main content
A webhook consumer receives ShoulderTap’s events as HTTP POSTs. This is the standard way to integrate a consumer that runs as its own service: you register a URL, and ShoulderTap POSTs to it whenever something happens to one of your requests.

Register

Register a consumer with webhook delivery. Declare the kinds it handles and the URL to POST to:
See the Consumers endpoint for every registration field, including auto_accept and custom kind_schemas.

Event payloads

Each POST body has an event field naming what happened, plus the relevant data:
The one that matters is proposal_accepted — that’s when a human has approved the answer and you should write it to your system of record. The proposal object carries the expert’s verbatim answer, the LLM-structured form, and provenance. See the ContextProposal contract.

Handle the webhook

A minimal handler validates the payload and acts only on acceptance:
ContextProposal does not carry the original request’s context. If your write-back needs to know which entity a request mapped to (for example, which glossary term to update), track that mapping on the consumer side, keyed by request_id. The examples/openmetadata_sync/ consumer in the repository shows this pattern with a small /remember endpoint.

Write-back adapters

Rather than writing the delivery-to-system-of-record logic yourself, you can use a built-in adapter that turns an accepted proposal into a write against OpenMetadata or any webhook target. See Write-back adapters.