Skip to main content

Couriers

Purpose​

Buy labels, cancel waybills, and track shipments. Master data (Courier) is separate from the HTTP strategy.

Contract​

integrationCode, ship, cancel, track. IntegrationAutoRegistrationService discovers strategies by those members.

CodeName where readWebhook controller found
SHPShiprocketPublic, enqueues webhook_queue
SHPINTLShiprocket internationalPublic route
DLHDelhiveryNo
BLDBluedartNo
BLDINTLBluedart internationalNo
FDXFedExNo
DTDCDTDCNo
SHWYShipwayPublic
STPStampsNo
PTRPorterNo
ITLiThink LogisticsPublic

Seed codes without a strategy class: NIP, PIK, SHYP, ARMX, AMZ.

Data flow​

Labels: fulfillment_queue / batch-labels. Tracking: poll every 3 hours, manual refresh, and webhooks where a controller exists. See Labels and Tracking.

Retries​

Fulfillment queue default is 3 attempts, exponential 2 seconds, if the processor throws. Webhook queue is 8 attempts, exponential 5 seconds. There is no shared carrier HTTP retry policy beyond that. Shiprocket in particular has many local catch blocks.

Idempotency and recovery​

Unknown: rate limits per carrier, and whether a label that the courier accepted but PointNXT failed to store is reconciled automatically.

Signature coverage is not “all courier webhooks.” Check each controller.

Code​

src/integrations/shiprocket, shiprocket-intl, delhivery, bluedart, bluedart-intl, fedex, dtdc, shipway, stamps, porter, ithink-logistics.