◆ BATCHLY FOR WOOCOMMERCE · v0.3.0

One inventory.
Your counter and your website.

A free WordPress plugin that keeps your Batchly register and your WooCommerce store on one count. Stock and prices change in Batchly and show up on your site within a minute. Online orders take stock down by exactly what sold and land in your Orders queue; delivery orders go onto tonight's route.

Real-time, two-way Signed pushes Refunds put stock back No card data reaches Batchly
Sync activity REAL-TIME ON
EventSKUResult
Register sale, 2 soldCB-04PUSHED · 41s
Price changed to $30CB-04PUSHED · 38s
Woo order #1042, 3 soldGM-10STOCK −3
Woo refund, 1 restockedGM-10STOCK +1
Reconcile now184 SKUsIN STEP
Batchly to store · today312 pushes
~1 min
From a change in Batchly to your WooCommerce store.
1x
Each order line moves stock once. Retries and re-fired hooks are ignored.
2 ways
Batchly pushes stock and prices out. A paid website order moves Batchly stock the moment it lands.
0
Card numbers seen by Batchly or the plugin. Your gateway keeps taking payments.
Download

Batchly for WooCommerce v0.3.0

One zip. Upload it in WordPress under Plugins, Add New, Upload Plugin, then activate it and open WooCommerce, Batchly.

The plugin is free. It needs a Batchly account: $99 a month per store, with a 21-day free trial and no card to start.

WordPress 6.0+Tested up to WordPress 6.6PHP 7.4+WooCommerce 7+Public https
SHA-256 of batchly-woo-0.3.0.zipbfd8419b30895efc77b01521ed97549952b056e072760433820c669e057fe756

Check it before you upload: shasum -a 256 batchly-woo-0.3.0.zip. The plugin talks only to the Batchly API over https, to a pinned host, with a per-store key.

Setup

Six steps. About ten minutes.

Rehearse with a test key first if you like: tickets land in Batchly's Test view, stock is never changed, and real-time stays off until you reconnect with a live key.

  1. STEP 1

    Create an API key in Batchly

    Open Developers, create a key with the scopes read, inventory:write, orders:write and sync:manage. Copy it once. Give sync:manage only to this key.

  2. STEP 2

    Upload and activate

    WordPress admin, Plugins, Add New, Upload Plugin. Choose the zip, install, activate. A Batchly item appears under WooCommerce.

  3. STEP 3

    Paste the key, test the connection

    Paste your API key under Connection, press Save settings, then Test connection. It should say Connected to Batchly.

  4. STEP 4

    Connect real-time sync

    Press Connect real-time sync. Batchly binds your key to your site's receiver and issues a signing secret. Pick the shipping methods that mean delivery and your delivery-date meta key, then save.

  5. STEP 5

    Reconcile now

    Press Reconcile now. Every SKU is compared by quantity and regular price. Fix differences with Apply Batchly to WooCommerce (the usual choice), then reconcile again until it is clean.

  6. STEP 6

    Turn on real-time sync

    Press Turn on real-time sync. The switch opens only with a live key, a connection, and a clean reconcile less than 24 hours old. From here on, changes flow on their own.

How it stays in step

Batchly is the count
of record.

Your register, your inventory edits, your CSV imports and your online carts all move one number. The plugin keeps WooCommerce reading that number and sends back only what the website sold. Sell the last unit at the counter and it comes off your site; sell it on the site and it comes off the shelf.

  • Batchly changes push within a minute
    Every quantity, price or name change becomes a signed push. Each push carries the current count, so a late retry can never move stock backwards.
  • Online orders move stock by the exact quantity
    A paid WooCommerce order takes each line down once through an idempotent ledger. If Batchly had less than the order needs, the sale still books and the order gets a note: Batchly stock was short by N.
  • Cancellations and refunds put it back
    A cancelled paid order restores each line. A refund restores only the units WooCommerce restocked, capped to what was sold, and the matching Batchly sales are marked refunded so revenue nets out.
  • Reconcile catches anything that drifted
    After an outage, a bulk edit, or any time the numbers look off, Reconcile now lists every difference and lets you apply one side to the other.
inventory.changed · signed push
# POST https://your-site/wp-json/batchly/v1/events
# X-Batchly-Signature: sha256=HMAC(body, your secret)
{
  "event": "inventory.changed",
  "sentAt": "2026-09-03T14:02:11Z",
  "data": {
    "sku": "CB-04",
    "quantity": 14,
    "previousQuantity": 16,
    "delta": -2,
    "origin": "batchly"   # never echoed back to Woo
  }
}
Batchlyregister · inventory · carts
push →
← delta
WooCommerceyour website
Orders and delivery

Every web order is a ticket in your queue.

