Product data mapping for Stripe Agentic Commerce Suite

Ask about this Page
Copy for LLM
View as Markdown

Understand how Product data maps to Stripe fields.

The following sections define the field-level mapping required to transform product data from your Project into Stripe Product Catalog specifications. It identifies direct mappings, required data transformations, and implementation recommendations for syncing product variants from commercetools to Stripe.

Instead of defining these mappings manually, you can use the Smart Data Modeler with agentic channels to analyze a sample of your catalog, generate a platform-ready Product Type, and map and transform your full catalog data to the fields Stripe Agentic Commerce Suite requires so you can import it into your Project.

For the full workflow, see Smart Data Modeler - Agentic channels.

Core Product identifiers

If using brand, gtin or mpn, you must create Variant-level Attributes for these fields. These Attributes should be of type AttributeTextType.
Stripe FieldRelated commercetools fieldRequiredMapping Logic
idvariant.skuRequiredMust be fewer than 100 characters.
titleproductData.name[<locale>]RequiredYou should remove promotional text and avoid all capital letters. Must be fewer than 150 characters.
descriptionproductData.description[<locale>]RequiredShould be plain text without links. Must be fewer than 5000 characters.
linkproductData.slug[<locale>] combined with a base URLRequiredA direct link to the product page. For example: https://example.com/en/products/{productData.slug[en]}.
By default, the base URL is read from store.custom.fields.sellerStoreUrl, but you can modify the template to pull it from another source or hardcode it.
brandvariant.attributes["brand"]OptionalNot required for movies, books, and musical recording brands. Must be fewer than 70 characters.
gtinvariant.attributes["gtin"]OptionalMust be fewer than 50 characters and not contain spaces or hyphens.
mpnvariant.attributes["mpn"]Required, if gtin is not definedMust be fewer than 70 characters.

Media

The recommended minimum dimensions of images in image_link and additional_image_link are 800x800 pixels.
The video_link and model_3d_link fields require Variant-level Attributes called video and model_3d. These Attributes should be of type AttributeTextType.
Stripe FieldRelated commercetools fieldRequiredMapping Logic
image_linkvariant.images[0].urlRequiredMust be a publicly accessible link to a JPEG or PNG file.
additional_image_linkvariant.images.slice(1).map(img => img.url).join(',')OptionalProvides a string containing multiple links to images. You can provide up to 10 links to images. Each link must be to a publicly accessible link to JPEG or PNG.
video_linkvariant.attributes["video"]OptionalMust be a publicly accessible link to a YouTube, Vimeo, or MP4 video. A video length of 15-60 seconds is recommended.
model_3d_linkvariant.attributes["model_3d"]OptionalMust be a publicly accessible link to a GLB or GLTF file. A file size under 20 MB is recommended.

Item information

If defining length, width, or height, you must define all three fields and use the same unit of measurement for each (either cm or in).
If using condition, google_product_category, age_group, material, length, width, height, or weight, you must create Variant-level Attributes for these fields. The Attribute types can vary based on your implementation. For example, AttributeTextType or AttributeEnumType.
Stripe FieldRelated commercetools fieldRequiredMapping Logic
conditionvariant.attributes["condition"]Required, if the product is not newCan be new, refurbished, or used.
google_product_categoryvariant.attributes["google_category_id"]OptionalUse the Google product category.
product_categoryUse Reference Expansion on productData.categories[0] and join productData.categories[0].obj.ancestors.obj.name[<locale>]Required, if google_product_category is not defined.Select the deepest (most specific) Category assigned to the product.
Recursively traverse the selected Category's parent path using the Category list.
Join the localized names with >. For example, [Root Category] > [Parent Category] > [Child Category] becomes Apparel & Accessories > Shoes > Running Shoes.
age_groupvariant.attributes["ageGroup"]OptionalCan be:
newborn (0-3 months old)
infant (3-12 months old)
toddler (1-5 years old)
kids (5-13 years old)
adult (teens or older).
materialvariant.attributes["material"]Required, if needed to differentiate different products in a set of variants.Must be fewer than 100 characters.
lengthvariant.attributes["length"]OptionalA string containing the number and unit, for example 100 cm. Supports decimal values.
widthvariant.attributes["width"]OptionalA string containing the number and unit, for example 50 cm. Supports decimal values.
heightvariant.attributes["height"]OptionalA string containing the number and unit, for example 30 cm. Supports decimal values.
weightvariant.attributes["weight"]OptionalA string containing the number and unit, for example 2 kg. Supports lb, oz, g, and kg.

Product variants

