Skip to main content
HomeBlogGidsenBezorgstatus van de Shipping API: statuscodes, webhooks en meldingen bij uitzonderingen

Bezorgstatus van de Shipping API: statuscodes, webhooks en meldingen bij uitzonderingen

17TRACK

Een leveringsstatus van een Shipping API beschrijft de voortgang van een pakket, niet of een API-verzoek is geslaagd. Houd voor betrouwbare tracking HTTP-responscodes gescheiden van verzendstatussen, verwerk webhooks zonder ervan uit te gaan dat ze één keer of in de juiste volgorde aankomen, en zet actiegerichte uitzonderingen om in meldingen met duidelijke verantwoordelijken. Voor engineering- en ecommerce-operationsteams is het doel een verzendrecord dat betrouwbaar blijft wanneer updates van vervoerders vertraagd, gedupliceerd of gecorrigeerd zijn.

Shipping API Delivery Status Status Codes Webhooks and Exception Alerts

Deze handleiding legt uit hoe je dat record structureert, inkomende trackingevents verwerkt en een leveringsprobleem onderscheidt van een probleem met de trackingintegratie.

Houd HTTP-codes, API-resultaten en verzendstatussen gescheiden

De term “statuscode” kan naar drie verschillende lagen verwijzen. Door ze te vermengen ontstaan misleidende dashboards en onnodige klantmeldingen.

LaagWat deze aangeeftVoorbeeldinterpretatie
HTTP-responsHet resultaat van het HTTP-verzoekEen 200-respons geeft succes op HTTP-niveau aan; dit betekent niet dat het pakket is bezorgd.
Zakelijk API-resultaatOf de aangevraagde bewerking is geslaagd volgens de toepassingsregels van de providerDe response body kan melden dat een trackingregistratie is geweigerd, ook binnen een geslaagde HTTP-respons als de API dit ontwerp gebruikt.
VerzendstatusDe gemelde fysieke of operationele toestand van het pakketOnderweg, wachtend op afhaling of bezorgd.

De HTTP semantics standard definieert de betekenissen van HTTP-responses. 202 Accepted betekent bijvoorbeeld dat een verzoek is geaccepteerd voor verwerking, maar dat de verwerking nog niet noodzakelijk is voltooid. Dit is geen bewijs dat een vervoerder een pakket heeft geaccepteerd.

Evenmin bewijst een mislukt trackingverzoek dat een zending niet meer beweegt. Je toepassing kan tijdelijk geen zicht hebben terwijl de fysieke bezorging normaal doorgaat. Monitor deze lagen onafhankelijk van elkaar.

Maak een statusmodel zonder details van de vervoerder weg te gooien

Er bestaat geen universele numerieke code voor leveringsstatussen die door elke Shipping API en vervoerder wordt gedeeld. Een waarde uit de ene integratie mag niet worden geïnterpreteerd met de mapping van een andere provider. Gebruik de documentatie voor de specifieke API-versie die je implementeert.

Een praktisch intern model combineert een kleine set genormaliseerde statussen met het oorspronkelijke event van de vervoerder. Normalisatie ondersteunt consistente rapportage; het oorspronkelijke event behoudt de details die nodig zijn voor onderzoek.

Illustratieve interne statusBetekenisOperationele waarschuwing
Informatie ontvangenEr bestaat elektronische verzendinformatie.Beschouw het aanmaken van een label niet als bevestigde fysieke overdracht.
OnderwegHet trackingrecord geeft aan dat het pakket zich door het bezorgnetwerk verplaatst.Deze brede categorie kan verschillende transportfasen omvatten.
Bezorging onderwegHet pakket wordt gemeld op een bezorgroute.Maak hiervan geen onvoorwaardelijke bezorggarantie.
Wachtend op afhalingVan de ontvanger wordt verwacht dat deze het pakket ophaalt.Neem afhaalinstructies of deadlines alleen op wanneer de bron deze ondersteunt.
BezorgdDe trackingbron meldt dat de bezorging is voltooid.Een bezorgscan lost op zichzelf een claim van een klant over niet-ontvangst niet op.
UitzonderingEen event kan aandacht vereisen of de normale voortgang onderbreken.Bewaar de reden in plaats van elke uitzondering als verlies te behandelen.
Retour onderweg of geretourneerdHet pakket gaat terug of er is gemeld dat de retour is voltooid.Houd de retourvoortgang gescheiden van bezorging aan de oorspronkelijke ontvanger.
OnbekendDe beschikbare informatie kan niet met voldoende zekerheid worden gemapt.Onderzoek de mapping of het datagat in plaats van een bezorgstatus te verzinnen.

