Live multi-carrier shipping rates at checkout from the ShipStation API v2 (UPS, Canada Post, Purolator, DHL, and more), with a guaranteed fallback so a carrier or API outage can never leave checkout with zero shipping options.
Key features:
- Proper WooCommerce shipping method (extends WC_Shipping_Method), instance-based per shipping zone.
- Multi-carrier redundancy: one carrier erroring never suppresses the others.
- Mandatory fallback flat rate on API error, timeout, or zero usable rates — the fallback amount cannot be saved empty or negative.
- Two-tier rate caching (fresh + 24h stale) keyed by a package/destination hash, with a configurable TTL.
- Customs handling for US/international shipments (default HS code + per-product overrides).
- Per-service whitelist, percentage + flat markup, generic or carrier-named labels, delivery-day estimates.
- Structured logging via the WooCommerce logger (source: sonicpixel-mclr); the API key is never logged.
- API client isolated from WooCommerce (injectable transport) so it is unit-testable and reusable.
Sonic Pixel Multi-Carrier Live Rates is an independent plugin by Sonic Pixel. It is not affiliated with, endorsed by, or sponsored by ShipStation, Auctane, or WooCommerce. ShipStation and WooCommerce are trademarks of their respective owners and are named here only to describe what the plugin works with.
External services
This plugin connects to the ShipStation API v2 (https://api.shipstation.com/v2), operated by ShipStation (Auctane). It is required: live shipping rates come from this service. Nothing is sent until you enter your own ShipStation API key, and all requests are authenticated with that key.
- When shipping is calculated in the cart or at checkout (classic or block checkout), the plugin requests rates (
POST /v2/rates). It sends the package weight and dimensions; the ship-from address, name, company, and phone from the plugin settings; and the destination address the customer entered (street, city, state/province, postcode, country). No customer name, email, or phone number is sent. On cross-border shipments it also sends customs details for each item: description, quantity, value, currency, HS code, and country of origin. Rates are cached, so repeat views of the same cart do not trigger another request. - When you save the plugin settings, it requests your connected carriers and their services (
GET /v2/carriers) to build the service list. No store or customer data is sent with this request.
ShipStation’s Terms of Service and Privacy Policy.