oliverbj/cord
oliverbj/cord is a Laravel/PHP package that provides a simple, Composer-installable way to add Cord functionality to your application. It is lightweight and configurable, with setup and usage details available in the package repository.
Architecture fit
oliverbj/cord is a Laravel-oriented PHP SDK that wraps a shipping/delivery API for shipment creation and lifecycle updates. Release 3.5.4 extends the shipment update pathway with two new capabilities: estimated delivery dates and drop modes (i.e. unattended/leave-safe style delivery instructions). Architecturally this fits cleanly into the layer of our stack that handles post-purchase order fulfilment: it sits alongside order state transitions, is naturally invoked from queued jobs, and does not require us to host or operate an additional service. The package is consumed as a Composer dependency with a Laravel service provider and config file, which matches our existing third-party integration pattern.
The main architectural consideration is that this release increases the surface area of mutable shipment state. Estimated dates and drop modes are carrier-facing instructions; if we call update on a shipment, we are now responsible for deciding when a date is a "promise" versus an "estimate" and when a drop mode is legally acceptable (some carriers restrict unattended delivery for high-value or age-restricted goods). That logic must live in our domain layer, not be inherited implicitly from the SDK.
Integration feasibility
Low-to-moderate. Standard composer require + config publish + credential provisioning, then a thin adapter. The new fields appear additive to an existing update call, so no new transport, auth, or webhook work is implied. Realistic effort for a first production path: one sprint for the adapter + DTOs + queued update job, plus a second sprint for carrier-by-carrier validation and UI surfacing of delivery promises.
Technical risk
composer update could break us silently.Key questions
estimated_date and drop_mode parameters optional on the update call, with unchanged defaults? Confirm no breaking signature change in 3.5.4.drop_mode backed by a BackedEnum / validation rule, and is the accepted value set carrier-specific or global?Stack fit
Standard Laravel 10/11 + PHP 8.1+ application, queue workers (Redis/SQS), and our existing outbound-integration adapter pattern. The package belongs behind an internal ShipmentGateway interface so that controllers, listeners, and jobs never reference the vendor namespace directly. New release features map to two thin additions on that interface: updateEstimatedDelivery(ShipmentId, Date) and updateDropMode(ShipmentId, DropMode).
Migration path Greenfield — there is no incumbent assessment or prior integration, so no migration is required. If we are replacing manual carrier portal entry, run in parallel: package writes shipment updates while ops continues to verify in the carrier portal for a defined bake period.
Compatibility Treat 3.5.4 as a forward-compatible minor feature set despite its patch number. Practical steps:
composer.json to ^3.5 and commit the lock file; do not auto-merge patch bumps.compare/3.5.3...3.5.4 changelog and inspect the touched method signatures before upgrading.illuminate/* constraints cover our Laravel version before promising a delivery date.drop_mode values we intend to send are accepted by each carrier we use, in sandbox, before enabling in production.Sequencing
ShipmentGateway adapter + DTOs + enum mapping. Do not leak SDK types into the domain.source and received_at so we can distinguish our promise from the carrier's.Maintenance Ongoing cost is low in code volume but non-trivial in vigilance. Pin the version, review each changelog before upgrading, and keep a small set of contract tests against the sandbox so an upstream API change is caught by us rather than by customers. Because the package is single-maintainer, budget for the possibility that we eventually fork or vendor it; keeping our adapter thin is the insurance policy that makes that cheap.
Support No commercial SLA. Support is GitHub issues with best-effort response. Escalation for a broken shipment update is therefore our on-call, not a vendor hotline. Operationally we need a documented manual fallback: ops staff updating shipments in the carrier portal while the integration is degraded. Note also that drop-mode disputes are a customer-service concern (missing parcels) as much as an engineering one — CS needs a runbook.
Scaling Updates are per-shipment and low-volume relative to checkout traffic; the package itself will not be the bottleneck. Scale concerns sit around it:
Failure modes
Ramp-up Engineering ramp-up is low — a Laravel developer is productive with the package in under a day, and the 3.5.4 additions add no new concepts beyond two optional fields. Domain ramp-up is the real cost: understanding carrier drop-mode rules, liability implications, and delivery-estimate semantics will take longer than the code. Plan for one engineer plus a fulfilment/ops SME during the rollout, and expect roughly two sprints from sandbox spike to production flag-on, with drop modes trailing estimated dates by a sprint while carrier capability mapping is confirmed.
How can I help you explore Laravel packages today?