@wix/agent-skills 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/package.json +1 -1
- package/skills/wix-app/references/data-collection/WIX_DATA.md +10 -0
- package/skills/wix-design-system/SKILL.md +3 -1
- package/skills/wix-manage/SKILL.md +32 -54
- package/skills/wix-manage/references/ecommerce/api-recommendation-tracking.md +3 -2
- package/skills/wix-manage/references/ecommerce/ecom-load-context.md +144 -0
- package/skills/wix-manage/references/ecommerce/ecom-pricing.md +84 -0
- package/skills/wix-manage/references/ecommerce/ecom-shipping.md +64 -0
- package/skills/wix-manage/references/ecommerce/{setup-coupons.md → pricing-promotions/ecom-pricing-create-coupon.md} +20 -6
- package/skills/wix-manage/references/ecommerce/{setup-discount-rules.md → pricing-promotions/ecom-pricing-create-discount-rule.md} +31 -1
- package/skills/wix-manage/references/ecommerce/{flow-bundle-and-save.md → pricing-promotions/ecom-pricing-flow-bundle-and-save.md} +11 -52
- package/skills/wix-manage/references/ecommerce/{flow-seasonal-promotion.md → pricing-promotions/ecom-pricing-flow-seasonal-promotion.md} +17 -57
- package/skills/wix-manage/references/ecommerce/{flow-stock-mover.md → pricing-promotions/ecom-pricing-flow-stock-mover.md} +28 -70
- package/skills/wix-manage/references/ecommerce/{flow-upsell-boost.md → pricing-promotions/ecom-pricing-flow-upsell-boost.md} +15 -68
- package/skills/wix-manage/references/ecommerce/{goal-clear-inventory.md → pricing-promotions/ecom-pricing-goal-clear-inventory.md} +22 -13
- package/skills/wix-manage/references/ecommerce/{goal-drive-cross-sells.md → pricing-promotions/ecom-pricing-goal-drive-cross-sells.md} +26 -8
- package/skills/wix-manage/references/ecommerce/{goal-increase-aov.md → pricing-promotions/ecom-pricing-goal-increase-aov.md} +32 -25
- package/skills/wix-manage/references/ecommerce/{goal-seasonal-revenue.md → pricing-promotions/ecom-pricing-goal-seasonal-revenue.md} +21 -8
- package/skills/wix-manage/references/ecommerce/{troubleshoot-discount-not-applying.md → pricing-promotions/ecom-pricing-troubleshoot-not-applying.md} +1 -1
- package/skills/wix-manage/references/ecommerce/recommend-ecommerce-strategy.md +23 -47
- package/skills/wix-manage/references/ecommerce/{api-shipping.md → shipping/ecom-shipping-api.md} +4 -3
- package/skills/wix-manage/references/ecommerce/{flow-fix-coverage-gaps.md → shipping/ecom-shipping-fix-coverage.md} +23 -17
- package/skills/wix-manage/references/ecommerce/{flow-add-free-shipping.md → shipping/ecom-shipping-free-shipping.md} +23 -18
- package/skills/wix-manage/references/ecommerce/{flow-optimize-shipping-rates.md → shipping/ecom-shipping-optimize-rates.md} +19 -16
- package/skills/wix-manage/references/ecommerce/{setup-store-pickup-location.md → shipping/ecom-shipping-setup-pickup.md} +12 -10
- package/skills/wix-manage/references/ecommerce/{setup-shipping-rates.md → shipping/ecom-shipping-setup-rates.md} +1 -2
- package/skills/wix-manage/references/ecommerce/{setup-shipping-regions.md → shipping/ecom-shipping-setup-regions.md} +1 -2
- package/skills/wix-manage/references/sites/query-sites.md +104 -32
- package/skills/wix-manage/references/ecommerce/goal-reduce-cart-abandonment.md +0 -147
- package/skills/wix-manage/references/ecommerce/guardrail-discount-conflicts.md +0 -118
- package/skills/wix-manage/references/ecommerce/guardrail-margin-protection.md +0 -88
- package/skills/wix-manage/references/ecommerce/guardrail-rate-pricing-sanity.md +0 -108
- package/skills/wix-manage/references/ecommerce/guardrail-shipping-health.md +0 -124
- package/skills/wix-manage/references/ecommerce/recipe-apply-shipping-recommendations.md +0 -298
- package/skills/wix-manage/references/ecommerce/skill-graph.md +0 -139
- package/skills/wix-manage/references/ecommerce/troubleshoot-checkout-delivery-dropoff.md +0 -124
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Guardrail: Rate Pricing Sanity"
|
|
3
|
-
description: Validates shipping rate pricing against AOV and catalog data. Flags excessive rates, per-item penalties, unreachable free shipping thresholds, and backup rate sticker shock.
|
|
4
|
-
layer: guardrail
|
|
5
|
-
---
|
|
6
|
-
# Guardrail: Rate Pricing Sanity
|
|
7
|
-
|
|
8
|
-
## When to use
|
|
9
|
-
|
|
10
|
-
Run these checks when evaluating existing shipping rates or before creating/updating shipping rate configurations. All thresholds are relative to the store's Average Order Value (AOV).
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Check 1: Excessive shipping cost
|
|
15
|
-
|
|
16
|
-
**Threshold**: Any rate `amount` > AOV x 0.15 (15%)
|
|
17
|
-
|
|
18
|
-
**Why**: Shipping costs above 15% of order value are a top reason for cart abandonment. Customers who see disproportionately high shipping fees frequently abandon their carts.
|
|
19
|
-
|
|
20
|
-
**Detection**:
|
|
21
|
-
- For each shipping rate, compare `amount` against `AOV × 0.15`
|
|
22
|
-
- If exceeded → flag:
|
|
23
|
-
|
|
24
|
-
> "Shipping rate '{title}' charges ${amount}, which is {pct}% of your average order value (${AOV}). Shipping costs above 15% of order value are a top reason for cart abandonment."
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Check 2: Per-item penalty (multiplyByQuantity)
|
|
29
|
-
|
|
30
|
-
**Trigger**: `multiplyByQuantity: true` on any shipping rate
|
|
31
|
-
|
|
32
|
-
**Why**: Per-item shipping charges penalize larger orders and discourage customers from adding more items to cart.
|
|
33
|
-
|
|
34
|
-
**Detection**:
|
|
35
|
-
- Find all rates with `multiplyByQuantity: true`
|
|
36
|
-
- Calculate the impact for a typical multi-item order:
|
|
37
|
-
|
|
38
|
-
> "Your '{title}' rate charges per item (${amount} x quantity). A 5-item order costs ${amount x 5}. Switch to a flat rate or tiered pricing to encourage larger orders."
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Check 3: Free shipping threshold too high
|
|
43
|
-
|
|
44
|
-
**Threshold**: Free shipping threshold > AOV x 2
|
|
45
|
-
|
|
46
|
-
**Why**: If the free shipping minimum is more than double the average order, very few customers will ever qualify. The threshold should be achievable — close enough to the AOV to encourage customers to add one more item.
|
|
47
|
-
|
|
48
|
-
**Detection**:
|
|
49
|
-
- Compare free shipping `threshold` against `AOV × 2`
|
|
50
|
-
- If exceeded → flag:
|
|
51
|
-
|
|
52
|
-
> "Your free shipping threshold (${threshold}) is {X}x your average order (${AOV}). Most customers won't reach it. Lower to ${AOV x 1.2} to make it achievable and drive larger orders."
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Check 4: Free shipping threshold too low
|
|
57
|
-
|
|
58
|
-
**Threshold**: Free shipping threshold < AOV x 0.8
|
|
59
|
-
|
|
60
|
-
**Why**: If the threshold is below the average order value, most customers already qualify for free shipping without adding anything to their cart. This provides no upsell incentive and may erode margins unnecessarily.
|
|
61
|
-
|
|
62
|
-
**Detection**:
|
|
63
|
-
- Compare free shipping `threshold` against `AOV × 0.8`
|
|
64
|
-
- If below → flag:
|
|
65
|
-
|
|
66
|
-
> "Your free shipping threshold (${threshold}) is below your average order value (${AOV}). Most customers already qualify, so this threshold isn't driving larger orders. Consider raising it to ${AOV x 1.2} to encourage add-on purchases."
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Check 5: Backup rate sticker shock
|
|
71
|
-
|
|
72
|
-
**Threshold**: `backupRate.amount` > effective AOV x 0.15
|
|
73
|
-
|
|
74
|
-
**Why**: Backup rates apply when the primary carrier can't fulfill (e.g., remote address, service outage). If the backup rate is dramatically higher than normal shipping, customers experience sticker shock at checkout.
|
|
75
|
-
|
|
76
|
-
**Detection**:
|
|
77
|
-
- For each carrier's `backupRate`, compare `amount` against `effective_aov × 0.15`
|
|
78
|
-
- If exceeded → flag:
|
|
79
|
-
|
|
80
|
-
> "Backup rate of ${amount} is {pct}% of your average order value. When triggered, this will surprise customers with unexpectedly high shipping. Set the backup rate to 5-10% of average order value (${effective_aov x 0.05} - ${effective_aov x 0.10})."
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Check 6: Hidden surcharges
|
|
85
|
-
|
|
86
|
-
**Threshold**: Total `additionalCharges` across all carriers > AOV x 0.10
|
|
87
|
-
|
|
88
|
-
**Why**: Carrier surcharges (fuel, residential delivery, handling fees) add up. If the total surcharge burden exceeds 10% of the order value, it may negate the perceived value of the base shipping rate.
|
|
89
|
-
|
|
90
|
-
**Detection**:
|
|
91
|
-
- Sum all `additionalCharges` across active carriers
|
|
92
|
-
- Compare total against `AOV × 0.10`
|
|
93
|
-
- If exceeded → flag:
|
|
94
|
-
|
|
95
|
-
> "Carrier surcharges add ${total} to shipping costs. Combined with base rates, total shipping cost may deter customers. Review each surcharge to determine if it's necessary."
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Summary: Pricing sanity thresholds
|
|
100
|
-
|
|
101
|
-
| Check | Threshold | Action |
|
|
102
|
-
|---|---|---|
|
|
103
|
-
| Excessive rate | Rate > 15% of AOV | Flag — cart abandonment risk |
|
|
104
|
-
| Per-item penalty | `multiplyByQuantity: true` | Flag — discourages larger orders |
|
|
105
|
-
| Free threshold too high | Threshold > 2x AOV | Flag — unreachable for most customers |
|
|
106
|
-
| Free threshold too low | Threshold < 0.8x AOV | Flag — no upsell incentive, margin erosion |
|
|
107
|
-
| Backup rate shock | Backup > 15% of AOV | Flag — recommend 5-10% of AOV |
|
|
108
|
-
| Hidden surcharges | Total surcharges > 10% of AOV | Flag — review necessity |
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Guardrail: Shipping Health"
|
|
3
|
-
description: Shipping health score calculation (CRITICAL/POOR/FAIR/GOOD/EXCELLENT) with exact scoring criteria. Includes the mandatory business context filter for international shipping recommendations.
|
|
4
|
-
layer: guardrail
|
|
5
|
-
references:
|
|
6
|
-
- name: "Troubleshoot: Checkout Delivery Drop-off"
|
|
7
|
-
path: ecommerce/troubleshoot-checkout-delivery-dropoff.md
|
|
8
|
-
load: false
|
|
9
|
-
---
|
|
10
|
-
# Guardrail: Shipping Health
|
|
11
|
-
|
|
12
|
-
> **Related skills**:
|
|
13
|
-
> - [Troubleshoot: Checkout Delivery Drop-off](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/troubleshoot-checkout-delivery-dropoff)
|
|
14
|
-
|
|
15
|
-
## When to use
|
|
16
|
-
|
|
17
|
-
Calculate the shipping health score whenever evaluating a store's shipping configuration. Use this score to prioritize recommendations and determine urgency of shipping issues.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Health score levels
|
|
22
|
-
|
|
23
|
-
### CRITICAL
|
|
24
|
-
|
|
25
|
-
Any of the following conditions:
|
|
26
|
-
|
|
27
|
-
- `delivery_profiles` is empty AND `shipping_options` is empty
|
|
28
|
-
- All regions across all profiles have `active: false`
|
|
29
|
-
|
|
30
|
-
**Implication**: The store cannot ship any orders. Immediate action required.
|
|
31
|
-
|
|
32
|
-
### POOR
|
|
33
|
-
|
|
34
|
-
Any of the following conditions:
|
|
35
|
-
|
|
36
|
-
- Only 1 delivery profile with empty regions
|
|
37
|
-
- Only 1 shipping option total
|
|
38
|
-
- `delivery_step_cvr` < 50% with shipping issues detected
|
|
39
|
-
- All carriers have `backupRate.active: false`
|
|
40
|
-
|
|
41
|
-
**Implication**: Shipping is minimally functional but has significant gaps that are likely causing lost sales.
|
|
42
|
-
|
|
43
|
-
### FAIR
|
|
44
|
-
|
|
45
|
-
All of the following conditions:
|
|
46
|
-
|
|
47
|
-
- 1-2 delivery profiles with 1-2 active regions
|
|
48
|
-
- 2-4 shipping options
|
|
49
|
-
- No free shipping option available
|
|
50
|
-
- OR: `delivery_step_cvr` between 50-65%
|
|
51
|
-
|
|
52
|
-
**Implication**: Basic shipping is working but missing key elements that drive conversion.
|
|
53
|
-
|
|
54
|
-
### GOOD
|
|
55
|
-
|
|
56
|
-
All of the following conditions:
|
|
57
|
-
|
|
58
|
-
- 1+ delivery profiles with both domestic and international regions
|
|
59
|
-
- 3-5 shipping options including at least one free shipping option
|
|
60
|
-
- 1+ active carriers
|
|
61
|
-
- `delivery_step_cvr` between 65-75%
|
|
62
|
-
|
|
63
|
-
**Implication**: Solid shipping setup. Optimization opportunities exist but fundamentals are covered.
|
|
64
|
-
|
|
65
|
-
### EXCELLENT
|
|
66
|
-
|
|
67
|
-
All of the following conditions:
|
|
68
|
-
|
|
69
|
-
- Multiple active regions
|
|
70
|
-
- Tiered shipping rates
|
|
71
|
-
- Free shipping option available
|
|
72
|
-
- Multiple carriers with backup rates enabled
|
|
73
|
-
- Pickup and/or local delivery options configured
|
|
74
|
-
- `delivery_step_cvr` ≥ 75%
|
|
75
|
-
- No `multiplyByQuantity` pricing on any rate
|
|
76
|
-
|
|
77
|
-
**Implication**: Best-in-class shipping configuration. Focus on maintaining and fine-tuning.
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Business context filter (MANDATORY)
|
|
82
|
-
|
|
83
|
-
**This filter MUST be applied before recommending any international shipping action.**
|
|
84
|
-
|
|
85
|
-
### Check business type
|
|
86
|
-
|
|
87
|
-
Inspect the store's `industry` and `businessType` fields (case-insensitive match) for any of the following keywords:
|
|
88
|
-
|
|
89
|
-
- food
|
|
90
|
-
- restaurant
|
|
91
|
-
- grocery
|
|
92
|
-
- bakery
|
|
93
|
-
- catering
|
|
94
|
-
- perishable
|
|
95
|
-
- fresh
|
|
96
|
-
- meat
|
|
97
|
-
- produce
|
|
98
|
-
- dairy
|
|
99
|
-
- drink
|
|
100
|
-
- beverage
|
|
101
|
-
|
|
102
|
-
### If matched
|
|
103
|
-
|
|
104
|
-
**DO NOT recommend any international shipping action.** Perishable/food businesses face regulatory, spoilage, and logistics barriers that make international shipping impractical as a default recommendation.
|
|
105
|
-
|
|
106
|
-
### Identifying international regions
|
|
107
|
-
|
|
108
|
-
A region is considered "international" if any of the following are true:
|
|
109
|
-
|
|
110
|
-
- Region `name` contains "international" or "internacional" (case-insensitive)
|
|
111
|
-
- Region `destinations[]` is empty (wildcard / all countries)
|
|
112
|
-
- Region `destinations` include countries outside the store's home country
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
## Summary: Score decision table
|
|
117
|
-
|
|
118
|
-
| Score | Key indicator | Action |
|
|
119
|
-
|---|---|---|
|
|
120
|
-
| CRITICAL | No profiles/options or all regions inactive | Immediate setup required |
|
|
121
|
-
| POOR | Minimal config, low CVR, or no backup rates | Address fundamental gaps |
|
|
122
|
-
| FAIR | Basic setup, no free shipping, moderate CVR | Add free shipping, expand regions |
|
|
123
|
-
| GOOD | Domestic + international, free shipping, good CVR | Optimize rates and carriers |
|
|
124
|
-
| EXCELLENT | Full coverage, tiered rates, high CVR | Maintain and fine-tune |
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Recipe: Apply Shipping Recommendations"
|
|
3
|
-
description: Applies AI-generated shipping recommendations to a Wix e-commerce store. Reads the current delivery profile and shipping options, then creates or updates shipping options based on recommendation data. Supports creating new options with conditional rates, updating existing options, and querying delivery profiles for region/carrier context.
|
|
4
|
-
---
|
|
5
|
-
# Apply Shipping Recommendations
|
|
6
|
-
|
|
7
|
-
## Prerequisites
|
|
8
|
-
|
|
9
|
-
- Wix Stores (or another eCommerce business solution) installed on the site
|
|
10
|
-
- Shipping recommendations data available (from the AI recommendation system or provided directly)
|
|
11
|
-
|
|
12
|
-
## Required APIs
|
|
13
|
-
|
|
14
|
-
- [Query Delivery Profiles](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/api-shipping#query-delivery-profiles)
|
|
15
|
-
- [Get Delivery Profile](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/api-shipping#get-delivery-profile)
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## Step 1: Query the current shipping configuration
|
|
20
|
-
|
|
21
|
-
Call [Query Delivery Profiles](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/api-shipping#query-delivery-profiles) to understand the site's delivery setup — profiles, regions, carriers, and backup rates.
|
|
22
|
-
|
|
23
|
-
**Endpoint**: `POST https://www.wixapis.com/ecom/v1/delivery-profiles/query`
|
|
24
|
-
|
|
25
|
-
**Request**:
|
|
26
|
-
```json
|
|
27
|
-
{
|
|
28
|
-
"query": {
|
|
29
|
-
"cursorPaging": {
|
|
30
|
-
"limit": 100
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**Response**:
|
|
37
|
-
```json
|
|
38
|
-
{
|
|
39
|
-
"deliveryProfiles": [
|
|
40
|
-
{
|
|
41
|
-
"id": "6a9b2f9b-533a-4d0d-ac8d-64ec3f32fcbd",
|
|
42
|
-
"name": "General profile",
|
|
43
|
-
"default": true,
|
|
44
|
-
"deliveryRegions": [
|
|
45
|
-
{
|
|
46
|
-
"id": "42b0ed3b-fc54-4ac0-89cf-5d2d17ec441c",
|
|
47
|
-
"name": "Domestic",
|
|
48
|
-
"active": true,
|
|
49
|
-
"deliveryCarriers": [
|
|
50
|
-
{
|
|
51
|
-
"appId": "45c44b27-ca7b-4891-8c0d-1747d588b835",
|
|
52
|
-
"additionalCharges": []
|
|
53
|
-
}
|
|
54
|
-
],
|
|
55
|
-
"destinations": [
|
|
56
|
-
{
|
|
57
|
-
"countryCode": "GB",
|
|
58
|
-
"subdivisions": []
|
|
59
|
-
}
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
],
|
|
63
|
-
"revision": "43",
|
|
64
|
-
"createdDate": "2025-10-26T11:05:10.774Z",
|
|
65
|
-
"updatedDate": "2026-04-14T14:43:25.397Z"
|
|
66
|
-
}
|
|
67
|
-
],
|
|
68
|
-
"pagingMetadata": {
|
|
69
|
-
"count": 1,
|
|
70
|
-
"cursors": {},
|
|
71
|
-
"hasNext": false
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Save the profile `id`, `revision`, and each region's `id` and `active` status. Identify which regions have carriers with missing backup rates (`backupRate` absent or `backupRate.active: false`).
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Step 2: Query existing shipping options
|
|
81
|
-
|
|
82
|
-
**Endpoint**: `POST https://www.wixapis.com/ecom/v1/shipping-options/query`
|
|
83
|
-
|
|
84
|
-
**Request**:
|
|
85
|
-
```json
|
|
86
|
-
{
|
|
87
|
-
"query": {
|
|
88
|
-
"cursorPaging": {
|
|
89
|
-
"limit": 100
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
**Response**:
|
|
96
|
-
```json
|
|
97
|
-
{
|
|
98
|
-
"shippingOptions": [
|
|
99
|
-
{
|
|
100
|
-
"id": "c0e5be8f-5266-4720-a732-5f571e4750db",
|
|
101
|
-
"revision": "1",
|
|
102
|
-
"createdDate": "2026-04-14T14:43:24.804Z",
|
|
103
|
-
"updatedDate": "2026-04-14T14:43:24.804Z",
|
|
104
|
-
"deliveryRegionId": "42b0ed3b-fc54-4ac0-89cf-5d2d17ec441c",
|
|
105
|
-
"deliveryRegionIds": [],
|
|
106
|
-
"title": "Standard Shipping",
|
|
107
|
-
"estimatedDeliveryTime": "5-7 business days",
|
|
108
|
-
"rates": [
|
|
109
|
-
{
|
|
110
|
-
"amount": "15.00",
|
|
111
|
-
"conditions": [],
|
|
112
|
-
"multiplyByQuantity": false
|
|
113
|
-
}
|
|
114
|
-
]
|
|
115
|
-
}
|
|
116
|
-
],
|
|
117
|
-
"pagingMetadata": {
|
|
118
|
-
"count": 1,
|
|
119
|
-
"cursors": {},
|
|
120
|
-
"hasNext": false
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
Note: The response uses `deliveryRegionId` (singular) as the primary field linking an option to a region.
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## Step 3: Apply recommendation — Create a new shipping option
|
|
130
|
-
|
|
131
|
-
When the recommendation action is `create_shipping_option`, create a new option linked to a specific delivery region.
|
|
132
|
-
|
|
133
|
-
**Endpoint**: `POST https://www.wixapis.com/ecom/v1/shipping-options`
|
|
134
|
-
|
|
135
|
-
**Request** — flat rate example:
|
|
136
|
-
```json
|
|
137
|
-
{
|
|
138
|
-
"shippingOption": {
|
|
139
|
-
"title": "Express Shipping",
|
|
140
|
-
"estimatedDeliveryTime": "1-2 business days",
|
|
141
|
-
"deliveryRegionId": "42b0ed3b-fc54-4ac0-89cf-5d2d17ec441c",
|
|
142
|
-
"rates": [
|
|
143
|
-
{
|
|
144
|
-
"amount": "12.99",
|
|
145
|
-
"multiplyByQuantity": false,
|
|
146
|
-
"conditions": []
|
|
147
|
-
}
|
|
148
|
-
]
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
**Response**:
|
|
154
|
-
```json
|
|
155
|
-
{
|
|
156
|
-
"shippingOption": {
|
|
157
|
-
"id": "dece6160-4e72-4fcc-adcc-7607215edab0",
|
|
158
|
-
"revision": "1",
|
|
159
|
-
"createdDate": "2026-04-15T13:14:01.214Z",
|
|
160
|
-
"updatedDate": "2026-04-15T13:14:01.214Z",
|
|
161
|
-
"deliveryRegionId": "42b0ed3b-fc54-4ac0-89cf-5d2d17ec441c",
|
|
162
|
-
"deliveryRegionIds": [],
|
|
163
|
-
"title": "Express Shipping",
|
|
164
|
-
"estimatedDeliveryTime": "1-2 business days",
|
|
165
|
-
"rates": [
|
|
166
|
-
{
|
|
167
|
-
"amount": "12.99",
|
|
168
|
-
"conditions": [],
|
|
169
|
-
"multiplyByQuantity": false
|
|
170
|
-
}
|
|
171
|
-
]
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
**Request** — free shipping with price threshold:
|
|
177
|
-
```json
|
|
178
|
-
{
|
|
179
|
-
"shippingOption": {
|
|
180
|
-
"title": "Free Shipping",
|
|
181
|
-
"estimatedDeliveryTime": "5-7 business days",
|
|
182
|
-
"deliveryRegionId": "42b0ed3b-fc54-4ac0-89cf-5d2d17ec441c",
|
|
183
|
-
"rates": [
|
|
184
|
-
{
|
|
185
|
-
"amount": "0",
|
|
186
|
-
"multiplyByQuantity": false,
|
|
187
|
-
"conditions": [
|
|
188
|
-
{
|
|
189
|
-
"type": "BY_TOTAL_PRICE",
|
|
190
|
-
"operator": "GTE",
|
|
191
|
-
"value": "75"
|
|
192
|
-
}
|
|
193
|
-
]
|
|
194
|
-
}
|
|
195
|
-
]
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
**Key field rules:**
|
|
201
|
-
|
|
202
|
-
| Field | Required | Notes |
|
|
203
|
-
|---|---|---|
|
|
204
|
-
| `title` | Yes | Display name at checkout |
|
|
205
|
-
| `estimatedDeliveryTime` | Yes | Free text shown to customers |
|
|
206
|
-
| `deliveryRegionId` | Yes | Region UUID from Step 1. Must use **singular** field, not `deliveryRegionIds` |
|
|
207
|
-
| `rates` | Yes | Array of rate objects |
|
|
208
|
-
| `rates[].amount` | Yes | Decimal string (`"5.99"`, `"0"` for free) |
|
|
209
|
-
| `rates[].multiplyByQuantity` | Yes | Almost always `false` |
|
|
210
|
-
| `rates[].conditions` | Yes | Empty array for flat rate; see condition types below |
|
|
211
|
-
|
|
212
|
-
**Condition types** (for tiered/conditional rates):
|
|
213
|
-
|
|
214
|
-
| Type | Description | Example |
|
|
215
|
-
|---|---|---|
|
|
216
|
-
| `BY_TOTAL_PRICE` | Cart total threshold | `"operator": "GTE", "value": "75"` |
|
|
217
|
-
| `BY_TOTAL_WEIGHT` | Weight threshold | `"operator": "LTE", "value": "10"` |
|
|
218
|
-
| `BY_TOTAL_QUANTITY` | Item count threshold | `"operator": "GTE", "value": "3"` |
|
|
219
|
-
|
|
220
|
-
Operators: `EQ`, `GT`, `GTE`, `LT`, `LTE`
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
## Step 4: Apply recommendation — Update an existing shipping option
|
|
225
|
-
|
|
226
|
-
When the recommendation action is `update_shipping_option`, update an existing option's title, delivery time, or rates.
|
|
227
|
-
|
|
228
|
-
**Endpoint**: `PATCH https://www.wixapis.com/ecom/v1/shipping-options/{shippingOptionId}`
|
|
229
|
-
|
|
230
|
-
Replace `{shippingOptionId}` with the option's `id` from Step 2.
|
|
231
|
-
|
|
232
|
-
**Request**:
|
|
233
|
-
```json
|
|
234
|
-
{
|
|
235
|
-
"shippingOption": {
|
|
236
|
-
"id": "c0e5be8f-5266-4720-a732-5f571e4750db",
|
|
237
|
-
"revision": "1",
|
|
238
|
-
"title": "Updated Standard Shipping",
|
|
239
|
-
"estimatedDeliveryTime": "3-5 business days",
|
|
240
|
-
"rates": [
|
|
241
|
-
{
|
|
242
|
-
"amount": "9.99",
|
|
243
|
-
"multiplyByQuantity": false,
|
|
244
|
-
"conditions": []
|
|
245
|
-
}
|
|
246
|
-
]
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
**Response**:
|
|
252
|
-
```json
|
|
253
|
-
{
|
|
254
|
-
"shippingOption": {
|
|
255
|
-
"id": "c0e5be8f-5266-4720-a732-5f571e4750db",
|
|
256
|
-
"revision": "2",
|
|
257
|
-
"createdDate": "2026-04-14T14:43:24.804Z",
|
|
258
|
-
"updatedDate": "2026-04-15T13:14:13.716Z",
|
|
259
|
-
"deliveryRegionId": "42b0ed3b-fc54-4ac0-89cf-5d2d17ec441c",
|
|
260
|
-
"deliveryRegionIds": [],
|
|
261
|
-
"title": "Updated Standard Shipping",
|
|
262
|
-
"estimatedDeliveryTime": "3-5 business days",
|
|
263
|
-
"rates": [
|
|
264
|
-
{
|
|
265
|
-
"amount": "9.99",
|
|
266
|
-
"conditions": [],
|
|
267
|
-
"multiplyByQuantity": false
|
|
268
|
-
}
|
|
269
|
-
]
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
The `revision` field is required and must match the current revision. The response returns the incremented revision.
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## Step 5: Verify the changes
|
|
279
|
-
|
|
280
|
-
After applying recommendations, query shipping options again (Step 2) to confirm the changes took effect. Verify:
|
|
281
|
-
|
|
282
|
-
- New options appear in the list with the correct title, rates, and region link
|
|
283
|
-
- Updated options reflect the new values and incremented revision
|
|
284
|
-
- The option is linked to the correct `deliveryRegionId`
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
## Error Handling
|
|
289
|
-
|
|
290
|
-
| Error | Cause | Fix |
|
|
291
|
-
|---|---|---|
|
|
292
|
-
| `deliveryRegionId is not a valid GUID` | Used `deliveryRegionIds` (plural) instead of `deliveryRegionId` (singular) in create request | Use the singular `deliveryRegionId` field |
|
|
293
|
-
| `SHIPPING_OPTION_NOT_FOUND` | The shipping option ID doesn't exist | Re-query shipping options to get current IDs |
|
|
294
|
-
| `REVISION_MISMATCH` | The `revision` doesn't match the current version | Re-fetch the option to get the latest revision, then retry |
|
|
295
|
-
|
|
296
|
-
## References
|
|
297
|
-
|
|
298
|
-
- [API: Shipping Delivery](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/api-shipping)
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "eCommerce Skill Graph"
|
|
3
|
-
description: Mermaid diagram showing how eCommerce skills connect — unified strategy entry point, goal/flow/guardrail chain, tracking inlined, troubleshoot as direct entries.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Skill Graph Diagram
|
|
7
|
-
|
|
8
|
-
```mermaid
|
|
9
|
-
flowchart TB
|
|
10
|
-
MR["Merchant Request"] --> R
|
|
11
|
-
|
|
12
|
-
subgraph R["R — Unified Entry Point"]
|
|
13
|
-
recommend-ecommerce-strategy
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
R --> |"loads API ref"| Config
|
|
17
|
-
R --> |"Step 4b: loads matching goal"| Goals
|
|
18
|
-
R --> |"Step 2+8: tracking inlined"| TrackingAPI
|
|
19
|
-
|
|
20
|
-
subgraph Goals["Goals — Business Objectives"]
|
|
21
|
-
subgraph GD["Discount + Shipping"]
|
|
22
|
-
goal-increase-aov
|
|
23
|
-
goal-clear-inventory
|
|
24
|
-
goal-seasonal-revenue
|
|
25
|
-
goal-drive-cross-sells
|
|
26
|
-
end
|
|
27
|
-
subgraph GA["Abandoned Cart"]
|
|
28
|
-
goal-reduce-cart-abandonment
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
Goals --> |"loads matching flows"| Flows
|
|
33
|
-
goal-increase-aov --> |"also loads shipping flows"| FS
|
|
34
|
-
|
|
35
|
-
subgraph Flows["Flows — Business Logic"]
|
|
36
|
-
subgraph FD["Discount"]
|
|
37
|
-
flow-upsell-boost
|
|
38
|
-
flow-bundle-and-save
|
|
39
|
-
flow-stock-mover
|
|
40
|
-
flow-seasonal-promotion
|
|
41
|
-
end
|
|
42
|
-
subgraph FS["Shipping"]
|
|
43
|
-
flow-fix-coverage-gaps
|
|
44
|
-
flow-add-free-shipping
|
|
45
|
-
flow-optimize-shipping-rates
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
Flows --> |"loads validation"| Guardrails
|
|
50
|
-
Flows --> |"loads setup"| Config
|
|
51
|
-
|
|
52
|
-
subgraph Guardrails["Cross-cutting: Guardrails"]
|
|
53
|
-
guardrail-discount-conflicts
|
|
54
|
-
guardrail-margin-protection
|
|
55
|
-
guardrail-shipping-health
|
|
56
|
-
guardrail-rate-pricing-sanity
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
subgraph Config["Config — Setup & API References"]
|
|
60
|
-
setup-discount-rules
|
|
61
|
-
setup-coupons
|
|
62
|
-
setup-shipping-regions
|
|
63
|
-
setup-shipping-rates
|
|
64
|
-
api-shipping
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
subgraph TrackingAPI["Tracking API"]
|
|
68
|
-
api-recommendation-tracking
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
subgraph Standalone["Direct Entry Points (from README)"]
|
|
72
|
-
recipe-apply-shipping-recommendations
|
|
73
|
-
setup-store-pickup-location
|
|
74
|
-
troubleshoot-discount-not-applying
|
|
75
|
-
troubleshoot-checkout-delivery-dropoff
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
Config -.-> |"calls via CallWixSiteAPI"| API
|
|
79
|
-
|
|
80
|
-
subgraph API["Wix REST API Docs (dev.wix.com)"]
|
|
81
|
-
D1["Discount Rules API"]
|
|
82
|
-
D2["Coupons API"]
|
|
83
|
-
D3["Products V3 API"]
|
|
84
|
-
D4["Categories API"]
|
|
85
|
-
D5["Catalog Analytics"]
|
|
86
|
-
S3["Pickup Locations API"]
|
|
87
|
-
S4["Local Delivery API"]
|
|
88
|
-
SD["Profile Service API (wix-profile-client)"]
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
classDef goal fill:#8b5cf6,stroke:#6d28d9,color:#fff
|
|
92
|
-
classDef guardrail fill:#ef4444,stroke:#dc2626,color:#fff
|
|
93
|
-
classDef flow fill:#3b82f6,stroke:#2563eb,color:#fff
|
|
94
|
-
classDef config fill:#f59e0b,stroke:#d97706,color:#fff
|
|
95
|
-
classDef reco fill:#ec4899,stroke:#db2777,color:#fff
|
|
96
|
-
classDef standalone fill:#6b7280,stroke:#4b5563,color:#fff
|
|
97
|
-
classDef apidoc fill:#e5e7eb,stroke:#9ca3af,color:#374151
|
|
98
|
-
|
|
99
|
-
class goal-increase-aov,goal-clear-inventory,goal-seasonal-revenue,goal-drive-cross-sells,goal-reduce-cart-abandonment goal
|
|
100
|
-
class guardrail-discount-conflicts,guardrail-margin-protection,guardrail-shipping-health,guardrail-rate-pricing-sanity guardrail
|
|
101
|
-
class flow-upsell-boost,flow-bundle-and-save,flow-stock-mover,flow-seasonal-promotion,flow-fix-coverage-gaps,flow-add-free-shipping,flow-optimize-shipping-rates flow
|
|
102
|
-
class setup-discount-rules,setup-coupons,setup-shipping-regions,setup-shipping-rates,api-recommendation-tracking,api-shipping config
|
|
103
|
-
class recommend-ecommerce-strategy reco
|
|
104
|
-
class recipe-apply-shipping-recommendations,setup-store-pickup-location,troubleshoot-discount-not-applying,troubleshoot-checkout-delivery-dropoff standalone
|
|
105
|
-
class D1,D2,D3,D4,D5,S1,S2,S3,S4,SD apidoc
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## File Reachability
|
|
109
|
-
|
|
110
|
-
| File | Reached via |
|
|
111
|
-
|---|---|
|
|
112
|
-
| `recommend-ecommerce-strategy.md` | README routing (entry point) |
|
|
113
|
-
| `api-recommendation-tracking.md` | Entry point tracking steps |
|
|
114
|
-
| `goal-increase-aov.md` | Step 4b (UPSELL_BOOST) |
|
|
115
|
-
| `goal-clear-inventory.md` | Step 4b (STOCK_MOVER) |
|
|
116
|
-
| `goal-seasonal-revenue.md` | Step 4b (SEASONAL) |
|
|
117
|
-
| `goal-drive-cross-sells.md` | Step 4b (BUNDLE_AND_SAVE) |
|
|
118
|
-
| `goal-reduce-cart-abandonment.md` | Step 4b (ABANDONED_CART domain) |
|
|
119
|
-
| `flow-upsell-boost.md` | goal-increase-aov chain |
|
|
120
|
-
| `flow-bundle-and-save.md` | goal-increase-aov / goal-drive-cross-sells chain |
|
|
121
|
-
| `flow-stock-mover.md` | goal-clear-inventory chain |
|
|
122
|
-
| `flow-seasonal-promotion.md` | goal-seasonal-revenue chain |
|
|
123
|
-
| `flow-fix-coverage-gaps.md` | goal-reduce-cart-abandonment chain (critical operational fix) |
|
|
124
|
-
| `flow-add-free-shipping.md` | goal-increase-aov chain (shipping flows serving AOV) |
|
|
125
|
-
| `flow-optimize-shipping-rates.md` | goal-increase-aov chain (shipping flows serving AOV) |
|
|
126
|
-
| `guardrail-discount-conflicts.md` | flow-upsell-boost / bundle / stock / seasonal chains |
|
|
127
|
-
| `guardrail-margin-protection.md` | flow-upsell-boost / stock-mover chains |
|
|
128
|
-
| `guardrail-shipping-health.md` | flow-fix-coverage-gaps chain |
|
|
129
|
-
| `guardrail-rate-pricing-sanity.md` | flow-add-free-shipping / optimize chains |
|
|
130
|
-
| `setup-discount-rules.md` | All discount flow chains |
|
|
131
|
-
| `setup-coupons.md` | Step 4c (COUPON mechanism) |
|
|
132
|
-
| `setup-shipping-regions.md` | flow-fix-coverage-gaps chain |
|
|
133
|
-
| `setup-shipping-rates.md` | flow-add-free-shipping / optimize chains |
|
|
134
|
-
| `api-shipping.md` | Shipping flows (fix-coverage-gaps, add-free-shipping, optimize, recipe, setup-store-pickup) |
|
|
135
|
-
| `recipe-apply-shipping-recommendations.md` | README direct entry |
|
|
136
|
-
| `setup-store-pickup-location.md` | README direct entry |
|
|
137
|
-
| `troubleshoot-discount-not-applying.md` | README direct entry |
|
|
138
|
-
| `troubleshoot-checkout-delivery-dropoff.md` | README direct entry |
|
|
139
|
-
| `skill-graph.md` | Documentation reference |
|