Deze labels zijn een voorgesteld toepassingsmodel, geen officiële 17TRACK-codelijst. Bewaar waar beschikbaar de statuscode van de provider, substatus, beschrijving, eventtijd, tijdzone-informatie, locatie en ontvangsttijd. Bewaar ook de versie van de mapping zodat latere wijzigingen kunnen worden gecontroleerd.

Voor een implementatie met meerdere vervoerders is 17TRACK Tracking API een relevante integratieoptie. Gebruik de official API documentation om het implementatiecontract vast te leggen, in plaats van illustratieve labels naar provider-specifieke velden te kopiëren. Controleer de toepasselijke statusdefinities, webhookconfiguratie, authenticatievereisten en response-semantiek voordat je de adapter bouwt.

Bouw webhookverwerking rond duurzame ontvangst

Een webhook is een HTTP-verzoek dat naar je endpoint wordt gestuurd om een event te melden. Dit kan de behoefte aan herhaald pollen verminderen, maar mag niet worden beschouwd als een garantie voor onmiddellijke, geordende of precies-eenmalige aflevering. Ontwerp de ontvanger zo dat deze retries, onderbrekingen en onverwachte payloads verdraagt, tenzij de provider uitdrukkelijk iets anders garandeert.

  1. Authenticeer het verzoek. Pas de gedocumenteerde verificatiemethode van de provider toe. Als signatures worden ondersteund, valideer deze dan met het gespecificeerde algoritme en de onbewerkte request-bytes. Verzin geen signature-header en ga er niet van uit dat elke service HMAC gebruikt.
  2. Valideer de payload. Controleer verplichte velden, typen, payloadgrootte en de koppeling met een zending die door je account wordt beheerd. Verwerk onbekende optionele velden zonder de achterwaartse compatibiliteit onnodig te verbreken.
  3. Sla op vóór je bevestigt. Sla het geaccepteerde event op of plaats het in een duurzame wachtrij voordat je de gedocumenteerde succesvolle response verstuurt. Als het opslaan mislukt, bevestig dan niet dat het event veilig is ontvangen.
  4. Verwerk asynchroon. Voer statusmapping, orderupdates en beslissingen over meldingen waar praktisch buiten de request-handler uit.
  5. Maak side effects idempotent. Een herhaald event mag geen extra supportticket aanmaken of nogmaals hetzelfde klantbericht versturen.

De exacte bevestigingscode, timeout, retryplanning en het replaygedrag zijn afhankelijk van de provider. Controleer deze details expliciet. Een algemene instructie om “200 terug te geven” is geen vervanging voor het webhookcontract.

Gebruik HTTPS en houd inloggegevens uit URL's en routinematige logs. Pas toegangscontroles toe op opgeslagen payloads, omdat trackinggegevens persoonsgegevens kunnen bevatten. De OWASP REST Security Cheat Sheet biedt relevante richtlijnen voor transportbeveiliging, inputvalidatie en endpointbeveiliging.

Dedupliceer events zonder echte updates te onderdrukken

Gebruik bij voorkeur een gedocumenteerde, stabiele eventidentifier wanneer die beschikbaar is. Leid anders een deduplicatiesleutel af uit een zorgvuldig geselecteerde combinatie van verzendingsidentiteit, eventtijdstip, eventcode en locatie. Test deze aanpak met echte payloads: twee legitieme events kunnen hetzelfde tijdstip hebben en hetzelfde event kan aankomen met iets andere beschrijvende tekst.

Gebruik afzonderlijke deduplicatiecontroles voor eventinname en downstreamacties. Een statusupdate moet mogelijk opnieuw worden opgeslagen als correctie, terwijl de klantmelding onderdrukt moet blijven. Geef elke melding of ticketactie een eigen duurzame identiteit.

Houd eventtijd en ontvangsttijd gescheiden

Stel dat een event over een zending onderweg je systeem bereikt na een event over bezorging onderweg, maar dat het tijdstip van de vervoerder eerder is. Sla het event op in de historie zonder automatisch de huidige status terug te zetten naar onderweg.

