DEV Community

Cover image for How to Register Your Magento 2 Store for ChatGPT Shopping (ACP Feed + Step-by-Step)
Ievgenii Gryshkun
Ievgenii Gryshkun

Posted on • Originally published at angeo.dev

How to Register Your Magento 2 Store for ChatGPT Shopping (ACP Feed + Step-by-Step)

ChatGPT now processes over 50 million shopping queries per day. Appearing in those results is not automatic — 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 merchant application, to the ongoing cron setup that keeps your feed current.

Shopify and Etsy merchants already have native integrations. This guide is for Magento 2 / Adobe Commerce stores.

🔗 Originally published on angeo.dev

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
Enter fullscreen mode Exit fullscreen mode

Expected output before you start:

✓ 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
Enter fullscreen mode Exit fullscreen mode

Signal #5 (AI Product Feed) will fail until Step 1 below. Signals #1, #2, and #3 must all PASS before applying at chatgpt.com/merchants.

If robots.txt is failing — most default Magento 2 installs have a User-agent: * wildcard that silently blocks OAI-SearchBot. Fix that first. It's a hard gate that invalidates everything else.


Step 1 — Install the product feed modules

composer require angeo/module-openai-product-feed \
  angeo/module-openai-product-feed-api

bin/magento setup:upgrade
bin/magento cache:flush
Enter fullscreen mode Exit fullscreen mode

Both modules are MIT licensed, free on Packagist. No license keys, no SaaS — runs entirely on your server.


Step 2 — Configure seller information

Go to Stores → Configuration → Angeo → Product Feed API and fill in:

  • Seller name
  • Target country — ISO 3166 two-letter code (e.g. US)
  • Policy URLs — privacy policy, returns, shipping, terms of service

These populate seller.links on every product record. They are merchant credibility signals in OpenAI's scoring. Missing policy URLs is a common reason for suppressed products after initial approval.


Step 3 — Generate and validate the feed

# Generate the feed file
bin/magento angeo:aeo:feed:generate

# Validate structure and required fields
bin/magento angeo:aeo:feed:validate
Enter fullscreen mode Exit fullscreen mode

Confirm in the output:

  • Each product has a variants array
  • Prices are in minor units (see the price format section below)
  • availability.status is present on every product
  • seller.links has at least two policy URLs

Step 4 — Verify promotions output

bin/magento angeo:aeo:feed:validate --type=promotions
Enter fullscreen mode Exit fullscreen mode

Active Magento cart price rules should appear automatically as ACP promotions with active_period, benefits, and status: "active". If promotions are missing here, they won't appear in ChatGPT results either.


Step 5 — Apply at chatgpt.com/merchants

Submit your store URL and business details. OpenAI tests schema compliance, HTTP response codes, and feed integrity.

Current status: Onboarding is US-only and available to approved partners — expect a waitlist. Application review typically takes 1–2 weeks.


Step 6 — 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. The feed goes to the private SFTP endpoint OpenAI provides — not a public REST endpoint on your store. Submit a sample first; after it passes validation, push the full catalog.


Step 7 — Set up 15-minute cron

# crontab — every 15 minutes
*/15 * * * * /usr/bin/php /var/www/html/bin/magento angeo:aeo:feed:generate --push
Enter fullscreen mode Exit fullscreen mode

OpenAI accepts feed refreshes every 15 minutes. Full feed re-submission is required each time — there is currently no incremental update support.

⚠️ Most common post-approval failure: Stale availability data — out-of-stock products showing as available — is the #1 reason products get suppressed after initial approval. The 15-minute cron prevents this.


Feed Format: What OpenAI Actually Accepts

Format Extension Notes
JSON Lines .jsonl.gz Recommended. One product object per line. Handles nested variants cleanly.
CSV .csv.gz Works 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. Always check the official feed spec for the current list.


The Price Format Trap

This is the single most common implementation error across all ACP integrations.

Price must be sent in ISO 4217 minor units as an integer:

#  Wrong  fails validation
"price": 14.99
"price": "14.99"

#  Correct  integer minor units
"price": 1499    // 14.99
"price": 14900   // $149.00
Enter fullscreen mode Exit fullscreen mode

The module handles this automatically: (int) round($price * 100). But if you are building a custom integration or mapping from a Google Shopping feed — check this field first. The validation error message for a wrong price format is non-obvious.


What OpenAI's Conformance Check Validates

Check What it verifies Handled by
Feed schema Required fields, correct data types, valid URIs ProductMapper
Price format Integer minor units, ISO 4217 currency code ProductMapper
Availability flags enable_search and availability.status present ProductMapper
Promotion schema benefits array with type, dates, status: "active" PromotionMapper
Seller links At least 2 policy URLs present Admin config → seller.links
Product IDs Unique, stable, no duplicates across the feed ProductMapper

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 announced with Instant Checkout applied only to completed in-chat purchases — and OpenAI is moving away from that model toward merchant-owned checkout. As of April 2026, there are no fees on purchases that start in ChatGPT.

After approval, the feed needs to be indexed — typically 48–72 hours. 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 info complete: name, country (ISO 3166), at least 2 policy URLs
  • [ ] Active promotions appear with status: "active"
  • [ ] 15-minute cron configured and tested

All four Angeo modules are free, MIT licensed, and available on Packagist:

Free AEO Self-Assessment →

Top comments (0)