OrderCarry Order Automation for WooCommerce

Description

Stop paying $30–$50 every month just to copy your orders into a spreadsheet.

OrderCarry runs inside your own WordPress site. When an order reaches the status you choose, it sends the details to Google Sheets, to any webhook URL, or as a custom email — automatically, in the background, without slowing down checkout.

No task limits. No credits. No cloud account. No connection that expires.

Watch OrderCarry in action

Start with a short tour of the dashboard, then open the guide for the feature you need.

More guides on the OrderCarry YouTube channel.

Why people switch

  • Automation tools charge per task. This one does not count.
  • Runs on your own server, so nothing disconnects and no token expires.
  • Google Sheets setup takes about 60 seconds — no Google Cloud Console, no service account, no API keys.
  • Smart Retry — if Google or your server hiccups, it tries again automatically. Configuration mistakes are reported instead of retried forever.
  • One click Send Test Order, so you know it works before a real customer buys.
  • Everything is logged in WooCommerce’s own log viewer.

What it does

  • Google Sheets — one row per order, created automatically, with headers. Google Sheets is a trademark of Google LLC; this plugin is not affiliated with or endorsed by Google.
  • Webhook — the full order as JSON, signed with an X-Ordsync-Signature header. Works with Make, n8n, Zapier, Airtable, or your own backend.
  • Custom email — your own subject and message, with {order_number}, {customer_name}, {items}, {total} and more.
  • Order Automations — tell somebody when an order gets stuck. A status starts a clock; when it runs out the order is checked again, and if nothing has changed it goes out. Failed payments, orders nobody has shipped, refunds.
  • Download — your orders as a spreadsheet file, straight away, with nothing to connect. The columns are the same ones the Google Sheets destination writes, so a file and a sheet always agree.

Built to not break your checkout

Every automation runs in the background through Action Scheduler, the same queue WooCommerce uses itself. Your customer never waits for Google to answer.

Works with your setup

  • WooCommerce HPOS (High-Performance Order Storage)
  • The block-based checkout
  • Multisite
  • PHP 7.4 through 8.3

Free vs Pro

The free version is not a demo. It sends unlimited orders to as many Google Sheets, webhooks and email addresses as you like, with full retry and logging — reliability is never the paid part.

OrderCarry Pro is a separate download and adds:

  • PDF invoices — generated per order and attached to the email.
  • Conditional rules — “only orders over €100”, “only this shipping country”, “only this payment method”.
  • Bulk import — push your existing orders into a sheet: the last 50, a date range, or every order you have ever taken. It runs in the background at a steady pace and can be stopped at any time.
  • Your own columns — rename the headings into your own language, put them in the order you want, and leave out the ones you never look at.
  • Your own custom fields — a gift message, a VAT number, a delivery slot. It reads the order itself, so it works whether the field came from ACF, Meta Box, JetEngine, a checkout plugin or your own code.
  • Set an order’s status from the sheet — change the Status column in Google Sheets and the order follows in WooCommerce, with the customer’s usual email. Status only, and only the statuses you allow.

Pro comes with a 14-day free trial, no credit card required.

External services

This plugin sends order data to services you configure yourself. Nothing is sent anywhere until you enable a destination and enter a URL.

  • Google Apps Script — if you enable the Google Sheets destination, order data (order number, date, status, customer name, email, phone, billing and shipping address, items, totals, payment method, customer note, and any custom fields you have chosen on the Columns tab) is sent to the web app URL you provide, inside your own Google account. Sent once per order when that order reaches your chosen status, and when you click Send Test Order. Clicking Delete every row sends one more request to the same URL, which carries no order data at all — only the instruction to empty the sheet. An automation sends the order the same way, at the time it decides rather than when the order arrives. Google’s terms: https://policies.google.com/terms — Google’s privacy policy: https://policies.google.com/privacy

  • Your own webhook URL — if you enable the webhook destination, the same order data is sent as JSON to the address you enter, plus any custom fields you have chosen on the Columns tab. You choose the recipient, so the applicable terms are that service’s own.

  • Freemius — the plugin uses the Freemius SDK for licensing, updates and (optionally) usage tracking. In the free version nothing is sent until you click “Allow & Continue” on the opt-in screen; choosing “Skip” leaves the plugin fully functional and silent. If you opt in, or if you buy a licence, your site URL, WordPress and PHP version, and your email address are sent to Freemius to activate and validate the licence. Freemius terms: https://freemius.com/terms/ — Freemius privacy policy: https://freemius.com/privacy/

  • The plugin author — only when you write to us from the Support tab and press Send. Your message, the reply address you type, any file you attach, and (unless you untick the box) a short technical report are emailed from your own website to the developer. The report lists version numbers, which destinations are switched on and their current state, and the last 10 lines of the activity log. Your sheet and webhook addresses, your secrets and any email addresses are removed from it before sending, and you can read the exact text on screen before you press Send.

