If you're running WooCommerce, you probably know this loop: order comes in, go to the carrier's website, manually enter details, print label, copy tracking number, paste it back into WooCommerce. Manageable at 5 orders a day. Unsustainable at 50.
This guide covers how to install a shipping plugin on WooCommerce and break that loop — from choosing between the three methods to the conflict and update risks specific to WordPress.
If you'd rather set it up directly, our WooCommerce shipping integration page lists the supported carriers and the connection flow. This guide is for deciding which of the three approaches fits your store.
What WooCommerce Does and Doesn't Do for Shipping
WooCommerce's built-in shipping system handles basics:
- Shipping zones: Different rates by country, state, or postal code
- Flat rate / Free shipping: Conditional rules based on cart value — getting the threshold right is what decides whether this makes or loses money
- Shipping classes: Different shipping rules per product group
But label printing, tracking number writeback, carrier API connections — none of these exist in WooCommerce. You need a plugin or external integration.
It helps to draw the line clearly: WooCommerce's shipping settings decide what you charge the customer. A shipping plugin decides how the shipment gets created at the carrier. Two different jobs, and neither substitutes for the other.
3 Paths for WooCommerce Shipping
| Method | Setup time | Developers needed | Rate comparison | Best volume |
|---|---|---|---|---|
| Single-carrier plugin | 15-30 min | No | None | <10 orders/day |
| Your own API build | 2-8 weeks | Yes | What you build | 1,000+ orders/mo |
| Platform plugin | 10-20 min | No | Across all carriers | 50+ orders/mo |
1. Single-Carrier Plugins
Some carriers offer their own WooCommerce plugins.
Advantage: Carrier-supported, usually free.
Real problems:
- Only works with that one carrier — no rate comparison
- Plugin update frequency can be low — when WooCommerce ships a major version, the plugin may break
- Bulk label printing usually not supported
- Switching carriers means switching plugins, losing configuration
When it fits: You only work with one carrier and ship fewer than 10 orders per day.
The real cost here is the invisible one: on every shipment where you don't compare rates, you never learn which carrier would have been cheaper for that parcel. We cover the savings side in the multi-carrier shipping strategy guide.
2. Build Your Own API Integration
WooCommerce is open source, so you can code everything yourself. Integrating carrier APIs directly is possible.
Requirements:
- PHP and WordPress hook system knowledge
- Separate API integration per carrier (protocols vary — some use SOAP, others REST)
- Webhook endpoints or cron jobs
- Hooking into
woocommerce_order_status_changedand similar actions
Honest assessment: This path makes sense for teams with backend capacity. But a single carrier API integration takes 2-3 weeks — for 3 carriers, think closer to two months. Plus ongoing maintenance.
We work through the build vs buy question with real numbers separately.
Don't discount that maintenance line. Three carriers means three sets of docs, three error-code vocabularies, and a year of breaking changes to track. Most teams write the integration once and never open it again — until a carrier changes an endpoint and shipments start failing silently.
3. Multi-Carrier Platform + WooCommerce Plugin
Third path: install a shipping platform's ready-made WooCommerce plugin and get access to all carriers at once.
Shipink's WooCommerce integration works through the Shipink plugin in the WordPress plugin directory. Install it, enter your API key, and orders start flowing automatically.
What happens:
- WooCommerce order → automatically transferred to shipping platform
- Select carrier and print the label from the platform (or set automatic rules)
- Tracking number automatically written back to WooCommerce order
- Customer receives email/SMS notification
WooCommerce-Specific Technical Realities
Unlike Shopify or other hosted platforms, WooCommerce has some unique considerations.
Plugin Conflicts
This is the WooCommerce ecosystem's biggest issue. The average WooCommerce site runs 15-25 plugins. When you add a shipping plugin:
- Payment plugin conflicts: Payment gateways use
checkouthooks. If the shipping plugin hooks into the same actions, order creation can fail. - Order management conflicts: Plugins that customize order statuses (like WooCommerce Order Status Manager) can confuse shipping plugins that expect standard statuses.
- Cache plugin conflicts: Caching plugins can cache API requests — shipping rate queries returning from cache means stale prices.
Practical advice: Always test new shipping plugins in a staging environment first. Check WordPress → Tools → Site Health for conflict reports.
WordPress Update Risk
WordPress, WooCommerce, and plugins update independently. This triple update cycle causes issues:
- WordPress 6.x ships → some plugins aren't compatible yet
- WooCommerce HPOS (High Performance Order Storage) migration → old plugins break
- PHP version updates → deprecated functions in old plugins throw errors
API-based integrations are less affected because they connect to the REST API layer, not WordPress internals. The REST API is a more stable surface.
HPOS Compatibility
This is the single change that has broken the most WooCommerce plugins in recent years. Orders were traditionally stored in WordPress's posts table; HPOS moves them into dedicated tables. A plugin still reading the legacy structure simply "finds no orders" — it doesn't throw an error, it just comes back empty, and that can take days to notice.
What to check:
- Open WooCommerce → Settings → Advanced → Features to see which storage mode you're on
- The same screen lists compatibility status for installed plugins — if your shipping plugin is flagged incompatible, don't migrate
- Run the migration in staging first and verify one test order flows end to end
Newly created stores generally start on the newer storage; stores that have been running for years may still be on the legacy one. Choosing a plugin without knowing which you're on is a gamble.
Performance Impact
Every plugin loads on every page. Shipping plugins are typically heavy in admin but can affect the frontend too:
- Real-time rate queries on checkout slow down the page
- JavaScript files loaded on all pages hurt site speed
- Extra database queries per order (additional meta data) slow the admin panel
Test it: Run Google PageSpeed Insights on your checkout page before and after installing a plugin.
Pre-Install Checklist
Spend five minutes on these before you install anything — most post-install problems start here:
- Staging environment ready. Don't do a first install on the live site.
- Permalink structure is not "Plain." The WooCommerce REST API needs pretty permalinks; on "Plain" the integration won't work at all.
- Product weights and dimensions filled in. If they're blank, rate comparison is meaningless and you'll get dimensional-weight adjustments on the carrier invoice.
- PHP version current. Modern plugins won't install, or will warn, on old PHP.
- Backup taken. Database and files — mandatory if you're going to run the HPOS migration.
- Current plugin list documented. So you know what to disable if a conflict appears.
Setup: WooCommerce + Shipink
1. Install the Plugin
WordPress → Plugins → Add New → Search "Shipink" → Install & Activate.
Alternative: Download from wordpress.org/plugins/shipink and upload manually.
2. Connect the API
Go to the Shipink dashboard → Integrations → WooCommerce. Two methods:
- Automatic (recommended): Connect from plugin settings using your Shipink account — OAuth, one click
- Manual: WooCommerce → Settings → Advanced → REST API → Create new key (Read/Write). Enter Consumer Key and Secret in Shipink.
3. Activate Carriers
Enable any of 16 available carriers:
- Have your own contracts → enter carrier API credentials
- No contracts → activate Shipink rates (no commitment, starts immediately)
4. Set Up Notifications
This is the most-skipped step and the one that cuts your support load the most. Turn on a branded tracking page and automatic notifications and you'll see materially fewer "where is my order?" tickets — because the customer has the answer before they think to ask.
5. Test
Before going live:
- Create a test order (WooCommerce → Orders → Add Order)
- Print a label from Shipink
- Verify the tracking number is written back to the WooCommerce order
- Check the notification email sent to the customer
Common Issues and Solutions
"Orders aren't syncing to Shipink"
Check:
- Is the plugin active? (WordPress → Plugins)
- Is the API key correct? (Shipink → Integrations → WooCommerce)
- Is WooCommerce REST API enabled? (Permalink structure must NOT be "Plain" — pretty permalinks required)
- If you've migrated to HPOS, is the plugin compatible?
"Tracking number not writing back to WooCommerce"
Check:
- Does the WooCommerce API key have write permission?
- Is the order status "Processing"? (Completed orders may not update)
- Is the plugin up to date?
"Can't show shipping rates at checkout"
WooCommerce's shipping rate calculation and pulling real-time rates from Shipink are different things. The most practical approach currently: set flat/weight-based rates in WooCommerce for checkout, use Shipink for post-order label creation and tracking.
"I can't generate a return label"
WooCommerce has no built-in returns flow; return requests are usually handled by a plugin or over email. Generating the return label from your shipping dashboard is the most practical route — our returns management guide covers the whole process.
Conclusion
The most practical path for WooCommerce shipping integration is a ready-made plugin + API-based platform. This minimizes plugin conflict risk, protects against WordPress update issues, and lets you work with multiple carriers from a single dashboard.
If you sell on more than one channel, the same logic applies there: pulling every channel into one dashboard is the decision that matters most as you scale.
Install the Shipink plugin from the WordPress plugin directory, or start from the WooCommerce integration page. Setup takes about 10 minutes.