Spårning av försändelser via webhooks: Så fungerar spårningswebhooks jämfört med polling (payloads, omförsök och konfiguration)
Webhooks för spårning av försändelser skickar en HTTP-förfrågan till din applikation när en spårningstjänst har en uppdatering att rapportera. Pollning fungerar i motsatt riktning: din applikation begär upprepade gånger den senaste spårningsinformationen. För utvecklare som kopplar försändelsedata till ett orderhanteringssystem, en butik eller en tjänst för kundaviseringar är webhooks vanligtvis den bättre primära uppdateringsmekanismen när den stöds; riktad pollning kan hjälpa till att återställa missade uppdateringar och synkronisera poster.

Ingen av metoderna får transportören att skanna ett paket tidigare. Båda beror på när spårningskällan tar emot och tillgängliggör ny information. Den praktiska skillnaden är hur din applikation får kännedom om informationen, hur mycket förfrågningstrafik den genererar och vad som händer när leveransen misslyckas.
Webhooks för spårning jämfört med pollning: den operativa skillnaden
Detta är integrationsmönster, inte konkurrerande spårningsdatabaser. En transportör eller spårningsplattform kan erbjuda endera mönstret eller båda, med olika åtkomstvillkor. Jämför beteendet hos det specifika API du planerar att använda i stället för att anta att alla webhooktjänster har samma garantier.
| Beslutspunkt | Webhooks | Pollning |
|---|---|---|
| Vem startar förfrågan? | Spårningstjänsten anropar din endpoint. | Din applikation anropar spårnings-API:t. |
| Fördröjning för uppdateringar | Beror på källans aktualitet, händelsegenerering, leverans och bearbetning. | Beror också på när nästa schemalagda förfrågan körs. |
| Förfrågningsvolym | Styrs av utsända uppdateringar, batchning och nya leveransförsök. | Styrs av försändelsevolym, pollningsfrekvens och batchning. |
| Infrastruktur | Kräver en tillgänglig mottagare och säker hantering av inkommande förfrågningar. | Kräver en schemaläggare, utgående API-åtkomst och hantering av hastighetsbegränsningar. |
| Återställning efter fel | Beror på leverantörens nya försök samt din egen avstämningsprocess. | Beror på efterföljande förfrågningar och på om API:t behåller den historik som behövs. |
Välj webhooks först när snabba uppdateringar är viktiga och ditt team kan driva en tillförlitlig mottagare. Välj pollning först när inkommande endpoints är opraktiska, försändelsevolymen är måttlig eller källan inte tillhandahåller lämpliga webhooks. Använd en hybridlösning när missade uppdateringar skulle störa kundkommunikation eller verksamhet och API:t stöder avstämning.
Anta inte att webhooks är billigare. Prenumerationsavgifter, spårningsregistrering, API-anrop, händelseleverans och infrastruktur kan debiteras på olika sätt. Jämför de faktiska kommersiella villkoren och den förväntade arbetsbelastningen i stället för att se färre förfrågningar som bevis på en lägre faktura.
Vad händer mellan en transportörs skanning och din applikation?
- Identifiera försändelsen. Koppla ihop spårningsnumret, transportörsinformation där det krävs och en intern försändelsereferens. Vissa tjänster kräver registrering innan övervakningen börjar.
- Konfigurera händelseleverans. Ange en HTTPS-callback-URL och välj eventuella händelseprenumerationer som stöds.
- Källan tar emot spårningsinformation. En transportörsskanning eller statusändring blir tillgänglig för spårningstjänsten.
- Tjänsten skickar en webhook. Förfrågan kan innehålla en fullständig spårningsbild, en enda kontrollpunkt eller endast en referens som kräver ett API-anrop.
- Din mottagare validerar och lagrar den. Autentisera förfrågan, kontrollera dess struktur och registrera eller köa händelsen på ett beständigt sätt.
- En arbetare uppdaterar affärssystemen. Normalisera statusar, uppdatera försändelseposter och utlös endast åtgärder som fortfarande är lämpliga.
En webhookleverans är inte samma sak som en fysisk leverans. Det är ett meddelande om försändelseinformation. På samma sätt bevisar ett lyckat webhook-svar inte att ett e-postmeddelande skickades eller att en orderpost uppdaterades; detta är resultat av efterföljande bearbetning och behöver egen övervakning.
Läsa en nyttolast från en spårningswebhook
Följande JSON är en illustrativ integrationsdesign, inte en 17TRACK-nyttolast eller ett universellt schema. Verkliga fältnamn, statuskoder, tidsstämpelformat och händelseidentifierare måste hämtas från den valda leverantörens dokumentation.
{
"event_id": "evt_example_001",
"event_type": "shipment.updated",
"created_at": "2025-04-08T10:16:00Z",
"shipment": {
"reference": "shipment_example_123",
"tracking_number": "EXAMPLE123456",
"carrier_code": "example_carrier",
"status": "in_transit",
"checkpoint": {
"occurred_at": "2025-04-08T10:10:00Z",
"description": "Departed processing facility"
}
}
}Håll isär tre klockor i din datamodell: när försändelsehändelsen inträffade, när leverantören genererade meddelandet och när din applikation tog emot det. En fördröjd kontrollpunkt kan anlända efter en nyare. En tidsstämpel utan offset behöver också en uttrycklig tolkning; behandla inte automatiskt varje transportörslokal tidsstämpel som UTC.
Behåll din interna försändelsereferens tillsammans med leverantörens identifierare. Ett spårningsnummer ensamt kanske inte räcker som permanent global identifierare, särskilt i olika transportörskontexter. För delade order ska du upprätthålla poster på försändelsenivå i stället för att låta en pakets leveransstatus markera hela ordern som slutförd.
Bevara den ursprungliga statusen och beskrivningen tillsammans med din normaliserade affärsstatus. Din applikation kan mappa flera transportörsmeddelanden till ”under transport”, men supportpersonal kan fortfarande behöva den ursprungliga kontrollpunkten för att förstå en försening. Behandla beräknade leveransdatum som uppskattningar och skilj ett saknat fält från en uttrycklig instruktion att rensa ett befintligt värde.
Nya försök, bekräftelser och dubbla händelser
Webhookleverans kan misslyckas på grund av tidsgränser, nätverksavbrott, autentiseringsfel eller en otillgänglig mottagare. En leverantör kan försöka igen, men det finns inget universellt schema för nya försök, ingen standardiserad lagringstid och inget gemensamt maximalt antal försök. Bekräfta vilka svar som utlöser ett nytt försök, hur omdirigeringar hanteras och om manuell återleverans är tillgänglig.
Bekräfta efter beständigt mottagande
Håll förfrågningsvägen kort: validera förfrågan, spara det accepterade arbetet och returnera det lyckade svar som leverantören kräver. Skicka e-post och utför långsammare affärsoperationer asynkront. HTTP-specifikationen definierar 202 Accepted som godkännande för bearbetning snarare än slutförd bearbetning, men din leverantör kan kräva ett annat lyckat svar. Följ dess webhook-kontrakt.
Att returnera ett lyckat svar innan något har lagrats innebär risk för att uppdateringen går förlorad om processen kraschar. Att vänta på varje efterföljande åtgärd innebär risk för en tidsgräns och ytterligare ett leveransförsök. En beständig inkorg eller kö skapar en gräns mellan mottagande och bearbetning.
Gör bearbetningen idempotent
Idempotens innebär att bearbetning av samma händelse igen inte upprepar dess affärseffekter. En avsändare kan försöka igen efter att din server har accepterat en händelse men innan bekräftelsen har nått fram. Dubblettleverans bör därför vara ett rutinmässigt testfall.
- Använd en dokumenterad händelseidentifierare som dedupliceringsnyckel när en sådan finns, avgränsad till rätt leverantör eller konto.
- Om ingen identifierare finns, utforma en sammansatt nyckel från stabila händelsefält och testa risken för kollisioner.
- Upprätthåll unikhet atomiskt i lagringen; en separat sekvens med ”kontrollera och sedan infoga” kan orsaka kapplöpning vid samtidiga leveranser.
- Skydda även efterföljande åtgärder. En dubbletthändelse får inte skicka ännu en leveransavisering eller upprepa en ekonomisk åtgärd.
- Ställ in lagringstiden utifrån leverantörens återuppspelningsbeteende och dina återställningskrav, i stället för att omedelbart radera dedupliceringsposter.
Anta inte kronologisk ankomst
Skriv inte över det aktuella försändelsetillståndet enbart för att en förfrågan anlände sist. Jämför händelsens innebörd, tidsstämplar och eventuell dokumenterad sekvensinformation. Bevara sena kontrollpunkter i historiken utan att automatiskt flytta den visade statusen bakåt. Tillåt samtidigt dokumenterade korrigeringar: en stel regel om att levererade försändelser aldrig kan ändras kan dölja legitima undantag eller korrigerad information.
En praktisk konfigurationschecklista
1. Bekräfta leverantörens kontrakt
Bekräfta före implementeringen registreringskrav, händelser som stöds, nyttolastens struktur, autentisering, svarsförväntningar, tidsgränser, beteende vid nya försök och API-begränsningar. Kontrollera om en avisering representerar en ögonblicksbild eller en stegvis ändring, om leveranser kan innehålla flera poster och om en prenumeration skickar ett initialt tillstånd.
För en 17TRACK-integration börjar du med den officiella Tracking API-sidan och API-dokumentationen. Använd den leverantörsspecifika dokumentationen för att fastställa förfrågningsfält och callback-krav; den generiska nyttolasten ovan är ingen ersättning. Bekräfta åtkomstvillkor och operativa begränsningar för den integration du tänker driftsätta.
2. Säkra den mottagande endpointen
Använd HTTPS och den autentiseringsmekanism som leverantören dokumenterar. Om den använder en HMAC-signatur ska du validera exakt det signerade innehåll som anges. När råa förfrågningsbytes signeras kan analys och återskapande av JSON före verifieringen ändra dessa byte och göra signaturen ogiltig. Använd jämförelse i konstant tid för signaturvärden som härletts från hemligheter.
Om signerade tidsstämplar eller leveransidentifierare finns tillgängliga ska du tillämpa de dokumenterade skydden mot återuppspelning. En giltig signatur autentiserar ett meddelande men fastställer inte i sig att det är aktuellt. Håll hemligheter borta från URL:er och applikationsloggar, stöd rotation av hemligheter och begränsa förfrågningsstorlekar. IP-tillåtelselistor kan vara en ytterligare kontroll när underhållna adressintervall finns, men de ersätter inte meddelandeautentisering.
3. Separera mottagande från affärsbearbetning
Lagra tillräckligt med information för att spåra och säkert återuppspela en accepterad händelse. Köarbetare bör normalisera uppdateringen, tillämpa regler för tillståndsövergångar och registrera resultat av åtgärder. Lägg arbete som misslyckas upprepade gånger i ett granskningsbart arbetsflöde för obeställbara meddelanden i stället för att försöka för evigt. Begränsa åtkomst och lagring eftersom spårningsnyttolaster kan innehålla kundrelaterad information.
4. Testa felvägar före lansering
- Skicka samma händelse två gånger, inklusive samtidiga leveranser.
- Leverera en äldre kontrollpunkt efter en nyare.
- Simulera ett köavbrott och en krasch hos en arbetare efter mottagandet.
- Testa ogiltig autentisering, felaktig JSON och för stora förfrågningar.
- Testa okända försändelser, saknade valfria fält och tillagda fält.
- Kontrollera att ett levererat paket inte slutför en delad order.
- Spela upp en händelse igen efter återställning och bekräfta att aviseringar förblir deduplicerade.
Var tolerant mot tillagda fält när det är säkert, men omtolka inte okända statusvärden i tysthet. Bevara råvärdet och skicka oigenkända fall genom en definierad reserv- eller granskningsprocess.
När pollning fortfarande fyller en funktion
Pollning är användbar för initial synkronisering, återställning efter ett avbrott och kontroll av försändelser vars förväntade uppdateringar inte har anlänt. Tystnad i sig är dock inget bevis på webhook-fel: ett paket kan faktiskt sakna nya skanningar. Stäm av mot API:ts aktuella tillstånd eller historik i stället för att anta att varje tyst försändelse behöver en avisering.
För skalplanering är en förenklad pollningsmodell requests per hour ≈ active shipments × polls per shipment per hour, under antagandet att en förfrågan gäller en försändelse. Batch-endpoints ändrar denna beräkning. Som illustration genererar 1 000 försändelser som kontrolleras fyra gånger per timme 4 000 förfrågningar per timme före nya försök; detta är aritmetik, inte en leverantörskvot eller prisuppskattning.
Schemalägg kontroller utifrån försändelseaktivitet och affärsrisk, respektera hastighetsbegränsningar och lägg till jitter så att jobb inte startar samtidigt. Använd begränsad backoff vid fel som kan försöka igen och följ tillämplig vägledning från servern. Försök inte upprepade gånger med permanenta autentiserings- eller valideringsfel utan att korrigera dem.
Ett praktiskt hybridsystem använder webhooks för rutinuppdateringar och riktade API-läsningar för misstänkta luckor. Övervaka mottagningsfel, köålder, bearbetningsfel, dubblettfrekvens och avstämningsavvikelser separat. När tidsstämplarna är tillförlitliga ska du skilja fördröjning i källdata från fördröjning i webhookleveransen och intern bearbetningsfördröjning.
Vanliga frågor
Är spårningswebhooks realtid?
De kan minska den fördröjning som orsakas av att vänta på nästa pollningscykel. De garanterar inte omedelbara transportörsskanningar eller omedelbara uppdateringar från källan. Aktualitet från början till slut omfattar transportörens rapportering, leverantörens bearbetning, leverans av förfrågan och din egen applikation.
Kan jag sluta polla helt efter att ha aktiverat webhooks?
Möjligen, om leverantörens återställningsfunktioner och dina affärskrav gör det acceptabelt. För operativt viktiga försändelseposter bör du behålla en avstämningsmetod. Den kan vara riktad i stället för kontinuerlig pollning av varje försändelse.
Vad händer om min webhook-endpoint är offline?
Återställningen beror på avsändarens dokumenterade policy för nya försök. Anta inte att nya försök fortsätter för evigt. När endpointen har återställts ska du granska misslyckade leveranser, använda stödda verktyg för återleverans och stämma av berörda försändelser via API:t där det är möjligt.
Bör varje webhook utlösa en kundavisering?
Nej. En händelse kan vara en dubblett, en historisk kontrollpunkt eller en uppdatering som inte ändrar den kundsynliga statusen. Utlös aviseringar från deduplicerade affärsövergångar, med regler för undantag och korrigeringar.
Betyder ett lyckat HTTP-svar att försändelseuppdateringen är slutförd?
Inte nödvändigtvis. I en asynkron design betyder det att mottagaren accepterade händelsen enligt det överenskomna kontraktet. Följ slutförandet av bearbetningen och resultaten av efterföljande aviseringar separat så att en accepterad förfrågan inte kan dölja ett misslyckat arbetsflöde.
Källor
- RFC 9110: HTTP Semantics — HTTP-svarssemantik, inklusive godkännande för bearbetning och Retry-After.
- RFC 2104: HMAC—Keyed-Hashing for Message Authentication — HMAC-konstruktionen som hänvisas till i vägledningen om signaturverifiering.
- GitHub Docs: Best practices for using webhooks — allmän teknisk vägledning om HTTPS, hemligheter, asynkron hantering och identifiering av leveranser; dess tjänstespecifika regler fastställer inte hur leverantörer av försändelsespårning fungerar.
- 17TRACK Tracking API — officiell ingång för utvärdering av en 17TRACK-spårningsintegration.
- 17TRACK API documentation — leverantörsspecifik referens för implementeringskrav.