Sorteren op tijdstip alleen is niet voor elk geval voldoende. Ontbrekende tijdzones, gecorrigeerde scans en conflicterende bronnen vereisen expliciete regels. Behoud tijdstelnauwkeurigheid en offsets, leg vast wanneer je systeem elk event heeft ontvangen en gebruik gedocumenteerde sequentie-informatie van de provider waar beschikbaar. Leg geen rigide statusladder op die alleen vooruit kan: bezorgpogingen, omleidingen, retouren en correcties kunnen legitieme overgangen veroorzaken die achteruit lijken te gaan.

Maak van uitzonderingen acties met een verantwoordelijke

Een uitzonderingsmelding moet uitleggen wat er is gebeurd, welke actie nodig is en wie verantwoordelijk is voor de volgende stap. Een generiek bericht als “uitzondering bij zending” laat operationele medewerkers hetzelfde onderzoek herhalen en kan klanten verontrusten zonder hen te helpen.

Begin met een klein routeringsbeleid:

  • Adres- of toegangsprobleem: Stuur dit naar klantenservice om het probleem te verifiëren en het beschikbare correctieproces van de vervoerder te controleren. Beloof geen adreswijziging voordat is bevestigd dat dit mogelijk is.
  • Afhaling vereist: Informeer de ontvanger wanneer de bron bruikbare afhaalinstructies geeft. Behoud elke geverifieerde deadline.
  • Douaneactie vereist: Wijs de case toe op basis van wie de gevraagde documenten of informatie moet aanleveren. Een douanegerelateerd event bewijst op zichzelf niet dat betaling verschuldigd is.
  • Mislukte bezorgpoging: Controleer de gemelde volgende stap voordat je herbezorging of afhaling adviseert.
  • Retour naar afzender: Open een operationele beoordeling. Geef niet automatisch een terugbetaling uitsluitend op basis van een breed trackinglabel, tenzij je beleid dit uitdrukkelijk toestaat.
  • Door de vervoerder gemeld verlies of schade: Stuur dit naar de verantwoordelijke voor claims en bewaar het bewijsmateriaal van het event. Houd claimbeslissingen gescheiden van algemene detectie van vertragingen.

Elke melding moet een zendingidentifier, orderreferentie, reden van het event, bron-tijdstempel, laatst bekende toestand, toegewezen verantwoordelijke en volgende actie bevatten. Voeg een link naar het relevante interne record toe in plaats van onnodige klantgegevens bloot te geven in gedeelde communicatiekanalen.

Behandel “geen update” als een afzonderlijke toestand

Een zending zonder recente scan is niet automatisch verloren. Het pakket kan zich tussen controlepunten bevinden, wachten op de eerste fysieke scan of worden getroffen door een gebrek aan zichtbaarheid.

Definieer inactiviteitsdrempels per service, route, verzendfase en zakelijke toezegging in plaats van één universele timer toe te passen. Maak onderscheid tussen een pakket dat nooit een acceptatiescan heeft ontvangen en een pakket dat na binnenkomst in het netwerk geen updates meer kreeg. Als historisch bewijs beperkt is, gebruik de drempel dan om een onderzoek te starten, niet om verlies vast te stellen.

Onderdruk herhaalde meldingen zolang een ongewijzigde case openstaat. Schaal op wanneer nieuw bewijs verschijnt, een afgesproken opvolging wordt gemist of de leveringsbelofte aan de klant interventie vereist.

Monitor de integratiegezondheid afzonderlijk van de bezorgprestaties

API-monitoring beantwoordt de vraag of je trackingintegratie functioneert. Bezorgmonitoring beantwoordt de vraag wat er met zendingen gebeurt. Een gezond endpoint kan verouderde gegevens van een vervoerder ontvangen, terwijl een onbeschikbaar endpoint updates kan missen van pakketten die normaal bewegen.

  • Verzoekgezondheid: Track authenticatiefouten, time-outs, rate-limit-responses, serverfouten en afwijzingen op applicatieniveau.
  • Webhookgezondheid: Track verificatiefouten, bevestigingslatentie, opslagfouten, dubbele afleveringen en verwerkingsfouten.
  • Verwerkingsgezondheid: Monitor wachtrijleeftijd, onverwerkte events, mappingfouten en meldingsfouten.
  • Trackingactualiteit: Meet de tijd sinds het laatste bron-event afzonderlijk van de tijd sinds je laatste geslaagde inname.
  • Operationele uitkomsten: Track onopgeloste uitzonderingen, tijd tot toewijzing en gemiste opvolgingen.

Volg voor retries van verzoeken de rate-limit- en retry-richtlijnen van de provider. Herhaal bewerkingen die dubbele registraties of andere side effects kunnen veroorzaken niet blindelings; gebruik gedocumenteerde idempotentiemechanismen waar beschikbaar.

