Shipping is typically the second or third largest operational expense for e-commerce businesses, after product cost and sometimes marketing. Unlike marketing, shipping costs compound — every order you fulfill has a shipping cost attached. Reducing that cost by 15-20% across all shipments has a significant impact on margin. Here’s how to do it with EasyPost and WooCommerce.
Before optimizing, understand what you’re optimizing against. Carriers price shipments based on:
The two biggest levers are reducing DIM weight (using right-sized boxes) and choosing the cheapest carrier+service for each shipment.
DIM weight is calculated from your box dimensions, not your product dimensions. A small product in a large box pays large-box DIM weight pricing. Using right-sized boxes consistently reduces DIM weight charges — often by 20-30% for lightweight products in standard packaging.
The TheForge EasyPost Shipping plugin includes a 3D bin packing algorithm that automatically selects the smallest box from your configured box sizes for each order. This isn’t just about efficiency — it’s a direct cost reduction mechanism.
EasyPost’s core value proposition is multi-carrier rate comparison. For every shipment, EasyPost returns rates from every carrier your account has access to — USPS, UPS, FedEx, DHL, and more — ranked by price. The cheapest option for a 2lb package going to Zone 3 might be USPS Ground Advantage one week and UPS Ground the next, depending on fuel surcharges and zone pricing.
Manual carrier comparison is impractical at scale. EasyPost does it automatically, and the shipping plugin surfaces the lowest rate at checkout and in the order management screen.
EasyPost accounts get access to USPS Commercial pricing (also called Commercial Base Pricing or CBP) — rates that are significantly lower than retail Post Office prices. For USPS Priority Mail, commercial rates are typically 15-25% lower than retail. For USPS Ground Advantage (formerly First Class and Retail Ground), commercial rates make it competitive with UPS and FedEx Ground for packages under 1lb.
This pricing is included in your EasyPost account at no additional cost and applied automatically to every USPS rate request.
If you ship significant volume with UPS or FedEx (50+ packages/week), you’re eligible for negotiated rates directly with the carrier. These can be 30-50% below published rates for high-volume shippers. EasyPost supports importing your negotiated rates via carrier accounts, so the plugin automatically uses your discount rates when calculating and purchasing labels.
For products with consistent dimensions and weight, USPS flat rate packaging eliminates zone-based pricing entirely. A USPS Priority Mail flat rate box ships anywhere in the US for the same price regardless of weight (up to 70lbs) or destination.
The plugin lets you configure flat rate rules — for example, “if order weight is under 5lbs and fits in a flat rate envelope, use USPS Priority Mail flat rate.” Applied to the right products, this simplifies pricing and reduces cost for zone-heavy destinations.
Surcharges add up. Common avoidable surcharges:
Labor cost is a shipping cost. Manual label printing — finding the order, choosing a carrier, printing the label, updating tracking — takes 2-5 minutes per order. At 50 orders/day, that’s 2-4 hours of fulfillment time daily.
The TheForge EasyPost Shipping plugin includes automation rules that purchase labels automatically when orders are paid — choosing the right carrier, the right service, and applying your box configuration without manual intervention. Bulk label printing handles the rest. Your team focuses on picking and packing, not on shipping software.
The compounding effect of these strategies is significant. Right-sized boxes reduce DIM weight by 20%. Carrier comparison finds the cheapest option for each shipment. Commercial pricing reduces USPS costs by 15-25%. Address validation eliminates correction surcharges. Automation eliminates fulfillment labor time.
Applied together, stores typically reduce their per-shipment cost by 20-35% compared to manual carrier accounts and retail pricing.
Ready to get started? Get the TheForge EasyPost Shipping plugin or talk to our team about your specific shipping setup.
EasyPost connects your WooCommerce store to every major carrier — USPS, UPS, FedEx, DHL, and dozens more — through a single API. When paired with the right plugin, you get live checkout rates, one-click label generation, address validation, and automated fulfillment. Here’s how to set it all up.
Go to easypost.com and create a free account. EasyPost offers a test environment where you can generate labels and preview rates without incurring charges — ideal for initial setup and testing.
Once your account is created, navigate to Account → API Keys. You’ll find both a Test API Key (prefix: EZTK) and a Production API Key (prefix: EZ). Keep both handy.
Install the TheForge EasyPost Shipping plugin for WooCommerce from your WordPress admin under Plugins → Add New. After activation, the setup wizard launches automatically — it walks you through every configuration step in about 5 minutes.
In the setup wizard (or under EasyPost Shipping → Settings → API), enter your Test API Key first. Click Test Connection to verify it’s working. Once confirmed, switch to your Production key when you’re ready to go live.
The plugin supports both modes simultaneously — you can keep your test key configured for development and toggle to live mode when ready to ship real orders.
Your origin address is used for rate calculation and label generation. Enter your full address under Settings → Origin Address. For accurate rates, make sure the ZIP code and country are correct — carrier rate algorithms are very sensitive to origin ZIP.
The plugin ships with three default box sizes (Small, Medium, Large). Add your actual box dimensions under EasyPost Shipping → Boxes. Accurate box dimensions are critical — carriers calculate dimensional weight (DIM weight) for most shipments, and using the wrong box size can result in unexpected rate charges.
Three packing methods are available:
Start with Weight-Based and move to 3D if you find rate accuracy needs improvement.
Go to WooCommerce → Settings → Shipping and add “EasyPost Shipping” as a method to your shipping zones. The plugin’s setup wizard can do this automatically — it adds EasyPost to the “Rest of the World” zone with one click.
Under Settings → Advanced, enable address validation. When customers enter a shipping address at checkout, the plugin verifies it against USPS and carrier databases in real time. Invalid addresses are flagged before the order is placed, reducing failed deliveries and return shipments.
Under EasyPost Shipping → Automation, set up rules to automatically purchase labels when an order is paid. You can configure rules by order value, product category, shipping zone, or weight — so high-volume, predictable orders are handled hands-free while unusual orders stay in a manual review queue.
Place a test order on your store with your test API key active. Verify that:
Once everything checks out, switch to your production API key and you’re live.
The full plugin documentation covers every configuration option in detail. If you run into any issues during setup, our support team typically responds within a few hours on business days.
Shipping insurance is one of those things that feels optional until you need it. A high-value shipment gets lost, damaged, or stolen — and without insurance, you absorb the loss. EasyPost’s shipment insurance API makes it easy to protect orders directly from your WooCommerce dashboard.
EasyPost offers its own insurance product (underwritten by a third-party insurer) that can be added to any shipment you create via the API. The premium is typically 1% of the declared value with a minimum of around $1 per shipment — significantly cheaper than carrier-provided insurance for most cases.
The TheForge EasyPost Shipping plugin integrates this directly into the label generation flow.
When generating a label from the WooCommerce order screen, you’ll see an Add Insurance option with a field for the declared value. Enter the item value, and the insurance premium is calculated and shown. Confirm, and the label is generated with insurance attached.
For bulk label generation, you can configure the plugin to automatically add insurance to any order above a configurable value threshold — so high-value orders are always protected without manual intervention.
You can also offer shipment insurance as an optional add-on at checkout. The customer sees a checkbox — “Add shipment insurance for $X.XX” — and can choose whether to include it. The insurance cost is calculated based on the order total and the EasyPost rate.
This approach lets customers who want the peace of mind pay for it, while keeping checkout simple for customers who don’t.
If an insured shipment is lost or damaged, you file a claim directly with EasyPost (not the carrier). EasyPost’s claims process is straightforward — you submit the claim with the shipment details and evidence of value, and EasyPost handles it from there.
A useful rule of thumb: auto-insure any shipment where the item value exceeds the cost of a reasonable self-insurance reserve. For most stores, that’s somewhere between $100–$500 depending on your shipping volume and loss history.
Questions? Visit the ThePluginForge support page.
Download TheForge EasyPost Shipping free →
If you ship significant volume, dropping packages at the post office or a carrier drop-off point every day adds unnecessary time to your fulfilment workflow. Carrier pickup scheduling lets you book a collection at your address — the carrier comes to you.
The TheForge EasyPost Shipping plugin handles pickup scheduling directly from WordPress, without requiring you to log into the carrier’s website or make a phone call.
Pickup scheduling is supported for major carriers via EasyPost:
From the EasyPost → Pickups panel in your WooCommerce dashboard, select the carrier, enter the pickup address (defaults to your store address), specify the earliest and latest window for the pickup, and choose the date. The plugin sends the request to EasyPost, which forwards it to the carrier’s pickup scheduling system.
You’ll receive a pickup confirmation number which the plugin stores against the pickup record. If you need to cancel, you can do so from the same panel — again, without leaving WordPress.

