File Upload Integration
ACP’s Product Feed file upload uses a push-based SFTP model. Merchants proactively push product data files to an SFTP server designated by OpenAI, rather than having OpenAI pull from the merchant.3.1 SFTP Push Model
3.2 Supported File Formats
Encoding requirement: All text files must use UTF-8 encoding.
Parquet with zstd compression is the preferred option because:
- Columnar storage natively supports efficient field-level reads
- zstd achieves higher compression ratios than gzip with faster decompression
- Built-in schema information reduces type ambiguity
3.3 Snapshot Type: Full Catalog Override
ACP file uploads use a full catalog snapshot model, not an incremental (delta) model. Each uploaded file represents the complete source of truth for the product catalog. This means:- The uploaded file contains complete information for all active products
- Each upload fully replaces the previous data
- There is no need to mark operations as “add”, “modify”, or “delete”
- If a product is absent from the latest snapshot, it is treated as delisted
3.4 Sharding Strategy
Large product catalogs need to be sharded for upload. Sharding guidelines:
Sharding example:
3.5 Upload Frequency
Recommended approach: Upload a complete SFTP full snapshot once daily (early morning), and push real-time changes via REST API during the day (price adjustments, inventory updates, new product launches).
This dual-channel strategy ensures:
- Full snapshots provide a data consistency baseline
- API incremental updates guarantee data freshness
- Even if the API encounters brief issues, the full snapshot corrects data the next day
3.6 File Naming Conventions
Use stable, consistent file names. Uploading a file with the same name overwrites the previous content.3.7 Product Delisting
In the full snapshot model, there are two ways to delist a product: Method 1: Omit from the snapshot The simplest approach. If the product is not included in the next SFTP full snapshot, it naturally disappears from the catalog. Method 2: Setis_eligible_search to false
Keep the product record in the snapshot but set the is_eligible_search field to false. The product data still exists but will not appear in ChatGPT’s product discovery.
3.8 Feed Header
Every uploaded file must include Feed Header information identifying the data source and target:3.9 Best Practices Checklist
Next chapter: Chapter 4: REST API Integration — Product Feed REST API complete reference