Skip to main content
DomůBlogSledování zásilek pomocí webhooků: Jak fungují webhooky pro sledování ve srovnání s pollingem (payloady, opakované pokusy a nastavení)

Sledování zásilek pomocí webhooků: Jak fungují webhooky pro sledování ve srovnání s pollingem (payloady, opakované pokusy a nastavení)

17TRACK

Webhooky pro sledování zásilek odesílají HTTP požadavek do vaší aplikace, když má sledovací služba k dispozici aktualizaci. Polling funguje opačným směrem: vaše aplikace opakovaně požaduje nejnovější informace o sledování. Pro vývojáře, kteří propojují data o zásilkách se systémem pro správu objednávek, obchodem nebo službou pro upozorňování zákazníků, jsou webhooky obecně lepším primárním mechanismem aktualizací, pokud jsou podporovány; cílený polling může pomoci obnovit zmeškané aktualizace a sladit záznamy.

Webhook Shipment Tracking How Tracking Webhooks Work vs Polling Payloads

Ani jedna z metod nezpůsobí, že dopravce naskenuje zásilku dříve. Obě závisí na tom, kdy zdroj sledování obdrží a zpřístupní nové informace. Praktický rozdíl spočívá v tom, jak se vaše aplikace o těchto informacích dozví, jaký objem požadavků generuje a co se stane při selhání doručení.

Webhooky pro sledování vs. polling: provozní rozdíl

Jedná se o integrační vzory, nikoli o konkurenční databáze sledování. Dopravce nebo sledovací platforma může nabízet jeden z těchto vzorů nebo oba, s odlišnými podmínkami přístupu. Porovnávejte chování konkrétního API, které plánujete používat, a nepředpokládejte, že všechny webhookové služby poskytují stejné záruky.

Rozhodovací bodWebhookyPolling
Kdo zahajuje požadavek?Sledovací služba volá váš endpoint.Vaše aplikace volá sledovací API.
Zpoždění aktualizaceZávisí na aktuálnosti zdroje, generování události, doručení a zpracování.Závisí také na tom, kdy proběhne váš další naplánovaný požadavek.
Objem požadavkůJe určován odeslanými aktualizacemi, dávkováním a opakováním doručení.Je určován objemem zásilek, frekvencí pollingu a dávkováním.
InfrastrukturaVyžaduje dostupný přijímač a bezpečné zpracování příchozích požadavků.Vyžaduje plánovač, odchozí přístup k API a zpracování limitů rychlosti.
Obnova po selháníZávisí na opakování ze strany poskytovatele a vašem vlastním procesu sladění.Závisí na následných požadavcích a na tom, zda API uchovává potřebnou historii.

Dejte přednost webhookům, když jsou důležité včasné aktualizace a váš tým dokáže provozovat spolehlivý přijímač. Dejte přednost pollingu, když jsou příchozí endpointy nepraktické, objem zásilek je omezený nebo zdroj neposkytuje vhodné webhooky. Použijte hybridní návrh, když by zmeškané aktualizace narušily komunikaci se zákazníky nebo provoz a API podporuje sladění.

Nepředpokládejte, že webhooky jsou levnější. Poplatky za odběr, registraci sledování, volání API, doručování událostí a infrastrukturu mohou být účtovány odlišně. Porovnávejte skutečné obchodní podmínky a očekávané pracovní zatížení, místo abyste považovali menší počet požadavků za důkaz nižšího účtu.

Co se děje mezi skenem dopravce a vaší aplikací?

  1. Identifikujte zásilku. Přiřaďte sledovací číslo, případně údaje o dopravci a interní referenci zásilky. Některé služby vyžadují registraci před zahájením sledování.
  2. Nakonfigurujte doručování událostí. Zadejte HTTPS callback URL a vyberte podporované odběry událostí.
  3. Zdroj obdrží informace o sledování. Sken dopravce nebo změna stavu se zpřístupní sledovací službě.
  4. Služba odešle webhook. Požadavek může obsahovat úplný snímek sledování, jeden kontrolní bod nebo pouze referenci vyžadující vyhledání prostřednictvím API.
  5. Váš přijímač jej ověří a uloží. Ověřte požadavek, zkontrolujte jeho strukturu a událost trvale zaznamenejte nebo zařaďte do fronty.
  6. Worker aktualizuje podnikové systémy. Normalizuje stavy, aktualizuje záznamy zásilek a spustí pouze akce, které jsou stále vhodné.

