@veyralabs/skills 0.3.0 → 0.4.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/commands/shopify-dev.md +3 -0
- package/commands/shopify-store.md +3 -0
- package/package.json +7 -2
- package/skills/shopify-suite/shopify-dev/SKILL.md +409 -0
- package/skills/shopify-suite/shopify-dev/references/app-architecture.md +322 -0
- package/skills/shopify-suite/shopify-dev/references/cli-workflows.md +257 -0
- package/skills/shopify-suite/shopify-dev/references/graphql-queries.md +298 -0
- package/skills/shopify-suite/shopify-dev/references/liquid-patterns.md +286 -0
- package/skills/shopify-suite/shopify-store/SKILL.md +283 -0
- package/skills/shopify-suite/shopify-store/references/app-stack.md +175 -0
- package/skills/shopify-suite/shopify-store/references/audit-framework.md +206 -0
- package/skills/shopify-suite/shopify-store/references/mcp-queries.md +216 -0
- package/skills/shopify-suite/shopify-store/references/product-optimization.md +266 -0
- package/skills/shopify-suite/shopify-store/references/seo-shopify.md +165 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shopify-store
|
|
3
|
+
description: >
|
|
4
|
+
Shopify Store Auditor. Activate when a user wants to improve, audit, or optimize a Shopify store.
|
|
5
|
+
Triggers on: "audit my Shopify store", "why are my conversions low", "improve my product pages",
|
|
6
|
+
"Shopify SEO", "store is slow", "which apps should I remove", "improve my collections",
|
|
7
|
+
"my checkout has high abandonment", "Shopify analytics", "increase sales".
|
|
8
|
+
Works in two modes: with Shopify MCP connected (real store data) or with a public URL (Scrapling extraction).
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Shopify Store Auditor
|
|
12
|
+
|
|
13
|
+
You are a Shopify ecommerce specialist. You audit stores, identify conversion blockers, fix SEO issues, optimize product pages, and improve store architecture. You work with real data when possible — not generic checklists.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Mode Detection (run first)
|
|
18
|
+
|
|
19
|
+
Check if Shopify MCP is available by attempting to list products:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Try: list_products (limit: 1) via shopify-mcp
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**If MCP responds → Mode A (connected)**
|
|
26
|
+
**If MCP fails or is not configured → Mode B (public extraction)**
|
|
27
|
+
|
|
28
|
+
Ask the user which mode they're in if unclear. For Mode B, ask for the store URL.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Mode A — MCP Connected
|
|
33
|
+
|
|
34
|
+
With `shopify-mcp` configured, you have access to real store data. Run the full audit pipeline.
|
|
35
|
+
|
|
36
|
+
**Setup required (user must do once):**
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"mcpServers": {
|
|
40
|
+
"shopify": {
|
|
41
|
+
"command": "npx",
|
|
42
|
+
"args": ["shopify-mcp", "--clientId", "YOUR_CLIENT_ID",
|
|
43
|
+
"--clientSecret", "YOUR_CLIENT_SECRET",
|
|
44
|
+
"--domain", "YOUR_STORE.myshopify.com"]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Phase A1 — Data Collection
|
|
51
|
+
|
|
52
|
+
Run these in sequence. Each informs the next phase:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
1. get_products (first: 250)
|
|
56
|
+
→ count total, check titles, meta descriptions, image alt texts
|
|
57
|
+
|
|
58
|
+
2. get_collections (first: 100)
|
|
59
|
+
→ check structure, naming, nesting depth
|
|
60
|
+
|
|
61
|
+
3. get_navigation (menus)
|
|
62
|
+
→ header/footer structure, depth, orphan collections
|
|
63
|
+
|
|
64
|
+
4. get_metafields (for top 20 products by revenue)
|
|
65
|
+
→ SEO metafields populated vs missing
|
|
66
|
+
|
|
67
|
+
5. get_orders (last 90 days)
|
|
68
|
+
→ conversion signals, AOV, repeat purchase rate
|
|
69
|
+
|
|
70
|
+
6. get_installed_apps
|
|
71
|
+
→ identify speed killers, redundant apps
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
See `references/mcp-queries.md` for exact GraphQL queries.
|
|
75
|
+
|
|
76
|
+
### Phase A2 — Audit Dimensions
|
|
77
|
+
|
|
78
|
+
Run through each dimension with real data. Score each 1-10:
|
|
79
|
+
|
|
80
|
+
**1. Product Catalog Health**
|
|
81
|
+
- Title formula: `[Brand] [Product Name] [Key Attribute] — [Size/Color if variant]`
|
|
82
|
+
- Missing descriptions (< 100 chars = empty)
|
|
83
|
+
- Images: count, alt texts populated, aspect ratio consistency
|
|
84
|
+
- Variants: proper naming (not "Default Title"), complete option values
|
|
85
|
+
|
|
86
|
+
**2. Collection Architecture**
|
|
87
|
+
- Max recommended depth: 2 levels (Collections → Sub-collections)
|
|
88
|
+
- Each product in at least 1 collection (orphans = invisible)
|
|
89
|
+
- Overlap score: products appearing in > 3 collections = confusing hierarchy
|
|
90
|
+
- Smart collection conditions — are they actually filtering correctly?
|
|
91
|
+
|
|
92
|
+
**3. Navigation Structure**
|
|
93
|
+
- Header: max 7 primary items, max 2 levels deep
|
|
94
|
+
- All collections reachable within 2 clicks from homepage
|
|
95
|
+
- Footer: customer service links present (Returns, Contact, FAQ)
|
|
96
|
+
|
|
97
|
+
**4. SEO**
|
|
98
|
+
See `references/seo-shopify.md` for full Shopify-specific SEO checklist.
|
|
99
|
+
- Meta titles: 50-60 chars, include primary keyword
|
|
100
|
+
- Meta descriptions: 120-160 chars, every product and collection
|
|
101
|
+
- Canonical tags: Shopify auto-generates but check for overrides
|
|
102
|
+
- Structured data: Product schema on product pages
|
|
103
|
+
|
|
104
|
+
**5. App Stack**
|
|
105
|
+
See `references/app-stack.md` for app impact scoring.
|
|
106
|
+
- Each app adds ~50-200ms to load time
|
|
107
|
+
- Flag: > 8 apps = likely bloated
|
|
108
|
+
- Check for: duplicate functionality (2 review apps, 2 email apps)
|
|
109
|
+
- Check for: abandoned apps (last updated > 18 months)
|
|
110
|
+
|
|
111
|
+
**6. Conversion Signals**
|
|
112
|
+
- Trust: reviews visible on product pages?
|
|
113
|
+
- Urgency: inventory count shown when low stock?
|
|
114
|
+
- Social proof: recently purchased / bestseller badges?
|
|
115
|
+
- Shipping: delivery estimate visible before checkout?
|
|
116
|
+
- Return policy: visible on product pages?
|
|
117
|
+
|
|
118
|
+
### Phase A3 — Output Format
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
# Store Audit — [Store Name]
|
|
122
|
+
Date: [date]
|
|
123
|
+
Mode: MCP Connected
|
|
124
|
+
|
|
125
|
+
## Summary Scores
|
|
126
|
+
| Dimension | Score | Priority |
|
|
127
|
+
|-----------|-------|----------|
|
|
128
|
+
| Product Catalog | /10 | HIGH/MED/LOW |
|
|
129
|
+
| Collection Architecture | /10 | |
|
|
130
|
+
| Navigation | /10 | |
|
|
131
|
+
| SEO | /10 | |
|
|
132
|
+
| App Stack | /10 | |
|
|
133
|
+
| Conversion Signals | /10 | |
|
|
134
|
+
|
|
135
|
+
## Critical Issues (fix first)
|
|
136
|
+
[Issues scoring < 5 — specific items with data]
|
|
137
|
+
|
|
138
|
+
## Quick Wins (< 1 hour each)
|
|
139
|
+
[Issues that are fast to fix and high impact]
|
|
140
|
+
|
|
141
|
+
## Detailed Findings
|
|
142
|
+
[Per dimension — specific products/collections/pages with exact issues]
|
|
143
|
+
|
|
144
|
+
## Recommended Action Order
|
|
145
|
+
1. [Most impactful fix]
|
|
146
|
+
2. ...
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Mode B — No MCP (Scrapling Extraction)
|
|
152
|
+
|
|
153
|
+
When MCP is not available, extract what's publicly visible.
|
|
154
|
+
|
|
155
|
+
### Phase B1 — Site Extraction
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
python scripts/extract.py <store-url> --output docs/store-manifest.json
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
This extracts: navigation structure, loaded scripts (app detection), product page structure, meta tags, structured data, canonical URLs, page speed signals.
|
|
162
|
+
|
|
163
|
+
### Phase B2 — Script-Based App Detection
|
|
164
|
+
|
|
165
|
+
From `manifest.techStack` and loaded scripts, identify installed apps:
|
|
166
|
+
|
|
167
|
+
| Script pattern | App detected |
|
|
168
|
+
|---------------|-------------|
|
|
169
|
+
| `klaviyo.com/onsite/js` | Klaviyo (email/SMS) |
|
|
170
|
+
| `cdn.judge.me` | Judge.me (reviews) |
|
|
171
|
+
| `staticw2.yotpo.com` | Yotpo (reviews/loyalty) |
|
|
172
|
+
| `rechargecdn.com` | ReCharge (subscriptions) |
|
|
173
|
+
| `loox.io` | Loox (photo reviews) |
|
|
174
|
+
| `gorgias.io` | Gorgias (support) |
|
|
175
|
+
| `tidio.co` | Tidio (chat) |
|
|
176
|
+
| `stamped.io` | Stamped (reviews) |
|
|
177
|
+
| `privy.com` | Privy (popups) |
|
|
178
|
+
| `omnisend.com` | Omnisend (email) |
|
|
179
|
+
| `pagefly.io` | PageFly (page builder) |
|
|
180
|
+
| `gem.app` | GemPages (page builder) |
|
|
181
|
+
|
|
182
|
+
Flag: > 2 review apps = redundant. > 1 page builder = conflict risk.
|
|
183
|
+
|
|
184
|
+
### Phase B3 — Guided Questions
|
|
185
|
+
|
|
186
|
+
For data not extractable from public pages:
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
1. What is your current conversion rate? (avg Shopify: 1.4%)
|
|
190
|
+
2. What is your top traffic source? (organic/paid/social/direct)
|
|
191
|
+
3. What is your average order value?
|
|
192
|
+
4. What is your cart abandonment rate? (avg: 70%)
|
|
193
|
+
5. What products are your top sellers?
|
|
194
|
+
6. Do you have Google Analytics / GA4 connected?
|
|
195
|
+
7. What is your main marketing channel?
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Phase B4 — SEO Public Audit
|
|
199
|
+
|
|
200
|
+
Check from extracted manifest:
|
|
201
|
+
- `<title>` tags on product pages — present and under 60 chars?
|
|
202
|
+
- `<meta name="description">` — populated?
|
|
203
|
+
- Canonical tags — no duplicate content signals?
|
|
204
|
+
- `application/ld+json` — Product structured data present?
|
|
205
|
+
- `hreflang` — if selling in multiple languages
|
|
206
|
+
- Paginated collections — `/collections/all?page=2` canonical handling
|
|
207
|
+
|
|
208
|
+
### Phase B5 — Output Format
|
|
209
|
+
|
|
210
|
+
Same format as Mode A, but with a note on data confidence:
|
|
211
|
+
```
|
|
212
|
+
⚠️ Mode: Public extraction only — findings based on visible storefront.
|
|
213
|
+
Connect shopify-mcp for full catalog, order, and app audit.
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Specific Audit Types
|
|
219
|
+
|
|
220
|
+
### Speed Audit
|
|
221
|
+
|
|
222
|
+
Focus questions:
|
|
223
|
+
- How many apps installed? (each = 50-200ms)
|
|
224
|
+
- Are images on CDN? (Shopify CDN is automatic for uploaded images)
|
|
225
|
+
- Any render-blocking scripts in theme?
|
|
226
|
+
- Page builders installed? (PageFly, GemPages add 400-800ms)
|
|
227
|
+
|
|
228
|
+
Tool: Google PageSpeed on homepage + a product page + collection page.
|
|
229
|
+
Target: > 50 mobile score. Below 30 = critical.
|
|
230
|
+
|
|
231
|
+
### SEO Audit
|
|
232
|
+
|
|
233
|
+
See `references/seo-shopify.md` for Shopify-specific issues:
|
|
234
|
+
- Canonical tag conflicts from `/collections/` + `/products/` dual URLs
|
|
235
|
+
- Tag pages (`/collections/all/tag`) getting indexed
|
|
236
|
+
- Variant URLs creating duplicate content
|
|
237
|
+
- Pagination: `?page=2` vs. infinite scroll SEO implications
|
|
238
|
+
|
|
239
|
+
### Conversion Rate Audit
|
|
240
|
+
|
|
241
|
+
Focus on the funnel:
|
|
242
|
+
```
|
|
243
|
+
Homepage → Collection → Product → Cart → Checkout
|
|
244
|
+
```
|
|
245
|
+
For each step: what's the drop-off? What's missing that would build confidence?
|
|
246
|
+
|
|
247
|
+
Common CRO fixes:
|
|
248
|
+
- Product pages: no reviews visible above the fold
|
|
249
|
+
- Cart: no shipping estimate before checkout
|
|
250
|
+
- Checkout: no trust badges (SSL, payment icons)
|
|
251
|
+
- Mobile: add-to-cart button below the fold
|
|
252
|
+
|
|
253
|
+
### App Stack Audit
|
|
254
|
+
|
|
255
|
+
See `references/app-stack.md` for full scoring.
|
|
256
|
+
Output: list of apps with estimated load impact, recommendation (keep/remove/replace).
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Analytics Interpretation
|
|
261
|
+
|
|
262
|
+
If the user has GA4 connected and shares data:
|
|
263
|
+
|
|
264
|
+
**Metrics that matter:**
|
|
265
|
+
- Conversion rate: < 1% = critical, 1-3% = average, > 3% = good
|
|
266
|
+
- Cart abandonment: > 75% = fix checkout friction
|
|
267
|
+
- Bounce rate on product pages: > 60% = content or trust problem
|
|
268
|
+
- Mobile vs desktop conversion gap: > 2x = mobile UX issue
|
|
269
|
+
- Top exit pages: collection pages = navigation problem; product pages = trust/info problem
|
|
270
|
+
|
|
271
|
+
**Metrics that don't matter (without context):**
|
|
272
|
+
- Raw traffic (need conversion rate)
|
|
273
|
+
- Page views (need session duration + bounce)
|
|
274
|
+
- Social followers (need click-through rate)
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
Reference files:
|
|
279
|
+
- `references/audit-framework.md` — full dimension checklists
|
|
280
|
+
- `references/seo-shopify.md` — Shopify-specific SEO issues
|
|
281
|
+
- `references/product-optimization.md` — title/description formulas, image standards
|
|
282
|
+
- `references/app-stack.md` — app impact scoring and recommendations
|
|
283
|
+
- `references/mcp-queries.md` — GraphQL queries for MCP mode
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# App Stack — shopify-store Reference
|
|
2
|
+
|
|
3
|
+
App impact scoring, recommendations, and common app combinations for Shopify stores.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Load Impact by Category
|
|
8
|
+
|
|
9
|
+
Each installed app runs JavaScript on storefront pages. Impact ranges from negligible to store-breaking.
|
|
10
|
+
|
|
11
|
+
| Category | Typical load impact | Notes |
|
|
12
|
+
|----------|--------------------| ------|
|
|
13
|
+
| Page builders (PageFly, GemPages, Shogun) | 400-800ms | Worst offenders — use only for specific pages |
|
|
14
|
+
| Upsell popups (Honeycomb, CartHook) | 300-500ms | Heavy cart manipulation |
|
|
15
|
+
| Live chat (Tidio, Gorgias, Intercom) | 200-400ms | Loads on every page |
|
|
16
|
+
| Loyalty / rewards (Yotpo, Smile.io) | 200-400ms | Loads even for non-members |
|
|
17
|
+
| Review apps (Judge.me, Loox, Yotpo) | 100-300ms | Load review widget on product pages |
|
|
18
|
+
| Email popups (Privy, OptiMonk, Wisepops) | 100-200ms | Often loads before first paint |
|
|
19
|
+
| Subscription (ReCharge, Bold) | 100-200ms | Modifies product page JS |
|
|
20
|
+
| Analytics (GA4, Klaviyo, Triple Whale) | 50-150ms | Pixels — minimize but unavoidable |
|
|
21
|
+
| SEO apps (SEO Manager, Plug in SEO) | 10-50ms | Mostly server-side |
|
|
22
|
+
| Inventory / shipping (ShipStation) | 0-50ms | Server-side only |
|
|
23
|
+
|
|
24
|
+
Rule: every app after the first 8 adds compounding load. With 15+ apps, mobile PageSpeed often drops below 30.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Must-Have vs Nice-to-Have
|
|
29
|
+
|
|
30
|
+
### Must-have (most stores need these)
|
|
31
|
+
|
|
32
|
+
| Function | Recommended app | Free tier? |
|
|
33
|
+
|----------|----------------|-----------|
|
|
34
|
+
| Reviews | Judge.me | Yes — generous free plan |
|
|
35
|
+
| Email marketing | Klaviyo | Yes — up to 500 contacts |
|
|
36
|
+
| Live chat / support | Gorgias | No — starts ~€10/month |
|
|
37
|
+
| Abandoned cart recovery | Built into Klaviyo | — |
|
|
38
|
+
| Analytics | GA4 (native) | Free |
|
|
39
|
+
|
|
40
|
+
### Situational (only if you need the function)
|
|
41
|
+
|
|
42
|
+
| Function | App | When to use |
|
|
43
|
+
|----------|-----|------------|
|
|
44
|
+
| Subscriptions | ReCharge or Bold | Only if you sell subscription products |
|
|
45
|
+
| Loyalty program | Smile.io | Only if repeat purchase rate > 30% |
|
|
46
|
+
| Upsells in cart | CartHook or Rebuy | Only if AOV is a primary focus |
|
|
47
|
+
| Bundles | Bundler or Bold Bundles | Only if bundles are a core strategy |
|
|
48
|
+
| Wishlists | Wishlist Plus | Only if you have returning customers |
|
|
49
|
+
| Size guide | Kiwi Size Chart | Only if apparel with complex sizing |
|
|
50
|
+
|
|
51
|
+
### Avoid (or replace)
|
|
52
|
+
|
|
53
|
+
| Category | Problem | Alternative |
|
|
54
|
+
|----------|---------|------------|
|
|
55
|
+
| Page builders for all pages | Destroys performance, hard to maintain | Use only for landing pages |
|
|
56
|
+
| Multiple review apps | Duplicate reviews, social proof split | Pick one |
|
|
57
|
+
| Multiple email apps | Contacts split, conflicting automations | Pick one |
|
|
58
|
+
| SEO apps that modify canonicals | Can break Shopify's canonical logic | Remove — Shopify handles this |
|
|
59
|
+
| Instagram feed apps | Embed kills performance | Use manual or theme built-in |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Common App Stack Profiles
|
|
64
|
+
|
|
65
|
+
### Small direct-to-consumer (< 500 orders/month)
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Reviews: Judge.me (free)
|
|
69
|
+
Email: Klaviyo (free up to 500 contacts)
|
|
70
|
+
Analytics: GA4 (free)
|
|
71
|
+
Shipping label: ShipStation or Sendcloud
|
|
72
|
+
Total apps: 4
|
|
73
|
+
Monthly cost: ~€0-50
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Growing DTC (500-5000 orders/month)
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Reviews: Judge.me (paid) or Okendo
|
|
80
|
+
Email/SMS: Klaviyo
|
|
81
|
+
Support: Gorgias
|
|
82
|
+
Subscriptions: ReCharge (if applicable)
|
|
83
|
+
Upsell: Rebuy or CartHook (one only)
|
|
84
|
+
Analytics: GA4 + Triple Whale
|
|
85
|
+
Shipping: ShipStation or EasyShip
|
|
86
|
+
Total apps: 6-8
|
|
87
|
+
Monthly cost: ~€200-500
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### High-volume (5000+ orders/month)
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Reviews: Okendo or Stamped
|
|
94
|
+
Email: Klaviyo
|
|
95
|
+
SMS: Attentive or Postscript (dedicated — not Klaviyo SMS)
|
|
96
|
+
Support: Gorgias (full team)
|
|
97
|
+
Loyalty: Yotpo or Smile.io (if retention strategy active)
|
|
98
|
+
Subscriptions: ReCharge or Skio
|
|
99
|
+
Analytics: Triple Whale + GA4
|
|
100
|
+
Upsell: Rebuy (full suite)
|
|
101
|
+
Returns: Loop Returns
|
|
102
|
+
Total apps: 9-11
|
|
103
|
+
Monthly cost: ~€1000-3000
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## App Conflict Patterns
|
|
109
|
+
|
|
110
|
+
### Review app conflicts
|
|
111
|
+
|
|
112
|
+
Having both Judge.me and Yotpo (or any two review apps) causes:
|
|
113
|
+
- Schema structured data duplication (two `aggregateRating` blocks)
|
|
114
|
+
- Review import/sync conflicts
|
|
115
|
+
- Double review request emails to customers
|
|
116
|
+
|
|
117
|
+
Fix: pick one, import reviews from the other, uninstall duplicate.
|
|
118
|
+
|
|
119
|
+
### Page builder + theme editor conflict
|
|
120
|
+
|
|
121
|
+
PageFly / GemPages build pages using their own block structure. If the same page also has sections in theme editor, conflicts occur:
|
|
122
|
+
- Duplicate content sections
|
|
123
|
+
- Theme editor shows blank preview
|
|
124
|
+
- Inconsistent rendering on mobile
|
|
125
|
+
|
|
126
|
+
Fix: page builder pages should be built entirely in the builder. Don't mix.
|
|
127
|
+
|
|
128
|
+
### Email platform conflicts
|
|
129
|
+
|
|
130
|
+
Klaviyo + Omnisend on the same store = contacts getting double emails, confusing data.
|
|
131
|
+
Fix: pick one, migrate flows, uninstall the other.
|
|
132
|
+
|
|
133
|
+
### Multiple pixel apps
|
|
134
|
+
|
|
135
|
+
GA4 + Klaviyo + Triple Whale + Facebook Pixel all loading independently vs using a centralized pixel manager:
|
|
136
|
+
- Duplicate pageview/purchase events
|
|
137
|
+
- Attribution data conflicts
|
|
138
|
+
|
|
139
|
+
Fix: use one source of truth for attribution (Triple Whale or Northbeam for paid), let GA4 be independent.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## App Audit Output Format
|
|
144
|
+
|
|
145
|
+
When reporting app stack findings:
|
|
146
|
+
|
|
147
|
+
```markdown
|
|
148
|
+
## App Stack Audit
|
|
149
|
+
|
|
150
|
+
Total apps installed: X
|
|
151
|
+
Estimated total load impact: ~XXXms
|
|
152
|
+
|
|
153
|
+
### High Impact (remove or investigate)
|
|
154
|
+
| App | Impact | Recommendation |
|
|
155
|
+
|-----|--------|---------------|
|
|
156
|
+
| PageFly | ~600ms | Remove from non-landing pages. Keep for campaign pages only |
|
|
157
|
+
| Tidio | ~350ms | Replace with Gorgias if support volume justifies cost, else remove |
|
|
158
|
+
|
|
159
|
+
### Redundant Apps
|
|
160
|
+
- Judge.me + Loox: both review apps. Remove Loox, consolidate on Judge.me.
|
|
161
|
+
|
|
162
|
+
### Low Usage / Abandoned
|
|
163
|
+
- [App Name]: last updated 2022, no recent activity in Shopify App Store
|
|
164
|
+
|
|
165
|
+
### Keep
|
|
166
|
+
| App | Impact | Why |
|
|
167
|
+
|-----|--------|-----|
|
|
168
|
+
| Klaviyo | ~100ms | Core email marketing — high ROI |
|
|
169
|
+
| GA4 | ~50ms | Essential analytics |
|
|
170
|
+
| Judge.me | ~150ms | Reviews driving conversion |
|
|
171
|
+
|
|
172
|
+
### Estimated savings if recommendations applied
|
|
173
|
+
Load time reduction: ~850ms
|
|
174
|
+
Monthly cost reduction: ~€XX
|
|
175
|
+
```
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Audit Framework — shopify-store Reference
|
|
2
|
+
|
|
3
|
+
Full checklists per audit dimension. Use in Phase A2 (MCP mode) or as guided questions in Mode B.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Dimension 1: Product Catalog Health
|
|
8
|
+
|
|
9
|
+
### Title quality
|
|
10
|
+
- [ ] Formula: `[Brand] [Product Name] [Key Attribute]` or `[Product Name] — [Key Attribute] | [Brand]`
|
|
11
|
+
- [ ] Length: 50-70 characters (optimal for search and Shopify search)
|
|
12
|
+
- [ ] No ALL CAPS titles
|
|
13
|
+
- [ ] Consistent naming convention across catalog
|
|
14
|
+
- [ ] Variant info NOT in title (use variant options instead)
|
|
15
|
+
|
|
16
|
+
### Description quality
|
|
17
|
+
- [ ] Minimum 100 characters (short = thin content signal)
|
|
18
|
+
- [ ] First 160 chars sellable (meta description often auto-pulled from here)
|
|
19
|
+
- [ ] Includes: material, dimensions/sizing, use case, care instructions
|
|
20
|
+
- [ ] No copy-paste manufacturer descriptions (duplicate content)
|
|
21
|
+
- [ ] HTML formatting: `<p>`, `<ul>`, `<strong>` — no inline styles
|
|
22
|
+
|
|
23
|
+
### Images
|
|
24
|
+
- [ ] At least 3 images per product (main, lifestyle, detail)
|
|
25
|
+
- [ ] Alt texts filled on all images
|
|
26
|
+
- [ ] Consistent aspect ratio across catalog (1:1 or 4:3 recommended)
|
|
27
|
+
- [ ] Main image: pure product on white/neutral background
|
|
28
|
+
- [ ] File names: descriptive, not `IMG_00123.jpg`
|
|
29
|
+
|
|
30
|
+
### Variants
|
|
31
|
+
- [ ] No "Default Title" variants (indicates single-variant product with unfilled options)
|
|
32
|
+
- [ ] Consistent option naming: "Color" not "Colour"/"color"
|
|
33
|
+
- [ ] All variants have prices set
|
|
34
|
+
- [ ] SKUs filled (important for inventory tracking + ads)
|
|
35
|
+
- [ ] Compare-at price set for discounted items
|
|
36
|
+
|
|
37
|
+
### Scoring guide
|
|
38
|
+
- 9-10: All titles/descriptions/images consistent, no gaps
|
|
39
|
+
- 7-8: Minor gaps (< 10% products missing something)
|
|
40
|
+
- 5-6: Noticeable gaps (10-30% products incomplete)
|
|
41
|
+
- 3-4: Systematic gaps (> 30% products missing descriptions or images)
|
|
42
|
+
- 1-2: Most products have placeholder titles/descriptions/no images
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Dimension 2: Collection Architecture
|
|
47
|
+
|
|
48
|
+
### Structure
|
|
49
|
+
- [ ] Maximum 2 levels deep (Collections → Sub-collections)
|
|
50
|
+
- [ ] Every product assigned to at least 1 collection
|
|
51
|
+
- [ ] No duplicate collections (e.g., "Shirts" and "All Shirts" serving same purpose)
|
|
52
|
+
- [ ] Clear naming: user should understand what's in collection from name alone
|
|
53
|
+
|
|
54
|
+
### Smart vs manual collections
|
|
55
|
+
- Smart collection: rule-based (product type, tag, vendor)
|
|
56
|
+
- Manual collection: hand-curated
|
|
57
|
+
|
|
58
|
+
Recommendation:
|
|
59
|
+
- Use smart for ongoing catalogs (auto-adds new products)
|
|
60
|
+
- Use manual for editorial/campaign collections (Homepage Feature, Seasonal Sale)
|
|
61
|
+
|
|
62
|
+
### Overlap check
|
|
63
|
+
- Product in > 3 collections = potential confusion
|
|
64
|
+
- Products in 0 collections = invisible from navigation (check orphans)
|
|
65
|
+
|
|
66
|
+
### Collection quality
|
|
67
|
+
- [ ] Each collection has description (good for SEO + context)
|
|
68
|
+
- [ ] Collection images set
|
|
69
|
+
- [ ] Sort order intentional (Best Selling or Manual, not default alphabetical)
|
|
70
|
+
- [ ] Smart collection rules actually filtering correctly (check product count vs expectation)
|
|
71
|
+
|
|
72
|
+
### Scoring guide
|
|
73
|
+
- 9-10: Clean 2-level hierarchy, all products assigned, no orphans
|
|
74
|
+
- 7-8: Minor orphans or 1-2 redundant collections
|
|
75
|
+
- 5-6: Flat or too-deep structure, some orphans
|
|
76
|
+
- 3-4: Poor structure, many orphans, confusing naming
|
|
77
|
+
- 1-2: No meaningful collection structure
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Dimension 3: Navigation
|
|
82
|
+
|
|
83
|
+
### Header navigation
|
|
84
|
+
- [ ] Max 7 primary navigation items (cognitive overload above 7)
|
|
85
|
+
- [ ] Max 2 levels deep in dropdown
|
|
86
|
+
- [ ] Hierarchy matches collection architecture
|
|
87
|
+
- [ ] All collections reachable from header or footer
|
|
88
|
+
- [ ] Search visible and functional (header placement preferred)
|
|
89
|
+
- [ ] Cart icon visible with item count
|
|
90
|
+
|
|
91
|
+
### Footer navigation
|
|
92
|
+
- [ ] Customer service links: Contact, Returns, FAQ, Shipping Policy
|
|
93
|
+
- [ ] Legal: Privacy Policy, Terms of Service, Cookie Policy
|
|
94
|
+
- [ ] Social media links (if active)
|
|
95
|
+
- [ ] Newsletter signup (if applicable)
|
|
96
|
+
|
|
97
|
+
### Mobile navigation
|
|
98
|
+
- [ ] Hamburger menu or equivalent
|
|
99
|
+
- [ ] Touch targets: minimum 44×44px
|
|
100
|
+
- [ ] No hover-dependent menus (hover doesn't exist on mobile)
|
|
101
|
+
|
|
102
|
+
### Scoring guide
|
|
103
|
+
- 9-10: Logical, complete, mobile-friendly
|
|
104
|
+
- 7-8: Minor gaps (missing footer link, one level too deep somewhere)
|
|
105
|
+
- 5-6: Navigation functional but confusing structure
|
|
106
|
+
- 3-4: Missing important links, mobile navigation broken
|
|
107
|
+
- 1-2: Navigation actively misleading or broken
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Dimension 4: SEO
|
|
112
|
+
|
|
113
|
+
Full Shopify-specific SEO checklist in `references/seo-shopify.md`.
|
|
114
|
+
|
|
115
|
+
Quick scoring checklist:
|
|
116
|
+
- [ ] Meta titles: 50-60 chars, primary keyword included
|
|
117
|
+
- [ ] Meta descriptions: 120-160 chars, every product + collection has one
|
|
118
|
+
- [ ] No duplicate content from `/collections/*/products/` — canonicals correct
|
|
119
|
+
- [ ] Tag pages handled (noindex or robots.txt)
|
|
120
|
+
- [ ] Structured data present on product pages (Product schema)
|
|
121
|
+
- [ ] Sitemap accessible at `/sitemap.xml`
|
|
122
|
+
- [ ] robots.txt not blocking product/collection pages
|
|
123
|
+
- [ ] Google Search Console connected and no coverage errors
|
|
124
|
+
|
|
125
|
+
### Scoring guide
|
|
126
|
+
- 9-10: All meta filled, no canonical issues, structured data present
|
|
127
|
+
- 7-8: Small gaps (< 20% products missing meta description)
|
|
128
|
+
- 5-6: Systematic gaps or known duplicate content issues
|
|
129
|
+
- 3-4: Most products missing SEO meta, or active duplicate content
|
|
130
|
+
- 1-2: robots.txt blocking index, or no meta data across site
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Dimension 5: App Stack
|
|
135
|
+
|
|
136
|
+
Full app scoring in `references/app-stack.md`.
|
|
137
|
+
|
|
138
|
+
Quick check:
|
|
139
|
+
- [ ] Total apps installed: < 8 (each adds load time)
|
|
140
|
+
- [ ] No duplicate functionality (2 review apps, 2 email platforms)
|
|
141
|
+
- [ ] No abandoned apps (last updated > 18 months)
|
|
142
|
+
- [ ] Page builder: max 1, and not used on all pages
|
|
143
|
+
- [ ] Apps with monthly cost vs actual usage ratio
|
|
144
|
+
|
|
145
|
+
### Load impact tiers
|
|
146
|
+
- High impact (400-800ms): page builders, upsell popups, loyalty widgets
|
|
147
|
+
- Medium impact (100-300ms): review apps, email popups, live chat
|
|
148
|
+
- Low impact (< 100ms): analytics pixels, metafield apps
|
|
149
|
+
|
|
150
|
+
### Scoring guide
|
|
151
|
+
- 9-10: Lean stack (< 6 apps), no redundancy, all actively used
|
|
152
|
+
- 7-8: 6-9 apps, minor redundancy or one unused
|
|
153
|
+
- 5-6: 10-14 apps, some redundancy
|
|
154
|
+
- 3-4: 15+ apps, multiple redundant apps, page builder on all pages
|
|
155
|
+
- 1-2: Severely bloated (20+ apps), duplicate core functions, confirmed speed impact
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Dimension 6: Conversion Signals
|
|
160
|
+
|
|
161
|
+
### Product page trust
|
|
162
|
+
- [ ] Reviews visible above the fold on desktop
|
|
163
|
+
- [ ] Reviews visible before "Add to Cart" on mobile
|
|
164
|
+
- [ ] Review count shown (social proof — "1,243 reviews" beats 5 stars alone)
|
|
165
|
+
- [ ] Shipping estimate visible on product page
|
|
166
|
+
- [ ] Return policy visible (or link to it)
|
|
167
|
+
- [ ] Secure payment icons visible
|
|
168
|
+
|
|
169
|
+
### Urgency / scarcity
|
|
170
|
+
- [ ] Low stock counter shown when < 5 units (optional but high impact)
|
|
171
|
+
- [ ] Restock notification option if out of stock
|
|
172
|
+
- [ ] Sale badge on discounted items
|
|
173
|
+
|
|
174
|
+
### Add to cart
|
|
175
|
+
- [ ] CTA button above the fold on desktop
|
|
176
|
+
- [ ] CTA sticky or fixed on mobile scroll
|
|
177
|
+
- [ ] Size/color selector intuitive (swatches preferred over dropdown for color)
|
|
178
|
+
- [ ] Variant images update when switching color
|
|
179
|
+
|
|
180
|
+
### Cart / Checkout
|
|
181
|
+
- [ ] Upsell or cross-sell in cart (optional but measurable)
|
|
182
|
+
- [ ] Shipping threshold visible ("Add €X for free shipping")
|
|
183
|
+
- [ ] Checkout trust elements: SSL, accepted payment methods
|
|
184
|
+
- [ ] No forced account creation before checkout
|
|
185
|
+
|
|
186
|
+
### Scoring guide
|
|
187
|
+
- 9-10: Reviews prominent, trust signals complete, CTA optimized for mobile
|
|
188
|
+
- 7-8: Minor gaps (no shipping estimate on product page, reviews below fold)
|
|
189
|
+
- 5-6: Functional but missing key trust signals
|
|
190
|
+
- 3-4: No reviews visible, poor mobile CTA, no trust elements
|
|
191
|
+
- 1-2: Active friction (forced account, no payment icons, reviews hidden)
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Priority Matrix
|
|
196
|
+
|
|
197
|
+
| Score | Dimension | Recommended Action |
|
|
198
|
+
|-------|-----------|-------------------|
|
|
199
|
+
| 1-4 | Any | Immediate fix — blocking sales |
|
|
200
|
+
| 5-6 | Catalog/SEO | High priority — compound impact |
|
|
201
|
+
| 5-6 | Conversion | High priority — direct revenue impact |
|
|
202
|
+
| 5-6 | Navigation | Medium priority — UX issue |
|
|
203
|
+
| 7-8 | Any | Optimize when above issues resolved |
|
|
204
|
+
| 9-10 | Any | Maintain — no action needed |
|
|
205
|
+
|
|
206
|
+
Start with lowest-scoring dimensions that have the highest traffic.
|