If using color, size, size_system, or gender, you must create Variant-level Attributes for these fields. The Attribute types can vary based on your implementation. For example, AttributeTextType or AttributeEnumType.
Stripe FieldRelated commercetools fieldRequiredMapping Logic
item_group_idproductData.keyRequired, if variants existMust match the Stripe Field id used in the Product Feed.
item_group_titleproductData.name[<locale>]OptionalProvides a name for the variant group. Avoid using all capital letters. Must be fewer than 150 characters.
colorvariant.attributes["color"]OptionalMust be fewer than 40 characters.
sizevariant.attributes["size"]OptionalRecommended for clothing. Must be fewer than 20 characters.
size_systemvariant.attributes["sizeSystem"]OptionalA CountryCode for a clothing size system. For example: US.
gendervariant.attributes["gender"]OptionalRecommended for clothing. Must be male, female, or unisex.

Availability and inventory

expiration_date requires a Variant-level Attribute called expirationDate. This Attribute should be of type AttributeDateType.
Stripe FieldRelated commercetools fieldRequiredMapping Logic
availabilityvariant.availability.isOnStockRequiredIf true, the value is in_stock. Otherwise out_of_stock.
expiration_datevariant.attributes["expirationDate"]OptionalA date value. For example: 2026-02-24.
inventory_quantityvariant.availability.availableQuantityOptionalMust be a non-negative integer.

Price and promotions

If using stripe_product_tax_code or applicable_fees, you must create Variant-level Attributes for these fields. These Attributes should be of type AttributeTextType.
Stripe FieldRelated commercetools fieldRequiredMapping Logic
priceJoin productData.variants[*].price.value.centAmount and productData.variants[*].price.currencyCodeRequiredConvert the centAmount to decimal based on price.value.fractionDigits.
Include the target market context using the priceCurrency and priceCountry query parameters (?priceCurrency=USD&priceCountry=US)
For example: 15.00 USD.
sale_priceJoin productData.variants[*].price.discounted.value.centAmount and productData.variants[*].price.discounted.currencyCodeOptionalConvert the centAmount to decimal based on price.discounted.value.fractionDigits.
Include the target market context using the priceCurrency and priceCountry query parameters (?priceCurrency=USD&priceCountry=US)
For example: 12.00 USD.
sale_price_effective_dateprice.discounted.validFrom and price.discounted.validUntilRequired, if sale_price is definedCombine the validFrom and validUntil date values with a / separator.
Include the target market context using the priceCurrency and priceCountry query parameters (?priceCurrency=USD&priceCountry=US)
For example: 2025-12-01/2025-12-15.
stripe_product_tax_codevariant.attributes["stripeTaxCode"]Required, if using Stripe Tax for tax calculationProduct tax codes
tax_behaviorUse Reference Expansion on taxCategory and use taxCategory.obj.rates[*].includedInPriceOptionalIf true, it maps to an enum string inclusive. If false, it maps to an enum string exclusive.
applicable_feesvariant.attributes["fees"]OptionalUse the format country:region:fee_label:amount. For example: US:CA:Recycling Fee:0.25 USD.

Shipping

Stripe FieldRelated commercetools fieldRequiredMapping Logic
shippingUse Reference Expansion on shippingMethod.zoneRates[*].zone.
Join shippingMethod.zoneRates[*].zone.obj.locations[*].country : shippingMethod.zoneRates[*].zone.obj.locations[*].state : shippingMethod.name : shippingMethod.zoneRates[*].shippingRate[*].price
Required for shippable goodsUse the format country:region:service:speed_range:price.
For example: US:ALL:Standard Shipping:3-5:0.00 USD.
free_shipping_thresholdshippingMethod.zoneRates[*].shippingRates[*].freeAboveOptionalUse the format country:price. For example: US:16.00 USD.

Review and performance

If using popularity_score, return_rate, product_review_count, or product_review_rating, you must create Variant-level Attributes for these fields. These Attributes should be of type AttributeNumberType or AttributeTextType.
Stripe FieldRelated commercetools fieldRequiredMapping Logic
popularity_scorevariant.attributes["popularity_score"]OptionalMust be a number between 0 and 5.
return_ratevariant.attributes["return_rate"]OptionalMust be a number between 0 and 100.
product_review_countvariant.attributes["product_review_count"]OptionalThe total number of reviews. Must be a non-negative integer.
product_review_ratingvariant.attributes["product_review_rating"]Required, if product_review_count is more than 0The average rating of the Product between 1 and 5.

Feed processing instructions

Stripe FieldRelated commercetools fieldRequiredMapping Logic
deleteIf the fetch returns 404OptionalHTTP Status 404 must be interpreted as an indication to delete the Product or Product Variant. When true, the system removes the product or variant from the feed. If false or not defined, the product/variant is processed as normal.