Doručení webhooku není totéž co fyzické doručení. Jde o zprávu týkající se informací o zásilce. Stejně tak úspěšná odpověď na webhook nedokazuje, že byl odeslán e-mail nebo aktualizován záznam objednávky; jedná se o výsledky následného zpracování, které vyžadují vlastní monitorování.

Jak číst payload webhooku pro sledování

Následující JSON je ilustrativní návrh integrace, nikoli payload 17TRACK ani univerzální schéma. Skutečné názvy polí, stavové kódy, formáty časových razítek a identifikátory událostí musí vycházet z dokumentace vybraného poskytovatele.

{
  "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"
    }
  }
}

Ve svém datovém modelu oddělte tři časové údaje: kdy událost zásilky nastala, kdy poskytovatel vygeneroval zprávu a kdy ji vaše aplikace přijala. Zpožděný kontrolní bod může dorazit po novějším. Časové razítko bez posunu časového pásma také vyžaduje explicitní interpretaci; automaticky nepovažujte každý čas dopravce za UTC.

Uchovávejte svou interní referenci zásilky společně s identifikátory poskytovatele. Samotné sledovací číslo nemusí být dostatečné jako trvalý globální identifikátor, zejména v různých kontextech dopravců. U rozdělených objednávek udržujte záznamy na úrovni zásilek a nedovolte, aby stav doručeno u jednoho balíku označil celou objednávku jako dokončenou.

Vedle normalizovaného obchodního stavu uchovávejte původní stav a popis. Vaše aplikace může několik zpráv dopravce mapovat na „v přepravě“, ale pracovníci podpory mohou stále potřebovat původní kontrolní bod k pochopení zpoždění. Na odhadovaná data doručení pohlížejte jako na odhady a rozlišujte chybějící pole od explicitního pokynu k vymazání existující hodnoty.

Opakování, potvrzení a duplicitní události

Doručení webhooku může selhat kvůli vypršení časového limitu, přerušení sítě, chybám ověřování nebo nedostupnému přijímači. Poskytovatel může požadavek opakovat, neexistuje však univerzální plán opakování, doba uchování ani maximální počet pokusů. Ověřte, které odpovědi spouštějí další pokus, jak se zpracovávají přesměrování a zda je k dispozici ruční opětovné doručení.

Potvrďte přijetí až po trvalém uložení

Udržujte cestu požadavku krátkou: ověřte požadavek, trvale uložte přijatou práci a vraťte úspěšnou odpověď vyžadovanou poskytovatelem. E-maily odesílejte a pomalejší podnikové operace provádějte asynchronně. Specifikace HTTP definuje 202 Accepted jako přijetí ke zpracování, nikoli jako dokončené zpracování, ale váš poskytovatel může vyžadovat jinou úspěšnou odpověď. Řiďte se jeho smlouvou pro webhooky.

Vrácení úspěchu před uložením čehokoli může vést ke ztrátě aktualizace, pokud proces havaruje. Čekání na každou následnou akci zase hrozí vypršením časového limitu a dalším pokusem o doručení. Trvalá doručená schránka nebo fronta vytváří hranici mezi přijetím a zpracováním.

Zajistěte idempotentní zpracování

