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.
| Code | Name where read | Webhook controller found |
|---|---|---|
SHP | Shiprocket | Public, enqueues webhook_queue |
SHPINTL | Shiprocket international | Public route |
DLH | Delhivery | No |
BLD | Bluedart | No |
BLDINTL | Bluedart international | No |
FDX | FedEx | No |
DTDC | DTDC | No |
SHWY | Shipway | Public |
STP | Stamps | No |
PTR | Porter | No |
ITL | iThink Logistics | Public |
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.