Skip to content

Conversation

@Ansh-Dev-Nagar
Copy link
Contributor

@Ansh-Dev-Nagar Ansh-Dev-Nagar commented Dec 22, 2025

Introduce Carrier-Aware Service Resolution for eShipper

This PR introduces a carrier-aware service resolution approach in eShipper to prevent service name collisions across multiple carriers and ensure the correct service IDs are always used.

Bug

eShipper exposes services from multiple carriers (e.g. UPS, Canada Post) that share the same service names (such as “Expedited”).
Service metadata was built using the service name as the unique key, which caused collisions when multiple carriers used the same name.

Because of this:

  • One carrier’s service could overwrite another during metadata construction
  • Some services were effectively lost
  • Accessing Canada Post “Expedited” could resolve to the UPS “Expedited” service
  • This resulted in the wrong service ID being used (e.g. UPS 601 instead of Canada Post 5000026)

Solution

  • Use carrier-qualified service codes (e.g. eshipper_canadapost_expedited) as unique identifiers
  • Propagate carrier context through service lookup, rate parsing, and shipment creation
  • Ensure lookups always return the correct service for the intended carrier

Status

Completed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants