Clay Relay Reliable inbound enrichment relay for Clay

Callback checklist

Clay callback handoff checklist

If you are searching for Clay callback, Clay webhook callback, Clay enrichment callback, or a callback checklist, the narrow reliability question starts after the callback returns.

This page focuses on one boundary: after a Clay callback handoff returns, how do you know it matches the original run and can safely move to the next state?

No full GTM workflow required. Clay Relay only checks the handoff boundary. Start at the Clay Failure Boundary Library or browse more pages in Resources.

1. Boundary

Returned Clay callback to matched run and next safe state

This boundary starts when a Clay callback returns and ends only when that callback is matched to the original run, checked for duplicate or late delivery, and either confirmed as safe for the next state or moved into manual_review.

2. Question

Does the callback match the original run and belong in the next state?

A Clay callback handoff is only healthy when run_id and source_event_id match the original send, duplicate callback risk is cleared, and destination_status still confirms the next step can happen safely.

3. Risk

Matching, duplicate, and late-callback failures are the real checklist items

Callback does not match the original run

A Clay callback handoff fails if the returned payload cannot be tied back to the original run_id and source_event_id safely.

Duplicate callback creates duplicate side effects

An exact repeated Clay enrichment callback can create duplicate CRM writes, duplicate alerts, or duplicate outbound sends unless duplicate prevention exists.

Late callback hides a timeout history

If callback_received_at arrives after timeout_at, the run should not be presented as a normal completion. completed_after_timeout needs to stay visible.

Callback received is mistaken for destination accepted

A matching callback is not the same as downstream delivery confirmation. destination_status needs its own boundary check.

4. Minimum fields

The checklist needs correlation fields and state, not the full system

run_id

The primary identifier for the original send and the returned Clay callback.

source_event_id

The upstream event identity that should still match when the Clay webhook callback returns.

sent_to_clay_at

When the original payload was actually handed off toward Clay.

callback_received_at

When the Clay enrichment callback reached the receiver.

payload_hash

A stable hash for identifying exact duplicate callbacks safely.

destination_status

Whether the next system accepted the result after callback matching.

timeout_at

When the run was marked late before a callback arrived.

current_state

The visible state such as callback_received, duplicate_ignored, completed_after_timeout, or manual_review.

5. Suggested check

Match first, ignore exact duplicates, and keep late results visible

A callback checklist works best when the receiver treats callback matching as its own boundary check instead of folding it into a broad workflow assumption.

Suggested state chain Boundary only
sent_to_clay -> waiting_for_result -> callback_received -> delivered_downstream / duplicate_ignored / completed_after_timeout -> manual_review
  • Match on run_id and source_event_id first before any downstream action.
  • Use payload_hash to ignore exact duplicate callbacks without losing the original callback history.
  • If callback_received_at arrives after timeout_at, keep completed_after_timeout visible instead of pretending the run completed normally.
  • Track destination_status separately from callback_received_at so callback matching and delivery confirmation stay distinct.
  • Move unmatched, late, or ambiguous callbacks into manual_review instead of guessing with replay.
  • Keep the callback checklist narrow to the handoff boundary rather than the full GTM workflow.

6. No GTM logic required

The callback checklist can stand on its own

You do not need to expose lead routing, scoring, or sales process details to check whether a returned Clay callback is safe to advance.

  • No lead scoring rules are needed to match a Clay callback to the original run.
  • No routing logic is needed to decide whether an exact duplicate callback should be ignored.
  • No sales assignment model is needed to keep completed_after_timeout visible.
  • No full GTM workflow required. Clay Relay only checks the handoff boundary.

7. Synthetic example

Original send, matching callback, duplicate ignored, and late callback

Every value below is synthetic. The goal is to show how the callback checklist behaves with a normal match, an exact duplicate callback, and a late callback after timeout.

Original send All values are fake
{
  "run_id": "cr_run_20260630_801",
  "source_event_id": "evt_synthetic_801",
  "sent_to_clay_at": "2026-06-30T10:00:00Z",
  "current_state": "waiting_for_result"
}
Matching callback Normal path
{
  "run_id": "cr_run_20260630_801",
  "source_event_id": "evt_synthetic_801",
  "callback_received_at": "2026-06-30T10:02:11Z",
  "payload_hash": "sha256:synthetic-callback-801",
  "destination_status": "accepted",
  "current_state": "delivered_downstream"
}
Duplicate callback ignored payload_hash match
{
  "run_id": "cr_run_20260630_801",
  "source_event_id": "evt_synthetic_801",
  "callback_received_at": "2026-06-30T10:02:18Z",
  "payload_hash": "sha256:synthetic-callback-801",
  "destination_status": "accepted",
  "current_state": "duplicate_ignored"
}
Late callback after timeout completed_after_timeout
{
  "run_id": "cr_run_20260630_802",
  "source_event_id": "evt_synthetic_802",
  "timeout_at": "2026-06-30T10:05:00Z",
  "callback_received_at": "2026-06-30T10:06:42Z",
  "payload_hash": "sha256:synthetic-callback-802",
  "destination_status": "held",
  "current_state": "completed_after_timeout"
}

8. Related boundaries

Clay Failure Boundary Library

Browse the main library of callback, timeout, delivery, and replay boundaries.

Open the library

Clay webhook monitoring boundary

See how callback return, timeout, and delivery acceptance become visible run states.

Read the monitoring boundary

Example inbound Clay callback boundary

See a synthetic callback boundary example that uses the same matching fields and run-state logic.

Read the callback boundary

Use Clay as an enrichment API

Read the broader async architecture for webhook in, callback out, and waiting_for_result.

Read the architecture guide

Clay external API push to table boundary

Compare callback matching with the external push boundary where result return and destination acceptance also need confirmation.

Read the result-return boundary

9. What Clay Relay would track

The checklist layer is about correlation, duplicate prevention, and late-state visibility

Original send identity

Whether run_id, source_event_id, and sent_to_clay_at define one open callback boundary clearly.

Callback received

Whether callback_received_at arrived for the right run and stayed tied to the original handoff.

Duplicate callback ignored

Whether an exact repeated payload_hash was dropped safely as duplicate_ignored.

completed_after_timeout

Whether a late callback stayed visible as completed_after_timeout rather than overwriting timeout history.

Destination status

Whether the next system accepted the matched callback result after the handoff checklist passed.

Manual review

Whether ambiguous or unsafe callback outcomes were held for review before replay or retry happened.

10. CTA

Check the callback handoff boundary before it advances the wrong state

We can review one Clay callback handoff, show where run_id matching, payload_hash duplicate prevention, completed_after_timeout visibility, or destination_status is still fragile, and keep the review scoped to that boundary.