Gebruik waar ondersteund een reconciliatieproces om na storingen of vermoedelijk gemiste events het meest recente trackingrecord op te halen. Stel de frequentie in binnen contractuele en rate-limitbeperkingen. Webhooks en reconciliatie hebben verschillende doelen: de ene levert wijzigingen, de andere helpt hiaten te detecteren en te herstellen.

Test foutscenario's voordat je klantmeldingen inschakelt

Begin met verwerking die alleen intern zichtbaar is en controleer representatieve zendingen voordat statuswijzigingen klantberichten mogen versturen. Test meer dan alleen de normale voortgang van onderweg naar bezorgd.

  • Een dubbele webhook maakt één bedoelde klantmelding.
  • Een ouder event dat laat aankomt, vervangt de huidige toestand niet onjuist.
  • Een onbekende status wordt bewaard en gemarkeerd in plaats van stilzwijgend naar bezorgd te worden gemapt.
  • Een mislukte duurzame opslag leidt niet tot een geslaagde bevestiging.
  • Een tijdelijke downstreamstoring houdt events beschikbaar voor retry.
  • Een bezorgevent gevolgd door een correctie blijft controleerbaar.
  • Een order met meerdere pakketten wordt niet volledig als bezorgd gemarkeerd wanneer slechts één pakket is bezorgd.
  • Een API-storing waarschuwt engineering zonder klanten automatisch te vertellen dat hun pakketten vertraagd zijn.

Het vrijgavecriterium moet operationele consistentie zijn: het verzendrecord, het klantbericht en de supportactie moeten overeenkomen met hetzelfde onderliggende bewijs. Alleen een geslaagde webhookresponse toont niet aan dat de bezorgervaring goed functioneert.

FAQ

Betekent HTTP 200 dat het pakket is bezorgd?

Nu. Dit geeft succes op HTTP-niveau voor het verzoek aan. Lees het zakelijke resultaat van de API en de velden voor de verzendstatus afzonderlijk. Bij een webhook heeft een geslaagde bevestiging betrekking op de ontvangst van de melding, niet op de fysieke bezorging van het pakket.

Moet ik webhooks of polling gebruiken voor trackingupdates?

Gebruik webhooks voor eventgestuurde updates wanneer de provider deze ondersteunt. Voeg waar ondersteund en operationeel gerechtvaardigd begrensde reconciliatiepolling toe om hiaten te herstellen. Alleen polling kan passend zijn wanneer webhooks niet beschikbaar zijn, maar de frequentie moet voldoen aan de limieten van de provider en je eisen voor actualiteit.

Waarom kan de trackingstatus na “bezorgd” nog veranderen?

Een bron kan een event corrigeren of je integratie kan vertraagde of conflicterende informatie ontvangen. Behoud de historie en beoordeel het nieuwere bewijs in plaats van “bezorgd” technisch onveranderlijk te behandelen. Een gemelde bezorging en de bevestiging door een klant dat het pakket is ontvangen, zijn ook verschillende feiten.

Hoe snel moet een uitzonderingsmelding worden verstuurd?

Baseer de urgentie op de vereiste actie en een eventuele geverifieerde deadline. Een probleem dat actie van de ontvanger vereist, verdient een andere behandeling dan een informatieve vertraging. Verwerkingssnelheid kan niet compenseren voor een vervoerders-event dat laat is gepubliceerd; bewaar daarom zowel bron- als ontvangsttijdstempels.

Moeten klanten de ruwe status van de vervoerder zien?

Meestal hebben klanten meer aan een duidelijke uitleg en een ondersteunde volgende stap dan aan een onverklaarde code. Bewaar ruwe details voor support- en controledoeleinden. Vereenvoudig een status nooit tot een sterkere belofte dan het onderliggende event ondersteunt.

Bronnen

  • RFC 9110: HTTP Semantics — referentie voor de betekenis van HTTP-statuscodes, waaronder 200 en 202.
  • OWASP REST Security Cheat Sheet — beveiligingsrichtlijnen die relevant zijn voor API- en webhook-endpoints.
  • 17TRACK Tracking API — officiële productreferentie voor de besproken trackingintegratieoptie.
  • 17TRACK API Documentation — officiële referentie voor provider-specifieke integratievereisten; de illustratieve schema's en workflowaanbevelingen in deze handleiding zijn geen vervanging voor dat contract.
Loading