What this audit checks
Authentication & access
- OAuth2 access token (shop_id.access_token) valid and not expired (1h lifetime)
- Refresh token present and rotated on last use (Etsy invalidates on second use)
- x-api-key keystring set and accepted on /v3/application/shops/
- Required scopes granted: listings_r, listings_w, shops_r, transactions_r, email_r
Account health & policy compliance
- Star Seller status held (review_average >= 4.8 over rolling 90d)
- On-time shipping rate >= 95% (Star Seller threshold) from receipts shipped vs estimated_ship_date
- Message response rate within 24h not breached more than once in 30d
- Shop not in is_vacation mode while listings are active
Listing quality & suppression
- Active listings not suspended for handmade-policy, prohibited-material, or trademark complaints
- Titles >= 70 chars with primary search terms (not brand-only repetition)
- All 13 tag slots used and category-required attributes complete
- Listings approaching 4-month expiry flagged for renew vs lapse decision
Buy Box / featured-offer
- Listings eligible for Etsy search page-1 placement (no rank drop to page 3+ on high-velocity terms)
- Etsy Ads spend not cannibalising organic earnings (ROAS net of natural-organic counterfactual)
- Views to favourites conversion >= 2% (soft-signal of competitive offer)
Order defect & feedback
- Cancellation rate <= 3% across receipts in 30d
- Return rate <= 5% across receipts in 30d
- Average review rating (ShopReview.rating) >= 4.8 with no recent negative cluster
- No orders past estimated_ship_date risking on-time-ship KPI
Cross-channel inventory & pricing parity
- Active Etsy listing not pointing to a SKU that is OOS on BigCommerce (cancellation risk)
- Etsy listing title/price not drifting from BC source-of-truth by > 5%
- Same item priced within 15% across Etsy vs eBay / Depop on title_hash
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
buy_box_win_rate | - | < 0.40 |
defect_rate | - | > 0.05 |
feedback_score | - | < 4.6 |
listing_suppressed_pct | - | > 0.10 |
account_health_score | - | < 60 |
Data sources
POST https://api.etsy.com/v3/public/oauth/token- OAuth token exchange + refresh-token rotationGET https://api.etsy.com/v3/application/shops/{shop_id}- Shop health, Star Seller status, review average + countGET https://api.etsy.com/v3/application/shops/{shop_id}/listings/active- Active listings: title/tag/attribute completeness, expiry, state, viewsGET https://api.etsy.com/v3/application/shops/{shop_id}/receipts- Orders: ship status, estimated_ship_date, cancellation/return signalsGET https://api.etsy.com/v3/application/shops/{shop_id}/reviews- Per-transaction ratings for feedback-score and defect clustering