Prepare your product feed
A comprehensive guide on structuring your product data, required fields, naming conventions, and validation rules for The Comparator.
Prepare your product feed
This guide explains how to format your product data for The Comparator. A clean, accurate feed ensures that your offers are mapped to the correct hardware components in our normalized database.
1. What a product feed is
A product feed is a structured data file containing your store’s current inventory, prices, and stock availability.
- One record = one offer: Each row or object represents one specific variant of a hardware component.
- Stable IDs: Your product SKU/ID must not change between feed updates. This allows our system to track price history and availability without creating duplicate records.
- Value Engine independence: Submitting a feed registers your store in our “Where to Buy” comparison blocks. It does not alter the Value Score or organic ranking of any product, which is calculated strictly algorithmically.
2. Supported submission methods
Currently, integrating a new retailer requires an assisted onboarding process. You provide the feed URL or file, and our integration team configures the import mapping.
| Submission Method | Supported? | Format | Authentication | Max File Size | Refresh Frequency | Error Notification |
|---|---|---|---|---|---|---|
| Public Feed URL | Yes (Preferred) | CSV / JSON / XML | HTTP Basic Auth or None | 50 MB | Scheduled (Daily/Hourly) | Email Mapping Report |
| Google Merchant XML | Yes | RSS 2.0 XML | None | 50 MB | Scheduled | Email Mapping Report |
| Affiliate Network | Yes | Network Feed | Network Auth | Dependent on Network | Daily | Email Mapping Report |
| Self-Service API | Planned | REST / Webhooks | Bearer Token | N/A | Real-time | API Response |
Operational Note: If your feed requires authentication or IP allowlisting, provide the details during your application at /retailers/apply/.
3. Exact field reference
Our import pipeline accepts the following fields. Ensure your feed columns or JSON keys map to these definitions.
| Field | Required Status | Data Type | Example | Validation Rule | Used For |
|---|---|---|---|---|---|
id |
Required | String | GPU-4070S-01 |
Non-empty, unique per item, max 64 chars | Tracking SKU & price history |
title |
Required | String | ASUS TUF Gaming GeForce RTX 4070 Ti SUPER OC 16GB |
Must contain brand & hardware model | Model matching & UI display |
link |
Required | URL | https://example.com/gpu-4070 |
Valid HTTP/HTTPS URL, reachable without login | Directing buyers to purchase |
price |
Required | Decimal | 599.99 |
Positive number, 2 decimal places | Value calculation & display |
currency |
Required | String | USD |
Must be USD (US market active) |
Price normalization |
availability |
Required | String | in_stock |
Must match accepted stock strings | Filtering active offers |
condition |
Required | String | New |
New, Refurbished, or Used |
Value Engine grouping |
brand |
Required | String | ASUS |
Non-empty manufacturer name | Hardware Fingerprinting |
gtin |
Conditionally Required | String | 4711387450889 |
Valid EAN/UPC digits (12-14 digits) | Exact product matching |
mpn |
Conditionally Required | String | 90YV0J80-M0NA00 |
Exact Manufacturer Part Number | Exact product matching |
image_link |
Recommended | URL | https://example.com/img.jpg |
Valid direct image URL (HTTPS) | Fallback UI visuals |
shipping |
Optional | Decimal | 9.99 |
Non-negative decimal | Total Cost of Ownership (TCO) |
Identifier Requirement: You must provide either a valid gtin or an mpn (or both) for reliable hardware matching. Feeds relying solely on titles have a 35% higher rejection rate due to ambiguity.
4. Stable product ID rules
Your id field is the primary key linking your offer to our database.
- Do not change the ID when a product’s price or stock status updates.
- Do not reuse an old ID for a different hardware model.
- Do not use row numbers or generate random UUIDs on every export.
- Allowed characters: Alphanumeric characters, hyphens, underscores (
[A-Za-z0-9_-]). Max 64 characters.
5. Hardware product titles
Hardware matching relies on title parsing when GTIN/MPN are missing. Write clear, technical titles rather than marketing slogans.
GPU (Graphics Cards)
Include Board Partner, exact GPU chip model, VRAM capacity, and suffixes (Ti, SUPER, XT, XTX).
- Good:
ASUS TUF Gaming GeForce RTX 4070 Ti SUPER OC 16GB - Poor:
Awesome Gaming Graphics Card RTX 4070 - Best Deal!
CPU (Processors)
Include Brand, exact model number, and suffixes (K, KF, F, X, X3D).
- Good:
AMD Ryzen 7 7800X3D Boxed - Poor:
Fast 8-Core AMD Processor for PC
SSD (Solid State Drives)
Include Brand, Series model, Capacity, Form Factor, and Interface.
- Good:
Samsung 990 PRO 2TB NVMe M.2 PCIe 4.0 SSD - Poor:
Super Fast 2TB Internal Hard Drive
RAM (Memory)
Include Brand, Series, Total Capacity, Module Count, Generation, and Speed.
- Good:
G.SKILL Trident Z5 RGB 32GB (2x16GB) DDR5 6000MHz CL30 - Poor:
32GB High Speed RAM Kit
Motherboards
Include Brand, Model, Chipset, Socket, and Wi-Fi revision.
- Good:
MSI MAG B650 TOMAHAWK WIFI ATX AM5 Motherboard - Poor:
MSI AM5 Gaming Mainboard
6. Product identifiers (GTIN, MPN, Brand)
- GTIN (EAN / UPC): Must be valid GS1 GTINs. Do not put internal SKUs into the GTIN field.
- MPN: Include exact manufacturer part numbers (e.g.,
100-100000910WOF). Do not strip hyphens or trailing suffixes. - Brand: Canonical manufacturer name (e.g.,
ASUS,Gigabyte,MSI,AMD,Intel,NVIDIA,Western Digital).
7. Price and currency
- Formatting: Plain decimal number without currency symbols (e.g.,
599.99, not$599.99). - Currency: Currently, only
USDis supported. - Landing Page Match: The price in the feed must match the price on your product page. Hidden prices unlocked only via checkout promo codes are prohibited.
8. Availability mapping
We normalize store availability into standardized internal states:
| Retailer Feed Value | Normalized Internal State | Published on Site? | Notes |
|---|---|---|---|
in_stock, available, instock |
in_stock |
Yes | Displayed in active comparison table. |
out_of_stock, sold_out, unavailable |
out_of_stock |
No | Hidden from default view (archived). |
preorder, backorder |
preorder |
No | Temporarily held until stock arrives. |
9. Condition standards
The Comparator categorizes offers into three distinct condition buckets:
New: Factory sealed, brand new item with full manufacturer warranty.Refurbished: Factory or seller refurbished. Must be explicitly flagged.Used: Second-hand or pre-owned item.
Do not list refurbished or used items as New. Mislabeled conditions result in permanent store suspension.
10. Product URL requirements
- Must lead directly to the individual product page (no search results or category pages).
- Must be publicly accessible without login, cookies, or captcha blocks.
- Must use clean, canonical HTTPS URLs.
11. Image URL requirements
- Direct image file URL (
.jpg,.png,.webp) over HTTPS. - Must not lead to HTML viewer pages or require authentication.
12. Variants, kits and bundles
- RAM Kits & SSDs: List exact total capacity and module breakdown (e.g.,
32GB (2x16GB)). - Component Bundles & Pre-built PCs: UNSUPPORTED. Our matching pipeline (
isComboListingfilter) automatically rejects CPU+Motherboard combos, PC cases, and pre-built systems. Submit individual components only.
13. Refresh and deletion semantics
- Sync Interval: Default sync occurs every 24 hours. Priority accounts sync hourly.
- Missing Rows: If a product SKU is missing from 2 consecutive feed fetches, it is marked
out_of_stock. - Stale Feeds: If a feed fetch fails for >48 hours, all offers from the store are temporarily hidden until the feed recovers.
14. Validation process stages
Our import pipeline validates data through 3 severity levels:
[Feed Retrieval] โ [Parsing] โ [Schema Validation] โ [Hardware Matching] โ [Publication]
- ๐ด Error (Blocking): Missing SKU, malformed price, or unparseable XML/JSON. Offer is rejected.
- ๐ก Warning (Non-blocking): Missing image link or missing GTIN. Offer is published, but flagged for manual review.
- ๐ต Info: Advice on improving title formatting.
15. Troubleshooting common errors
| Error Code | Issue Description | Bad Feed Example | Fixed Example | Blocking? |
|---|---|---|---|---|
ERR_MISSING_ID |
SKU field is empty | "" |
"GPU-4070-01" |
๐ด Yes |
ERR_INVALID_PRICE |
Currency symbol in price | "$599.99" |
599.99 |
๐ด Yes |
ERR_UNSUPPORTED_CURRENCY |
Currency is not USD | "EUR" |
"USD" |
๐ด Yes |
ERR_AMBIGUOUS_TITLE |
Title lacks model info | "NVIDIA RTX Card" |
"ASUS RTX 4070 SUPER 12GB" |
๐ด Yes |
ERR_COMBO_REJECTED |
Component bundle detected | "Ryzen 7 + B650 Bundle" |
Exclude from feed | ๐ด Yes |
WARN_MISSING_GTIN |
No GTIN or MPN provided | gtin: "" |
gtin: "4711387450889" |
๐ก No |
16. Pre-submission checklist
- Product IDs (SKUs) are stable, non-empty, and unique.
- Prices parse cleanly as decimals without
$symbols. - Currency is explicitly set to
USD. - Stock availability is accurate (
in_stock/out_of_stock). - Product titles contain exact hardware specs (VRAM, Model, Suffixes).
- At least one identifier (
gtinormpn) is provided per row. - Bundles and pre-built PCs are excluded.
- Product URLs open directly without authentication.
17. Working sample files
Download our validated sample feeds to test your export configuration:
- ๐ Download Sample CSV Feed
- ๐ Download Sample JSON Feed
- ๐ Download Sample Google Merchant XML Feed
You can validate your sample feeds locally using our validation command:
node scripts/test_sample_feeds.js