For low-volume stores (under 10 packages per day), drop-off is usually fine. For higher volumes:
The workflow that saves the most time: generate all your labels in bulk at the same time each morning using the labels panel, then schedule a carrier pickup for later that day. Your packages are labelled, stacked, and ready — the carrier collects them without any further action from you.
For questions about pickup scheduling, visit the ThePluginForge support page.
Download TheForge EasyPost Shipping free →
A generous, easy returns policy is one of the most effective tools for building customer confidence — particularly for first-time buyers. Studies consistently show that customers are more likely to buy from stores where the returns process is clear and simple. Return labels are a key part of that equation.
The TheForge EasyPost Shipping plugin makes generating return labels as simple as generating outbound labels.
A return label is a pre-paid shipping label that the customer uses to send the product back to you. You absorb the shipping cost, but you gain significant advantages: controlled return flow, carrier account consolidation, and a professional customer experience.
From any WooCommerce order screen where an outbound label exists, you’ll see a Generate Return Label button. Click it, select the carrier and service for the return (you might use a different service than the outbound — USPS First Class for lightweight returns, for example), and the plugin creates a pre-paid label addressed from the customer back to your store.

Once generated, you can:
For high-value items or segments where return rates are low, including the return label in the box is a powerful trust signal even if most customers never use it.
Return labels have an expiry date set by the carrier. Most are valid for 30–90 days. The plugin displays the expiry date on the order screen so you know when a label is no longer usable.
You see the cost of each return label before generating it — the same live rate you’d see for an outbound label. This lets you make informed decisions about when offering return labels makes financial sense (high-value orders, VIP customers) versus when you’d prefer to handle returns case-by-case.
The roadmap for the EasyPost plugin includes a self-service return portal where customers can initiate a return from their My Account page without contacting support. Watch the plugin page for updates.
Questions about return label setup? Visit the ThePluginForge support page.
Download TheForge EasyPost Shipping free →
Once a label is generated and a package is on its way, the tracking experience is one of the most important parts of your customer’s post-purchase journey. “Where is my order?” is the most common customer service question in ecommerce — and with proper tracking automation, you can answer it before the customer even asks.
EasyPost provides a unified tracking API that works across all connected carriers. When a label is generated with the TheForge EasyPost Shipping plugin, a tracking number is automatically associated with the order in WooCommerce.
EasyPost then monitors the shipment and sends webhook events to your site as the package moves through the carrier network — picked up, in transit, out for delivery, delivered, exception, and so on.

