Ducted

Get your products into ChatGPT Ads.
With the right format, first time.

File-based feed setup for ChatGPT Ads Manager

ChatGPT Ads doesn't pull from a URL - it needs a compressed file pushed to OpenAI's SFTP endpoint. Map your product data to ChatGPT's schema with automap suggestions and live validation, then download a format-checked, compressed file - plus your 100-product onboarding sample.

From your product data to a ChatGPT-ready file.

ChatGPT Ads Manager is file-based - you push a compressed file to OpenAI's SFTP endpoint. You map your fields, helped by automap suggestions and live validation; Ducted builds and format-checks the file. You handle the push.

Your dataSupplier feed, CSV, or API
Map & validateAutomap + live checks
Download fileJSONL / CSV / TSV · gzip
Push via SFTPTo OpenAI's endpoint
1
Bring your product data

Add a supplier feed, upload a CSV, or connect a REST API. No structured data yet? Website indexing is available as an optional add-on service.

2
Map it to ChatGPT's schema

Match your columns to ChatGPT's fields. Automap suggests matches, and real-time format validation plus a feed health check flag missing fields and bad values as you go. How clean the result is depends on your source data - or let us map it for you with the optional managed service.

3
Download your feed file

Download your full catalog file or your 100-product onboarding sample. Choose JSONL (recommended), CSV, or TSV - all gzip-compressed, UTF-8 encoded.

4
Push to OpenAI via SFTP

Use the SFTP endpoint from your OpenAI Ads Manager onboarding. Submit your sample first. Once approved, push your full catalog and re-upload a fresh file on your own schedule.

Before OpenAI accepts your catalog, they review 100 products.

This is a separate file submission - same format, same schema, limited to ~100 representative products. Pass the review and your full catalog is accepted. Fail and you're locked out until you fix the data. OpenAI's review is stricter than Merchant Center or Meta - a bad product recommendation inside a chat answer reflects on ChatGPT, not just you.

100Products in sample
1MMax SKUs, full catalog
15 minMin refresh interval

Ducted selects your best 100 products automatically - prioritising products with all required fields present and the most complete attribute data. Your sample file is generated separately from your full feed. Sample downloads don't count towards your plan limits.

Catalog under 100 products? Your full feed is already within the sample limit - use the full feed download as your sample submission. No separate file needed.

Built to ChatGPT's exact schema.

ChatGPT Ads uses OpenAI's Agentic Commerce Protocol - a specific set of fields and value formats, delivered as a compressed file (not a live URL). Ducted gives you that schema as a ready-to-map template, with automap suggestions and real-time validation so the file you download is correctly formatted.

.jsonl.gzRecommended.csv.gz.tsv.gz

Every format is UTF-8 and gzip-compressed, ready for SFTP.

Fields the ChatGPT schema requires:

  • is_eligible_search, is_eligible_checkout - ChatGPT discovery and Instant Checkout flags
  • seller_name, seller_url, store_country, target_countries - merchant and market fields
  • item_id, title, description, url, image_url, price, availability, brand - the product core

One catalog, many channels. ChatGPT, Google, Meta and others each expect a different format. Keep your products in one Ducted project and build a separate, correctly-formatted feed for each - you map each one (automap helps), Ducted validates and generates the file.

Know what will fail before OpenAI tells you.

Ducted validates your feed against the checks it can reliably run before submission. Issues are surfaced in a report before you download - so you can fix them before OpenAI sees them.

Required fields

Every product checked for missing required fields before you download.

Enum values

availability, condition, age_group, and gender validated against accepted values.

URL format

url and image_url validated as properly-formed URLs.

Price format

Checked against the required pattern: 79.99 USD.

Ducted does not currently validate image dimensions, price consistency with your live site, or description language quality. These may still be flagged by OpenAI's review - accurate pricing and factual descriptions are your responsibility.

We'll build the source from your website.

No supplier feed, no CSV, no export? Website indexing is an optional managed add-on: we index your store and turn your existing pages into a structured product catalog inside Ducted. From there you map it to ChatGPT and download - or have us handle the mapping too.

Learn about website indexing →

FAQ

Ducted is self-service: you map your source columns to ChatGPT's fields. Automap suggests matches, and real-time format validation plus a feed health check flag anything missing or malformed before you download. How clean automap is depends on your source data. Prefer it done for you? Managed mapping is an optional add-on service.

No. ChatGPT Ads Manager uses file-based delivery - you push compressed files (JSONL, CSV, or TSV) via SFTP to an endpoint OpenAI provides during onboarding. A live URL feed won't work. Ducted builds the correctly formatted, compressed files for you to download.

Yes. The ChatGPT feed is a downloadable file, not a live URL, so the Free plan's manual refresh covers it - build your feed, validate it, and download a fresh file whenever you need to push. You'd upgrade when you want scheduled refreshes, more feeds, live-URL channels, or managed mapping.

Yes - it's a separate file, not a subset of your catalog. OpenAI reviews it before accepting your full catalog. Ducted builds the sample independently, selecting the 100 best-quality products (fewest validation errors and the most complete attributes). If your catalog has fewer than 100 products, your full feed file serves as the sample.

No. Sample feed downloads are excluded from plan limits.

JSONL, CSV, and TSV - all gzip-compressed. Ducted generates all three; JSONL is the recommended default for most catalogs.

OpenAI supports push intervals as frequent as every 15 minutes. For most merchants, daily or twice-daily is plenty. Download a fresh file from Ducted and push it to your SFTP endpoint on your chosen schedule.

For single-variant products you mirror the product into the variant fields. The ChatGPT template lays these fields out so mapping them is straightforward.

Perplexity's merchant program is a free organic listing channel (no paid ads) that accepts a Google Shopping-compatible CSV - largely covered by a standard Shopping feed. A dedicated Perplexity guide is coming.

Your ChatGPT feed, validated and ready to push.

Bring your product data, map it with automap and live validation, and download your full catalog file plus the 100-product sample. Free plan included.

Get started free →
Works on the Free planJSONL · CSV · TSVGzip-compressed100-product sample includedLive format validationNo SFTP credentials needed