Ducted

Your Shopify store,
or just your collection.

Paste the address. Nothing to install, nothing to export.

Shopify publishes every store's catalog behind the store itself, and Ducted reads it from the address alone - the whole store, or a single collection when that is what you own. No app to install, no API key, no export to schedule: the products are ready to map as soon as the address resolves.

You paste
Store or collection
Ducted finds
The catalog behind it
Records
One per size and colour
Channels
Google, Meta, TikTok +

Channel apps are per store. Your merch may not be.

Shopify's channel apps sync a store to a platform, which is fine when the store is yours. Plenty of catalogs are not: a creator whose merch lives as a collection on a shared retailer's store cannot install anything there, and an agency running feeds for several stores does not want an app per store per channel.

Ducted reads the catalog from the address instead. Nobody installs anything, nobody produces a file, and a product that sells out is marked out of stock on the next refresh.

Paste the collection, get the collection

A collection address reads that collection only. Creator stores such as Crowdmade, DFTBA or Fanjoy publish each creator's merch as a collection on one shared store, so a creator pastes their collection address and gets their own catalog - not the whole retailer's - and every refresh stays inside it.

Paste the store address instead and the whole catalog comes through. Either way the source is set once; Ducted reads every page of it on each refresh.

Creator merch on every channel →

Every size and colour as a structured record

The catalog arrives as structured records, not page text. Every variant carries the fields a shopping feed actually needs.

Every record carries
  • Title and the full product description
  • A link to the product page on that variant, main image and additional images
  • Price and sale price in your store currency
  • In stock or out of stock
  • Brand, product type and tags
  • Colour and size
  • SKU
Variants

Every size and colour, its own record

Every size and colour arrives as its own record, grouped under its product - the shape Google Shopping requires for apparel. Each carries its own price, stock and SKU, its own image when the store sets one, and a link that opens the product page on that variant. A variant on sale carries both prices: the compare-at price as the regular price and the price the store charges as the sale price, the pair Google Shopping and Meta expect.

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, brand, colour and size are filled in before you touch anything, with item group matched by name.

Not in the source

GTINs are not in what Shopify publishes, so a channel that wants one gets it from a second source with Feed Mixer, or you let the brand and SKU stand in where the channel allows it.

Refreshed on schedule, watched in between

Ducted re-reads the store on every scheduled refresh, so new products appear, a sold-out size 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 Shopify changes what it publishes, Ducted tells you rather than quietly serving an empty feed.

Common outputs for a Shopify 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 Shopify catalog in every shopping channel, without an app per channel.

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

Create free accountCheck your product feed