Schéma du flux produit par fichier — ACP
Le fichier plat livré par téléversement SFTP regroupe une dizaine de familles de champs, de l'identification de base à la géolocalisation, dont une poignée seulement sont réellement requises : le reste enrichit progressivement la qualité d'affichage et l'éligibilité — recherche, paiement, publicité — sans bloquer l'ingestion de base. Ce schéma diffère structurellement de celui exposé par l'API : un produit ou une variante par ligne ici, des objets JSON imbriqués là-bas.
Un feed déjà compatible avec le format de données produit Google peut être téléversé sans renommer ses colonnes, sous réserve de confirmation par OpenAI : les champs pris en charge sont mappés vers ce schéma (id→item_id, link→url, image_link→image_url, item_group_id→group_id, entre autres), les colonnes non reconnues sont ignorées, et sept champs restent requis sur chaque ligne — id, title, description, link, image_link, availability, price, brand. OpenAI sélectionne automatiquement le parseur à appliquer, schéma natif ou profil Google, en échantillonnant les enregistrements de chaque fichier ; un seul parseur s'applique ensuite à tout le fichier, ligne par ligne, une ligne malformée pouvant être rejetée sans bloquer les autres.
Ce qui contrôle la visibilité et l'achat
Trois indicateurs commandent la découvrabilité et l'achetabilité dans ChatGPT, sans affecter l'affichage sur le site du marchand : is_eligible_search (requis) autorise la présence en recherche ; is_eligible_checkout (requis) autorise l'achat direct, à condition que is_eligible_search soit vrai ; is_ads_eligible (requis pour le traitement publicitaire, optionnel sinon) contrôle l'éligibilité aux annonces, is_eligible_ads en étant l'alias hérité. Pour un produit accepté, OpenAI active la recherche et désactive le paiement par défaut — l'activation du paiement dépend explicitement de is_eligible_checkout.
Les champs par famille
L'identification de base (item_id, requis, stable et unique par variante ; title, requis, 150 caractères max ; description, requis, 5 000 caractères max, texte brut ; url, requis, doit résoudre en HTTP 200 ; gtin/mpn, optionnels) établit le socle de chaque ligne. Les informations produit (brand, requis ; condition, product_category, material, dimensions et poids avec leurs unités, age_group) précisent la classification. Les médias (image_url, requis ; additional_image_urls, video_url, model_3d_url, optionnels) portent le visuel. Le prix et les promotions du fichier (price, requis, montant + devise ; sale_price, optionnel, doit rester ≤ price ; dates de sale, mesure unitaire) diffèrent structurellement du schéma de promotions de l'API, seule voie pour des promotions à part entière.
| Famille | Champs clés | Requis |
|---|---|---|
| Disponibilité | availability (in_stock, out_of_stock, pre_order, backorder, unknown) | Oui |
availability_date | Si availability=pre_order | |
| Variantes | group_id, variant_dict, size, color, size_system | Recommandé si variantes |
Custom_variant1/2/3_category/_option | Dépréciés, remplacés par variant_dict | |
| Expédition | shipping (format country:region:service_class:price:...), is_digital | Optionnel |
| Vendeur | seller_name, seller_url | Requis |
seller_privacy_policy, seller_tos | Si is_eligible_checkout=true | |
marketplace_seller (vendeur tiers, point de paiement distinct du fulfillment) | Optionnel | |
| Retours | return_policy | Requis |
return_deadline_in_days (champ canonique de la fenêtre de retour), accepts_returns, accepts_exchanges | Optionnel | |
| Signaux de performance | popularity_score, return_rate | Optionnel |
| Conformité | warning/warning_url, age_restriction | Recommandé |
| Avis et Q&R | review_count, star_rating, q_and_a, reviews | Optionnel/Recommandé |
| Produits liés | related_product_id, relationship_type | Recommandé |
| Géolocalisation | target_countries, store_country | Requis |
geo_price, geo_availability | Optionnel |
Mise en pratique
- Couvrir en priorité les champs requis de chaque famille (identification, prix, disponibilité, vendeur, retours, géolocalisation) avant d'enrichir avec les champs recommandés.
- Activer
is_eligible_checkoutuniquement après avoir renseignéseller_privacy_policyetseller_tos, requis dès que ce champ est vrai. - Remplacer tout usage résiduel de
Custom_variant1/2/3_*parvariant_dict. - Vérifier auprès d'OpenAI la prise en charge du profil compatible Google avant de s'appuyer sur ce chemin plutôt que sur le schéma natif.
Erreurs à éviter
Omettre l'unité associée à une dimension ou à un poids renseigné (dimensions_unit, item_weight_unit) est une erreur fréquente et facilement évitable. Utiliser encore les champs Custom_variant1/2/3_*, explicitement dépréciés, plutôt que variant_dict complique inutilement la maintenance du flux. Activer is_eligible_checkout sans seller_privacy_policy ni seller_tos va à l'encontre d'une exigence explicite du schéma. Confondre ce champ avec une garantie que l'achat direct dans ChatGPT est le chemin mis en avant ignore le repositionnement d'OpenAI vers un paiement toujours détenu par le marchand — voir Agentic Commerce Protocol (ACP).
Ce qu'il faut retenir
Le schéma de fichier plat n'exige qu'un noyau restreint de champs pour être ingéré, mais la qualité d'affichage et l'éligibilité (recherche, paiement, publicité) se jouent sur les familles recommandées et sur les indicateurs is_eligible_*. Sa structure à plat, ligne par ligne, ne se transpose pas automatiquement vers le schéma imbriqué de l'API : toute intégration combinant les deux méthodes doit vérifier elle-même la correspondance des champs, en particulier pour le prix.