ChatGPT processes over 50 million shopping queries per day. Appearing in those results is not automatic for Magento stores — it requires a deliberate application process, a spec-compliant product feed, and passing OpenAI’s conformance checks.

This guide walks through the entire process: from the pre-check that determines if your store is ready, to the application, to the ongoing cron setup that keeps your feed current.

Shopify and Etsy merchants: have integrations, but visibility is not guaranteed. This guide is for Magento.

How to Prepare Your Magento 2 Store for ChatGPT Shopping
How to Prepare Your Magento 2 Store for ChatGPT Shopping

Before You Apply: The Pre-Check

OpenAI’s conformance checks verify technical requirements before granting production access. Stores that fail the pre-check go into a review queue and receive vague rejection emails. Do the pre-check yourself first.

bin/magento angeo:aeo:audit

✓ PASS  robots.txt — OAI-SearchBot and GPTBot allowed
✓ PASS  llms.txt — store content map present
✓ PASS  Product Schema — JSON-LD with offers.availability
✗ FAIL  AI Product Feed — no feed found

Signal #5 (AI Product Feed) will fail until the next step. Signals #1, #2, and #3 must all PASS before applying.


Step-by-Step Registration

01

Install the product feed modules

composer require angeo/module-openai-product-feed angeo/module-openai-product-feed-api
Then bin/magento setup:upgrade && bin/magento cache:flush

02

Configure seller information

Go to Stores → Configuration → Angeo → Product Feed API. Fill in: seller name, target country (ISO 3166 two-letter code, e.g. US), and policy page URLs — privacy policy, returns, shipping, terms. These populate seller.links on every product and are merchant credibility signals in OpenAI’s scoring.

03

Generate and verify the feed

Run bin/magento angeo:aeo:feed:generate to produce the .jsonl.gz feed file. Then spot-check the output:
bin/magento angeo:aeo:feed:validate
Confirm: each product has a variants array, prices are correct, availability.status is present, and seller.links has at least two policy URLs.

04

Verify promotions output

Active Magento cart price rules should appear automatically as ACP promotions with active_period, benefits, and status: "active". Run bin/magento angeo:aeo:feed:validate --type=promotions to confirm.

05

Apply at chatgpt.com/merchants

Submit your store URL and business details. OpenAI tests schema compliance, HTTP response codes, and feed integrity. Onboarding is currently US-only(availability may vary by region) and available to approved partners — you will be placed on a waitlist.

06

Receive SFTP endpoint and push the feed

After approval, OpenAI provides a private SFTP endpoint for your store. Push your .jsonl.gz feed file to this endpoint — do not host the feed publicly on your website. Submit a sample first; after it passes validation, push the full catalog.

07

Set up 15-minute cron for real-time updates

OpenAI accepts feed refreshes every 15 minutes. Full feed re-submission is required each time — there is currently no incremental update support. Stale availability data — out-of-stock products showing as available — is the most common reason products get suppressed after initial approval.


Feed Format: What OpenAI Actually Accepts

The original article’s feed example showed a JSON structure that resembled the Checkout API payload. The actual product feed format is different.

OpenAI accepts two formats for the product feed file:

FormatExtensionNotes
JSON Lines.jsonl.gzRecommended. One product object per line. Handles nested variants cleanly.
CSV.csv.gzWorks for flat catalogs. Variant structures need to be flattened.

Note: TSV and XML were in OpenAI’s original spec announcement but have since been removed from the supported formats. Always check the official feed spec for the current list.

The feed is pushed to a private SFTP endpoint OpenAI provides after merchant approval. It is not a public REST endpoint you expose on your store. This is a key difference from how the original article presented it.


The Price Format: Minor Units vs Decimal

The single most common implementation error across all ACP integrations. Price must be sent in ISO 4217 minor units as an integer — €14.99 = 1499, $149.00 = 14900. Sending 14.99 as a float fails schema validation with a non-obvious error message.

The module handles this automatically: (int) round($price * 100). But if you are building a custom integration or mapping from a Google Shopping feed, this is the field to double-check first.


What OpenAI’s Conformance Check Validates

CheckWhat it verifiesModule that handles it
Feed schemaRequired fields present, correct data types, valid URIsProductMapper
Price formatInteger minor units, ISO 4217 currency codeProductMapper
Availability flagsenable_search and availability.status presentProductMapper
Promotion schemabenefits array with type, dates, status fieldPromotionMapper
Seller linksAt least 2 policy URLs presentAdmin config → seller.links
Product IDsUnique, stable, no duplicates across the feedProductMapper

No Fees for Discovery

Product discovery results in ChatGPT are currently organic and unsponsored. There is no cost to submit a product feed or appear in shopping results. The 4% transaction fee that was announced with Instant Checkout applied only to completed in-chat purchases — and OpenAI is now moving away from that model toward merchant-owned checkout experiences. As of April 2026, there are no fees on purchases that start in ChatGPT.

After approval: ChatGPT merchant status does not guarantee immediate product appearances. The feed needs to be indexed, which typically takes 48–72 hours after approval. Products with complete Product JSON-LD schema, high availability accuracy, rich descriptions, and active promotions appear first.


Checklist Before Submitting

  • bin/magento angeo:aeo:audit — robots.txt, llms.txt, Product schema all PASS
  • Feed generates without errors and produces valid .jsonl.gz
  • Each product has variants, correct prices in minor units, availability.status
  • Seller information complete: name, country, at least 2 policy URLs
  • Active promotions appear in promotions output with status: "active"
  • 15-minute cron configured for post-approval updates

From zero to ChatGPT Shopping in 90 minutes. All modules free, MIT licensed.


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *