Skip to content
  • There are no suggestions because the search field is empty.

Product Catalogue

Efficiently manage products, UGC galleries, and product tagging with flexible regional and bulk deletion options.

🛍️ Included in our Shopify App

Overview
Product Data Fields
Multi-Region Product Support
Choosing Between SKUs and ParentIDs
Deleting Products
JSON Feed
CSV Manual Upload
History

Overview

A product catalogue is essential for Duel to generate User Generated Content (UGC) galleries and enable product tagging. It serves as a central repository of your products, allowing Duel to access and display relevant details.

Duel supports both JSON and CSV product catalogues. You can import JSON catalogues either by a live JSON feed or via secure SFTP, reach out for more details on SFTP for your dashboard. 

💻 Navigate to Dashboard > Settings > Product Catalog

Product Data Fields

Required Fields

These fields must be present on every product or the import will fail.

Field Description Example
sku Unique product ID 12345
name Product name Flyte Black
url Product page URL https://example.com/products/flyte-black
src_img Product image URL (JPEG, PNG, or WebP) https://cdn.example.com/flyte-black.jpg

Optional Fields

Field Description Example
description Product description Designed for everyday movement.
price Product price 97
currency Currency code (ISO 4217) USD
region Regional variant identifier united-kingdom
parent_sku Groups product variants together flyte-001
meta Custom metadata as key-value pairs {"color": "Black", "material": "Cotton"}
$action Controls import behaviour delete

Custom Field Mappings

You can map your existing field names to Duel's fields under Settings > Custom Field Mappings — so if your feed uses product_name instead of name, no changes to your feed are needed.

Meta Field

The meta field lets you include additional product attributes that don't fit the standard fields. Common uses include colour, material, availability status, or category information.

Values must be strings, numbers, or booleans. Nested objects and arrays are not supported.

"meta": {
"color": "Black",
"material": "Cotton",
"availability": "In Stock"
}

You can use any key names you like, just keep them consistent across your catalogue.

Multi-Region Product Catalogues

The region field allows you to list the same SKU across multiple regions, each with unique links, pricing, and content. Once region-specific entries are in your feed, an operator can select the appropriate region from the group profile settings.

💻 Navigate to Advocates > Groups > Group Profiles > select your profile > eStore Settings

This enables brands to manage multiple regional versions of a product within a single, unified feed.

Best practice is to replace any spaces in region names with hyphens.

Choosing Between SKUs and Parent SKUs

The parent_sku field groups product variants together. How you use it affects how products appear in galleries and how advocates tag content.

With Parent SKUs, all variants are grouped together in a single UGC gallery, and advocates tag products at the parent level. This works best for sites that don't reload the page when switching between variants.

With individual SKUs, each product has its own gallery and advocates tag at the individual product level, giving you more precise control over what content appears where. 

🚨 Your parent_sku values should be meaningful group identifiers, like a base style code. Using a generic value like a brand name will group unrelated products together and affect how they surface in search.

It is difficult to switch approaches once implemented, so choose carefully from the start.

Deleting Products

You can delete products in bulk by specifying an $action: 'delete' directive in your feed or CSV. The product is removed on the next sync and excluded from all storefronts and galleries.

Example: 

{
  "sku": "12345",
  "$action": "delete"
}

To reactivate a deleted product, resend the SKU without the $action property:

JSON Product Feed

A JSON feed is recommended if your catalogue changes frequently. Duel processes feeds daily for accurate and current data.

JSON Feed Schema:

{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
   "items": {
     "type": "array",
     "items": {
       "type": "object",
       "properties": {
         "sku": {
           "type": "string",
           "description": "The unique stock-keeping unit (SKU) for the product."
         },
         "name": {
           "type": "string",
           "description": "The product name as it should appear in campaigns."
         },
         "description": {
           "type": "string",
           "description": "A detailed description of the product, including features and benefits."
         },
         "url": {
           "type": "string",
           "format": "uri",
           "description": "A direct URL to the product page on your eCommerce store."
         },
         "srcImg": {
           "type": "string",
           "format": "uri",
           "description": "A direct URL to the product image. The image should be in a web-friendly format (JPEG, PNG, or WebP)."
         },
         "price": {
           "type": "string",
           "description": "The product price, represented as a string to maintain formatting consistency."
         },
         "currency": {
           "type": "string",
           "description": "The currency code (e.g., USD, EUR, GBP) following the ISO 4217 standard."
         }
       },
       "required": ["sku", "name", "url", "srcImg"]
     }
   }
 },
 "required": ["items"]
}

Example JSON Feed

CSV Manual Upload

If your catalogue updates infrequently, a manual CSV upload is suitable. You must generate and manually upload the CSV to update your products.

Example CSV

History

Under the History tab you can view all catalogue updates, identify and troubleshoot import errors, and monitor catalogue activity.

 💻 Navigate to Settings > Product Catalog > History