Nothing reaches the plugin author automatically. The only data that ever leaves your site for us is what you choose to send from the Support tab.

Screenshots

Installation

This guide assumes you have never done any of this before. Every step says exactly what to click.

Before you start

  • WooCommerce must already be installed and active.
  • WordPress 6.4 or newer, PHP 7.4 or newer.
  • For Google Sheets you need a normal Google account. You do not need a Google Cloud account, a credit card, or an API key.

Step 1: Install the plugin

From your WordPress admin:

  1. Go to Plugins Add Plugin.
  2. Search for OrderCarry.
  3. Click Install Now, then Activate.

If you downloaded a ZIP file instead:

  1. Go to Plugins Add Plugin Upload Plugin.
  2. Choose the ZIP file, click Install Now, then Activate.

Step 2: Open the settings

Go to WooCommerce OrderCarry in the left menu.

You will see these tabs:

  • Dashboard — the first thing you see. Every destination in one place, whether each one is working, and a one-click CSV of your orders. There is nothing to set up here; it just reports on what the other tabs do.
  • Google Sheets — one row per order in a spreadsheet.
  • Webhook — the full order as JSON, for Make, n8n, Zapier, or your own system.
  • Custom Email — your own email, to yourself or to the customer.
  • Order Automations — watches for an order stuck in a status (a payment that never cleared, an order nobody shipped) and tells you, without needing a destination of its own — it reuses whichever ones you have already set up.
  • Logs — what was sent, and what failed.
  • Free vs Pro — a plain table of what is in each, so you never have to guess whether something you want is behind a paywall. This is where you will find PDF Invoice: a real invoice with your logo, generated and attached to the order email automatically. It needs a Pro licence, which is why it has no tab of its own in the free version — the table explains it and links to upgrading.

You can use one destination tab, or all of them. Set up whichever you need. Each one works on its own, and none of them depend on each other.

Step 3: Send orders to Google Sheets

First, create the sheet and its script.

  1. In the Google Sheets tab, click Where do I get this URL?. The instructions open up, with a script already prepared for you.
  2. Click Create a blank Google Sheet. A new spreadsheet opens in Google. (If you already have a sheet you want to use, open that one instead.)
  3. In that Google sheet, click Extensions in the top menu, then Apps Script. A code editor opens in a new tab.
  4. Delete everything you see in that editor. It usually contains a few lines like function myFunction() {}. Remove all of it.
  5. Go back to the OrderCarry tab in WordPress and click Copy script.
  6. Go back to the Apps Script editor and paste (Ctrl+V, or Cmd+V on a Mac).
  7. Click the save icon (the floppy disk), or press Ctrl+S.

Now publish the script so your shop can reach it.

  1. In the Apps Script editor, click the blue Deploy button (top right), then New deployment.
  2. Click the gear icon next to “Select type” and choose Web app.
  3. Set Execute as to Me.
  4. Set Who has access to Anyone. This sounds unsafe, but it is not: the script only accepts requests that carry your secret, which is already inside the script you pasted.
  5. Click Deploy. Google will ask you to authorise the script the first time. Click through the permission screens. If you see a warning that the app is not verified, click Advanced, then Go to (your project). It is your own script — you are trusting yourself.
  6. Google now shows a Web app URL that ends in /exec. Copy it.

Finally, tell the plugin about it.

  1. Back in WordPress, paste that URL into Google Sheet web app URL.
  2. Switch the toggle to ON.
  3. Choose when orders should be sent under Send orders when they become (see the explanation further down).
  4. Click Save changes.
  5. Click Send test order.

Within a few seconds a test row should appear in your Google sheet, and the plugin should show a green success message. The column headers are created automatically the first time.

Once you are happy it works, open Empty this sheet on the card and click Delete every row. That clears out the test rows and leaves the headings, so the sheet starts clean when your first real order arrives. Your orders in WooCommerce are not touched.

