Ducted

Your WooCommerce store,
every variation included.

Paste the address. No plugin, no API keys.

WooCommerce already publishes your catalog: every store running it serves a public product API that needs no plugin, no keys and no export. Ducted reads it from the store address alone - including every variation of a variable product, which is the part a feed actually needs and the part most exports flatten away.

You paste
Store address
Ducted finds
The catalog behind it
Records
One per variation
Channels
Google, Meta, TikTok +

A variable product is not one product to a shopping channel

A WooCommerce store sells a T-shirt in five sizes as one product with five variations, each with its own price, stock and SKU. Google Shopping and Meta do not buy that: they want a row per size, grouped under the product, or the apparel listing is rejected.

Most WooCommerce exports give you the parent product and leave the variations behind, so the feed advertises a price and a stock level that belong to nothing in particular. Ducted reads the variations themselves, so what reaches the channel is what the shopper can actually put in a basket.

Every variation as a structured record

The catalog arrives as structured records, not page text. Every variation carries the fields a shopping feed is built around.

Every record carries
  • Title and the product description
  • A link to that variation, its own image when the store sets one, and the product images
  • Price and sale price in your store currency
  • In stock, out of stock or on backorder
  • Product category and tags, and the brand where your store sets one
  • Colour and size, when the store sells by them
  • SKU
Variants

Every size and colour, its own record

Every variation a product publishes arrives as its own record, grouped under that product - the shape Google Shopping requires for apparel. Size, colour, finish, length, whatever the store sells by: each one carries its own price and sale price in your store currency, its own stock, its own image when the store sets one, its SKU, and the link WooCommerce publishes for that variation. Simple products stay one record each.

Each feed picks its rows: per size and colour, or per product →
Maps itself

The fields arrive pre-marked, so a new project maps itself: create a Google Shopping or Meta catalog feed and id, title, description, link, images, price, sale price, availability, colour and size are filled in before you touch anything, with item group and product type matched by name.

Not in the source

GTINs and Google product categories are not in what the Store API publishes, so a channel that wants one gets it from a second source with Feed Mixer, or you set it on the feed. Brand comes through only if your store uses WooCommerce's brands taxonomy - most do not, so most set a fixed brand on the project. A store that sells by something other than colour and size - plug type, ring size, length - keeps its own wording, and you map it where the channel wants it.

If your security plugin blocks us

Some hosts and security plugins refuse requests that are not a browser, and a few turn the Store API off. Ducted tries a browser-grade connection before giving up and tells you plainly when that is what happened. If it is, ask whoever runs the site to allow the Ducted Feed Fetcher - everything they need is on our bot page - and connect the store again.

Read twice a day, not every hour

Reading a WooCommerce store means walking its own shop API rather than downloading one file its owner published, and a large catalog is hundreds of requests per read. Scheduled refreshes on a connected store therefore run at most every twelve hours, whatever your plan allows for feed URLs - being a good guest on a merchant's own server is worth more than an hourly number that nobody's prices change at.

Refreshing by hand is unaffected: that is a person asking once, and you can do it whenever you like.

Refreshed on schedule, watched in between

Ducted re-reads the store on every scheduled refresh, so new products and variations appear, a size that sells out switches to out of stock and a sale shows both prices without anyone touching the feed. The shape of the data is checked on every refresh as well: if WooCommerce changes what it publishes, Ducted tells you rather than quietly serving an empty feed.

Common outputs for a WooCommerce catalog

One mapped catalog, one output feed per channel. Each template carries that platform's required fields, accepted values and format rules.

Google ShoppingMeta Product CatalogTikTok Product CatalogPinterest Catalog

Your WooCommerce catalog in every shopping channel, variations and all.

Create a free account and paste the store address, or validate a product feed you already run.

Create free accountCheck your product feed