Idempotence znamená, že opětovné zpracování stejné události neopakuje její obchodní účinky. Odesílatel může požadavek zopakovat poté, co váš server událost přijal, ale potvrzení se ztratilo. Duplicitní doručení by proto mělo být běžným testovacím případem.

  • Pokud je k dispozici zdokumentovaný identifikátor události, použijte jej jako klíč pro odstranění duplicit a vztáhněte jej ke správnému poskytovateli nebo účtu.
  • Pokud identifikátor neexistuje, navrhněte složený klíč ze stabilních polí události a otestujte rizika kolizí.
  • Vynucujte jedinečnost atomicky v úložišti; samostatná sekvence „zkontrolovat a poté vložit“ může při souběžném doručení kolidovat.
  • Chraňte také následné akce. Duplicitní událost nesmí odeslat další upozornění na doručení ani zopakovat finanční operaci.
  • Nastavte dobu uchování podle chování poskytovatele při opětovném přehrání a podle požadavků na obnovu, místo abyste záznamy pro odstranění duplicit mazali okamžitě.

Nepředpokládejte chronologické doručení

Nepřepisujte aktuální stav zásilky jen proto, že požadavek dorazil jako poslední. Porovnávejte význam události, časová razítka a případné zdokumentované informace o pořadí. Uchovávejte pozdní kontrolní body v historii, aniž byste automaticky vraceli zobrazený stav zpět. Zároveň umožněte zdokumentované opravy: striktní pravidlo, že doručené zásilky se nikdy nemohou změnit, může skrýt legitimní výjimky nebo opravené informace.

Praktický kontrolní seznam nastavení

1. Ověřte smlouvu s poskytovatelem

Před implementací ověřte požadavky na registraci, podporované události, strukturu payloadu, ověřování, očekávané odpovědi, časové limity, chování při opakování a limity API. Zjistěte, zda oznámení představuje snímek nebo přírůstkovou změnu, zda doručení mohou obsahovat více záznamů a zda odběr odesílá počáteční stav.

Pro integraci 17TRACK začněte na oficiální stránce Tracking API a v dokumentaci API. Pomocí dokumentace konkrétního poskytovatele stanovte pole požadavků a požadavky na callback; výše uvedený obecný payload není náhradou. Ověřte podmínky přístupu a provozní limity integrace, kterou plánujete nasadit.

2. Zabezpečte přijímací endpoint

Používejte HTTPS a mechanismus ověřování uvedený v dokumentaci poskytovatele. Pokud používá podpis HMAC, ověřujte přesně podepisovaný vstup, který specifikuje. Pokud jsou podepisovány surové bajty požadavku, parsování a opětovná serializace JSON před ověřením mohou tyto bajty změnit a podpis zneplatnit. Pro hodnoty podpisů odvozené z tajemství používejte porovnání v konstantním čase.

Pokud jsou k dispozici podepsaná časová razítka nebo identifikátory doručení, použijte zdokumentované mechanismy ochrany proti opakovanému přehrání. Platný podpis ověřuje zprávu, ale sám o sobě nepotvrzuje, že je aktuální. Uchovávejte tajemství mimo URL a aplikační protokoly, podporujte rotaci tajemství a omezte velikost požadavků. Povolení IP adres může být doplňkovou kontrolou tam, kde existují udržované rozsahy adres, nikoli náhradou za ověřování zpráv.

3. Oddělte přijetí od podnikového zpracování

Uložte dostatek informací pro trasování a bezpečné opětovné přehrání přijaté události. Workeři fronty by měli aktualizaci normalizovat, použít pravidla přechodu stavů a zaznamenat výsledky akcí. Opakovaně selhávající práci zařaďte do kontrolovatelného workflow fronty nedoručitelných zpráv, místo abyste ji opakovali donekonečna. Omezte přístup a dobu uchování, protože payloady sledování mohou obsahovat informace související se zákazníky.

4. Před spuštěním otestujte chybové scénáře

  • Odešlete stejnou událost dvakrát, včetně souběžných doručení.
  • Doručte starší kontrolní bod po novějším.
  • Simulujte výpadek fronty a havárii workera po přijetí.
  • Otestujte neplatné ověřování, chybný JSON a příliš velké požadavky.
  • Otestujte neznámé zásilky, chybějící volitelná pole a přidaná pole.
  • Ověřte, že jeden doručený balík nedokončí rozdělenou objednávku.
  • Po obnově znovu přehrajte událost a potvrďte, že oznámení zůstávají bez duplicit.