Step 4: Send orders to a webhook

Use this if you want the order data in Make, n8n, Zapier, Airtable, an ERP, or your own application.

  1. Open the Webhook tab.
  2. Paste the address that should receive the orders into URL. It must start with https://.
  3. Switch the toggle to ON.
  4. Choose when orders should be sent under Send orders when they become.
  5. Click Save changes, then Send test order.

Your receiving system should get a JSON message containing the order.

Every request also carries a header called X-Ordsync-Signature. This is proof that the request really came from your shop and not from someone else. If the system on the other end supports it, use that header to verify the request. You will find the signing key under Advanced Verifying that a request really came from your shop.

If you just want to try it out first, create a free test address at webhook.site, paste it in, and press Send test order. You will see the order arrive.

Step 5: Send an email for every order

  1. Open the Custom Email tab.
  2. In Send to, type the email address that should receive the message. Type the single word customer instead if you want it sent to the buyer.
  3. Write the Subject.
  4. Write the Message.
  5. Switch the toggle to ON, click Save changes, then Send test order.

In the subject and the message you can use variables. They are replaced with the real values of each order:

{order_number} `{status}` `{date}` `{customer_name}` `{customer_email}`
{customer_phone} `{items}` `{total}` `{currency}` `{store_name}`
{coupons} `{shipping_method}` `{transaction_id}` `{order_note}`

For example, a subject of New order {order_number} - {total} arrives as “New order 1042 – 59.90”.

The full list is always shown under the message box, so you do not have to remember it.

Step 6: Get told about an order that is stuck

This is free, and it does not need a destination of its own — it reuses the sheet, webhook or email you already set up in the steps above.

  1. Open the Order Automations tab.
  2. Under Choose the order status, pick When an order becomes — for example Failed, for a payment nobody chased.
  3. Under Choose how long to wait, pick Wait for — for example 30 minutes. The clock starts the moment the order reaches that status.
  4. Leave Only continue if it is still in this status ticked. This is the re-check: when the wait is over, OrderCarry looks at the order again, and only tells you if it is still in that status. Untick it only for something that will never fix itself, such as a refund.
  5. Under Choose where to send the order, tick one or more of your existing destinations — the sheet, webhook or email you already configured.
  6. Switch the toggle at the top to ON, then click Save automations.

The panel on the right shows exactly what will happen, in order, using the settings you just chose — use it to check the wait time and destinations before saving.

One automation is free. A common second one: Processing, wait 24 hours, re-check on, so you hear about any order that has sat unshipped for a day.

Step 7: Generate PDF invoices (Pro)

This needs a Pro licence. The free version does not show a PDF Invoice tab at all — see it on the Free vs Pro tab first. Once you have a licence, a PDF Invoice tab appears in the tab bar, and the steps below apply to it.

  1. Open the PDF Invoice tab.
  2. Under Choose who receives the invoice, type an address, or the word customer to send it to the buyer.
  3. Under Customize your invoice, choose a Logo from your Media Library, and fill in the Invoice heading (for example RECHNUNG for a German shop), your Tax or VAT number, and a Footer line for payment terms or a returns note.
  4. Under Choose when to create the invoice, pick the status that should trigger it, the same as the other destinations.
  5. Switch the toggle to ON, click Save changes, then Send test order. Use Preview invoice first if you just want to see how it looks without sending anything.

The invoice is attached to the order confirmation email automatically — there is nothing else to connect.

Understanding “Send orders when they become”

This decides when an order is sent. It is the setting people get wrong most often.

  • Processing — the usual choice. The order is sent once the customer has paid.
  • Completed — sent when you mark the order as finished.
  • Any status — sent as soon as the order is created, whatever happens next.

Important: if you take bank transfer, invoice, or cash on delivery, those orders often never become “Processing”. They go from pending straight to on-hold or completed. If you choose Processing, those orders are never sent and you will think the plugin is broken. Choose Any status instead.

Each destination has its own setting. Your sheet can use Processing while your webhook uses Any status.

Step 8: Let the sheet set an order’s status (Pro)

