AhaSend

Belangrijk: Twee wijzigingen met betrekking tot de bericht IDs in combinatie met onze API en Webhooks

Mark Kraakman
Mark Kraakman
Productupdate
Op deze pagina

We hebben zelf ook een hekel aan breaking changes, maar om de API’s handiger te maken en toekomstige functionaliteit en integraties makkelijker mogelijk te maken, krijgt ieder bericht overal hetzelfde ID: in de antwoorden van de API bij het verzenden, in Get Message, in webhooks, in de MCP en in het dashboard. 

Controleer of deze wijzigingen gevolgen hebben voor je integratie. Deze wijzigingen zijn ingegaan op 9 november 2026.

1. Het id in de API-antwoorden bij het verzenden

Het id van iedere ontvanger in het antwoord van Create Message, Create Template Message en Create Conversation Message is nu een kale UUID. Eerder was het de volledige Message-ID-header, met punthaken en een domein.

Vóór 9 november:

{ "object": "message", "id": "<[email protected]>", "recipient": { "email": "[email protected]" }, "status": "queued" }

Vanaf 9 november:

{ "object": "message", "id": "0192f5a4-7b1c-7d3e-9a2b-4c5d6e7f8a9b", "message_id_header": "<[email protected]>", "recipient": { "email": "[email protected]" }, "status": "queued" }

De Message-ID-header verhuist naar een nieuw veld, message_id_header, in hetzelfde antwoord.

Wat je mogelijk moet aanpassen

  • Koppel je een verzending aan de bijbehorende webhook-events door het id uit het antwoord te vergelijken met data.message_id_header uit de webhook? Vergelijk dan voortaan met message_id_header.
  • Filter je List Messages op message_id_header met het id uit een verzendantwoord? Gebruik dan voortaan message_id_header.

Wat blijft werken

  • Get Message en Cancel Message accepteren zowel het nieuwe kale id als de oude vorm <...@domein>. ID’s die je al hebt opgeslagen blijven werken.
  • De Message-ID-header van je e-mails verandert niet.
  • Herhaal je een verzoek met dezelfde Idempotency-Key, dan krijg je het opgeslagen antwoord van het eerste verzoek. Tot 24 uur na 9 november kan een herhaling van een eerder verzoek nog de oude vorm teruggeven, zonder message_id_header.
  • Oudere versies van onze SDK’s blijven werken: id is nog steeds een string. Nieuwe SDK-versies voegen message_id_header toe.

2. Het bericht-ID in webhooks en het dashboard

Bericht-webhooks (message.reception, message.delivered, message.transient_error, message.failed, message.bounced, message.suppressed, message.opened en message.clicked) bevatten het API-ID van het bericht als data.id: hetzelfde id dat je bij het verzenden terugkreeg en dat Get Message accepteert. Vóór 9 november was data.id een intern ID, een andere UUID zonder koppeltekens.

Vóór 9 november:

"data": { "id": "407926766d2711f09b30960002cafe7c", "message_id_header": "<[email protected]>" }

Vanaf 9 november:

"data": { "id": "0192f5a4-7b1c-7d3e-9a2b-4c5d6e7f8a9b", "message_id_header": "<[email protected]>" }

Wat je mogelijk moet aanpassen

  • Groepeer je de webhook-events van een bericht op data.id? Houd er dan rekening mee dat een bericht dat vóór 9 november is verzonden events met beide ID’s kan krijgen: bijvoorbeeld een message.delivered-event met het oude ID en een later message.opened-event met het nieuwe. Dit kan tot 30 dagen voorkomen. data.message_id_header verandert niet, dus daarop kun je over de overgang heen groeperen.
  • Controleer je de vorm van data.id? Die bevat nu koppeltekens en is 36 tekens lang in plaats van 32.
  • Archiveer je berichten naar je eigen S3-bucket? Nieuwe archieven gebruiken het API-ID in hun map- en bestandsnamen. Archieven van vóór 9 november houden hun paden.
  • Campagneberichten sturen dezelfde message.*-events. Hun data.id heeft nu ook koppeltekens en is 36 tekens lang. Het is hetzelfde voor elk event van een campagnebericht, dus je kunt er de events van dat bericht mee groeperen. Get Message geeft geen losse campagneberichten terug: het werkt alleen voor transactionele berichten.
  • Inkomende route-webhooks (message.routing) bevatten nu ook het bericht-ID als data.id. Het is hetzelfde ID als in het message.reception-event van dat bericht.
  • Verstuur je via SMTP, of via API v1 met je eigen Message-ID? Dan heeft elk bericht een eigen id, ook als één e-mail naar meerdere ontvangers gaat. Get Message en Cancel Message vinden het niet via de Message-ID, en ook niet via de UUID daarin. Zoek je een bericht op zijn Message-ID? Gebruik dan List Messages met message_id_header.
  • Berichten die eerst één id deelden, meestal SMTP-mail naar meerdere ontvangers, hebben nu elk een eigen id. Het eerste bericht van elke groep houdt het gedeelde id. List Messages toont de nieuwe ID’s.

Wat blijft werken

  • Het dashboard toont het API-ID als het “Message ID” van het bericht. Dashboardlinks die je al hebt gedeeld blijven werken.
  • Get Message en Cancel Message accepteren ook het AhaSend-ID, dus een ID dat je uit een oudere webhook hebt opgeslagen vindt zijn bericht nog steeds.

Heb je vragen? Mail naar [email protected] of kom langs op onze Discord-server.