A paid WooCommerce order shows up in Batchly Orders with the WooCommerce pill, marked paid on the website, so nobody at the counter or at the door asks for money twice. Delivery orders land on the same nightly route as your store-page, text and phone orders.

Queue

One Orders queue

Text, phone, your hosted store page and your WooCommerce site in one list, pickup and delivery. Customer name, phone, items and the note the customer typed at checkout.

Delivery

On the driver route

Pick the shipping methods that mean delivery. Those orders carry the address and land on the route, ready to assign. Local pickup methods are always pickup. See local delivery →

Date

Delivered on the date the customer picked

If you use a delivery-date plugin, enter its order meta key. The date and window ride onto the ticket and the route. No date means today's route, with a note.

Paid

Paid online, nothing to collect

The ticket says so, the driver sheet says so, and the tracking page says Paid. Payments stay in your WooCommerce gateway.

Flags

Loud notes, never a refusal

A shipping charge, an unmatched SKU, a missing address, or a ZIP outside your delivery zone is written on the ticket in capitals. The order always lands: the customer already paid.

Status

Cancelled in Woo, cancelled here

Cancel or refund an order in WooCommerce and the Batchly ticket flips with a Canceled in WooCommerce pill. Stock goes back only for what was taken.

Security

Built so the review is short.

Nothing on your WordPress site can spend money, read a card, or reach another store. The plugin holds one scoped key and one signing secret, and both can be rotated from either side.

#

HMAC-signed pushes

Every push is signed over the raw body with a per-store secret, checked for freshness (15 minutes) and replay (delivery id). A bad signature is answered 401 with no detail.

Per-store scoped key

The key can read the catalog, adjust stock and prices, mirror orders and manage this one connection. Nothing else. Revoke it in Batchly and inbound writes stop at once.

No card data

Cards are handled by your WooCommerce gateway. Batchly only ever sees an order id and an amount. The plugin never holds a gateway key.

Priced from your catalog

Revenue for a web order is booked from Batchly's own prices, never from a number the website sent. A client cannot post a forged amount into your books.

https only, pinned host

Pushes reach your site over public https only. The plugin's API base URL is pinned to an exact list of Batchly hosts and cannot be repointed, even by editing the database.

Rotate any time

Reconnect issues a fresh signing secret and retires the old one. A new API key from Batchly, pasted in and reconnected, does the same for inbound.

FAQ

Questions merchants ask first.

Is the WooCommerce sync two-way?

Yes. Stock and price changes in Batchly reach your WooCommerce store within about a minute, and a paid WooCommerce order takes Batchly stock down at once and lands in your Orders queue. Batchly is the count of record.

Do variations sync?

Yes, when each variation carries its own SKU that matches Batchly. Variations without a SKU are skipped by Reconcile now and never move stock.

Can I try it with a test key?

Yes. A bly_test_ key connects, reconciles and mirrors orders into Batchly's Test view. It never changes live stock and never turns real-time on. Swap in your live key and press Reconnect when you are ready.

I edit stock in WordPress. Does Batchly see it?

Not by default. Batchly is the count of record, so edit stock there. If you need WordPress edits to move Batchly, turn on Push manual stock edits made in WordPress to Batchly under Real-time sync.

What if my site goes down?

Batchly retries each push five times over about five hours, then parks it. Once a few pushes have parked in a day, Batchly raises an alert in your System health. Orders placed while Batchly was unreachable wait in the plugin's outbox. When the site is back, press Reconcile now to catch up.

A product is on sale in WooCommerce. What does a Batchly price change do?

It updates the regular price only. The WooCommerce sale price is left alone.

What about a SKU that exists only in WooCommerce?

Its order lines are booked on the ticket at no value, move no stock, and are listed in an order note. Products are never created in Batchly from WooCommerce. Add the SKU in Batchly, then reconcile.

Does the plugin take payments?

No. Your WooCommerce gateway keeps taking payments and the plugin never sees a card. If you would like Batchly to run your card processing at the counter as well, see pricing.

Do website delivery orders go onto my delivery route?

Yes, once local delivery is on in your Online tab. Orders on the shipping methods you marked as delivery arrive marked paid (a cash-on-delivery order stays unpaid so the driver collects), with the customer's chosen date, and appear on that night's route in Orders with the WooCommerce pill. Your driver sees Paid, and every ticket carries a tracking link you can copy and send to the customer. See local delivery.

My firewall blocks REST calls.

Allow the path /wp-json/batchly/ from the public internet. Pushes arrive there, signed. Everything else the plugin does is outbound from your server to Batchly over https.

Get started

Your website, on the same count.

Download the plugin, create a key in Developers, and reconcile once. Need a hand? Our team wires it up for you during free setup.