This needs a Pro licence. It lets somebody change an order’s status in the Google Sheet — for example from Processing to Completed — and the order follows in WooCommerce a few minutes later. WooCommerce sends the customer its usual email, exactly as if you had changed the status yourself.

  1. If your sheet was set up before version 1.2.0, paste the script again: open the Google Sheets tab, click Where do I get this URL?, copy the script into your sheet’s Apps Script editor, then click Deploy Manage deployments, edit the deployment and choose New version. Do this for every sheet you use.
  2. On the Google Sheets tab, on the right, open Let the sheet set an order’s status.
  3. Tick the statuses the sheet is allowed to set. Only Processing and Completed are ticked at first; Refunded and Cancelled stay off unless you tick them.
  4. Choose How often to check the sheet.
  5. Tick Turn this on, then click Save write-back.

Now change a status in the Status column. A change only counts once it has stayed the same for two checks, so there is time to fix a mistake. The result appears in a column called OrderCarry next to the row, and a note is added to the order.

Step 9: Check that it is working

Place a real test order in your shop, or change an existing order to the status you selected.

Then open the Logs tab. You will see each attempt, whether it succeeded, and the error message if it failed.

The coloured label at the top right of each destination also tells you the state at a glance:

  • Sent … ago — real orders are arriving. This is what you want.
  • Test passed — no orders yet — the connection works, but no real order has been sent yet.
  • Last attempt failed — something is wrong. Hover over it to see why.
  • Nothing sent yet — not used yet.

If something does not work

Nothing arrives at all. Check the trigger status first, as described above. Bank transfer orders and Processing are the most common cause.

The Google sheet stays empty. Make sure you set “Who has access” to Anyone when deploying. If you changed the script afterwards, you must deploy again: Deploy Manage deployments edit New version. A URL that ends in /dev will not work; it must end in /exec.

Emails do not arrive. This is almost never the plugin. WordPress itself often cannot send email on cheap hosting. Install any SMTP plugin, configure it, and try again.

The row appears a minute later, not instantly. That is normal and deliberate. Orders are sent in the background so your checkout is never slowed down or blocked by a slow connection.

You want to see what is queued. Open Advanced View the queue.

FAQ

Can my staff change order statuses from the sheet?

Yes, with Pro. Set the status in the sheet and OrderCarry updates the order in WooCommerce — which means WooCommerce sends its normal email to your customer, exactly as if you had changed it yourself.

You decide which statuses staff are allowed to set; Refunded and Cancelled are off until you switch them on. A change has to stay the same for two checks before it counts, no more than 20 orders change in one check, and every change is written on the order as a note.

It is status only. Addresses, prices and products cannot be edited from the sheet.

Do I need a Google Cloud account?

No. You paste a short script into your own Google Sheet and deploy it as a web app. That takes about a minute and costs nothing.

Is there a limit on how many orders it can send?

No. It runs on your server, so there is nothing to meter.

Will it slow down my checkout?

No. Orders are queued and sent in the background through Action Scheduler.

How long until the row appears?

Usually a minute or two, sometimes longer on a very quiet store.

WordPress only runs background jobs when someone visits the site, so a busy shop syncs almost straight away while a shop with no visitors waits until the next visit. Nothing is ever lost — the order stays in the queue until it runs, and you can watch it under WooCommerce Status Scheduled Actions.

The Send Test Order button skips the queue and fires immediately, which is why it feels instant.

If you need every order synced within seconds regardless of traffic, ask your host to enable a real system cron and disable WP-Cron.

Can I change the columns in my sheet?

The free version writes the same twelve columns to every sheet and to the download, in the same order, so the two always agree. Pro lets you rename the headings into your own language, reorder them and leave out the ones you never look at.

Renaming is safe at any time. Reordering or removing a column in a sheet that already has rows in it is not: the headings are rewritten in place and the rows underneath stay where they are, so empty the sheet first.

Is there a video tutorial?

Yes. The “Watch OrderCarry in action” section at the top of this page has a dashboard tour and a short guide for each tab: Google Sheets, webhook, custom email, order automations and PDF invoices.

Can it tell me when an order is stuck?

Yes, and it is free. Open the Order Automations tab and set up a rule: when an order becomes Processing, wait 24 hours, then look again — if it is still Processing, send it to whichever destination you like.

The second look is the important part. Without it you would be told about every order that reached Processing yesterday, including the ones that shipped this morning.

An automation sends to a destination you already set up, and that destination keeps sending its own orders too. To hear only about stuck orders, set up a destination just for them and set its “Send orders when they become” to Only when an Order Automation sends it.

The same rule chases failed payments (Failed, wait 30 minutes, still Failed) and flags refunds to your accountant. One automation is free; Pro runs as many as you like and can narrow them with filters, so you only hear about orders over a certain value.