The plugin listens for EasyPost tracking webhooks and updates your WooCommerce order status automatically. You can configure which tracking events trigger which order status changes:
When a label is generated, the plugin can automatically email the customer their tracking number and a link to the carrier’s tracking page. The email uses your existing WooCommerce transactional email templates, so it matches your branding.
For each carrier, EasyPost provides a direct tracking URL. The plugin formats this into a customer-friendly link — e.g. “Track your USPS shipment →” — rather than a raw tracking number the customer has to paste somewhere.
Every generated tracking number appears on the WooCommerce order screen (for you as the admin) and on the customer’s My Account → Orders page. Customers can click the tracking link directly from their account without needing to find the email.
For tracking webhooks to work, EasyPost needs to be able to send events to your site. The plugin provides your webhook URL in the settings — you paste this into your EasyPost dashboard under Webhooks. Once configured, tracking events flow automatically.
If your site is on a local development environment or behind a firewall, webhooks won’t be receivable — this is expected. Webhooks only work on publicly accessible production sites.
If webhooks aren’t an option, the plugin can poll EasyPost for tracking updates on a schedule using WordPress cron. This is less real-time than webhooks but still gives you automated status updates — just with a delay of up to your configured polling interval.
Need help configuring tracking? Visit the ThePluginForge support page.
Download TheForge EasyPost Shipping free →
Carrier shipping rates are calculated based on the size and weight of the package you’re sending. If your WooCommerce store sends rate requests with inaccurate package dimensions, you’ll either overcharge customers (and lose sales) or undercharge (and eat the difference). The solution is accurate packing calculation — and that’s what 3D bin packing does.
3D bin packing is an algorithm that determines how a set of items can be arranged inside one or more boxes, given each item’s dimensions and each box’s dimensions. It considers not just whether items fit, but finds the smallest valid combination of boxes.
The TheForge EasyPost Shipping plugin runs this algorithm for every cart — testing every combination of item orientations (rotating items to try all six faces) and every combination of available boxes — to find the configuration that uses the smallest total box volume.

