
How do you set up Hyros on WooCommerce?
Install the Hyros Tracking plugin from WordPress.org, connect your Hyros account, and the plugin injects the tracking script and sets up the order webhooks for you. That covers most stores. The manual route (Universal Script in the theme head plus a WooCommerce REST API key in Hyros) is still there for stores where the plugin isn't an option.
Either way, the install is the easy part. What decides whether Hyros reports the same revenue you actually banked is everything around it: which order statuses count as sales, whether subscription renewals ever reach Hyros, whether Cash on Delivery orders are being dropped, and whether a speed plugin is holding the script back until after the visitor's click data is gone.
We're a Hyros implementation team, and WooCommerce is the platform where we see the widest gap between "it's connected" and "the numbers are right." This is the setup order we use and the checks we run before calling it done.
What changed with the Hyros WordPress plugin?
Hyros shipped a 1-click WordPress and WooCommerce plugin in version 2.6.4 (April 2026), replacing the old copy-paste-into-header.php process. Per the Hyros announcement, once you install it and connect your account, it injects the tracking script, sets up webhooks for real-time order syncing and starts tracking straight away.
A few facts worth knowing before you click install:
- It's young. The Hyros Tracking listing on WordPress.org is still on version 1.0.0 with a small install base. Fine for production, but test it like a new plugin, not a mature one.
- It needs PHP 8.0 or newer and WordPress 5.5 or newer. Plenty of older WooCommerce stores on budget hosting still run PHP 7.4. Check under Tools, Site Health, Info, Server before you start.
- It doesn't change the data rules. The plugin automates the install. It doesn't add subscription support, fix your order status mapping or handle cost of goods. Those are still on you.
Takeaway: the plugin removes the most error-prone step (editing theme files), not the configuration decisions.
Plugin or manual install: which should you use?
Use the plugin unless you have a specific reason not to. It's the path Hyros now maintains, and it keeps the script out of theme files that get overwritten.
Go manual when:
- The host blocks plugin installs or file edits. Some managed WordPress hosts lock both down.
- The store is headless or heavily custom. If the storefront is a separate Next.js or React front end, the plugin can't inject into pages WordPress doesn't render. You'll place the Universal Script in the front end yourself.
- You need control over load order. Stores with aggressive optimization stacks sometimes need the script placed and excluded by hand.
If you go manual, Hyros' own WooCommerce documentation has you paste the Universal Script into header.php through Appearance, Theme File Editor. Don't put it in the parent theme's header.php. The next theme update overwrites that file and your tracking quietly stops. Put it in a child theme, or use a header-and-footer plugin so it survives updates.
Then connect orders:
- In Hyros, go to Settings, Integrations, WooCommerce and click Configure.
- In WordPress, go to WooCommerce, Settings, Advanced, REST API and click Add Key.
- Give the key Read permission. Hyros only needs to read customers, orders, order transactions and products.
- Paste the consumer key and consumer secret into Hyros, along with the store name and domain.
One rule for both routes: never run the plugin and a manual script at the same time. If a previous agency pasted the script into the theme or a tag manager, remove it before activating the plugin. Two copies of the script firing on every page is an easy way to end up with tracking nobody can debug.
Why aren't my WooCommerce orders showing up in Hyros?
In most cases the order reached Hyros and was filtered out, or it was never connected to a click. The integration itself is rarely broken. These are the four causes we check first, in order.
Order statuses that aren't mapped as sales
WooCommerce has a lot of order statuses: pending, processing, on-hold, completed, plus whatever custom statuses your fulfillment plugins add. Hyros lets you choose which ones count as a sale under the WooCommerce integration's Edit settings ("Change State Values").
If you sell digital products that jump straight to completed, or physical products that sit in processing for days, the mapping changes when revenue shows up and whether it shows up at all. Write down your store's real order flow first, then map statuses to match it. Bank transfer stores that leave orders on-hold until payment clears need extra thought here.
Cash on Delivery is ignored by default
Hyros skips Cash on Delivery orders by default, because no money has changed hands yet. If COD is a meaningful share of your orders, which is common for stores selling into Latin America, turn on the Cash on Delivery toggle in the integration. Those orders then count as sales once they reach processing.
API key permissions
A key created with the wrong user, or with access revoked when someone cleaned up WordPress users, breaks the order connection without anyone noticing. If orders stopped on a specific date, check whether a WordPress user or a REST API key was deleted that day.
A caching or speed plugin delaying the script
This is the one that looks like an attribution problem. Optimization plugins with "delay JavaScript until user interaction" or aggressive script combining will happily delay the Hyros script too. A visitor who lands from an ad and leaves before scrolling never gets tracked, and a buyer who returns later shows up without the original click.
Exclude the Hyros script from delay, defer and combine settings, then purge the cache. If you're seeing a high share of sales with no source, our guide to fixing Hyros No Source sales walks through the full diagnostic order.
Does Hyros track WooCommerce subscriptions?
Only if you use the YITH Subscription plugin. Hyros documentation states that WooCommerce doesn't send recurring sales to Hyros by default, and that renewals are currently tracked for stores using YITH Subscription. If you run a different subscription plugin, Hyros tells you to contact support.
That matters more than it sounds. Hyros attributes revenue to the ad that brought the customer in. If only the first payment arrives, every subscription campaign looks like it earns one month of revenue. A campaign that pays back in month three looks unprofitable forever, and someone eventually turns off the ad that was actually working.
Your options if you're not on YITH:
- Ask Hyros support first. They may have a supported path for your plugin by the time you read this.
- Send renewals yourself through the Hyros API. Trigger on the renewal payment, look up the customer by email, and create the sale in Hyros. We build this in n8n; our Hyros node for n8n handles the API calls.
- At minimum, know the gap exists. Read subscription campaigns on first-order metrics and judge lifetime value separately.
How do you track cost of goods from WooCommerce?
Install the free Cost of Goods for WooCommerce plugin and enter a cost for every product. Hyros reads that cost with each order, so profit and true ROAS reflect what the products cost you instead of just revenue.
The setup takes ten minutes. Filling in costs for a big catalog takes longer, so start with the products your ads actually sell. A campaign that drives low-margin products can show a great ROAS and lose money, and without cost data you won't see it.
How do you verify the setup actually works?
Run a tagged test order end to end before you trust a single report. "Connected" in the integrations screen tells you the API key works. It doesn't tell you attribution works.
Our test sequence:
- Open a clean browser profile with no ad blocker and no previous visits to the store.
- Visit through a tagged link that Hyros will recognize as a source, the same kind of link your ads use.
- Browse a couple of pages, then buy with a real email address you control.
- Check Hyros for the lead, the sale, the amount and the source. The source matters most here; a sale that lands with no source means the click and the purchase didn't connect.
- Refund the order in WooCommerce and confirm Hyros reflects it. Refunds that never reach Hyros inflate revenue the same way missing sales deflate it.
- Repeat on mobile. Mobile checkouts and in-app browsers are where script timing problems show up first.
Then let a week of real orders run and compare total revenue in Hyros with WooCommerce for the same dates. They won't match to the cent, but a gap of more than a few percent means something above is still wrong.
Where WooCommerce fits in a full Hyros setup
WooCommerce is usually one source of revenue among several. Stores also take phone orders, sell through a booking tool or run a separate checkout for high-ticket offers. Each of those needs its own connection to Hyros, or the attribution picture has holes in it.
If you're still deciding on tooling, we compared Hyros and Triple Whale for this kind of store. If you're running Hyros across several client accounts, our Hyros attribution guide for agencies covers the setup standards we use everywhere.
Get a free automation audit
If Hyros and WooCommerce disagree on your revenue, or you're about to switch from a manual install to the plugin, we'll check your script placement, order status mapping, subscription renewals and test-order flow. Get a Free Automation Audit, or see how we handle full Hyros setup for stores and agencies.
