Rate Shopping

by goshippocf8e96532f24No licenseListed Oct 8, 2026Updated Oct 8, 2026

Compare multi-carrier shipping rates, find cheapest/fastest options, and get shipping recommendations via the Shippo API

Instructions onlyBusiness & Finance
AI-generated overview

Compares multi-carrier shipping rates via the Shippo API and recommends cheapest, fastest, or best-value options.

What it does
Guides an agent through collecting shipment details, validating addresses, and calling Shippo's CreateShipment to retrieve a rates array, which it presents as a table of carrier, service level, price, and estimated days. It covers filtering by speed, currency-specific rates, checkout line-item rates, rate expiration, and international rate issues. It also computes cheapest, fastest, and best-value recommendations and explains the trade-offs between them.
When to use it
Use when a user wants to compare shipping options across carriers, find the cheapest or fastest delivery, or get a shipping recommendation for a parcel. Also useful for troubleshooting cases where no rates are returned.
Requirements
Requires access to the Shippo API and its shipment, address validation, live rate, and currency rate operations. No scripts are shipped; it is instructions only. It references a customs guide file (shippo/references/customs-guide.md) for international details.
<!-- ⚠️ DO NOT EDIT. Auto-generated from skills/rate-shopping/SKILL.md by scripts/sync.js Edits here will be overwritten on the next sync. To change this content, edit the canonical source and re-run the sync script. -->

Rate Shopping and Comparison

Get Rates for a Shipment

  1. Collect: origin address, destination address, parcel (length, width, height, distance_unit, weight, mass_unit). All dimension and weight values must be strings (e.g., "10" not 10).
  2. Optionally validate both addresses with ValidateAddress (see Address Validation).
  3. Call CreateShipment with address_from, address_to (as inline address objects using v1 field names -- street1, city, state, zip, country -- not object IDs), and parcels.
  4. The response rates array contains available options. Present a table: carrier, service level, price, estimated days.
  5. Note: the same carrier may return duplicate rates from multiple carrier accounts. Present the best rate per carrier/service combination.
  6. Each rate carries an object_id. To buy a label, pass the chosen rate's object_id to the purchase flow (see Label Purchase); you do not re-send the address or parcel.

Rate Expiration

Rates expire after 7 days. If a user tries to purchase a rate that was retrieved more than 7 days ago, create a new shipment to get fresh rates.


Filter by Speed

Map user requests: "overnight" = estimated_days 1, "2-day" = estimated_days <= 2, "within N days" = estimated_days <= N. Filter the rates array accordingly. If nothing matches, show the fastest available option.


International Rates

Some carriers may return international rates without a customs declaration, but others will not. If no rates are returned, try attaching a customs declaration to the shipment. Some carriers also require a phone number on the destination address for international rate retrieval. Inform the user that customs will be required at label purchase time regardless. See shippo/references/customs-guide.md for customs details.


Checkout Rates (Line Items)

Call CreateLiveRate instead of CreateShipment. Accepts address_from, address_to, and line_items (each with title, quantity, total_price, currency, weight, weight_unit).


Rates in a Specific Currency

Call ListShipmentRatesByCurrencyCode with the preferred ISO currency code (USD, EUR, GBP, CAD, etc.).


Recommendation

Identify the cheapest (lowest amount), fastest (lowest estimated_days), and best-value options from the rates array. These are not API fields -- compute them by sorting the rates array yourself. State the trade-off: "Option A is $X cheaper but takes Y more days than Option B."


Troubleshooting: No Rates

  • Verify both addresses passed validation (most common cause).
  • Confirm parcel dimensions are reasonable (not zero, not exceeding carrier limits).
  • Shippo provides managed carrier accounts by default for major carriers. If no rates are returned, the issue is more likely address validation, unsupported route, or parcel dimensions -- not missing carrier accounts. You can verify with ListCarrierAccounts if needed.
  • Rates expire after 7 days. If stale, create a new shipment to get fresh rates.

Quick Reference

Get rates: (optional) ValidateAddress (x2) -> CreateShipment (with inline addresses) -> read rates array

Source and attribution

Source:goshippo/aiinproviders/claude/plugin/skills/rate-shoppingat commitcf8e965

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal

More from goshippo/ai

Upgrade Shippo

goshippo

Guides Shippo API version awareness, webhook payload versioning, and troubleshooting of the hosted Shippo MCP server.

Software DevelopmentOct 8, 2026

Tracking

goshippo

Track packages across carriers via the Shippo API, including tracking history and webhooks.

Productivity & WorkflowOct 8, 2026

Shippo Support Ticket

goshippo

Generate a complete, auto-classified, ready-to-paste Shippo support ticket for a single shipment or label. Use when a support agent or customer needs to escalate a shipping issue (lost/delayed package, unused-label refund, billing/rate adjustment, address exception, customs hold, carrier-account, or tracking-webhook problem). Given a tracking number + carrier, a transaction (label) ID, or a shipment ID, it classifies the issue, runs the right read-only Shippo MCP lookups, computes the triage timeline, and emits both a copy-paste support message and a routing-tagged JSON block so the ticket lands in the right pipeline first time.

Awaiting classificationOct 8, 2026

Shippo Best Practices

goshippo

Guides Shippo integration decisions, choosing between Rates at Checkout vs. full Shipments+Transactions vs. Batch processing, address validation strategy (v1 vs v2 fields), domestic vs international workflows (customs declarations, incoterms), label format selection, and webhook setup. Use when planning, building, or reviewing any Shippo integration, including building checkout flows, bulk fulfillment pipelines, address validation, label generation, package tracking, customs handling, or webhook subscriptions.

Awaiting classificationOct 8, 2026

Shipping Analysis

goshippo

Analyzes shipping costs, compares carriers, optimizes package dimensions, and reviews historical shipping spend via the Shippo API.

Business & FinanceOct 8, 2026

Label Purchase

goshippo

Guides purchasing domestic, international and return shipping labels through the Shippo API, including customs and refunds.

Business & FinanceOct 8, 2026