Skip to content

POST /v1/webhooks/smartlead/{receiver_token}

Call POST /v1/webhooks/smartlead/{receiver_token}
Price free
Scope none (public endpoint)
Operation id receiveSmartleadWebhook

Point Smartlead’s webhook at this URL (copy it from the console) and Verdict turns its events into outcomes on the decision you tagged when sending. Not called by agents. The body is Smartlead’s own payload, passed through unchanged. Verification: Smartlead’s webhook secret is checked when configured; otherwise the per-org receiver_token in the path authenticates the call. Mapping: EMAIL_SENT to delivered, EMAIL_BOUNCE to bounced, EMAIL_REPLY to replied, lead category changes to interested or not_interested. Idempotent on the vendor’s event id. Free. Verdict never holds your Smartlead credentials.

Copy it as curl. Set VERDICT_API_KEY first; uuidgen makes a fresh Idempotency-Key.

Request
curl -X POST 'https://api.askverdict.io/v1/webhooks/smartlead/%3Creceiver_token%3E' \
-H 'Content-Type: application/json' \
-d '{
"event_type": "EMAIL_REPLY",
"event_timestamp": "2026-11-06T09:12:00Z",
"campaign_id": 4821,
"custom_fields": {
"verdict_decision_id": "dec_01JC3Z4Y8R9K2M5N7P1Q3S5T7V"
}
}'

200: The payload was verified and processed.

200 response
{
"received": true,
"duplicate": false,
"outcome_ids": [
"out_01JC3Z4Y8R9K2M5N7P1Q3S5T7V"
]
}
Name In Type Required Description
receiver_token path string yes Per-org receiver token issued in the console; identifies your organization. Treat the full URL as a secret.

Schema VendorWebhookBody. Smartlead’s webhook payload.

Type: object.

Schema WebhookReceipt.

Field Type Required Description
received enum: true yes The payload was verified and accepted.
duplicate boolean yes True when this vendor event id was already processed.
outcome_ids array of string yes Outcomes created from the payload; empty when it maps to none.

Errors are RFC 9457 problem details and are never billed. Branch on type. See Errors.

Status Meaning
400 Invalid request: malformed JSON, an unknown field, a failed constraint or a size limit (invalid_request).
401 Missing, malformed, revoked or expired API key, or a bad webhook signature (unauthorized).
404 The resource does not exist in this organization (not_found).
429 Rate limited (rate_limited). Wait Retry-After seconds.
500 Unexpected server error (internal). Not billed; retry with the same Idempotency-Key.

Open the interactive reference to send this request from the browser. The full document is at /openapi.json.