Prices and product details are changed by SKU. Only the fields you send change; everything else stays as it is.
- Connector:
preview_catalog_update, thenapply_catalog_update(permissioncatalog:write). - API:
POST /products/upsertwithdry_run: true, then the same body withdry_run: false.
Steps#
- Confirm the shop. Connector:
whoami. API:GET /me. Tell the owner the shop name. - Read the current values for the SKUs in the sheet:
find_productsorGET /products?sku=TM-001,TM-002(up to 500 per page withlimit). This shows what will change and which SKUs don't exist yet. - Preview. Send the rows as a dry run. Show the owner the summary and every
errorrow. - Apply after a clear yes. Report the summary and any
errorrows.
Request#
{
"dry_run": true,
"products": [
{ "sku": "TM-001", "price": 139 },
{ "sku": "TM-002", "price": 159, "name": { "th": "รถบัสโทมิก้า", "en": "Tomica bus" } }
]
}
priceis in THB, 0 or more.name,descriptionandusage_informationtake a string (the Thai text; the English text is kept) or{ "th": "…", "en": "…" }to set either or both.categorymust be one of the names fromlist_categories/GET /categories(any case).brandmay be new: it is added to the shop's brand list.- Don't send
stockorparent_skufor an existing SKU: that row comes back as an error. Stock has its own call. - At most 500 rows per request. Each SKU once per request.
Result#
Each row gets a status:
| Status | Meaning |
|---|---|
updated | changed; changed lists the fields, e.g. ["price"] |
unchanged | the values were already the same |
created | the SKU was new and has been created (see Add new products) |
error | not applied; error says why |
In a dry run the statuses say what would happen and nothing is written. Sending the same rows again is safe: they come back unchanged.
What changes where#
The new price shows on your SellerSideKick store and the chat bot answers with it. Marketplace listings keep their own prices: change those in the Shopee, Lazada or TikTok seller center. When an owner asks for marketplace prices, say so plainly.