Help us improve
Share bugs, ideas, or general feedback.
From wix-ecom-cowork
Handles full CRUD operations on Wix Stores products including variants, media, collections, and bulk actions via direct REST API calls. Useful for managing ecommerce catalogs.
npx claudepluginhub wix/wix-ecom-cowork --plugin wix-ecom-coworkHow this skill is triggered — by the user, by Claude, or both
Slash command
/wix-ecom-cowork:product-managementThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Complete product CRUD operations including variants, media, collections, and bulk operations using direct Wix REST API calls.
Configures and manages Wix business solutions via REST API: stores, bookings, payments, CMS, contacts, events, forms, media, blog, calendar, domains, and more.
Guides optimal workflows and API sequences for creating complete products in Wix Stores, including preparation, categories, images, variants, inventory, SEO, and visibility settings.
Creates and manages Shopify products via GraphQL Admin API or CSV imports. Bulk import/update variants, inventory, images, assign to collections.
Share bugs, ideas, or general feedback.
Complete product CRUD operations including variants, media, collections, and bulk operations using direct Wix REST API calls.
df7c18eb-009b-4868-9891-15e19dddbe67${API_KEY}${SITE_ID}Endpoint: POST https://www.wixapis.com/stores/v1/products/query
API Call:
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"paging": {
"limit": 50,
"offset": 0
}
}
}'
Response:
{
"products": [
{
"id": "abc123",
"name": "Product Name",
"description": "Product description",
"price": 29.99,
"visible": true,
"productType": "physical",
"stock": {
"trackInventory": true,
"inStock": true,
"quantity": 100
}
}
],
"metadata": {
"count": 50,
"offset": 0,
"total": 234
}
}
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"filter": "{\"visible\": true}",
"paging": {"limit": 100}
}
}'
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"filter": "{\"price\": {\"$gte\": 10, \"$lte\": 100}}",
"sort": "{\"price\": \"asc\"}",
"paging": {"limit": 50}
}
}'
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"filter": "{\"collectionIds\": \"collection-abc123\"}",
"paging": {"limit": 100}
}
}'
Endpoint: GET https://www.wixapis.com/stores/v1/products/{productId}
API Call:
curl -X GET "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Accept: application/json"
Response:
{
"product": {
"id": "abc123",
"name": "Product Name",
"slug": "product-name",
"visible": true,
"productType": "physical",
"description": "Full product description",
"price": 29.99,
"comparePrice": 39.99,
"sku": "PROD-001",
"weight": 1.5,
"stock": {
"trackInventory": true,
"inStock": true,
"quantity": 100
},
"media": {
"mainMedia": {
"image": {
"url": "https://static.wixstatic.com/media/image.jpg",
"altText": "Product image"
}
},
"items": []
},
"customTextFields": [],
"productOptions": [],
"variants": []
}
}
Endpoint: POST https://www.wixapis.com/stores/v1/products
API Call:
curl -X POST "https://www.wixapis.com/stores/v1/products" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"name": "New Product",
"description": "Product description here",
"priceData": {
"price": 29.99
},
"productType": "physical",
"visible": true,
"stock": {
"trackInventory": true,
"quantity": 50
}
}
}'
Response:
{
"product": {
"id": "new-product-id-123",
"name": "New Product",
"slug": "new-product",
"price": 29.99,
"visible": true,
"stock": {
"trackInventory": true,
"inStock": true,
"quantity": 50
}
}
}
Endpoint: PATCH https://www.wixapis.com/stores/v1/products/{productId}
Update Price and Visibility:
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"price": 24.99,
"comparePrice": 34.99,
"visible": true
}
}'
Update Description and SEO:
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"description": "Updated product description",
"seoData": {
"tags": [
{
"type": "title",
"children": "SEO Title",
"custom": true
},
{
"type": "meta",
"props": {
"name": "description",
"content": "SEO description"
}
}
]
}
}
}'
Endpoint: DELETE https://www.wixapis.com/stores/v1/products/{productId}
API Call:
curl -X DELETE "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}"
Response:
{
"product": {
"id": "abc123"
}
}
curl -X POST "https://www.wixapis.com/stores/v1/products" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"name": "T-Shirt",
"description": "Cotton t-shirt",
"priceData": {
"price": 19.99
},
"productType": "physical",
"productOptions": [
{
"name": "Size",
"choices": [
{"value": "Small", "description": "S"},
{"value": "Medium", "description": "M"},
{"value": "Large", "description": "L"}
]
},
{
"name": "Color",
"choices": [
{"value": "Red"},
{"value": "Blue"},
{"value": "Green"}
]
}
],
"manageVariants": true
}
}'
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"filter": "{\"id\": \"${PRODUCT_ID}\"}",
"paging": {"limit": 1}
}
}'
Extract variants from response:
{
"products": [
{
"id": "product-123",
"variants": [
{
"id": "variant-001",
"choices": {
"Size": "Small",
"Color": "Red"
},
"variant": {
"priceData": {
"price": 19.99
},
"stock": {
"trackQuantity": true,
"quantity": 10,
"inStock": true
},
"sku": "TSHIRT-S-RED"
}
}
]
}
]
}
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"variants": [
{
"id": "variant-001",
"variant": {
"priceData": {
"price": 17.99,
"comparePrice": 24.99
}
}
}
]
}
}'
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"media": {
"mainMedia": {
"image": {
"url": "https://static.wixstatic.com/media/your-image.jpg",
"altText": "Product main image"
}
}
}
}
}'
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"media": {
"items": [
{
"image": {
"url": "https://static.wixstatic.com/media/image1.jpg",
"altText": "First image"
}
},
{
"image": {
"url": "https://static.wixstatic.com/media/image2.jpg",
"altText": "Second image"
}
}
]
}
}
}'
Endpoint: POST https://www.wixapis.com/stores/v1/collections/query
curl -X POST "https://www.wixapis.com/stores/v1/collections/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"paging": {"limit": 50}
}
}'
Response:
{
"collections": [
{
"id": "collection-123",
"name": "Summer Collection",
"slug": "summer-collection",
"description": "Hot summer items",
"visible": true,
"numberOfProducts": 25
}
],
"metadata": {
"count": 1,
"total": 1
}
}
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"collectionIds": ["collection-123", "collection-456"]
}
}'
curl -X PATCH "https://www.wixapis.com/stores/v1/products/${PRODUCT_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"product": {
"collectionIds": []
}
}'
Endpoint: POST https://www.wixapis.com/stores/v1/bulk/products/update
Maximum: 100 products per request
curl -X POST "https://www.wixapis.com/stores/v1/bulk/products/update" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"set": [
{
"id": "product-1",
"property": "visible",
"value": true
},
{
"id": "product-2",
"property": "visible",
"value": true
},
{
"id": "product-3",
"property": "visible",
"value": false
}
]
}'
Response:
{
"bulkActionMetadata": {
"totalSuccesses": 3,
"totalFailures": 0,
"undetailedFailures": 0
},
"results": [
{
"itemMetadata": {
"id": "product-1",
"originalIndex": 0,
"success": true
},
"item": {
"id": "product-1"
}
}
]
}
curl -X POST "https://www.wixapis.com/stores/v1/bulk/products/update" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"set": [
{
"id": "product-1",
"property": "price",
"value": 19.99
},
{
"id": "product-2",
"property": "price",
"value": 29.99
}
]
}'
Note: Use Bulk Adjust Product Properties endpoint for multiple properties per product
curl -X POST "https://www.wixapis.com/stores/v1/bulk/products/adjust" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"products": [
{
"id": "product-1",
"price": 19.99,
"visible": true,
"stock": {
"quantity": 50
}
},
{
"id": "product-2",
"price": 29.99,
"visible": false
}
]
}'
#!/bin/bash
OFFSET=0
LIMIT=100
TOTAL=999999
while [ $OFFSET -lt $TOTAL ]; do
response=$(curl -s -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d "{\"query\": {\"paging\": {\"limit\": $LIMIT, \"offset\": $OFFSET}}}")
echo "$response" | jq '.products[]'
TOTAL=$(echo "$response" | jq '.metadata.total')
COUNT=$(echo "$response" | jq '.metadata.count')
OFFSET=$((OFFSET + COUNT))
if [ $COUNT -eq 0 ]; then
break
fi
done
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"filter": "{\"stock.trackInventory\": true, \"stock.quantity\": {\"$lte\": 10}}",
"sort": "{\"stock.quantity\": \"asc\"}",
"paging": {"limit": 100}
}
}'
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"filter": "{\"stock.inStock\": false, \"visible\": true}",
"paging": {"limit": 100}
}
}'
curl -X POST "https://www.wixapis.com/stores/v1/products/query" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"query": {
"filter": "{\"price\": {\"$gte\": 100}}",
"sort": "{\"price\": \"desc\"}",
"paging": {"limit": 50}
}
}'
{
"name": "Product Name",
"price": 29.99,
"productType": "physical"
}
{
"name": "Product Name",
"description": "Full product description",
"price": 29.99,
"comparePrice": 39.99,
"cost": 15.00,
"sku": "PROD-001",
"productType": "physical",
"visible": true,
"slug": "product-name",
"weight": 1.5,
"stock": {
"trackInventory": true,
"quantity": 100,
"inStock": true
},
"media": {
"mainMedia": {
"image": {
"url": "https://static.wixstatic.com/media/main.jpg",
"altText": "Main product image"
}
},
"items": []
},
"collectionIds": ["collection-123"],
"ribbon": "Sale",
"brand": "Brand Name",
"customTextFields": [],
"productOptions": [],
"manageVariants": false,
"variants": []
}