Can I send my existing orders, not just new ones?

That is Pro. Open Import past orders on the destination’s card and choose how many — the last 50 through the last 1000, or Everything. You can also narrow it to a date range, and both days you pick are included.

Everything runs in the background at about 80 orders a minute, so it never floods whatever is receiving them. A shop with years of history takes hours; you can close the page, and reloading it shows how far it has got. Orders already sent to that destination are skipped, so importing twice can never produce duplicates.

Can I send my own custom fields?

That is Pro. Open the Columns tab and OrderCarry lists the custom fields it finds on your recent orders — tick the ones you want. Each becomes an extra column in every sheet and in the download, and an extra value in every webhook payload.

It reads the order itself rather than talking to any particular plugin, so it works the same whether the field came from ACF, Meta Box, JetEngine, a checkout plugin or a snippet in your theme. If a field is not on any recent order you can still add it by typing its key.

Can I empty a sheet without deleting anything in WooCommerce?

Yes, and it is free. Open Empty this sheet on the sheet’s card and click Delete every row. It deletes the rows in the spreadsheet and keeps the headings. Your orders in WooCommerce are untouched, and the plugin still remembers which orders it has already sent, so the sheet does not simply fill up again.

Does it work with HPOS?

Yes. OrderCarry declares full compatibility with High-Performance Order Storage and stores its state on the order itself, so it works with either storage mode.

My emails are not arriving.

That is almost always your web host blocking outgoing mail, not the plugin. Install any free SMTP plugin and it will work.

Where do I see errors?

WooCommerce Status Logs, source order-sync. Also reachable from the Logs tab in the plugin.

Does it send my data anywhere I did not ask for?

No. Order data only goes to destinations you enable and addresses you type in yourself. See the “External services” section below for the full list.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“OrderCarry Order Automation for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.2.2

  • New choice for every sheet, webhook and email: “Send orders when they become: Only when an Order Automation sends it”. That destination stays quiet until an automation sends it an order, so a “stuck orders” email no longer also receives every normal order.
  • Order Automations: each destination you can pick now says what it already does on its own (for example “Also gets every order that becomes Processing”), and warns when it is switched off.
  • Google Sheets: sometimes Google runs your Apps Script but fails to send its answer back. The plugin now says exactly that, instead of “this web app no longer exists” or asking you to paste the script again, when nothing on your side is wrong.
  • Google Sheets: when this happens while sending an order, the row is most likely already in the sheet, so the order is no longer sent a second time (which could add it twice). The Logs tab tells you to check the sheet.
  • Google Sheets: the plugin no longer follows Google back to your script’s own address when the answer is lost. That used to show up as a failed “doGet” run in your Apps Script history.
  • Pro: a short Google problem during the status check no longer turns the sheet red or fills the Logs tab. It is reported only after three failed checks in a row, and the same problem is written to the Logs tab at most once an hour.
  • A redirect the plugin blocks for safety is no longer retried three times.

1.2.1

  • Pro: setting an order’s status from the Google Sheet now works on shops that use a sequential or custom order-number plugin. Before, every row was refused with “Order number does not match”.
  • Pro: a status typed as it appears in WooCommerce, such as “On hold”, is now understood, not only “on-hold”.
  • Pro: a message in the OrderCarry column is written once, not again at every check. Rows for deleted orders no longer use up Google’s daily script time, which order sending needs too.
  • Pro: a status changed in the sheet right after switching the feature on is no longer mistaken for old history and ignored.
  • Pro: the background check is restarted from the admin at most once an hour, instead of asking on every admin page.
  • Phone numbers like +491701234567 and numbers with a leading zero (0170…, 000123) now keep their + and zeros in Google Sheets and in the spreadsheet download.
  • Text a customer types, such as the order note, can no longer turn into a live link inside your Custom Email or invoice email.
  • {status} in Custom Email now shows the status name your shop uses (“On hold”), not its internal code (“on-hold”).
  • An Order Automation that fails because Google or your mail server is briefly unavailable is now retried, like a normal order, instead of being lost.
  • A webhook address that answers with a short redirect (for example to “/hook/”) is now followed instead of being blocked.
  • Pro: PDF invoice amounts follow your WooCommerce price settings (1,234.50 or 1.234,50, symbol before or after) instead of always using the German format.
  • Pro: PDF invoices no longer fail on hosts where WordPress is set up to write files over FTP.
  • Pro: when a licence expires, only the free number of Order Automations keeps running. Your saved automations are kept and come back when you renew.
  • Pro: if an order appears on more than one row of a sheet, an old row can no longer undo a newer status after the sheet is sorted.

