Skip to main content

Product Schema

What is a Product in the Ad-Serving Context?

A Product is any item from a retailer’s catalog that can be advertised. Each product is tied to an advertiser and must be synced into GoWit before it can appear in ads or campaigns.

Products carry key info—name, image, category, price—that allows GoWit to:

  • Make the item eligible for ad auctions
  • Target ads and match relevance
  • Attribute sales back to the correct product

⚠️ If a product isn’t synced, it doesn’t exist to the ad server and cannot be delivered or tracked in any campaign.


Why Syncing Product Data Matters

While some ad formats (like Display) can technically be tested without a full product feed, Sponsored Product Ads and all direct sale attribution reporting require a properly integrated catalog.

  • Ad Delivery: Only products that are synced and active can appear in Sponsored Product ads. Keep the feed or API updates current so products stay eligible.
  • Targeting: Product data (like categories) powers accurate targeting and reporting. Correct taxonomy is key for relevant ads and analytics.
  • Performance Measurement: Stable product IDs and category data let GoWit tie sales back to the right product and advertiser for reliable ROAS and revenue metrics.

⚠️ You can start with Sponsored Display without a product feed, but full campaign measurement and Sponsored Product ads require a synced catalog.


Required Fields

Each product in the GoWit ad platform must include certain required fields. These fields ensure that the product can be properly displayed, targeted, and associated with the correct account. Below is a list of the required attributes and why each is important for the business and ad serving:

FieldDescription
idUnique product identifier (e.g. SKU). Stays stable to link ads, sales, and reporting.
NameHuman-readable product title (e.g. “Black Leather Ankle Boots”) shown in UI and used in search/filtering.
advertiser_idLinks the product to its seller’s advertiser account. Must match a valid advertiser or the product won’t be eligible for ads.
image_urlClear product photo for previews and offsite creatives. Broken/missing images hurt quality but don’t block onsite ads.
statusProduct availability flag (ACTIVE or DELETED). Only ACTIVE products can serve in ads. Keep it accurate to avoid wasted spend or missing ads.

Optional Fields

In addition to the required fields above, GoWit’s product schema supports optional fields that are highly recommended. These fields aren’t strictly mandatory for the ads to serve, but providing them unlocks richer targeting, more relevant ads, and better reporting. In general, the more product attributes you can supply, the better the platform can optimize and target your ads. Here are some key optional fields and what they enable:

FieldDescription
retailer_taxonomyHierarchical category path (e.g. Shoes > Boots > Ankle Boots). Powers category-based targeting, bidding, and reporting. Keeps ads relevant and enables category-level metrics and controls.
brandThe product’s brand or manufacturer (e.g. “Nike”, “Apple”). Improves reporting and lets GoWit group products by brand or create brand-level advertisers when needed. Keep brand names normalized and consistent.
priceCurrent product price. Keep it accurate to support campaign setup, automatic bidding, and reliable ROAS calculations.
filtersKey–value tags (e.g. season=Summer, clearance=true) used to limit ad eligibility and slice analytics. Make sure the values match what you send in ad requests.
buyboxFlag showing if the seller holds the buybox for that SKU. Supports rules like excluding non-buybox sellers and ensures correct eligibility. Keep it synced with your commerce system.
stockCurrent sellable quantity. Supports rules like excluding products with low stock and shows inventory cues in campaign setup. Keep values fresh and aligned with your order system.
ratingAverage customer rating. Helps set quality rules (e.g. exclude products below 3.0) and gives a quick quality cue in campaign previews. Keep ratings on a consistent scale and updated.
descriptionOptional short product description for internal reference or QA. Include only if you can keep it accurate; not critical for ad eligibility.
process_idUnique ID for each full catalog sync batch (e.g. a UUID). Lets GoWit deactivate products not included in the latest batch—keeping the catalog clean without needing explicit delete events. Use a new, unique ID for every full export and include it on all records in that run.
sub_class_namesOptional micro-category tags (like style, cut, or material).
retailer_taxonomy_id_structureThe category path using your retailer’s category IDs (not names). Essential for multi-language sites: it anchors the category tree and ensures accurate page-to-ad matching and reporting. Keep it complete and stable for consistent targeting and analytics.
google_taxonomyOptional mapping to Google’s product taxonomy. Helps standardize categories for external reporting and performance comparisons.
product_typeYour own mid-level grouping label for easier catalog management and curation.
global_identifierGlobal item ID such as GTIN, EAN, UPC, or ASIN. Ensures reliable matching across systems and clean attribution.
global_identifier_typeSpecifies the scheme used for the global ID (e.g. GTIN, EAN, UPC, ASIN). Removes ambiguity and makes ID validation easier.
skuMerchant’s stock-keeping code. Optional but useful for search, troubleshooting, and bulk operations. Keep it consistent with your commerce system; the main ID remains the product id.
barcodeMachine-readable code (GTIN/EAN/UPC). Helps match and distinguish product variants for QA and deduplication.
price_rangeLabel for the item’s price band (e.g. 0–49, 50–99). Useful for grouping products by price tier in menus, filters, or simple reporting.

Location-Based Stock

Use the stock_levels field when you have multiple stores or warehouses. It’s an array listing each location’s location_id, available stock quantity, and optionally a location-specific price.

Why it matters:

This enables stock-aware geo-targeting. GoWit can show an ad only if the product is available near the user or in a region that can ship to them. For example, if someone is close to Store A, the platform will serve the ad only if Store A (or a local warehouse) has stock. This prevents wasted clicks and poor user experiences from ads for items that aren’t actually available in that area.

What happens if you use it vs. not use it?

If you provide location-level stock data:

GoWit can treat inventory per store or warehouse. Each product-location pair is considered for ad targeting. The product stays Active as long as it’s in stock somewhere, but ads show only where local stock > 0. You can run regional promotions or use location-specific prices. When sending ad requests, include the location_id; GoWit automatically returns only products with inventory at that location. Global stock/price fields may show null/-1 since data is managed per location.

If you don’t provide it:

The system assumes one global inventory and treats an Active product as available everywhere. This works fine for a single online store or central fulfillment. But if you have multiple stores and skip location data, ads might run in regions where the product is out of stock, forcing you to deactivate the product globally if a key location sells out—losing regional flexibility and precision.

Product-Advertiser Linking: The Importance of Consistency

For GoWit’s ad platform to work correctly, every product must be linked to the right advertiser—the seller or vendor who owns it. This link is set by the advertiser_id field.

  • Always use the correct advertiser_id so products show up under the right seller. Products with invalid IDs are rejected and won’t serve ads.
  • Don’t reassign advertisers for an existing product. If ownership changes, delete the product under the old advertiser and re-create it under the new one with a new product ID.
  • Invalid references are dropped and flagged as errors (“advertiser not found”).

Keeping product–advertiser links consistent ensures ads serve under the correct account, budgets and reports stay accurate, and one advertiser never sees another’s products. This protects both data integrity and advertiser trust.


Conclusion

The Product Schema is the backbone of GoWit’s ad-serving system. A product isn’t just a name and picture—it’s a structured dataset that powers ad delivery, targeting, and performance measurement.

By syncing complete and accurate product data—including required fields and as many recommended fields as possible—and keeping updates fresh (for example, stock or status changes), you ensure that ads display the right items with the right information to the right audience.

In short, strong product data equals strong ad performance. Following the schema closely maximizes targeting precision, reporting accuracy, and ultimately, your retail media revenue.