ArgorantDocs

Webhooks

Get pushed when an export finishes, a verification completes or a list gains matches. HMAC-signed, retried, replay-safe.

Events

EventWhenData
export.readyA verified export finished buildingjob_id, totals, download_api_path
verification.completedA single-email verification finishedemail, status, deliverable
segment.new_matchesA saved list gained new matching recordslist_id, new_matches
reply.receivedA reply to one of your campaigns arrivedclassification, lead_email, campaign_id, subject, snippet
reply.positiveA reply was classified interested or meeting bookedsame as above
email.bouncedA campaign email bouncedlead_email, campaign_id, subject
email.unsubscribedA recipient opted out or complainedclassification, lead_email, campaign_id

Create a webhook

Shell
curl -X POST "https://app.argorant.com/api/mcp/webhooks" \
  -H "Authorization: Bearer $ARGORANT_API_KEY" -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/hooks/argorant","events":["export.ready","reply.received","reply.positive","email.bounced"]}'
# → { "id": "12", "secret": "whsec_…" }   the secret is shown once

List with GET, remove with DELETE /api/mcp/webhooks/{id}, queue a sample with POST /api/mcp/webhooks/{id}/test. Up to 10 active webhooks per account.

Delivery

HTTP
POST /hooks/argorant
Content-Type: application/json
X-Argorant-Event: export.ready
X-Argorant-Delivery: 8841
X-Argorant-Signature: sha256=…

{ "event": "export.ready", "delivery_id": "8841", "created_at": "2026-06-10T09:14:03+00:00",
  "data": { "job_id": 123, "status": "done", "total_rows": 500, "verified_rows": 463, "download_api_path": "/api/mcp/exports/123/download" } }

Verify the signature

Python
import hmac, hashlib
def verify(secret: str, raw_body: bytes, signature_header: str) -> bool:
    expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature_header)

Failed deliveries retry with backoff for 24 hours. X-Argorant-Delivery is stable across retries, so deduplicate on it.

On this page