@wix/agent-skills 1.12.0 → 1.14.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-headless/references/BUILD-astro.md +10 -1
- package/skills/wix-headless/references/shared/STYLING.md +0 -1
- package/skills/wix-headless/scripts/compose.mjs +19 -24
- package/skills/wix-headless/scripts/patch-decorative-slots.mjs +15 -9
- 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-headless/references/astro/templates/Footer.astro +0 -27
- package/skills/wix-headless/references/astro/templates/Navigation.astro +0 -38
- package/skills/wix-headless/references/astro/templates/index.astro +0 -56
- 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,118 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Guardrail: Discount Conflicts"
|
|
3
|
-
description: Validation rules for detecting and preventing discount stacking conflicts, coupon overlap, and unintended deep discounts before applying new promotions. Covers automatic discount rules, coupon interactions, and safe discount limits.
|
|
4
|
-
layer: guardrail
|
|
5
|
-
references:
|
|
6
|
-
- name: "Troubleshoot: Discount Not Applying"
|
|
7
|
-
path: ecommerce/troubleshoot-discount-not-applying.md
|
|
8
|
-
load: false
|
|
9
|
-
---
|
|
10
|
-
# Guardrail: Discount Conflicts
|
|
11
|
-
|
|
12
|
-
> **Related skills** (read with `ReadFullDocsArticle` if needed):
|
|
13
|
-
> - [Troubleshoot: Discount Not Applying](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/skills/troubleshoot-discount-not-applying)
|
|
14
|
-
|
|
15
|
-
## When to use this guardrail
|
|
16
|
-
|
|
17
|
-
Run these checks **before** creating or updating any discount — whether automatic discount rule or coupon. Discount conflicts are one of the most common merchant mistakes — overlapping discounts silently stack and give customers a much deeper discount than intended. This is especially dangerous when **automatic discounts and coupons interact**, since merchants often forget that both mechanisms apply simultaneously.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Check 1: Existing active discount rules on the same scope
|
|
22
|
-
|
|
23
|
-
**Why:** Wix eCommerce stacks automatic discount rules. If a 20% catalog-wide discount and a 15% collection discount both apply to the same product, the customer may get both applied.
|
|
24
|
-
|
|
25
|
-
**How to check:**
|
|
26
|
-
|
|
27
|
-
1. Query all active discount rules:
|
|
28
|
-
|
|
29
|
-
**Endpoint**: `POST https://www.wixapis.com/ecom/v1/discount-rules/query`
|
|
30
|
-
|
|
31
|
-
**Request**:
|
|
32
|
-
```json
|
|
33
|
-
{
|
|
34
|
-
"query": {
|
|
35
|
-
"filter": {
|
|
36
|
-
"active": true
|
|
37
|
-
},
|
|
38
|
-
"paging": {
|
|
39
|
-
"limit": 100
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
2. For each existing active rule, compare its scope against the new rule:
|
|
46
|
-
- If both target `CATALOG` scope: **conflict** — both apply to all products
|
|
47
|
-
- If new rule targets `CATALOG` and existing targets `COLLECTION`: **conflict** — catalog-wide includes that collection
|
|
48
|
-
- If both target the same `COLLECTION` ID: **conflict** — same products affected
|
|
49
|
-
- If both target the same `SPECIFIC_PRODUCTS` ID: **conflict** — same product
|
|
50
|
-
|
|
51
|
-
3. If a conflict is found, warn the merchant:
|
|
52
|
-
> "There's already an active discount '{existingRuleName}' ({existingDiscount}%) that applies to the same products. Adding this new {newDiscount}% discount may stack, giving customers a combined discount. Would you like to deactivate the existing rule first, or proceed with both?"
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Check 2: Discount percentage sanity
|
|
57
|
-
|
|
58
|
-
**Why:** A discount above 50% is unusual and may indicate a typo (the merchant meant 15% not 50%). A discount of 100% makes the product free.
|
|
59
|
-
|
|
60
|
-
**Rules:**
|
|
61
|
-
- Discount > 50%: Warn — "This discount is {percentage}% off. Are you sure? This means a $100 product would sell for ${100 - percentage}."
|
|
62
|
-
- Discount = 100%: Block unless explicitly confirmed — "This would make the product free. Please confirm this is intentional."
|
|
63
|
-
- Discount > 100%: Block — "A discount cannot exceed 100%."
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## Check 3: Time overlap with existing promotions
|
|
68
|
-
|
|
69
|
-
**Why:** Two promotions running simultaneously on overlapping products cause stacking during the overlap period.
|
|
70
|
-
|
|
71
|
-
**How to check:**
|
|
72
|
-
|
|
73
|
-
1. For the new rule's `activeTimeInfo` (start/end), check if any existing active rule has an overlapping time window on the same scope.
|
|
74
|
-
2. Overlap exists when: `existingStart < newEnd AND existingEnd > newStart`
|
|
75
|
-
3. If overlap found on the same scope: warn the merchant about the overlap period.
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Check 4: Cross-mechanism stacking (Automatic + Coupon)
|
|
80
|
-
|
|
81
|
-
**Why:** Automatic discounts and coupons stack with each other at checkout. A customer with a 20% coupon buying during a 20% automatic sale gets both applied — the effective discount is much deeper than either one alone. This is the most commonly overlooked stacking issue.
|
|
82
|
-
|
|
83
|
-
**How to check:**
|
|
84
|
-
|
|
85
|
-
1. If you are creating an **automatic discount**: Query active coupons that target overlapping products/collections.
|
|
86
|
-
2. If you are creating a **coupon**: Query active automatic discount rules that target overlapping products/collections.
|
|
87
|
-
3. If overlap found, warn the merchant with the combined impact:
|
|
88
|
-
> "You have an active {automatic discount / coupon} '{name}' ({X}% off) that applies to the same products. If you create this {coupon / automatic discount}, customers will get BOTH discounts — a combined effective discount of approximately {combined}%. Is this intentional?"
|
|
89
|
-
|
|
90
|
-
**Key rule:** Only one coupon can be used per checkout, but automatic discounts have no such limit. The worst case is: multiple automatic discounts + one coupon all stacking on the same product.
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## Check 5: Minimum profit margin
|
|
95
|
-
|
|
96
|
-
**Why:** Deep discounts on low-margin products can result in selling at a loss.
|
|
97
|
-
|
|
98
|
-
**Rules:**
|
|
99
|
-
- If the merchant has provided cost/margin information, verify that the discount doesn't reduce the price below cost
|
|
100
|
-
- If no cost information is available, warn for discounts > 40% as a general safety threshold
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Summary: Decision matrix
|
|
105
|
-
|
|
106
|
-
| Scenario | Action |
|
|
107
|
-
|---|---|
|
|
108
|
-
| No conflicts found | Proceed with creating the discount |
|
|
109
|
-
| Scope overlap with existing active automatic discount | Warn merchant, ask to deactivate existing or confirm stacking |
|
|
110
|
-
| Cross-mechanism stacking (automatic + coupon on same scope) | Warn merchant with combined effective discount percentage |
|
|
111
|
-
| Discount > 50% | Warn merchant, ask for confirmation |
|
|
112
|
-
| Discount = 100% | Block unless explicitly confirmed |
|
|
113
|
-
| Time overlap on same scope | Warn about overlap period |
|
|
114
|
-
|
|
115
|
-
## References
|
|
116
|
-
|
|
117
|
-
- [Discount Rules API (Automatic Discounts)](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/discounts/discount-rules/introduction)
|
|
118
|
-
- [Coupons API](https://dev.wix.com/docs/api-reference/business-solutions/coupons/coupons/introduction)
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Guardrail: Margin Protection"
|
|
3
|
-
description: Safety constraints for discount percentages — global discount cap, minimum margin requirements, user override protocol, and percentage sanity checks.
|
|
4
|
-
layer: guardrail
|
|
5
|
-
---
|
|
6
|
-
# Guardrail: Margin Protection
|
|
7
|
-
|
|
8
|
-
## When to apply
|
|
9
|
-
|
|
10
|
-
Run before EVERY discount rule creation or update. Check both the new rule's discount AND the cumulative effect with existing active rules (stacking).
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Constraint 1: Global discount cap
|
|
15
|
-
|
|
16
|
-
The default maximum discount percentage (`discountMargin`) is **25%**.
|
|
17
|
-
|
|
18
|
-
Any discount rule that exceeds this cap should be flagged before creation:
|
|
19
|
-
|
|
20
|
-
> "This discount ({pct}%) exceeds the default cap of 25%. Proceeding only because you explicitly requested it."
|
|
21
|
-
|
|
22
|
-
Respect the cap unless user input explicitly overrides it.
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Constraint 2: Minimum margin requirement
|
|
27
|
-
|
|
28
|
-
The default minimum margin percentage (`minMarginPct`) is **15%**.
|
|
29
|
-
|
|
30
|
-
Never create a discount that would push the effective margin below 15% unless the user explicitly overrides this constraint.
|
|
31
|
-
|
|
32
|
-
If cost data is available, calculate:
|
|
33
|
-
- `effective_margin = (price - cost - discount_amount) / price × 100`
|
|
34
|
-
- If `effective_margin < minMarginPct` → block and explain the margin impact.
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Constraint 3: Percentage sanity checks
|
|
39
|
-
|
|
40
|
-
| Discount value | Action |
|
|
41
|
-
|---|---|
|
|
42
|
-
| Discount > 50% | Warn — "This discount is {pct}% off. A $100 product would sell for ${100 - pct}. Are you sure?" |
|
|
43
|
-
| Discount = 100% | Block unless explicitly confirmed — "This makes the product free." |
|
|
44
|
-
| Discount > 100% | Block always — "A discount cannot exceed 100%." |
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Constraint 4: User input override protocol (ABSOLUTE PRIORITY)
|
|
49
|
-
|
|
50
|
-
User input overrides ALL constraints — margin caps, discount caps, naming conventions, percentage limits.
|
|
51
|
-
|
|
52
|
-
**How it works:**
|
|
53
|
-
|
|
54
|
-
- If the user says "50% discount" and the cap is 25%, honor 50%.
|
|
55
|
-
- If the user says "set margin to 5%" and the minimum is 15%, honor 5%.
|
|
56
|
-
- Document which constraints were overridden in reasoning so there is a clear audit trail.
|
|
57
|
-
|
|
58
|
-
**Example reasoning output:**
|
|
59
|
-
|
|
60
|
-
> "Creating a 50% discount as requested. Note: this overrides the default 25% discount cap. The effective margin on a product with 60% gross margin would drop to 10%, below the default 15% minimum margin threshold. Proceeding per explicit user instruction."
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## Constraint 5: Stacking cumulative check
|
|
65
|
-
|
|
66
|
-
When creating a new discount, also check the cumulative effect with existing active rules:
|
|
67
|
-
|
|
68
|
-
1. Query all active discount rules that overlap in scope with the new rule.
|
|
69
|
-
2. Calculate the combined discount percentage (accounting for multiplicative stacking).
|
|
70
|
-
3. If the combined discount exceeds the global cap or violates the minimum margin, warn the merchant:
|
|
71
|
-
|
|
72
|
-
> "Combined with the existing '{existingRuleName}' ({existingPct}%), the total effective discount would be approximately {combinedPct}%. This exceeds the {cap}% cap / pushes margin below {minMarginPct}%."
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Summary: Decision matrix
|
|
77
|
-
|
|
78
|
-
| Scenario | Action |
|
|
79
|
-
|---|---|
|
|
80
|
-
| Discount ≤ 25% and margin ≥ 15% | Proceed |
|
|
81
|
-
| Discount > 25% but ≤ 50%, no user override | Warn, ask for confirmation |
|
|
82
|
-
| Discount > 25%, user explicitly requested | Proceed, document override |
|
|
83
|
-
| Discount > 50% | Warn with dollar example, ask for confirmation |
|
|
84
|
-
| Discount = 100% | Block unless explicitly confirmed |
|
|
85
|
-
| Discount > 100% | Block always |
|
|
86
|
-
| Combined stacking exceeds cap | Warn about cumulative effect |
|
|
87
|
-
| Margin drops below 15%, no user override | Block, explain margin impact |
|
|
88
|
-
| Margin drops below 15%, user override | Proceed, document override |
|
|
@@ -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 |
|