Safeguard
Developer Tools•

Should a webhook carry the full record or just an ID?

Full payloads are convenient, thin payloads leak less. A decision guide for webhook design with data exposure, size limits and receiver trust in mind.

Safeguard Security Team
3 min read

For sensitive data, send a thin payload with an event type and an identifier, and let the receiver fetch details over an authenticated API. Use full payloads when data is low risk and receivers benefit from fewer calls. The Standard Webhooks spec suggests keeping payloads usually under 20 KB.

Definition

A thin webhook says what happened and which object it concerns, for example an order was updated and its id. A full or fat webhook includes the object's data in the body. Which to pick is a trade off between convenience, exposure and resilience.

What the spec says about size

The Standard Webhooks specification suggests payloads are usually smaller than 20 KB, and that for large assets you send a link instead. It is a community specification, so treat it as guidance.

Comparing the two

FactorThin payloadFull payload
Data exposure in transit and logsLow, just idsHigher, the receiver's logs and proxies may store the data
Receiver effortOne extra authenticated fetchNone
Stale data riskLow, fetch returns current stateHigher, retried deliveries may carry old data
AuthorizationFetch enforces current permissionsDecided at send time
Load on your APIExtra requests on eventsNone
Size problemsRarePossible for big objects
Signature valueStill needed for authenticityStill needed

Why exposure matters

A webhook body travels through the receiver's load balancers, web servers and logging tools. Anything in the body may be written to a log by a team you do not control. If the payload holds personal data, that spreads it to places you never assessed. A thin payload keeps the sensitive record behind your own access controls.

Stale data matters too. Retries can span days, per the spec. A full payload delivered on day three may describe an object that has since changed. A thin payload makes the receiver fetch the present truth.

A decision guide

  1. Does the object contain personal, financial or health data? Choose thin.
  2. Do receivers need the data within milliseconds and tolerate staleness? Full may be fine.
  3. Is the object large or variable? Choose thin, or send a link.
  4. Can receivers authenticate to your API easily? If not, thin has a cost.
  5. Can you offer both, with the receiver choosing per endpoint? That often suits mixed audiences.

Steps

  1. Classify each event type by the sensitivity of its fields.
  2. Default sensitive events to thin and document the fetch endpoint.
  3. Sign every delivery either way. See sending webhooks safely.
  4. Include a version and event id so receivers can deduplicate. See handling duplicates.
  5. Tell customers not to log full bodies for sensitive event types.

Where Safeguard fits

Safeguard's API security scanning helps review what data your endpoints return, and its compliance evidence automation helps document data handling decisions. The free scan is at https://gold.safeguard.sh/scan.

Quick check

Does a thin payload remove the need for signatures?

No. Receivers still need to know the event came from you, otherwise anyone can trigger fetches.

Is a thin webhook always better?

No. It adds a round trip. Choose by data sensitivity and receiver needs.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.