Carriers charge based on whichever is greater: actual weight or dimensional weight. Dimensional weight is calculated as (length × width × height) / divisor. If you tell the carrier your box is 24″ × 24″ × 24″ when it’s actually 12″ × 12″ × 8″, you’ll be quoted a much higher rate.
Accurate packing calculation means:
Go to WooCommerce → Settings → Shipping → EasyPost → Packing and add the box sizes you actually use in your warehouse. For each box, enter:
Add all the box sizes you use. The more accurately your box inventory is configured, the more accurate your rates will be.
For the packing algorithm to work, every product in your WooCommerce store needs weight and dimensions set. These are standard WooCommerce fields on the product → Shipping tab. If a product has no dimensions set, the plugin falls back to a configurable default — but it’s much better to set them correctly at the product level.
When an order’s items don’t fit in a single box, the algorithm splits the shipment into multiple boxes and rates them as a multi-piece shipment. EasyPost handles multi-piece shipments natively, so the rate you get back is accurate for the actual number of boxes you’ll be shipping.
Some products should always ship in their own box — fragile items, products with awkward shapes, or anything that can’t be combined with other products for safety or quality reasons. You can mark individual products as “always ship in own box” and the packing engine will exclude them from combination packing.
Questions about packing configuration? The ThePluginForge support page has documentation and a help desk.
Get TheForge EasyPost Shipping free →
Flat-rate shipping is a guess. Sometimes you guess too high and lose the sale. Sometimes you guess too low and eat the difference. Live carrier rates remove the guesswork entirely — your customer pays exactly what shipping actually costs, and you charge exactly that amount.
Here’s a complete look at how live rates work in the TheForge EasyPost Shipping plugin.

When a customer enters their shipping address at checkout, the plugin sends a rate request to the EasyPost API. That request includes:
EasyPost returns rates from every connected carrier and service in typically under a second. The plugin filters the response to show only the services you’ve enabled, then displays them to the customer.
EasyPost connects to over 100 carriers globally. For most WooCommerce stores, the relevant ones are:
You connect your own carrier accounts to EasyPost, so the rates you receive are your negotiated rates, not retail rates.
Not every carrier service makes sense for every store. A craft shop doesn’t need UPS Next Day Air. An electronics retailer might need it. The plugin’s carrier management panel lets you enable exactly the services you want to offer, drag them into your preferred display order, and add handling fees or discounts per service.
Making a live API call for every keypress in the address field would be slow and expensive. The plugin caches rates intelligently: once rates have been fetched for a given address and basket combination, they’re cached for a configurable period. Return visitors or customers who refine their address see instant results without another API call.
EasyPost returns estimated delivery days alongside each rate. The plugin can display these next to the rate label. You control the format: “Estimated delivery: {days} business days”, “— arrives in {days} days”, or any custom string with the {days} placeholder.
You can configure a free shipping threshold directly in the plugin settings. Orders above a certain value get free shipping — the plugin adds a “Free Shipping” option to the rates list and can optionally hide the paid options when the threshold is met.
If no rates appear at checkout, the most common causes are:
Full documentation and troubleshooting help is available at the ThePluginForge support page.
Download TheForge EasyPost Shipping free →
If you’re fulfilling more than a handful of orders a day, printing shipping labels one at a time is one of the biggest drains on your operational time. Open order, create shipment, select service, generate label, download PDF, print — then repeat for every single order. At 50 orders a day, that process takes most of your morning.
The TheForge EasyPost Shipping & Bulk Label Printing plugin was built specifically to solve this. Here’s a complete look at how the labels panel works and how to get the most out of it.

The labels panel lives directly inside the WooCommerce orders screen. You don’t need to visit a separate dashboard or log into a carrier portal. Every order you have in WooCommerce is accessible from the same interface you already use to manage your store.
From the labels panel you can:
Select your orders using the standard WooCommerce order checkboxes, then choose Generate Labels from the bulk actions dropdown. The plugin sends each order’s details to EasyPost — customer address, package dimensions, selected carrier service — and receives a label back for each one.
The plugin uses the shipping service the customer chose at checkout wherever possible. If no carrier was selected (for example, on orders placed before the plugin was installed), you can configure a default fallback carrier and service for bulk generation.
Once labels are generated, click Print All Labels. The plugin fetches every generated label and merges them into a single PDF file — one download, one print job. If you’re using a thermal label printer (which you should be — they’re dramatically faster than laser or inkjet for shipping labels), the PDF is formatted to print one label per page.

Printed a label for an order that was then cancelled? No problem. Void the label directly from the order screen and EasyPost will request a refund from the carrier. Most carriers process voids within 24–48 hours.
For accurate labels, the plugin needs package dimensions and weight. You can set these at the product level (the plugin reads WooCommerce’s built-in weight and dimensions fields) or define custom boxes at a store level. The 3D bin packing engine figures out the best box combination automatically — you don’t have to calculate it manually.
Go to WooCommerce → Settings → Shipping → EasyPost to configure which carrier and service are used when generating labels without an explicit customer choice. You can set different defaults for domestic and international orders.
The plugin connects to EasyPost using your EasyPost API key, which in turn connects to your carrier accounts. You’ll need an EasyPost account (free) and at least one connected carrier account. EasyPost supports USPS, UPS, FedEx, DHL, and dozens of regional carriers — connect the ones relevant to your business.
Need help setting up the labels panel? Visit the ThePluginForge support page for documentation and assistance.