Tam, kde je to bezpečné, buďte tolerantní k přidaným polím, ale neinterpretujte tiše neznámé hodnoty stavů. Uchovávejte surovou hodnotu a směrujte nerozpoznané případy do definovaného záložního nebo kontrolního procesu.

Kde má polling stále své místo

Polling je užitečný pro počáteční synchronizaci, obnovu po výpadku a kontrolu zásilek, u nichž očekávané aktualizace nedorazily. Samotné ticho však není důkazem selhání webhooku: zásilka skutečně nemusí mít žádné nové skeny. Místo předpokladu, že každá neaktivní zásilka vyžaduje upozornění, porovnávejte aktuální stav nebo historii v API.

Pro plánování škálování lze použít zjednodušený model pollingu requests per hour ≈ active shipments × polls per shipment per hour, za předpokladu jedné zásilky na požadavek. Dávkové endpointy tento výpočet mění. Pro ilustraci: 1 000 zásilek kontrolovaných čtyřikrát za hodinu vytvoří před opakováním 4 000 požadavků za hodinu; jde o aritmetiku, nikoli o odhad kvóty nebo ceny poskytovatele.

Plánujte kontroly podle aktivity zásilek a obchodního rizika, respektujte limity rychlosti a přidejte náhodné rozložení, aby všechny úlohy nezačínaly současně. U opakovatelných selhání používejte omezený backoff a respektujte příslušné pokyny serveru. Trvalé chyby přihlašovacích údajů nebo validace neopakujte bez jejich opravy.

Praktický hybridní systém používá webhooky pro běžné aktualizace a cílená čtení API pro podezřelé mezery. Samostatně monitorujte selhání přijetí, stáří fronty, selhání zpracování, míru duplicit a nesrovnalosti při sladění. Pokud jsou časová razítka spolehlivá, rozlišujte zpoždění zdrojových dat, zpoždění doručení webhooku a zpoždění interního zpracování.

Časté dotazy

Jsou webhooky pro sledování v reálném čase?

Mohou zkrátit zpoždění způsobené čekáním na další cyklus pollingu. Nezaručují okamžité skeny dopravce ani okamžité aktualizace zdroje. Aktuálnost od začátku do konce zahrnuje hlášení dopravce, zpracování poskytovatelem, doručení požadavku a vaši vlastní aplikaci.

Mohu po povolení webhooků polling úplně zastavit?

Možná, pokud to funkce obnovy poskytovatele a vaše obchodní požadavky umožňují. U provozně důležitých záznamů zásilek si ponechte metodu sladění. Může být cílená, nikoli založená na průběžném pollingu každé zásilky.

Co se stane, když je můj webhook endpoint offline?

Obnova závisí na zdokumentované zásadě opakování odesílatele. Nepředpokládejte, že opakování pokračuje neomezeně. Po obnovení endpointu zkontrolujte neúspěšná doručení, použijte podporované nástroje pro opětovné doručení a podle dostupnosti slaďte dotčené zásilky prostřednictvím API.

Měl by každý webhook spustit upozornění zákazníka?

Ne. Událost může být duplicitní, historický kontrolní bod nebo aktualizace, která nemění stav zobrazovaný zákazníkovi. Oznámení spouštějte na základě obchodních přechodů bez duplicit a s pravidly pro výjimky a opravy.

Znamená úspěšná HTTP odpověď, že aktualizace zásilky je dokončena?

Ne nutně. V asynchronním návrhu znamená, že přijímač přijal událost podle dohodnuté smlouvy. Dokončení zpracování a výsledky následných oznámení sledujte samostatně, aby přijatý požadavek nemohl skrýt selhaný workflow.

Zdroje

Loading