Consegne e retry
Log consegne, policy retry BullMQ e gestione idempotente.
Ogni webhook in uscita viene persistito e consegnato in modo asincrono tramite la coda BullMQ mc:webhook-delivery. Usa l'API consegne per debuggare i fallimenti e progettare receiver idempotenti.
Log consegne
GET /webhooks/endpoints/:id/deliveries?limit=20
Authorization: Bearer mc_live_xxxx
X-Tenant-Id: clxxxxxxxx
Ogni record WebhookDelivery include:
| Campo | Significato |
|---|---|
id | ID consegna (anche in X-MailingCore-Delivery-Id) |
event | Tipo evento (email.bounced, contact.unsubscribed, …) |
payload | Corpo JSON consegnato al tuo URL |
statusCode | HTTP status dal tuo server (se c'è stata risposta) |
responseBody | Corpo risposta troncato per debug |
attempt | Numero tentativo (1–5) |
deliveredAt | Timestamp dell'ultimo tentativo |
createdAt | Quando la consegna è stata accodata |
Il limit predefinito è 20 se omesso.
Policy di retry
| Impostazione | Valore |
|---|---|
| Coda | mc:webhook-delivery |
| Tentativi max | 5 |
| Backoff | Esponenziale, delay base 10 s |
| Timeout richiesta | 10 s per chiamata HTTP |
| Criterio successo | Risposta HTTP 2xx |
In caso di status non-2xx o errore rete/timeout, BullMQ riaccoda il job con backoff esponenziale fino ad esaurire i tentativi. Dopo il quinto fallimento, la consegna resta con l'ultimo statusCode e non ci sono altri retry automatici per quel job.
POST https://tua-app.com/webhooks/mailingcore
User-Agent: MailingCore-Webhook/1.0
Content-Type: application/json
X-MailingCore-Signature: t=1719763200,v1=...
X-MailingCore-Event: contact.unsubscribed
X-MailingCore-Delivery-Id: clxdelivery...
Checklist receiver
Rispondi velocemente
Restituisci 200 entro pochi secondi. Il lavoro pesante va nella tua coda.
Verifica firma
Valida
X-MailingCore-Signaturesul raw body prima di parsare JSON — vedi Verificare firma.Deduplica
Usa
X-MailingCore-Delivery-Ido il campoiddel payload. I retry possono ripetere lo stesso evento logico.Monitora fallimenti
Interroga
GET /webhooks/endpoints/:id/deliverieso allerta sustatusCodenon-2xx ripetuti.