From wix-ecom-cowork
Manages Wix tax groups via API: query all/groups by ID/defaults, create, update, delete for defining product/customer tax rates and exemptions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/wix-ecom-cowork:tax-groups-comprehensiveThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Comprehensive tax group management using Wix Tax Groups API for creating, updating, querying, and managing tax groups that define specific tax treatments and exemptions for products and customers.
Comprehensive tax group management using Wix Tax Groups API for creating, updating, querying, and managing tax groups that define specific tax treatments and exemptions for products and customers.
df7c18eb-009b-4868-9891-15e19dddbe67${API_KEY}${SITE_ID}https://www.wixapis.com/tax-groups/v1-H "Authorization: ${API_KEY}"
-H "wix-site-id: ${SITE_ID}"
-H "Content-Type: application/json"
Endpoint: GET https://www.wixapis.com/tax-groups/v1/tax-groups
List all tax groups for the site.
curl -X GET "https://www.wixapis.com/tax-groups/v1/tax-groups" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}"
Response:
{
"taxGroups": [
{
"id": "tax-group-123",
"name": "Standard Tax",
"rate": 0.08,
"description": "Standard sales tax rate",
"default": true,
"appId": "app-123"
}
]
}
Endpoint: GET https://www.wixapis.com/tax-groups/v1/tax-groups/{id}
TAX_GROUP_ID="tax-group-123"
curl -X GET "https://www.wixapis.com/tax-groups/v1/tax-groups/${TAX_GROUP_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}"
Endpoint: POST https://www.wixapis.com/tax-groups/v1/tax-groups
curl -X POST "https://www.wixapis.com/tax-groups/v1/tax-groups" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"taxGroup": {
"name": "California Sales Tax",
"description": "CA state sales tax for physical goods",
"rate": 0.0875
}
}'
Response:
{
"taxGroup": {
"id": "new-tax-group-id",
"name": "California Sales Tax",
"description": "CA state sales tax for physical goods",
"rate": 0.0875,
"default": false
}
}
Endpoint: PATCH https://www.wixapis.com/tax-groups/v1/tax-groups/{id}
TAX_GROUP_ID="tax-group-123"
curl -X PATCH "https://www.wixapis.com/tax-groups/v1/tax-groups/${TAX_GROUP_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"taxGroup": {
"name": "Updated Tax Group Name",
"rate": 0.095,
"description": "Updated description"
}
}'
Endpoint: DELETE https://www.wixapis.com/tax-groups/v1/tax-groups/{id}
TAX_GROUP_ID="tax-group-to-delete"
curl -X DELETE "https://www.wixapis.com/tax-groups/v1/tax-groups/${TAX_GROUP_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}"
Note: Cannot delete tax group if products are still assigned to it.
Endpoint: GET https://www.wixapis.com/tax-groups/v1/tax-groups/default
Get system default tax groups.
curl -X GET "https://www.wixapis.com/tax-groups/v1/tax-groups/default" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}"
Endpoint: GET https://www.wixapis.com/tax-groups/v1/tax-groups/by-app-ids
Get default tax groups for specific apps.
curl -X GET "https://www.wixapis.com/tax-groups/v1/tax-groups/by-app-ids?appIds=app-id-1,app-id-2" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}"
After creating or identifying the right tax group, assign it to products:
PRODUCT_ID="product-123"
TAX_GROUP_ID="tax-group-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": {
"id": "'"${PRODUCT_ID}"'",
"taxGroupId": "'"${TAX_GROUP_ID}"'"
}
}'
Find all products assigned to a specific tax group:
TAX_GROUP_ID="tax-group-123"
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": "{\"taxGroupId\": \"'"${TAX_GROUP_ID}"'\"}",
"paging": {"limit": 100}
}
}' | jq '[.products[] | {
id,
name,
price,
taxGroupId
}]'
curl -s -X GET "https://www.wixapis.com/tax-groups/v1/tax-groups" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" | jq '[.taxGroups[] | {
id,
name,
rate,
default,
description
}]'
# Create tax group for EU VAT
curl -s -X POST "https://www.wixapis.com/tax-groups/v1/tax-groups" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"taxGroup": {
"name": "EU VAT",
"description": "European Union Value Added Tax",
"rate": 0.20
}
}' | jq '{
taxGroupId: .taxGroup.id,
name: .taxGroup.name,
rate: .taxGroup.rate,
message: "✅ Tax group created"
}'
# Update tax rate (e.g., when rates change)
TAX_GROUP_ID="tax-group-123"
curl -s -X PATCH "https://www.wixapis.com/tax-groups/v1/tax-groups/${TAX_GROUP_ID}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d '{
"taxGroup": {
"rate": 0.0925
}
}' | jq '{
taxGroupId: .taxGroup.id,
name: .taxGroup.name,
oldRate: "8.75%",
newRate: (.taxGroup.rate * 100 | tostring + "%"),
message: "✅ Tax rate updated"
}'
# Find products missing tax assignment
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": {
"filter": "{\"taxGroupId\": null}",
"paging": {"limit": 100}
}
}' | jq '[.products[] | {
id,
name,
price,
warning: "⚠️ No tax group assigned"
}]'
# Assign default tax group to all products without tax
DEFAULT_TAX_ID=$(curl -s -X GET "https://www.wixapis.com/tax-groups/v1/tax-groups/default" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" | jq -r '.taxGroups[0].id')
echo "Default tax group: ${DEFAULT_TAX_ID}"
# Get products without tax
products_without_tax=$(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": {"filter": "{\"taxGroupId\": null}", "paging": {"limit": 100}}}')
# Assign tax group to each
echo "$products_without_tax" | jq -r '.products[].id' | while read -r pid; do
curl -s -X PATCH "https://www.wixapis.com/stores/v1/products/${pid}" \
-H "Authorization: ${API_KEY}" \
-H "wix-site-id: ${SITE_ID}" \
-H "Content-Type: application/json" \
-d "{
\"product\": {
\"id\": \"${pid}\",
\"taxGroupId\": \"${DEFAULT_TAX_ID}\"
}
}" > /dev/null
echo "✅ Assigned tax to product ${pid}"
sleep 0.2
done
Good Examples:
Bad Examples:
npx claudepluginhub wix/wix-ecom-cowork --plugin wix-ecom-coworkManages Wix tax configuration via Billing APIs: query tax groups/regions/calculators/manual mappings, assign groups to products. For e-commerce tax compliance.
Manages Wix business solutions via REST API: app installation, blog posts, bookings staff & policies, and site setup.
Manages Medusa v2 customers: profiles, addresses, groups; email/password and social OAuth auth flows, account endpoints. Use for customer CRUD/auth tasks.