WooCommerce®Early access
A WooCommerce shipping app that installs nothing on your site.
I’d Ship That for WooCommerce reads your orders through the WooCommerce REST API, with a consumer key you generate yourself and revoke whenever you want. No plugin, no code of ours on your server, no change to your theme or database. You buy USPS and UPS labels from the orders that come back.
See what we read and writeFree account. Pay per label. USPS and UPS.
WooCommerce® and its associated designs are trademarks of Automattic Inc.
What your store needs
Four things, all of them properties of the WooCommerce REST API rather than anything we add. The key screen and the permission levels are WooCommerce’s own, documented in the WooCommerce REST API guide.
- A WordPress site running WooCommerce
- We read the store you already run, on whatever host. Theme, plugin list and database stay as they are.
- The REST API reachable over HTTPS
- The API takes the key and secret as basic authentication over HTTPS only. A store that takes card payments already meets this.
- A Read/Write REST API key
- Generate it in WP admin under WooCommerce › Settings › Advanced › REST API. Read alone imports orders but cannot write tracking back.
- Pretty permalinks enabled
- The REST API answers at /wp-json/. With permalinks set to Plain that route does not resolve and the check fails.
There is no plugin. Nothing to install, nothing to keep updated, nothing new in your plugin list. A store URL and a key pair is the whole of it, which is why WP admin alone can end it.
Three moving parts, in order
The key pair goes in
You paste your store URL, consumer key and consumer secret. We call the REST API once to verify the pair, and hold the pair encrypted.
Orders are polled in
Orders sitting in processing and on-hold are pulled every 10 to 15 minutes, with their line items and recipient.
Tracking is written back
Buy the label and the order is set to completed, _tracking_number and _tracking_provider are written, and a customer-visible note carries the number.
USPS and UPS, priced on a Woo order
A Woo order carries no package, so weight comes from your product presets or from what you type once. USPS and UPS are then priced side by side on the order’s own address, with your shipping rules and service mappings applied.
Where the shipping fields are empty we rate against the billing address: a billing-only checkout gives the order no other one.
The statuses and what they mean are WooCommerce’s own, set out in its order statuses guide.
What we read, what we write
Orders arrive by polling, every 10 to 15 minutes. No webhooks on this connection, so a new order shows up on the next pass. The re-check for changed orders looks back 14 days, so an older cancellation is not picked up.
| Status | What we do with it |
|---|---|
| processing | Imported. Joins your ship queue with its items and recipient. |
| on-hold | Imported. Waits in the queue with the rest. |
| pending | Not imported. The order is unpaid, so there is nothing to ship. |
| completed | Done. It leaves the queue, whether we completed it or you did. |
| cancelled, refunded, failed, trash | Treated as cancelled and pulled from the queue. If a label was already bought, the order comes back with an alert. |
Read from the order
- Order number, status and when it was placed
- Line items and quantities on the order
- The shipping address, or the billing address when the shipping fields are empty
- Recipient name from the shipping address; email and phone from billing
- The shipping method the buyer chose at checkout
Written back on purchase
- Order status set to completed
- _tracking_number order meta
- _tracking_provider order meta
- A customer-visible order note with the number and the carrier
These are the meta keys Shipment Tracking reads, so tracking shows on the order and in the email your store already sends. Nothing else is touched: no refunds, no cancellations, no edits to the items.
Your store, your server
You host the store, so you should know what crosses the wire.
What leaves the site
The orders we poll and the tracking we write back. That is the whole of it.
What we store
The key pair, encrypted, and a cached copy of your open orders so the ship queue has rows.
What we never read
Products, inventory, stock, order tags and ship-from locations. Declared unsupported on this connection.
Order money stays out
No totals, fees or refunds. Shipping reports show what postage cost, not what an order earned.
Buyer data ages out
Recipient fields are nulled once the order is closed or cancelled and 90 days past the order date. The row stays for analytics without the name and address.
How to revoke
Delete the key in WP admin, disconnect in I’d Ship That. The first stops it working, the second deletes our copy.
What the connection does today
Works today
- Order sync by polling, on processing and on-hold.
- Tracking write-back onto the order, with the customer-visible note.
- Shipping rules and service mappings, including rules that read the checkout shipping method.
- Address validation and carrier packaging before you buy.
Not included yet
- Webhooks. Orders arrive on the poll, not the moment of checkout.
- Partial shipments. One order takes one shipment.
- Products, stock and order tags. Weights come from your own presets.
- Ship-from locations. One origin address for the store.
- Order history. The queue starts from what is open when you connect.
- Order money. No totals or fees, so profit reporting skips Woo orders.
What a label costs here
You pay per label, with the full price in front of you before you buy. Our USPS rates sit below USPS commercial. No minimums, and no charge for connecting a store.
A free account buys labels one order at a time. The Workbench is part of Pro: the day’s Woo orders rated together, bought together, printed as one merged PDF with pick lists and packing slips beside it.
WooCommerce shipping questions, answered
- How do I create WooCommerce REST API keys?
Go to WooCommerce > Settings > Advanced > REST API in WP admin and select Add Key.
- Why does /wp-json/ return 404 rest_no_route?
The route was not registered at the path you used, and on a WooCommerce store the usual cause is permalinks.
- Why does my WooCommerce API key return 401?
Over HTTPS the WooCommerce REST API takes basic auth: consumer key as username, consumer secret as password.
- How do I add a tracking number to a WooCommerce order?
Open the order in WP admin and put the number where the customer can see it.
- When should a WooCommerce order be marked completed?
Mark it completed when the order is fulfilled, which for a shipping store means the label exists and the package is going out.
- Does WooCommerce email my customer when I add tracking?
Not for the tracking itself. Saving tracking details on an order sends no email, because the customer email fires when the status changes to Completed.
- Does a shipping app need a plugin on my WooCommerce site?
It does not have to. WooCommerce exposes a REST API at /wp-json/wc/v3/, so an outside app can read orders and update them using a consumer key and secret you generate in WP admin.
- How often does a shipping app pull new WooCommerce orders?
I'd Ship That for WooCommerce polls your store's REST API on a schedule, every 10 to 15 minutes, so a paid order reaches The Workbench inside that window rather than the moment the buyer checks out.
- Why are WooCommerce orders completing before I ship them?
Usually it is the cart, not a bug. WooCommerce's own status guide says all orders require processing except those in which all products are both virtual and downloadable, so a downloads only order never waits in Processing.
- Will HPOS break my WooCommerce shipping setup?
Not by itself. High Performance Order Storage moves orders into four dedicated tables and uses WooCommerce's own CRUD design instead of the posts tables.
- How do I see which WooCommerce orders still need shipping?
Filter the Orders list by status. Processing means payment received and stock reduced, awaiting fulfilment, so the Processing link above the orders table is your shipping queue.
- Can I ship a WooCommerce order to a non-billing address?
Yes. A WooCommerce order carries a billing address and a shipping address as separate sets of fields, and the label should go to the shipping address whenever one is present.
- How do I print USPS labels for WooCommerce orders?
WooCommerce publishes its own WooCommerce Shipping extension, which prints USPS and UPS labels from your dashboard.
- How do I bulk complete WooCommerce orders with tracking?
WooCommerce's bulk actions on the Orders screen change status and nothing else.
- How do I print packing slips for WooCommerce orders?
WooCommerce core has no packing slip document. Its order management screens cover statuses, editing and bulk actions, and printing paperwork is not among them.
Questions store owners ask first
Read/Write. Read alone imports orders but cannot set an order to completed or write the tracking meta, so the loop never closes. The key is scoped to the REST API, not to your login.
No. The connection is a store URL and a REST API key pair you generate in WP admin. Your plugin list, your theme and your database stay as they are.
Within 10 to 15 minutes. We poll your REST API on that schedule and this connection uses no webhooks, so a paid order waits for the next pass.
Everything stops, in both directions, because the pair is how we authenticate. Nothing already imported is lost. Generate a fresh pair in WP admin, paste it in, and the next pass carries on.
We fall back to the billing address. Plenty of Woo checkouts collect billing details only, so empty shipping fields are normal rather than an error. The recipient is editable before you buy.
No. High Performance Order Storage moves orders into their own tables, and what needs checking is code that reads those tables directly. We talk to the REST API instead.
Not today. One order takes one shipment, and buying the label completes the whole order. A second tracking number has to go on the order yourself, in WP admin.
Request WooCommerce early access
Tell us where to write. When your store can connect, you generate the key, we verify the pair, and the first poll runs.
Also connects: eBay, Available now. Shopify, Early access.
WooCommerce® and its associated designs are trademarks of Automattic Inc. I’d Ship That is not affiliated with or endorsed by Automattic.
USPS® is a trademark of the United States Postal Service. UPS® is a trademark of United Parcel Service of America, Inc.