EasyPost + CartonPilot

Add cartonization in front of EasyPost.

EasyPost rate-shops the parcel you give it - CartonPilot decides what that parcel should be. One API call picks the optimal box mix per order, then you create EasyPost shipments from those parcels and buy the best rate as usual.

How CartonPilot and EasyPost fit together

EasyPost answers “which carrier and service for this parcel?” CartonPilot answers the upstream question: “which box(es) should this order ship in?”

1. Order comes in

POST the order's items and your box lineup to CartonPilot's /api/v1/shipping-optimize - dimensions, weights, quantities, and available cartons (or a saved SKU catalog).

2. Get the optimal box mix

The response gives you the box choice per shipment with exact dimensions and actual, dimensional, and billable weight - everything an EasyPost parcel needs.

3. Rate-shop with EasyPost

Create EasyPost shipments from those parcels and buy the best rate. Labels, tracking, and address verification stay exactly where they are today.

POST /api/v1/shipping-optimize
curl -X POST https://cartonpilot.com/api/v1/shipping-optimize \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "boxes": [
      { "id": "S", "dimensions": { "length": 10, "width": 8, "height": 6 }, "cost": 0.61 },
      { "id": "M", "dimensions": { "length": 15, "width": 12, "height": 10 }, "cost": 0.94 }
    ],
    "items": [
      { "id": "MUG-01", "weight": 1.2, "quantity": 4,
        "dimensions": { "length": 5, "width": 4, "height": 4 } }
    ],
    "options": { "objective": "lowest-billable-weight", "dimDivisor": 139 }
  }'

# Response (per shipment): box id + dimensions, item placements,
# and billing { actualWeight, dimWeight, billableWeight }
# then create an EasyPost shipment from shipment.box.dimensions

What you gain before the first rate call

Fewer parcels to rate-shop

Optimized cartonization shipped 44% fewer parcels in our published, reproducible benchmark - fewer EasyPost shipments to create and fewer labels to buy per order.

Lower billable weight going in

Pass your carrier's DIM divisor via options.dimDivisor and use the lowest-billable-weight objective, so the parcels you hand EasyPost are already the cheapest ones to rate.

Box spend visibility

Every pack plan includes the cost per carton (and box tare weight), so you see packaging spend alongside the carrier rates EasyPost returns.

Free audit - no signup

See what better boxes would save before you wire anything up.

Paste an order (or a CSV) and the production engine shows parcels saved, box spend, and estimated FedEx/UPS Ground cost - right here, before your next EasyPost rate call.

Your order

ItemLWHlbQty
No signup. Dimensions in inches.

Audited against a standard 7-box corrugated line-up using a first-fit baseline vs. cartonpilot-ultra.

Add your items and run the audit to see how many parcels and how much box spend CartonPilot can cut.

EasyPost cartonization FAQ

Does EasyPost do cartonization?

EasyPost's shipment API takes predefined parcel dimensions - length, width, height, and weight that you supply - and returns rates and labels across carriers. Cartonization is the step before that: deciding which box (or boxes) an order should ship in. That upstream step is what CartonPilot does, so the two are complementary rather than overlapping.

Do I have to replace EasyPost?

No. CartonPilot sits upstream of EasyPost, not in place of it. Keep EasyPost for what it's great at - multi-carrier rate shopping, label purchase, tracking, and address verification. CartonPilot only handles the box-selection step, then hands the resulting parcel dimensions to your existing EasyPost integration.

What does the integration look like?

Two API calls per order. First, POST the order's items and your box lineup to CartonPilot's /api/v1/shipping-optimize; the response is an optimal box mix with dimensions and billable weight per shipment. Then create an EasyPost shipment from each returned box's dimensions and weight and buy the best rate as usual.

How much latency does the extra call add?

Very little. The solver computes a pack plan in under 1 ms (median) per order, and API responses run about 20 ms p50 / 60 ms p95 measured server-side - negligible next to a rate-shop call. It fits inline in a checkout or fulfillment flow without a caching layer.

Is there a free tier to test the integration?

Yes. The Free plan includes 1,000 items/month with no credit card, which covers full integration testing against your EasyPost sandbox. You can also run the free packing audit on this page with no signup at all.

Start on the free plan

1,000 items/month free - no credit card. Or read the API docs.

EasyPost is a trademark of EasyPost, Inc. CartonPilot is not affiliated with or endorsed by EasyPost.