Shopify store: catalogue, theme, redirects
Internal working notes, pulled 1 Sep 2026. Not the client deliverable. Second person and byline treatment happens at the report-writing stage (docs/audit/90-friction-register.md and beyond).
Scope per the controller ruling on this task: record catalogue state as raw fact (status, inventory, whether a field is populated or empty, handles, variants, publish state, redirects, theme wiring). This file does not write SEO recommendations or SEO findings. Task 4 owns SEO interpretation and its own finding IDs. Where an SEO-shaped fact is recorded here (an empty title field, for example), it appears in the raw appendix as a fact only, with no class, tier, or finding ID attached, so it cannot double-enter the merged register under two IDs.
What would falsify these findings
These findings die if Nuuk's Stage 1 has already shipped them. Stage 1 (Nuuk's June 2026 audit plus the signed Stage 1 SOW) scoped: duplicate-product consolidation into one canonical listing, description-to-accordion conversion, Add to Cart above the fold, a repositioned Judge.me reviews widget, an About Us rebuild, a /pt unpublish, a post-purchase upsell app, and an email capture/lifecycle setup replacing the direct-discount mechanic.
Checked directly against the 1 Sep 2026 pull, not assumed:
- Duplicate products are not consolidated. Four separate product records
still exist (see catalogue below), including the DRAFT [Nuuk]-named one. Not shipped.
- SEO title is still null on all four products. Not shipped (and not this
task's business regardless; see Task 4).
/ptis not unpublished and is not fully redirected. TwourlRedirects
exist for specific /pt/products/* paths; the bare /pt and /pt/ paths still return 404 on direct curl, 1 Sep. Not shipped, or shipped partially.
- **The live theme's
related-productssection exists in
templates/product.json but is explicitly disabled: true.** Not live-enabled.
- **A
sticky-add-to-cart.liquidfile exists in the theme's asset list but is
absent from templates/product.json's section order.** Not wired in, so not live regardless of whether the file was written for Stage 1 or predates it.
- Caution flag, not a finding of this task: a keyword scan of
sections/main-product.liquid (101,760 chars) turns up 13 hits for "accordion", 2 for <details, 4 for "sticky", and 12 for "reviews", with 0 for "judge.me"/"judgeme". Something accordion- and sticky-shaped already exists in the live product section. Whether that is Stage 1 landing in-flight, an earlier build, or unrelated theme scaffolding is not determined here. Task 6 (CRO/offer) should check Stage 1's actual shipped state against this before writing any product-page finding, precisely because this is the highest prior-art-risk workstream in the whole audit.
Net: as of 1 Sep 2026, none of Stage 1's SOW-scoped deliverables have shipped in a way this pull can confirm, with one open flag (accordion/sticky markup already present) handed to Task 6 rather than resolved here. If a later pull shows any of the above shipped, the corresponding claim below dies and should be struck, not softened.
Prior-art exclusion list
Derived from reading Nuuk's June 2026 CRO Audit Report (22 pages) and the Stage 1 SOW in full, not from the brief's summary. Verified against the documents directly.
| # | What Nuuk already found or scoped | Where |
|---|---|---|
| PA-1 | Single-SKU-with-variants model; recommends splitting into multiple SKUs, one per design | Audit, Category Page section, p.10-11; 7P section |
| PA-2 | Duplicate product listings should be consolidated into one canonical listing | SOW, Product Page CRO (Core), £1,200 line |
| PA-3 | No true collection/category page exists; no grid, filters, sort, or behaviour tags | Audit, Category Page section, score 24% (LOW) |
| PA-4 | Direct "25% Off Limited Time Launch Sale" discount mechanic, to be replaced by an email-capture offer | Audit, First Impression + 7P sections; SOW, Email Lifecycle Setup, £850 line |
| PA-5 | /pt (Portuguese storefront) should be unpublished, and theme/ad elements routing to it should be flagged | SOW, Add-Ons, "/pt Page Unpublish", £100 |
| PA-6 | Product description should move from one text block to an accordion (Description / How It Works / Specifications / Shipping & Returns); Add to Cart should sit above the fold | Audit, Product Page section, P1 recs; SOW, "Structural fixes: Add to Cart above the fold, description converted to accordion" |
| PA-7 | Reviews/star rating missing between title and price; Judge.me widget should be repositioned there | Audit, Product Page section; SOW, "Judge.me reviews widget repositioned near title/price" |
| PA-8 | Theme migration to Berlin, recommended as the fix for the visual/structural ceiling | Audit, First Impression + UI sections, P1/P2 |
| PA-9 | About Us page is generic; rebuild as Origin Story -> Mission -> Founder Quote -> Values -> R&D/lab story -> CTA | Audit, 7P section; SOW, "About Us Page Rebuild", £150 |
| PA-10 | Checkout button colour clash, Shop Pay vs Apple Pay as primary express option | Audit, Checkout Process section |
| PA-11 | Footer restructure (3-column, guarantees, newsletter, legal address), no mega menu, currency dropdown defaults everyone to USD | Audit, Menu Navigation section |
| PA-12 | No post-purchase upsell mechanism; recommends 1-Click Post-Purchase Upsell app | SOW, Add-Ons, £250 (+app subscription) |
| PA-13 | No related-products carousel, deferred until multi-SKU ships; no mobile sticky Add to Cart bar | Audit, Product Page section, P1/P3 |
| PA-14 | No newsletter/email capture, no welcome or abandoned-cart flow | Audit, 7P section; SOW, Email Lifecycle Setup |
| PA-15 | Currency dropdown shows countries but defaults all to USD | Audit, Menu Navigation + 7P sections |
| PA-16 | Generic SEO opportunity from per-design URLs once multi-SKU ships (not the same claim as an empty meta-title field, which Nuuk's audit never inspects) | Audit, Category Page + 7P sections |
Anything below flagged PRIOR-ART maps to one of these rows and is excluded from client-facing use. Everything else in the findings table below was not found in either document (grepped and read in full; no SKU, inventory quantity, publish-status, redirect-target, or theme-file-wiring claim appears anywhere in the 22-page audit or the 13-page SOW).
Findings
ID format SHOP-nn. Class: BLOCKS / CORRUPTS / WASTES / SUPPRESSES. Tier: HARD (pulled from a system, dated) / DERIVED (arithmetic on HARD) / INFERRED (reasoned from HARD facts) / UNKNOWN. Remit: unowned / CRO scope / media / client.
| ID | Finding | Evidence | Class | Tier | Remit | PRIOR-ART |
|---|---|---|---|---|---|---|
| SHOP-01 | SKU SP-GPC-BLK-001 is assigned to two separate product records with live, non-zero inventory each: the UNLISTED "String Protech® Guitar String Protection Case" (942 units) and the DRAFT "[Nuuk] String Protech®..." product's "The Beatles" variant (947 units). Inventory items are confirmed distinct (no shared stock pool), so the same SKU string reports two different physical counts depending which record is read. | gql products query, 1 Sep 2026, data/_snapshots/2026-09-01/shopify-catalogue.json | CORRUPTS | HARD | unowned | No |
| SHOP-02 | The DRAFT product "[Nuuk] String Protech® Guitar String Protection Case" carries publishedAt: null and holds 947 units of inventory. Draft products cannot be purchased, so this stock cannot generate revenue while it stays in this state, regardless of what happens to the record itself. | Same pull as above | WASTES | HARD | client | Partial. PA-1/PA-2 (Nuuk flagged the duplicate product itself, recommending consolidation). The 947-unit inventory lock was not quantified anywhere in their audit or SOW; that number is new. |
| SHOP-03 | "String Protech® Guitar String Protection Case" (the $59.99 case, SKU SP-GPC-BLK-001, 942 units) carries status: UNLISTED. UNLISTED means absent from collections and on-site search, reachable only by direct link. No sales-volume claim is made here; that needs order-level data outside this task's scope. | Same pull | SUPPRESSES | HARD | client | No |
| SHOP-04 | Two of eight variants on "Custom Vinyl Sticker" (ACTIVE) carry sku: null ("Taylor Swift - Ophelia", "Taylor Swift - Snakes"). All eight variants of "Guitar String Protection Case with Custom Vinyl Sticker" (ACTIVE) carry sku: null. Every variant on the store's second-largest product by variant count has no SKU at all. | Same pull | CORRUPTS | HARD | unowned | No |
| SHOP-05 | The product handle for the case is string-pro-tech® (registered-trademark character, literal in the handle). Confirmed 200 OK on direct curl when correctly percent-encoded, 1 Sep 2026. The character's presence in an ad click-through URL, QR code, or manually typed link is a plausible failure point in paid channels; that specific fragility is not itself tested here. Handle is FROZEN per repo guardrails (it is the live URL); changing it needs a manual 301, which this repo's write scope cannot safely perform. | curl -o /dev/null -w '%{http_code}', 1 Sep 2026, data/_snapshots/2026-09-01/shopify-url-status-codes.txt | WASTES | HARD (resolves 200) / INFERRED (ad-channel fragility) | client | No |
| SHOP-06 | /pt redirect coverage is partial and one existing redirect sends traffic to the wrong place. Two urlRedirects exist: /pt/products/string-pro-tech -> / (the flagship product's old URL dumps visitors on the homepage, not the equivalent live product), and /pt/products/guitar-string-protection-case-and-custom-vinyl-sticker -> the correct English product page. The bare /pt and /pt/ paths still return 404 on direct curl, 1 Sep. | gql query + curl, 1 Sep 2026, data/_snapshots/2026-09-01/shopify-nav-redirects-scripts.json and shopify-url-status-codes.txt | SUPPRESSES | HARD | client | Yes. PA-5 (the /pt topic is explicitly scoped in Nuuk's SOW add-on). The specific facts here (partial coverage, and one redirect landing on the homepage rather than the matching product) are new detail not present in either Nuuk document, recorded for completeness but excluded from client-facing use per the topic-level flag. |
| SHOP-07 | The store's only Collection object is frontpage ("Home page"), a manual collection (no rule set) holding 0 products. Confirmed not currently referenced by any section in the live theme's templates/index.json, so it renders nothing today rather than rendering an empty grid. | gql query, 1 Sep 2026, data/_snapshots/2026-09-01/shopify-nav-redirects-scripts.json; theme scan in shopify-theme-diff-notes.txt | SUPPRESSES | HARD | CRO scope | Yes. PA-3 (no real collection/category page exists is the same underlying gap Nuuk scored at 24%/LOW). The zero-product manual-collection fact is more specific than their narrative claim but sits on the same finding. |
| SHOP-08 | The live theme's templates/product.json includes a related-products section in its section order with "disabled": true. The capability is already present in the theme; it is switched off, not unbuilt. | Theme file pull, 1 Sep 2026, data/_snapshots/2026-09-01/shopify-theme-diff-notes.txt | WASTES | HARD | CRO scope | Yes. PA-13 (Nuuk's audit frames related products as something to add once multi-SKU ships, not as an already-built, disabled section). The wiring-status detail is new; the topic is theirs. |
| SHOP-09 | sections/sticky-add-to-cart.liquid exists in the live theme's asset list (19,011 chars) but does not appear anywhere in templates/product.json's section order. It is a dead file, not an active feature, regardless of when it was written. | Theme file pull, 1 Sep 2026, same snapshot | WASTES | HARD | CRO scope | Yes. PA-13 (Nuuk's audit recommends adding a mobile sticky Add to Cart bar as if none exists). The file's presence-but-not-wired status is new detail; the topic is theirs. |
Theme roster (Step 5, brief's exact question)
Live: "Updated copy of [Nuuk] Copy of Dawn" (166011470074), created 2026-08-13. Five unpublished themes alongside: Dawn (152593137914, created 2025-07-21), guitare (153191940346, 2025-08-07), Copy of guitare (155359936762, 2025-10-10), guitare with Installments message (156092530938, 2025-10-31), [Nuuk] Copy of Dawn (165271273722, 2026-07-24).
Is any of the five unpublished themes newer than live? No, by creation date. Live is the newest theme on the store, created 13 Aug 2026, and is literally a copy of the newest unpublished one ([Nuuk] Copy of Dawn, 24 Jul 2026), consistent with "the live one is a copy of a copy" already recorded in the repo guardrails.
updatedAt on all six themes clusters within about 90 seconds of each other (2026-08-20T11:00:03Z to 2026-08-20T11:01:30Z). That reads as a platform-side event (a reindex or migration touching every theme on the store at once), not evidence that any one theme was recently hand-edited. updatedAt is not used as a recency signal anywhere in this file for that reason.
Full theme diff against the store's own unpublished "Dawn" theme (used as the cleanest available in-store reference; not a fresh pull from Shopify's public Dawn repository, and that caveat should travel with any claim built on it) is in data/_snapshots/2026-09-01/shopify-theme-diff-notes.txt. One item was checked and ruled out rather than reported as a finding: the live theme is missing all 14 classic customer-account files present in the Dawn baseline (main-login.liquid, main-account.liquid, and similar). This reads as broken account pages at first glance. Confirmed not a defect: shop. customerAccounts is OPTIONAL, and direct curl of /account, /account/login, and /account/register all return 302 to account.stringprotech.com, Shopify's hosted new-customer-accounts domain. The classic templates are correctly absent.
Appendix: raw catalogue state
Pulled 1 Sep 2026 via ./scripts/shopify-guard.sh gql, saved to data/_snapshots/2026-09-01/shopify-catalogue.json. SEO and alt-text columns are recorded as presence/absence fact only; no SEO finding is drawn from them in this file (Task 4's remit).
| Title | Handle | Status | Published | Total inventory | SEO title | SEO description | Featured image alt text |
|---|---|---|---|---|---|---|---|
| String Protech® Guitar String Protection Case | string-pro-tech® | UNLISTED | 2026-06-03 | 942 | empty | present | empty |
| Custom Vinyl Sticker - String Protech® | custom-vinyl-sticker | ACTIVE | 2026-06-16 | 296 | empty | present | empty |
| Guitar String Protection Case with Custom Vinyl Sticker | guitar-string-protection-case-and-custom-vinyl-sticker | ACTIVE | 2026-06-16 | 296 | empty | empty | empty |
| [Nuuk] String Protech® Guitar String Protection Case | nuuk-string-protech®-guitar-string-protection-case | DRAFT | not published | 947 | empty | present | empty |
Variant detail (price, SKU, inventory), by product:
String Protech® Guitar String Protection Case (UNLISTED, 942 units)
| Variant | Price | SKU | Inventory |
|---|---|---|---|
| Default Title | 59.99 | SP-GPC-BLK-001 | 942 |
Custom Vinyl Sticker - String Protech® (ACTIVE, 296 units)
| Variant | Price | SKU | Inventory |
|---|---|---|---|
| The Beatles | 9.99 | CVS-BEATLES-001 | 29 |
| Metallica | 9.99 | CVS-METALLICA-001 | 43 |
| Ozzy Osbourne | 9.99 | CVS-OZZY-001 | 49 |
| Red Hot Chili Peppers | 9.99 | CVS-RHCP-001 | 49 |
| Van Halen | 9.99 | CVS-VANHALEN-001 | 45 |
| Hendrix | 9.99 | CVS-HENDRIX-001 | 42 |
| Taylor Swift - Ophelia | 9.99 | (empty) | 20 |
| Taylor Swift - Snakes | 9.99 | (empty) | 19 |
Guitar String Protection Case with Custom Vinyl Sticker (ACTIVE, 296 units)
| Variant | Price | SKU | Inventory |
|---|---|---|---|
| The Beatles | 59.99 | (empty) | 29 |
| Metallica | 59.99 | (empty) | 43 |
| Ozzy Osbourne | 59.99 | (empty) | 49 |
| Red Hot Chili Peppers | 59.99 | (empty) | 49 |
| Van Halen | 59.99 | (empty) | 45 |
| Hendrix | 59.99 | (empty) | 42 |
| Taylor Swift - Ophelia | 59.99 | (empty) | 20 |
| Taylor Swift - Snakes | 59.99 | (empty) | 19 |
[Nuuk] String Protech® Guitar String Protection Case (DRAFT, 947 units)
| Variant | Price | SKU | Inventory |
|---|---|---|---|
| No Sticker | 54.99 | SP-GPC-BLK-009 | 0 |
| The Beatles | 59.99 | SP-GPC-BLK-001 | 947 |
| Metallica | 59.99 | SP-GPC-BLK-002 | 0 |
| Ozzy Osbourne | 59.99 | SP-GPC-BLK-003 | 0 |
| Red Hot Chilli Peppers | 59.99 | SP-GPC-BLK-004 | 0 |
| Van Halen | 59.99 | SP-GPC-BLK-005 | 0 |
| Hendrix | 59.99 | SP-GPC-BLK-006 | 0 |
| Taylor Swift - Ophelia | 59.99 | SP-GPC-BLK-007 | 0 |
| Taylor Swift - Snakes | 59.99 | SP-GPC-BLK-008 | 0 |
Collections, pages, redirects, script tags
Pulled 1 Sep 2026, data/_snapshots/2026-09-01/shopify-nav-redirects-scripts.json.
- Collections: one object,
frontpage("Home page"), manual sort, 0
products, no rule set.
- Pages: Contact, About, FAQ, Your Privacy Choices (
data-sharing-opt-out). - URL redirects: 2 total.
/pt/products/string-pro-tech->/.
/pt/products/guitar-string-protection-case-and-custom-vinyl-sticker -> /products/guitar-string-protection-case-and-custom-vinyl-sticker.
- Script tags: 0.
URL status codes, checked directly 1 Sep 2026
| URL | Status |
|---|---|
/pt | 404 |
/pt/ | 404 |
/pt/products/string-pro-tech | 301 -> / |
/pt/products/guitar-string-protection-case-and-custom-vinyl-sticker | 301 -> correct English product |
/products/string-pro-tech%C2%AE (registered-trademark handle, encoded) | 200 |
/products/custom-vinyl-sticker | 200 |
/products/guitar-string-protection-case-and-custom-vinyl-sticker | 200 |
/products/nuuk-string-protech%C2%AE-guitar-string-protection-case (DRAFT product) | 404 (expected; draft is not published) |
/collections/frontpage | 200 |
/collections/all | 200 |
/account, /account/login, /account/register | 302 -> account.stringprotech.com |
Raw command outputs: data/_snapshots/2026-09-01/shopify-catalogue.json, shopify-nav-redirects-scripts.json, shopify-url-status-codes.txt, shopify-theme-list.txt, shopify-themes-detail.json, shopify-theme-live-filelist.txt, shopify-theme-dawn-baseline-filelist.txt, shopify-theme-diff-notes.txt.