Skip to main content
POST
Upsert Products
Create or update up to 100 products in your Sequenzy catalog, keyed by your productId. Products pushed here behave exactly like products synced from Shopify or WooCommerce - they power product blocks in emails, replenishment reminders, back-in-stock notifications, and segmentation. Use this endpoint to connect any e-commerce platform (custom checkout, CheckoutChamp, Sticky.io, your own backend) to Sequenzy. See the custom commerce integration guide for the full walkthrough. Updates are partial: optional fields you omit keep their stored values, so a stock-only update like {"productId": "SKU-1", "title": "...", "inStock": false} does not erase the product’s image, URL, or pricing. Pass an explicit null to clear a stored value.

Request Body

array
required
Products to create or update (1-100 per request). Each product is upserted by its productId.
string
required
Your product identifier. Used as the upsert key - pushing the same productId again updates the product.
string
required
Product title.
string
Product description.
string
Product image URL.
string
Public product page URL. Used for links in emails.
integer
Price in cents. Defaults to the lowest variant price when variants are provided.
integer
Compare-at (strikethrough) price in cents.
string
ISO 4217 currency code (e.g. USD).
boolean
Whether the product is in stock. Defaults to true, or to whether any variant is available when variants are provided.
array
Product variants. Each variant has variantId (required), title (required), sku, priceCents, compareAtPriceCents, imageUrl, inStock, inventoryQuantity, and options (array of { name, value }). When provided, the variant list is replaced entirely - pass an empty array to remove all variants. Omit the field to leave existing variants unchanged.

Stock Transitions

When an upsert changes a product or variant from out of stock to in stock, Sequenzy automatically fires the ecommerce.back_in_stock event for subscribers who requested a back-in-stock notification. Going out of stock cancels pending notifications. Replenishment settings configured in the dashboard are preserved across upserts.

Responses