A question about your store: which products sold fewer than five units last month, and how much stock is left for each one?
WooCommerce tracks both numbers. Sales are reported in Analytics, stock is listed under Products, and answering the question means bringing the two together, which usually involves a couple of CSV exports and a spreadsheet that matches them up by SKU. Next month, the same again.

Everything needed to answer that question is already in your store: every product, order, refund, coupon, customer and review, along with everything each of them has ever done. wp-admin gives you the screens a store needs every day, and a GraphQL API gives you the ones that are specific to you.
Gato GraphQL is a WordPress plugin that gives your site a GraphQL API, so the questions can be your own. Its WooCommerce extension teaches that API about your store: products and variations, categories, tags and brands, orders and their line items, refunds, customers, coupons, reviews, shipping zones, tax rates, and payment gateways.
Asking for Exactly What You Need
A GraphQL query names the fields you want, and the response carries those fields and nothing else. A single request can also span several entities, so products, their categories, and the customers who bought them all arrive together, in the shape you asked for.
This works alongside the WooCommerce REST API rather than replacing it. REST is a good fit when a standard, ready-made response for a known resource is what you need. GraphQL is a good fit when the question is specific to your store, or when one screen needs data that reaches across products, orders, and customers at once.
A Query, and Its Answer
A query is a list of the fields you want. This one asks for the name, code, stock level, and lifetime sales of every simple product:
query LowStockProducts {
woocommerceSimpleProducts {
name
sku
stockQuantity
totalSales
}
}
That is the whole query. The response mirrors it:
{
"data": {
"woocommerceSimpleProducts": [
{ "name": "Ceramic Mug", "sku": "MUG-01", "stockQuantity": 3, "totalSales": 412 },
{ "name": "Tote Bag", "sku": "BAG-04", "stockQuantity": 87, "totalSales": 6 }
]
}
}
You write these in an editor inside wp-admin, which autocompletes as you type and lists every available field, so you can find what your store exposes as you go.

Bulk Admin Work
Gato GraphQL can also write to your store, not only read from it.
The summer sale starts on Friday, and every product in the “Gadgets” category needs to be marked as featured. As a mutation, that is one instruction:
mutation FeatureGadgets {
woocommerceSimpleProducts(filter: { categoriesBy: { slugs: ["gadgets"] } }) {
update(input: { featured: true }) {
status
product {
...on WooCommerceProduct {
featured
}
}
}
}
}
The first line selects the products in that category. The second sets featured on all of them, without you having to list them or count them.
The same shape covers the rest of the weekly routine: adjusting prices across a range, restocking after a delivery, marking a batch of orders as shipped, issuing refunds, creating next month’s coupons, clearing out unused product tags.

Bulk edits run from the same editor.
Saving a Query So You Never Write It Again
Any query can be saved as a persisted query: you write it once in wp-admin, name it, and it stays there. “Low stock report.” “This week’s refunds.” “Customers who have not ordered in six months.”

Each saved query gets its own web address, which is what makes it useful outside wp-admin:
- A spreadsheet can pull it in. Point Google Sheets at the low stock report, and it refreshes itself. The Monday stock check becomes a tab you open.
- It can run on a schedule. Have the store email you nightly with anything below its reorder threshold.
- Your store can trigger it. When an order is marked completed, run a query that handles whatever comes next.
- You can hand it to someone else. Your warehouse manager gets the stock report without needing a wp-admin account.

Most stores have a handful of questions they ask every month. Saving each one as a persisted query turns it into something you run on demand, or on a schedule, for as long as the store exists.
Apps, Kiosks and Storefronts
Eventually something other than a browser needs your store’s data: a mobile app, a touchscreen in a physical shop, a storefront built on a modern framework, your accounting software, your fulfillment partner. Each needs to read products and prices, and to push orders back.

WooCommerce stays the source of truth throughout. Orders land in the same place, your existing reports keep working, your payment gateways behave as before, and nothing is migrated out of WooCommerce.
Tools for AI Assistants
A persisted query makes a good tool for an AI assistant, because it does exactly one thing. “Mark this order as shipped” can mark an order as shipped: it cannot change prices, delete products, or read your customer list, because those fields are not part of it.
You pick which of these single-purpose queries the assistant can call, which means you can hand it a specific set of abilities rather than an administrator account.
What Gets Exposed, and to Whom
You decide, field by field.
Gato GraphQL is built from modules you switch on and off, and the API offers exactly what is enabled. If your store has no reason to expose customers, leave that module off, and customers do not exist as far as the API is concerned.

Alongside that:
- Endpoints are private unless you make them public. You can run one endpoint for internal tools and a separate, narrower one for a public app.
- Writing requires the matching WooCommerce permission. The same capabilities that govern wp-admin apply here, so someone who cannot edit products in the admin cannot edit them through the API.
- Changes go through WooCommerce itself. Nothing is written directly to the database, so stock levels, order totals and notification emails behave normally, and your other plugins see the events they expect.
Cart and checkout sit outside the extension’s scope. It covers your catalog, orders, customers, and reporting, while your customers keep checking out through WooCommerce as they do today.
Setting It Up
- Install Gato GraphQL on your WooCommerce site, like any other plugin.
- Add the WooCommerce extension.
- Open Gato GraphQL in the wp-admin menu. The editor is on the first screen.
- Paste in the low stock query above and run it.
- Save the queries you know you will need again.

The WooCommerce guide has ready-made queries for the rest: products by type, orders with their line items, customers with their lifetime spend, coupons, refunds, reviews, shipping zones, and tax rates. Copy one and change the fields to suit.