Product & Promotions Data
Product & Promotions data is a specialized data source format designed for the Nudge and Exit-Offer agents. Unlike traditional text-based data sources, this format uses structured CSV or JSON to store product catalogs with promotional information, enabling targeted promotional content on product and category pages.
Product & Promotions data sources are exclusively used with Nudge and Exit-Offer agents. They cannot be used with AI Assistant, Quiz, or Recommendation Strip agents, which require different data source formats.
Upload Options
There are two ways to upload product & promotions data: Standard Upload (requires data in the exact schema format) and AI-Assisted Upload (automatically maps your fields).
Standard Upload (Recommended)
For maximum accuracy and full control over your data, use the Upload Product Data tab with data pre-formatted to match the schema documented below. Standard upload is recommended when:
- You need precise control over how your data is structured
- You want to include custom
metadatafields at product or promotion levels - You've already formatted your data to match our schema
- You need guaranteed accuracy for production use
AI-Assisted Upload
The AI-Assisted Upload option allows you to upload product feeds and catalog exports as-is from most e-commerce platforms. Our AI analyzes your file structure and automatically maps your fields to the required schema format. This is useful for quickly importing data without manual formatting.
Upload up to 3 CSV or JSON files, give your dataset a name, and let the AI transform your data. The AI identifies fields like product names, URLs, prices, categories, and promotional information—even if they use different column names than our schema.
AI-assisted mapping is not perfect. After processing, review your data in the Preview panel to ensure accuracy. Common issues to check:
- Product URLs: Verify
productPathvalues match your actual product page URLs—this is critical for targeting - Prices: Confirm original and discount prices are correctly extracted
- Categories: Check that category assignments match your site structure
- Promotion Details: Verify discount codes, promotion text, and validity dates
Correcting AI-Mapped Data
If you notice systematic errors in your AI-processed data (e.g., incorrect URL patterns or missing promotional info), you have several options:
- Fix Source Data: Correct your original export file and re-upload using AI-Assisted Upload again
- Use Find & Replace: In spreadsheet software, use find and replace to fix URL patterns before uploading (e.g., replace
https://yoursite.comwith empty string to get relative paths, or fix/p/to/products/) - Standard Upload: Pre-format your data to match the exact schema documented below and use the standard Upload tab
The productPath field is crucial for targeting. After AI processing, spot-check several products by comparing the productPath in your data with actual URLs on your website. Nudges will only appear on pages where the URL matches.
Import with Integration
If you have a connected integration (Shopify, BigCommerce, or WooCommerce), you can import product and promotion data directly from your store using the Import Data tab. This pulls your product catalog directly from the platform API and automatically converts it to the required schema format.
- Shopify: Imports products, variants, and active discounts
- BigCommerce: Imports products with pricing and sale information
- WooCommerce: Imports products, variations, and sale prices
Integration imports are processed in the background. Once complete, you can preview the data, download it for review, and confirm the upload. This is the easiest way to populate your product catalog if you have a supported e-commerce platform.
See the Integrations documentation for setup instructions for each platform.
Supported File Formats
Product & Promotions data sources accept CSV and JSON files. CSV files are automatically converted to JSON when uploaded. For standard uploads, your data must match the required schema format documented below.
CSV Format
CSV files work well when each row represents a variant (SKU) or product-promotion combination. Rows with the same productPath and productCodeare grouped into one product record, with variant rows merged into a variantsarray and promotion rows into a promotions array.
productPath,productName,category,productCode,highPrice,lowPrice,variantName,variantPath,variantPrice,sku,promotionType,promotionValue,promotionText,discountPrice,discountCode,thumbUrl/products/wireless-headphones,Wireless Headphones,Electronics,WH-1000,99.99,99.99,Wireless Headphones - Black,/products/wireless-headphones?variant=blk,99.99,WH-1000-BLK,percent,20,20% OFF Summer Sale!,79.99,SUMMER20,https://example.com/headphones.jpg/products/wireless-headphones,Wireless Headphones,Electronics,WH-1000,99.99,99.99,Wireless Headphones - Black,/products/wireless-headphones?variant=blk,99.99,WH-1000-BLK,shipping,,Free Shipping!,,,https://example.com/headphones.jpg/products/pro-laptop-15,Pro Laptop 15",Computers,LP-500,1299.99,1299.99,Pro Laptop 15" - 256GB,/products/pro-laptop-15,1299.99,LP-500-256,dollar,200,Save $200 - Limited Time!,1099.99,,https://example.com/laptop.jpg/products/ultra-runner,Ultra Runner,Footwear,RS-300,129.99,129.99,Ultra Runner - Blue,/products/ultra-runner?variant=blu,129.99,RS-300-BLU,percent,25,25% Off All Running Shoes,97.49,RUN25,https://example.com/shoes.jpg
Tip: Rows with the same productPath and productCodeare grouped into one product; each unique sku becomes a variant, and promotion columns populate the product's promotions array.
JSON Format
JSON uses one record per product. Each record has a variants array (at least one variant per product) and an optional promotions array. Do not flatten variants into separate records—all SKUs for a product belong in that product's variants array.
[{"productPath": "/products/wireless-headphones","productName": "Wireless Headphones","category": "Electronics","productCode": "WH-1000","highPrice": "99.99","lowPrice": "99.99","productThumbUrl": "https://example.com/headphones.jpg","metadata": { "brand": "TechAudio" },"variants": [{"variantName": "Wireless Headphones - Black","variantPath": "/products/wireless-headphones?variant=blk","variantPrice": "99.99","sku": "WH-1000-BLK"}],"promotions": [{"promotionType": "percent","promotionValue": 20,"promotionText": "20% OFF Summer Sale!","discountPrice": "79.99","discountCode": "SUMMER20","validFrom": "2026-06-01","validUntil": "2026-08-31","metadata": { "campaign": "summer-2026" }},{"promotionType": "shipping","promotionText": "Free Shipping on Orders $50+","ctaLink": "/shipping-policy","ctaText": "Learn More"}]},{"productPath": "/products/pro-laptop-15","productName": "Pro Laptop 15\"","category": "Computers","productCode": "LP-500","highPrice": "1299.99","lowPrice": "1299.99","productThumbUrl": "https://example.com/laptop.jpg","variants": [{"variantName": "Pro Laptop 15\" - 256GB","variantPath": "/products/pro-laptop-15","variantPrice": "1299.99","sku": "LP-500-256"}],"promotions": [{"promotionType": "dollar","promotionValue": 200,"promotionText": "Save $200 - Limited Time!","discountPrice": "1099.99","ctaText": "Shop Now","ctaLink": "/products/laptop?promo=save200"}]}]
Schema Reference
Each record represents one product. All SKUs/variations for that product go in the variants array—do not create separate records per variant.
Required Fields
Every product record must include the following fields:
Product Level
productPath— URL path to product page (e.g., "/products/wireless-headphones", "/product/my-item")productName— Base product name only (no variant attributes)category— Product category for organizationproductCode— Parent/main SKU identifier tying variants togetherhighPrice— Highest variant price as a string (e.g., "1299.99")lowPrice— Lowest variant price as a string (e.g., "99.99")variants— Array of at least one variant object (see Variant Level below)
Variant Level (each item in variants)
variantName— Product name plus variant attributes (e.g., "Wireless Headphones - Black / Large")variantPath— Full path to the specific variant (e.g., product path + query params)variantPrice— Price for this variant as a string (e.g., "99.99")sku— Variant SKU identifier (required per variant)
Optional Fields
These fields enhance your promotional content but are not required:
Product Level
productThumbUrl— URL to product thumbnail imagedescription— Short product description (plain text, up to 300 characters)promotions— Array of promotion objectsmetadata— Custom key-value data for your use
Variant Level
variantThumbUrl— Thumbnail URL for this variantmetadata— Variant-specific options (e.g., color, size)—do not putskuhere; it belongs at variant root
Promotion Level
promotionType— Type of promotion: "percent", "dollar", "shipping", "bundle", "bogo", "sale", etc.promotionValue— Numeric discount value (e.g., 20 for 20% off, or 50 for $50 off)promotionText— Human-readable promotion message displayed to usersdiscountPrice— Final price after the discount as a string (e.g., "79.99")discountCode— Coupon code customers can use at checkoutctaLink— Call-to-action link URL (e.g., product page, promo landing page)ctaText— Call-to-action button text (e.g., "Shop Now", "Learn More")validFrom— Promotion start date in ISO format (YYYY-MM-DD)validUntil— Promotion end date in ISO format (YYYY-MM-DD)metadata— Custom key-value data (campaign info, etc.)
Promotion Types
The promotionType field categorizes your promotion for display purposes:
percent— Percentage discount (e.g., "20% off")dollar— Fixed dollar amount discount (e.g., "$50 off")shipping— Free or discounted shippingbundle— Bundle dealsbogo— Buy one, get one promotionsquantity— Quantity-based discountsgift— Free gift with purchasesale— General sale pricingclearance— Clearance itemsflash— Limited-time flash salescoupon— Coupon-based discountsother— Any other promotion type
Data Requirements
For optimal nudge and exit-offer targeting, ensure your product-promo data meets these guidelines:
- Accurate Product Paths: The
productPathmust match your actual product URL paths for targeting to work correctly - Multiple Promotions: Include multiple promotions per product when available—the system randomly selects from available options for variety
- Consistent Categories: Use standardized category names across all products for better organization
- Valid URLs: Ensure all thumbnail and link URLs are accessible
- Promotion Dates: Include
validFromandvalidUntilto automatically expire time-sensitive promotions
URL Matching Behavior
When a visitor views a product page, Badgerfy automatically matches the page URL to your product data. Understanding how this works helps ensure your promotions display on the right pages.
How Matching Works
The system matches the current page URL path against productPath and each variant's variantPath. It also checks productCode and variant sku for segment matching as fallback.
URL: /products/wireless-headphonesâś… Matches if productPath = "/products/wireless-headphones"URL: /mens-boots/C41371.htmlâś… Matches if productPath = "/mens-boots/C41371.html" OR productCode = "C41371"URL: /laptop-gaming/p/N82E16834156740Râś… Matches if productPath matches OR sku = "N82E16834156740R"
Common E-Commerce URL Patterns
Set your productPath to match your URL structure:
- Shopify:
productPath: "/products/product-handle" - WooCommerce:
productPath: "/product/product-slug" - Magento:
productPath: "/product-url-key.html" - BigCommerce:
productPath: "/product-name" - Newegg-style:
productPath: "/seo-slug/p/ITEM_NUMBER" - Cole Haan-style:
productPath: "/product-slug/STYLE_CODE.html"
Custom URL Structures
For best results, set productPath and each variant's variantPathto match your exact URLs. As fallback, the system checks productCode and variant sku against URL segments:
productPath— Base product URL path (e.g., "/category/my-product")variantPath— Full path to the specific variant (e.g., with query params)productCode— Internal product code or style numbersku— Variant SKU (inside each variant object)
For reliable targeting, set productPath to match your full product URL path. For example, if your URL is https://example.com/category/ABC123.html, set productPath to /category/ABC123.html.
Consumer API
For automated data pipelines, Pro and Business plan users can upload product-promo data programmatically using the Consumer API. This is ideal for keeping your promotions synchronized with your e-commerce platform.
The Consumer API is available on Pro and Business plans only. Basic plan users can use the dashboard file upload feature.
Both dashboard and API uploads require data in the exact schema format documented above. Ensure your JSON matches the required field names and structure for successful processing.
The API supports both creating new product-promo data and updating existing datasets with zero downtime—your nudges continue using the current data until new uploads are fully processed.
See the Consumer API documentation for complete endpoint details, authentication, and example automation scripts.
Storage Management
Product & Promotions data counts toward your plan's storage limits. As your catalog grows, you may need to manage storage to stay within your plan's allocation.
Plan Storage Limits
- Basic Plan: 50MB maximum total storage
- Pro Plan: 100MB maximum total storage
- Business Plan: 500MB maximum total storage
Updating Your Data
When your promotions change, you can update your product-promo data using the Update button on each file in your data source. The update process:
- Uploads the new file while keeping the old data active
- Validates the data against the required schema
- Automatically replaces the old data once processing completes
- Maintains the same file reference name for consistency
Update your product-promo data regularly to ensure promotions are current and accurate. Outdated promotions can lead to customer confusion and missed conversion opportunities.
Best Practices
- Match Product Paths Exactly: The
productPathfield should match your website's actual product URL paths - Include Multiple Promotions: Adding variety keeps your nudges fresh—the system randomly selects from available promotions
- Use Clear Promotion Text: Write compelling, action-oriented messages that encourage clicks
- Set Expiration Dates: Use
validUntilto automatically disable expired promotions - Test Your Pages: After uploading, visit your product pages to verify nudges appear correctly
- Automate Updates: Pro and Business users should consider using the Consumer API to keep data synchronized with their e-commerce platform