1.2.0

  • If you use Google Sheets, paste the script again and redeploy it. Open the Google Sheets tab, click “Where do I get this URL?”, copy the script into your sheet’s Apps Script editor, then Deploy Manage deployments New version. Orders keep arriving either way, but the new status feature needs it.
  • Pro: set an order’s status from the Google Sheet. Change the Status column and the order follows in WooCommerce, which sends its own customer email as normal. Status only — addresses, prices and products are never read back.
  • Pro: you choose which statuses the sheet may set. Refunded and Cancelled are off until you turn them on.
  • Pro: a change must stay the same for two checks, and no more than 20 orders change in one check, so a typo or a mistaken paste cannot email your customers in bulk.
  • Pro: every change is written on the order as a note, and the result appears in an OrderCarry column in the sheet.
  • Pro: on a normal sheet, the Status column gets a dropdown of the statuses you allowed.

1.1.2

  • Order Automations is easier to set up. Each automation now walks through four clear numbered steps instead of one long sentence to read.
  • The custom fields list now explains that an unticked field can stay listed — it means the field is still on your own orders, not that switching it off did not work.

1.1.1

  • Support messages now reach a proper support address rather than a personal mailbox. Nothing changes in how you send one — the Support tab works exactly as before — but there is now somebody at the other end who is not one person’s inbox.
  • The Plugins screen finally has a working Visit plugin site link. The plugin has never had a homepage listed; it does now.
  • The recipient, message and footer fields show an example of what to type, so an empty Custom Email screen is easier to start from.

1.1.0

  • Order Automations. The plugin can now notice when an order goes wrong and tell somebody. Pick a status, pick how long to wait, and it looks at the order again — if it is still stuck, your chosen destinations get it. Chase a failed payment, spot an order nobody has shipped, or flag a refund to the accountant. One automation is free.
  • If you already use Google Sheets, paste the script again. Open the Google Sheets tab, click “Where do I get this URL?”, copy the script into your sheet’s Apps Script editor and redeploy. Orders keep arriving either way — but Empty this sheet needs the new one.
  • Download your orders as a spreadsheet file, with no Google account and nothing to connect. The columns are the same ones a synced sheet gets, so a file and a sheet always agree.
  • A Dashboard that is useful before anything is set up: what is working, what is not, and what to do next.
  • Empty this sheet — delete every row and keep the headings. For clearing out test rows, and for starting a sheet again. Your orders in WooCommerce are untouched.
  • Orders now land on the first tab of a new sheet, instead of behind the empty “Sheet1” Google gives you. An existing Orders tab is left exactly where it is.
  • A Columns tab, showing exactly which twelve columns an order becomes.
  • Free vs Pro, written honestly, so you can see what you have without leaving the plugin.
  • The Google Sheets script no longer decides the columns — the plugin sends them. Renaming or reordering a column needs no new script pasted into Google.
  • A heading is now escaped like any other cell, so a column named “-Rabatt” cannot become a broken formula in your own sheet.
  • Fixed: a sheet kept advertising columns nothing was writing to any more, if the column set got shorter.
  • Pro: rename, reorder and leave out columns.
  • Pro: send your own custom fields — a gift message, a VAT number, a delivery slot. It reads the order itself, so it works whether the field came from ACF, Meta Box, JetEngine, a checkout plugin or your own code.
  • Pro: import past orders by date range, or all of them. “Everything” runs in the background at a steady pace and can be stopped at any time.
  • Pro: PDF invoices with your own store logo from the Media Library, VAT or tax ID, custom footer note, itemized unit prices, and a live invoice preview in your browser.

1.0.4

  • New Support tab. Ask a question or request a feature from inside the plugin, attach a screenshot, and send a technical report you can read first.
  • Every screen now links to it, so help is one click away wherever you are.

1.0.3

  • Every install now runs as many Google Sheets, webhook and email destinations as it is configured with.
  • Translations are no longer loaded by hand; WordPress handles them for hosted plugins.

1.0.0

  • First release: Google Sheets, Webhook and Custom Email destinations, background processing through Action Scheduler, smart retry, signed webhooks, Send Test Order and a log viewer.