What this audit checks
Authentication & access
- OAuth access token present and not revoked (a 401 from /profile means re-grant needed)
- Store ID resolved and substituted into every /api/v3// path
- Granted scopes cover read_catalog, read_orders, read_customers, read_store_profile
- Each connected storefront surface has its own valid per-store grant (multi-store merchants)
Catalogue & inventory health
- Out-of-stock products still enabled and visible across surfaces
- Products on unlimited-stock flag where physical stock should be tracked
- Missing or duplicate SKUs that break marketplace and sibling parity joins
- Zero-priced or disabled products leaking into a live storefront surface
- Multi-storefront inventory drift - same SKU shows divergent stock across embed vs Instant Site vs social shops
Order & fulfilment health
- Orders stuck in AWAITING_PAYMENT longer than 24h (gateway or customer dropoff)
- AWAITING_PROCESSING backlog above 2x the 30-day average
- Average fulfilment time within the merchant’s service-level target
- Channel-specific order drop - one surface stops producing orders while others continue
- Cancellation rate trending above the acceptable band
Customer & retention
- Repeat-customer rate below the retention floor for the merchant’s tier
- High guest-checkout share suppressing email reach for re-engagement
- High-value customers (top spenders) with no order in the last 90 days
- Registered-customer growth flat or negative across the period
Payments & refunds
- Refund rate above the acceptable band on a 30-day window
- Partially-refunded orders concentrated on a single SKU or surface
- Refund value as a share of gross revenue trending up vsP
- Refund-to-fulfilment correlation - refunds spiking alongside late or failed shipments
Cross-channel: revenue at risk
- Ecwid SKUs out of stock while the same SKU is active on a marketplace sibling (amazon / ebay / walmart_marketplace)
- Order revenue unattributed despite an active email-marketing sibling (mailchimp / klaviyo)
- Top-spending customers unengaged in the email sibling for 90 days
- Top-velocity SKUs receiving a disproportionately low share of ad spend (google_ads / facebook_ads)
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
refund_rate | 5 | 10 |
cancellation_rate | 3 | 6 |
conversion_rate | 1.5 | - |
out_of_stock_count | 5 | 20 |
fulfillment_rate | 95 | - |
Data sources
GET https://app.ecwid.com/api/v3/{storeId}/profile- Store profile, plan, enabled surfaces, token validityGET https://app.ecwid.com/api/v3/{storeId}/products- Catalogue, SKUs, price, enabled, in_stock, quantity, unlimited flagGET https://app.ecwid.com/api/v3/{storeId}/categories- Category assignment for uncategorised-product checksGET https://app.ecwid.com/api/v3/{storeId}/orders- Order history, paymentStatus, fulfillmentStatus, storefrontId, totalsGET https://app.ecwid.com/api/v3/{storeId}/customers- Customer base, registered flag, totalOrderCount, totalPaymentsGET https://app.ecwid.com/api/v3/{storeId}/discount_coupons- Active discount coupons for discount-dependency context