What a channel is#
A channel turns product data into an outgoing feed that an ad network reads to build dynamic ads (Meta Advantage+, Google Shopping, TikTok, and similar catalog-based formats) — or that another product-data destination ingests, like ChatGPT's shopping feed. A channel combines:
- A catalog — the product-feed source it pulls prices, stock, and links from. A channel targets exactly one catalog.
- One or more product sets — which products from that catalog are included.
- Fields — the feed columns you're exporting, and what goes into each one (product data, AI-written content, templated images/video, static text).
- Rules — conditional rules that adjust field values per product (for example, marking a product out of stock).
Renable renders the feed, hosts it at a stable URL, and keeps it up to date automatically — you connect that URL to the ad network once and updates flow through after that.
Creating a channel#
From a project page, go to the Channels section and click +. The create-channel dialog asks for:
- Name
- Catalog — auto-selected if the project only has one.
- Product sets — which product set(s) populate the channel. You can change this later.
- Type of channel — the starting point, which pre-fills fields and automations for a specific network or purpose:
- Meta Advantage+ feed
- Meta Advantage+ supplementary feed
- Meta Advantage+ feed with animated videos (see Animated product videos)
- Google Shopping feed
- Google Shopping supplementary feed
- TikTok feed
- ChatGPT shopping feed — a feed in the field layout OpenAI's merchant program reads; it presets the output to compressed TSV. See The ChatGPT shopping feed.
- Microsoft Shopping feed — Bing Shopping campaigns and Microsoft's shopping surfaces, in the Google Merchant layout Microsoft reads as-is. See The Microsoft shopping feed.
- Snapchat feed — the product catalog Snapchat Dynamic Ads read. See The Snapchat feed.
- Pinterest feed — the product catalog Pinterest's Shopping ads are built from. See The Pinterest feed.
- Reddit feed — the product catalog Reddit's Dynamic Product Ads are built from; it presets the output to TSV. See The Reddit feed.
- Perplexity shopping feed — the product feed Perplexity's shopping answers read, in the Google Shopping layout Perplexity takes. See The Perplexity shopping feed.
- Prisjakt feed — the offer feed Prisjakt's price comparison listings read, and with it PriceSpy, Prisjagt, Hintaopas, leDénicheur and Pagomeno. See The Prisjakt feed.
- PriceRunner feed — the product feed PriceRunner's price comparison reads in the UK, Sweden and Denmark; it presets the output to TSV, because PriceRunner's XML is a different document from the one Renable writes. See The PriceRunner feed.
- Criteo feed — the product catalog Criteo's retargeting banners are built from; it presets the output to CSV, because Criteo's CSV parser needs only a delimiter while its XML parser is configured node by node. See The Criteo feed.
- Custom — an empty channel; you add every field yourself.
- File format — XML, CSV, TSV, JSON, or JSON Lines (see Output format below).
- Image template and image template size — shown only for the Meta channel types (Meta Advantage+ feed, supplementary feed, and feed with animated videos), since those pre-wire an image field to a template render. Google Shopping and TikTok channels default their image field to the product's own catalog photo instead — you can still add an Image template manually afterward in Fields.
- Video template and video template size — shown only for the animated-video channel type.
The type you pick only sets starting fields and automations — nothing is locked in. After creation you can add, edit, or remove fields and automations freely.
Channel settings#
The channel's name and description are edited right in the page header — click either and type. The structural choices live on the Settings tab:
- Catalog
- Product sets included in channel — "All products" is always available as one of the choices, alongside any custom product sets you've built for the project.
- File format and the Compress feed file (.gz) switch
- SFTP delivery — optionally push the feed file to an SFTP server on every update, on top of the always-available feed URL. Collapsed by default; the switch in its header shows whether it's on.
- Used for — which networks the channel serves, and how the feed is used on each. Unlike everything else on this tab, this applies immediately (it's not part of the draft).
Used for: telling Renable what the feed is for#
Each destination you add (with Add destination) gets a row with three things on it:
- Used as — whether this file is the network's Main feed or a Supplementary feed (an ID-matched side feed that updates a few fields on a feed you already send — for example, one that only replaces images). Supplementary feeds exist on Meta, Google, Microsoft, and Pinterest; TikTok, Snapchat, Reddit, ChatGPT, Perplexity, Criteo, Prisjakt, and PriceRunner feeds are always the main feed. On a supplementary feed only the product ID is required — the other fields are optional, but any you do include are still value-checked.
- The network's main use — a pre-lit chip that's always on: it says what declaring this network means, and it can't be switched off.
- Add-on chips — optional extras you toggle on when the feed carries that content. An add-on adds its own field checks — on a supplementary feed too, since toggling one there means the side feed carries that content.
| Network | Main use (always on) | Add-ons |
|---|---|---|
| Meta | Advantage+ catalog ads | Video ads — your catalog ads show each product's video instead of a still image (see Animated product videos). Multi-image ads — a primary image followed by additional slides of the same product; needs at least two images per product. Adaptive designs — your designs get names, so an ad can pin one by name and Meta still picks the shape that fits where it runs. This chip declares the use and is what enables the Adaptive designs dialog on the Fields tab, where the groups themselves are built. See Adaptive designs. |
| Shopping ads & free listings | Product video — video on your product listings across Google (video ad campaigns use creative uploaded in Google Ads, not the feed). Extra product images — more angles on your listings; at least two images per product. AI discovery — the product fields Google's AI shopping surfaces read; see AI discovery on Google. | |
| TikTok | Catalog ads | Video ads — TikTok builds catalog video ads from each product's own video. Extra product images. |
| ChatGPT | ChatGPT shopping | ChatGPT Ads — marks products as eligible for ChatGPT's product-feed ad campaigns (beta). See The ChatGPT shopping feed. |
| Microsoft | Shopping ads | Extra product images — more images per product; Microsoft documents up to ten and doesn't guarantee showing them. There is no video add-on: Microsoft's feed has no video field. See The Microsoft shopping feed. |
| Snapchat | Dynamic Ads | Video ads — adds each product's video to the feed; Snapchat plays it only when the Dynamic Ad template in Snapchat Ads Manager is set up for video, and falls back to the product image otherwise. Extra product images — more images per product; Snapchat reads up to twenty, more than any other destination here. See The Snapchat feed. |
| Shopping ads | Product video — adds each product's video URL to the catalog; it enriches the catalog rather than making a video ad, and Pinterest decides what it does with it. Extra product images — more images per product, up to ten. See The Pinterest feed. | |
| Dynamic Product Ads | None. Reddit's catalog has no video field at all, and although it accepts extra product images it doesn't publish how many it reads — so Renable offers no chip rather than inventing a limit. See The Reddit feed. | |
| Perplexity | Perplexity shopping | None, for a different reason: there is no advertising on Perplexity at all, so there is no ad format for an add-on to describe. See The Perplexity shopping feed. |
| Prisjakt | Price comparison listings | None, and this is the plainest of the five: a price comparison builds a listing row out of your product data rather than a creative, so there is no ad format for an add-on to name. See The Prisjakt feed. |
| PriceRunner | Price comparison listings | None, for Prisjakt's reason exactly — it is the same kind of surface, and the same main use is what declaring it means. See The PriceRunner feed. |
| Criteo | Dynamic retargeting | None — and here that is not because Criteo isn't an ad surface. Its catalog has no video field at all, and although it documents an additional-image column it describes no ad format that shows more than one image of the same product. See The Criteo feed. |
Setting this is what switches on Renable's per-network checks: the Fields tab starts marking which fields that network requires or recommends, and the Activity tab warns when values don't meet its rules. A channel with nothing set here gets no checks at all. It does not connect anything — you still connect the feed on the network's side.
Unlike the rest of the Settings tab, Used for applies immediately — it isn't part of the draft, and there's no publish step for it.
Output format#
Five formats are available:
- XML (Google Merchant RSS) — RSS 2.0 XML with
g:-namespaced elements. This is what most ad networks expect and is the right default for Meta, Google, and TikTok feeds. - CSV — comma-separated, one product per row. Column headers drop the
g:prefix. Meta and TikTok document it; Google does not accept it — Google's text format is tab-delimited, so a comma-separated file arrives as a single column. Use TSV for Google. - TSV — the same layout separated by tabs instead of commas. This is Google's documented text format, and ChatGPT's merchant feed accepts it too. (Channels created before August 2026 with the old "CSV (tab-separated)" format were renamed to TSV — the file content is identical; only the feed URL's file ending changed from
.csvto.tsv.) - JSON — one file containing a list of product entries. Nested and multi-value fields come through as real structure.
- JSON Lines — one product entry per line. The shape line-oriented destinations ingest — ChatGPT's merchant feed among them.
CSV and TSV can't carry a nested field that repeats — a repeating block produces a number of columns that depends on each product's data, while a delimited file has one fixed header row. Those two options are disabled while the channel holds one, with a caption saying so. A single nested block is fine on CSV and TSV, so a Meta channel converted to adaptive designs keeps every format available — its design blocks don't repeat.
Not every destination reads every format. Meta documents XML, CSV, and TSV; Google documents XML and TSV (not CSV); TikTok documents XML and CSV; Microsoft documents tab-separated text plus Google-formatted XML (not CSV); Snapchat, Pinterest, and Reddit all document XML, CSV, and TSV; ChatGPT takes CSV, TSV, or JSON Lines; Perplexity takes XML, CSV, or TSV, though it publishes no specification of its own — what it reads is the Google Shopping one; Prisjakt names Google Merchant XML among its accepted formats outright, and takes CSV and TSV as well; PriceRunner takes CSV, TSV, or JSON but not Renable's XML, because PriceRunner's own XML is a different document; and Criteo reads XML, CSV, TSV and JSON — the widest set here. PriceRunner and Criteo are the only destinations that read JSON from a hosted feed, and none reads JSON Lines. Pick a format a destination you've named under Used for can't read and Renable tells you right there — see Delivery checks below. Where a destination's documentation doesn't settle a format either way, Renable stays quiet rather than warning on a feed that may be working fine.
Compress feed file (.gz) gzips the output, whatever the format — the feed URL then ends in .gz and serves a gzip file. Where Renable knows a destination's rules, the caption under the switch says whether that destination accepts compressed feeds; otherwise check before switching it on. Format and compression changes ride the draft like any other channel edit and take effect when you publish; the previous file stays at its old URL until the next update replaces it.
Delivery checks#
Naming a destination under Used for tells Renable two things: which fields that destination needs, and what shape of file it can actually read and receive. The second half is checked too.
Renable compares each named destination's published rules against the channel's file format, compression, and SFTP delivery, and says so on the spot — a warning in the Output card when the format doesn't fit, one in the SFTP delivery section when a destination that only accepts pushed files has nowhere to push to, and a short verdict on each destination's row under Used for. The same checks run on every render, so anything still unresolved also shows as a warning on the Activity tab, and clears by itself once you've fixed it.
The three that catch people out: Google and Microsoft don't read CSV (both document a tab-delimited text format — a comma-separated file lands as one column), PriceRunner doesn't read Renable's XML (its own XML is a different document, which is why the PriceRunner channel type writes TSV), and only PriceRunner and Criteo read JSON, and none reads JSON Lines, from a hosted feed.
ChatGPT is where this matters most today: it never fetches a feed URL, so a ChatGPT channel with no SFTP details delivers nothing at all, however good the feed is — and it reads TSV, CSV, or JSON Lines, never XML. See The ChatGPT shopping feed.
One thing Renable deliberately does not warn about: having SFTP delivery switched on for a destination that fetches your feed URL. Pushing the file to your own server so a destination can collect it from there is a normal setup, so an SFTP destination is never treated as a mistake.
These are advice, not gates. Nothing here stops you saving, publishing, or delivering: if you have an arrangement with a destination that Renable doesn't know about, keep your settings and ignore the warning. And where a destination's rules haven't been confirmed, Renable says nothing rather than guessing — no warning is not the same as a green light.
SFTP delivery#
Some destinations don't fetch a URL — they want the file delivered to them. The Settings tab's SFTP delivery section covers that: switch it on in the section header, fill in the host, directory, and login, and Renable pushes the feed file to that server on every update. The feed URL keeps working either way — SFTP delivery is in addition to it, never instead of it.
- Test connection checks the settings there and then, so you don't have to wait for a delivery to find out something's wrong. It connects, signs in, and writes a small test file next to where your feed will land — named after your feed file with
-renable-teston the end — then removes it again. A wrong directory or an account that can't write shows up here, which an "are the credentials right" check alone would miss. - The File name field is used exactly as written when set; left empty, the name follows the channel's format and compression settings automatically.
- Delivery problems never break your feed: if a push fails, the feed URL still updates and a warning appears on the channel's Activity tab (it clears on the next successful delivery).
- Like format and compression, SFTP settings ride the draft and take effect on publish.
Channel URL and regenerating#
The status bar under the channel's name carries a copy-feed-URL button and a Regenerate button once the first deployment finishes; the full URL is shown on the Settings tab's Output card. Until the first deployment, the status bar reads "Preparing your feed…" — see Channel events and troubleshooting.
- Regenerate — forces an immediate redeploy of the published feed, starting within about 15 seconds instead of waiting for the normal background refresh. That 15 seconds is how quickly the redeploy starts, not a completion guarantee — a large catalog, or products whose images/videos still need rendering, can take longer to finish. While a render runs, the status bar shows its live media-rendering progress and the button stays disabled.
- Regenerate publishes what is ready right now, and it is the only button that does. Everything else — Publish, a product change, a template change — waits for images and videos that are still rendering before the live feed is updated. Regenerate deliberately doesn't, which is what makes it useful when you want the rest of a change out immediately. The cost is that products whose media isn't finished go out without it for that one update and come back on the next one; on a Meta channel that means they go out as archived. See Adaptive designs for what that looks like.
- Activity — this tab lists every render: what triggered it (a product change, a template change, a publish, a manual regenerate), how many entries and media it produced, and a plain-language log per run. On a finished render, the Excluded by rules, Out of stock, and New media statistics are clickable — each opens the Preview tab filtered to those products, so a count becomes a list you can inspect.
The URL doesn't change as you edit fields, rules or products, so you normally give it to the destination once — the one thing that does change it is switching the File format or the Compress feed file (.gz) switch, since the address ends in the file extension — see Connecting a channel to Meta, Google, or TikTok.
The rest of the channel page#
The channel page has five tabs:
- Preview — the default tab: a rendered, per-product view of the feed with three views: Gallery (ad-style cards), Listing (a table), and Source (the raw rendered feed text, XML or CSV) — useful for spot-checking before you publish. In Gallery, rendered videos play automatically (muted, on a loop) as you scroll to them, so you can check an animated template product-by-product without leaving the page.
- Activity — the render history (with per-run statistics and logs) and this channel's warnings and errors.
- Fields — define what each feed column contains, with per-field fill rates from the latest render.
- Rules — conditional rules that adjust field values per product.
- Settings — catalog, product sets, file format and compression, the feed URL, SFTP delivery, and what the channel is used for (see Used for above).
Managing channels from the project page#
The project's Channels section lists every channel with per-row Regenerate and copy-URL actions, plus multi-select Archive / Unarchive and a "Show archived" filter. The Copy this channel icon (on the channel page and per-row in this list) duplicates a channel, including its fields and automations — useful for spinning up a variant for a different network or product set without rebuilding it from scratch.