SafeGear sells 215 certified security products — EN 1143-1 safes, pharmacy and firearms cabinets, vault doors, chemical storage — at ticket sizes from €359 to €6,577, with paid delivery (€80 curbside) and professional installation (€450–€530). This is a high-consideration, high-value, partly B2B catalogue, and the site's product-level execution is genuinely strong: spec-rich listings with EN 1143-1 / ECB•S / VdS certification badges, dual pricing (net + incl. VAT), a real accessory configurator with an "Ihre Auswahl" order summary, transparent delivery and installation costs, volume-pricing requests, product comparison, breadcrumbs, 10+ product FAQs, a working cart drawer with B2B order fields, and excellent long-form category copy. Desktop performance is near-perfect (98/100, LCP 1.0 s, CLS 0).
The problem is that almost none of that strength is visible at the moments that decide a sale. The homepage does not sell. Above the fold on a 1440×900 desktop there is no hero, no value proposition, no shop CTA and no product — the first content block is a grid of blog articles. Worse, the "Nach Kategorie einkaufen" (Shop by Category) section is fully built in the page but rendered with display:none, so the store's primary merchandising entry point is invisible. Across the entire homepage we counted zero product cards for a 215-product catalogue, and no best-sellers block.
Second, one of the five top-level navigation categories is a dead end. "Brandschutz" (fire protection) links to 13 sub-collections, of which 9 contain no products at all — Feuerlöscher, Wasserlöscher, CO2-Löscher, Pulverlöscher, Schaumlöscher, Halterungen, Feuerleitern, Löschdecken and Warnschilder all render four paragraphs of polished SEO copy followed by "Keine Produkte gefunden." Every click into that category, from navigation, SEO or paid traffic, ends in nothing.
Third, the path to purchase is buried and its safety net is broken. On the product page the price sits at 1,548 px and the Add-to-Cart button at 1,595 px — roughly 1.8 screens below the fold on desktop and 2.4 screens on mobile, on pages 7,478 px and 9,501 px tall. The theme does ship a sticky Add-to-Cart bar to solve exactly this, but it is rendered with opacity:0 and translated below the viewport, so it never appears at any scroll depth — Playwright itself refused to click it ("element is outside of the viewport"). The likely cause is that the theme scrolls a custom container (div.page-wrapper) instead of the document, so window-level scroll listeners never fire.
Fourth, there is no social proof and no way to follow up. We found zero reviews, zero star ratings and no review app of any kind (Judge.me, Yotpo, Stamped, Loox, Okendo, Trustpilot all absent) — on purchases where buyers must trust an insurance-grade certification claim. There is also no email capture anywhere on the site (zero email inputs), and no analytics or advertising tracking at all: no GA4, no GTM, no Meta Pixel, no Google Ads, no TikTok. The single custom Shopify web pixel installed is a no-op debug logger that only writes to the browser console and transmits nothing. In practice this means paid traffic cannot be measured or retargeted, and no abandoned-cart, browse-abandonment or review-request email is recovering revenue.
Finally, mobile speed lags badly behind desktop: LCP is 6.7 s on the homepage and 6.0 s on the product page against a 2.5 s target — 6× slower than the same pages on desktop, and mobile is where most Shopify traffic and Google's ranking signal live. The recommendations below are grouped by priority so the revenue-direct fixes — populating or hiding the empty category, restoring the category grid, surfacing price and Add-to-Cart, reviews, tracking and email — can ship first.

The top utility bar carries only a phone number, an email address and a "Hilfe" dropdown. For a catalogue where delivery costs €80, installation €450–€530 and lead time is 1–2 weeks, those terms are decisive purchase information — but a visitor only discovers them deep inside a product page. A slim announcement bar stating delivery, returns and lead time would answer the three biggest objections before the first scroll.
⏱ Estimated: 3 dev hours
Header, footer and contact page all show +45 36 96 43 53 — a Danish number — on a .at domain. The contact page lists entities in Denmark, Switzerland, Spain, France, Netherlands, Sweden and the USA, but no Austrian office or phone. For a €3,000–€6,500 safe that has to be delivered and anchored on site, Austrian buyers look for local presence; a foreign dialling code at the top of every page is measurable trust friction.
⏱ Estimated: 2 dev hours
The header stays fixed while scrolling, keeping search, account and cart reachable from anywhere — important on product pages that run 7,478 px long.
Verified live: typing "tresor" returned real product suggestions (Lyra 0, Seguro 10, "Epass" Codeschloss). With 215 products and 40+ collections, search is a primary navigation path and it functions correctly.
A cart drawer trigger (aria-label="Warenkorb") and account icon sit in the persistent header, with the item-count badge updating on add.
Five top-level categories (Tresore, Brandschutz, Sicherheitsspiegel, Einzelhandelssicherheit, Industrielle Glocken & Uhren) with logically grouped sub-collections — no category overload — plus a DE/EN switcher.

On a 1440×900 viewport the first screen contains the utility bar, header, navigation and then immediately the blog grid "Ratgeber zur Auswahl eines Tresors". There is no headline explaining what SafeGear sells or why to buy here, no trust statement (EN-certified, Europe-wide installation, B2B supply), and no primary CTA into the catalogue. A first-time visitor cannot tell within 3 seconds that this is a shop for certified safes.
⏱ Estimated: 8 dev hours
display:noneThe section sg_category_grid ("Nach Kategorie einkaufen") is fully built — 7,522 characters of markup, an H2 and H3 headings for Tresore, Brandschutz, Sicherheitsspiegel and Display-Warensicherung — but its computed style is display:none, so it renders at 0 px height. The store's main merchandising entry point exists and is invisible. Because the content is already authored, re-enabling it is a low-effort, high-impact fix.
⏱ Estimated: 4 dev hours
The two largest homepage sections are blog grids (601 px and 990 px tall). The educational content is genuinely good and valuable for SEO, but placing it first makes the homepage read as a magazine rather than a shop. It belongs below the category grid and best-sellers.
⏱ Estimated: 2 dev hours
The homepage uses static sections rather than an auto-playing slideshow. This is the correct choice — rotating banners split attention, slow the first paint and consistently underperform a single clear message.
Cumulative Layout Shift measures 0 on both mobile and desktop (Lighthouse). Nothing jumps as the page loads — a common and damaging problem this store does not have.

We counted 0 product cards across the entire homepage against a catalogue of 215 products. The only product links present are four accessories (an interior-cabinet code lock, a 3-way handle, two spare drawers) — no safes, no flagship items. A visitor cannot see a single sellable product, or a single price, without first using search or the navigation.
⏱ Estimated: 8 dev hours
There is no "Bestseller", "Beliebt" or featured section anywhere on the homepage — confirmed both by DOM inspection and a text scan. Ironically the collection pages already expose a Bestseller sort option, so the underlying data exists; it is simply never merchandised. Best-sellers near the top of the homepage are one of the highest-leverage additions available here.
⏱ Estimated: 8 dev hours
No reviews, no star ratings, no client or institutional logos, no "supplied to X offices/pharmacies/authorities" counter. The B2B band names police, military, schools and hospitals as customers, but nothing substantiates it visually — for public-sector and business buyers, references are the deciding factor.
⏱ Estimated: 4 dev hours
No Instagram feed, project gallery or real installation photography. For safes and vault doors, photos of completed installations in real offices, pharmacies and vaults are the most persuasive content available and cost nothing but coordination.
⏱ Estimated: 4 dev hours
"Warum Sie uns wählen sollten" presents Zertifizierte Qualität, Europäische Normen, Expertenunterstützung and Schnelle Lieferung as icon cards with supporting copy — concise, relevant and on-message for a certification-driven category.
"Belieferung von Unternehmen, Behörden und dem Bereich der öffentlichen Sicherheit" pairs four proof points (volume & contract pricing, consultation & specification, delivery & installation, European certification) with an "Angebot anfordern" CTA to a real quote-request page. This correctly serves the high-value B2B segment.

The footer "Cookies" link points to /policies/#shopifyReshowConsentBanner. We verified that /policies/ is not a valid page and returns HTTP 404 — so a visitor trying to review or change their cookie choices lands on an error page. Every other footer link we tested returns 200. For an EU store this is both a UX defect and a compliance-facing one, and it is a few minutes' fix.
⏱ Estimated: 1 dev hour
There is no Impressum anywhere in the footer or navigation. Austrian company details do exist at /policies/contact-information, but that page is reachable only via "Kontaktieren Sie uns" and lists Danish, Swiss and Spanish entities. An Austrian webshop is expected to carry a clearly labelled Impressum (ECG §5) and, for high-ticket buyers, it is also a primary legitimacy check.
⏱ Estimated: 2 dev hours
There is no FAQ page (/pages/faq returns 404) and no footer FAQ link. Excellent Q&A content already exists inside product-page accordions and the Wissensdatenbank — it just isn't consolidated where users look for it first.
⏱ Estimated: 3 dev hours
The footer has no subscribe field — and site-wide we found zero input[type=email] elements. The footer is the standard, non-intrusive place to build a list for a considered-purchase catalogue where buyers research for weeks before ordering.
⏱ Estimated: 3 dev hours
Privacy & cookie policy, terms (AGB), returns/refunds, shipping and delivery & installation are all present and all returned HTTP 200 when tested — no broken policy links.
Visually confirmed: Apple Pay, Bancontact, blik, Google Pay, Maestro, Mastercard, PayPal, Shop Pay and Visa are displayed in the footer — a straightforward and effective payment-trust signal.
Einzelhandel, Büro, Branche, Bildung, Gesundheitswesen and Privat give buyers a use-case entry point rather than forcing them to shop by product type — smart for a catalogue serving very different segments.
The Wissensdatenbank and a dedicated "Lieferung & Installation" page are linked directly from the footer — exactly the reference material a buyer needs before committing to a multi-thousand-euro installed product.


We opened every collection in the menu. Nine return no products at all, each showing "Keine Produkte gefunden.": Feuerlöscher, Wasserlöscher, CO2 Löscher, Pulverlöscher, Schaumlöscher, Halterungen für Feuerlöscher, Feuerleitern, Löschdecken and Warnschilder. This means the top-level category "Brandschutz" — one of only five — is effectively dead: of its 13 sub-collections, 9 are empty, Feuerlöscherwagen has 1 product, and Sicherheitsschilder and Notausgangsschilder have 2 each. Each page carries full, well-written SEO copy, so it will attract organic and paid traffic and then convert none of it. Either stock and publish these lines or unpublish the collections and remove them from the menu until they are ready.
⏱ Estimated: 10 dev hours
Hoteltresore (2), Sicherheitsschilder (2), Notausgangsschilder (2), Inspektionsspiegel (2), Lithium-Batterie Aufbewahrung (3) and Feuerlöscherwagen (1). A category page that holds one or two items reads as an empty shop; these are better merged into a parent collection or presented as a filtered view.
⏱ Estimated: 4 dev hours
Neither Widerstandsgrad nor Brandschutzklasse displays the number of matching products, so a buyer cannot tell that "Widerstandsgrad VII" might return nothing before clicking. Counts next to each option prevent dead-end filtering.
⏱ Estimated: 3 dev hours
Filtering is limited to Widerstandsgrad and Brandschutzklasse. There is no filter for price, internal volume (Liter) or lock type — even though the category copy itself states that safes come with key, electronic or combination locks and range from 11 to 91 litres, and prices span €359–€6,577. On a 225-item collection these three filters are the primary way buyers narrow down.
⏱ Estimated: 8 dev hours
Under "Brandschutzklasse" the options read "Nicht brennbar (DIN 4102)", "30 minutes", "60 minutes", "120 Minuten" — two English values in a German storefront filter. The same leak appears in cart line items ("Key Lock with 2 Keys"). Small, but it undermines a premium, locally-credible impression.
⏱ Estimated: 2 dev hours
Four paragraphs of category text sit above the grid, so the first product appears only around y≈600 px and the filter sidebar starts below the fold. The copy is valuable for SEO — but it should be clamped to 2–3 lines with a "Mehr lesen" expander, or moved beneath the grid. Navigation is also paginated with no "Load more"/infinite scroll.
⏱ Estimated: 3 dev hours
Exactly one H1 per collection ("Zertifizierte Tresore"), followed by four substantive paragraphs explaining EN 1143-1 classes, insurance requirements and class selection. This is real expertise, not filler — a strong differentiator in this category.
Widerstandsgrad (S2, 0 through VII) and Brandschutzklasse (non-combustible, 30/60/120 minutes) are exactly the technical axes buyers and insurers care about — far better than generic colour/size facets.
Empfohlen, Am relevantesten, Bestseller, A–Z, Z–A, price ascending/descending and two date orders — comprehensive, and confirmation that best-seller data is available for merchandising elsewhere.
Each listing shows height/width/depth ranges, weight, anchoring options, a certification badge (EN 1143-1 / EN 14450 with ECB•S or VdS attribution) and "Von €X inkl. MwSt." — a buyer can shortlist without opening a single product page.
"225 ARTIKEL" is displayed with a grid/list view switch, and the list view's comparison-table feel suits a technical purchase well.

On a 900 px-tall viewport the first screen shows the title, SKU and two paragraphs of description. The variant picker starts at 936 px and the price ("€435,79 zzgl. MwSt. / €522,95 inkl. MwSt.") only appears at 1,548 px — about 1.7 screens down. We confirmed the same offset on a second product, so this is the template, not a one-off. Price is the single most-sought element on a product page; requiring two scrolls to find it invites an immediate bounce back to Google.
⏱ Estimated: 8 dev hours
The gallery is photography only — no video and no model-viewer. For safes, short clips showing door thickness, locking-bolt action, interior organisation and anchoring do more to justify a €500–€6,500 price than any still image, and also reduce pre-sales questions.
⏱ Estimated: 4 dev hours
On the Lyra 0 product page the specification table renders "Feuerwiderstandsklasse: None" — an untranslated null value shown to the customer. Empty attributes should be hidden or rendered as "–" / "Nicht zutreffend". We saw it on one product, so it is likely limited to items missing that attribute, but on a certification-driven page any stray "None" reads as incomplete data.
⏱ Estimated: 1 dev hour
The product page correctly shows "Schloss: Schlüsselschloss mit 2 Schlüsseln", but the cart drawer displays the same option as "Key Lock with 2 Keys". The option values are only translated in one place, so the language switches at the most sensitive moment — just before checkout.
⏱ Estimated: 3 dev hours
Startseite / Kollektionen / Zertifizierte Tresore / Lyra Klasse 0 / product — four levels, aiding both navigation and SEO. Present and correct on product pages.
Size is chosen from 12 labelled buttons that each show real dimensions (270×350×280 mm …), colour via an actual RAL 7024 swatch, and lock type via two photographic swatches (key lock vs. electronic keypad). This is exactly how a technical variant picker should work — no ambiguous dropdowns.
Both "€435,79 zzgl. MwSt." and "€522,95 inkl. MwSt." are shown. For a catalogue selling to businesses, authorities and consumers simultaneously, displaying net and gross side by side removes a real source of confusion.
Image zoom is available, with a thumbnail strip covering product shots, interior views, dimension diagrams and lock detail — strong visual coverage of a hard-to-photograph product.
The manufacturer reference (FT-012720-60000) is displayed under the title — important for B2B cross-referencing and tenders — and the page has exactly one H1.

The theme ships a <sticky-add-to-cart> component, but it renders with opacity: 0 and is translated below the viewport: on desktop its button sits at y 940–992 px against a 900 px viewport, and on mobile the bar sits at 884 px against an 844 px viewport. We verified it three ways — computed styles at multiple scroll depths, screenshots after scrolling 3,000 px (no bar appears), and Playwright refusing to click it with "element is outside of the viewport". The likely root cause is that this theme scrolls a custom container (div.page-wrapper) rather than the document, so window-level scroll listeners that should reveal the bar never fire. Fixing this single component restores a persistent buy button on every product page.
⏱ Estimated: 6 dev hours
The in-page Add-to-Cart button is at 1,595 px on a 900 px viewport — and because the accessory configurator is placed above it, the buy box comes after the upsell rather than before it. With the sticky bar broken (above), a decided buyer has no way to purchase without scrolling past two screens of content on a 7,478 px page.
⏱ Estimated: 8 dev hours
There are no payment icons, no returns/guarantee line and no security reassurance adjacent to Add to Cart — the exact point where a buyer commits €500–€6,500. The store has the assets (certifications, return policy, payment methods); they are simply not surfaced here.
⏱ Estimated: 3 dev hours
No Klarna, Afterpay, Affirm or Shop Pay instalment messaging was detected. At €522 for an entry model and €3,000–€6,500 for vault-class safes, monthly-payment framing materially widens the buyer pool — and Klarna in particular is a mainstream expectation in Austria and Germany. Worth testing on product and cart pages.
⏱ Estimated: 3 dev hours
Accessories (extra shelf €55,95, firearm mount €93,95) have quantity steppers and checkboxes, and an "Ihre Auswahl" panel maintains Hauptprodukt + Zusatzoptionen with a live "Gesamt zzgl./inkl. MwSt." total. This is a genuinely sophisticated pattern that most Shopify stores lack — and an effective AOV driver.
"Lieferzeit 1–2 Wochen", curbside delivery ≈€80, delivery to final location ≈€450, and delivery plus floor/wall anchoring ≈€530 — with an honest note that these are guide prices depending on access, stairs and weight. Publishing installation costs instead of hiding them until checkout is a significant trust advantage.
"Nach Mengenpreisen fragen" and "Zum Vergleich hinzufügen" both sit in the buy area — the right tools for B2B buyers specifying multiple units and comparing resistance classes.
A "Transportformular" CTA and installation cost-estimate request let buyers with difficult access resolve logistics before ordering, instead of abandoning over uncertainty.
Shop Pay, PayPal and Google Pay appear alongside the standard checkout button, shortening the path for returning and mobile buyers.

The product page runs 7,478 px on desktop and 9,501 px on mobile. The content justifies the length, but there are no anchor links or a section jump-bar (Specifications · Certifications · Dimensions · Delivery · FAQ), so finding a specific detail means scrolling blind. A sticky section nav would also give the buy button a permanent home.
⏱ Estimated: 4 dev hours
Three clearly headed tables — Spezifikationen (model, series, type, purpose, anchoring), Zertifizierungen (resistance class, test method, certifying body) and Abmessungen (external/internal dimensions) — deliver the depth a technical buyer, insurer or tender process requires.
Questions such as "Welche Einbruchschutzklasse sollte ich wählen?", "Ich habe den Code für meinen Tresor vergessen", "Wie kann ich den Tresor selbst befestigen?" and several installation topics are collapsed into accordions — pre-empting real objections without bloating the visible page.
Related items are same-series alternatives in other sizes (Lyra 1, 4, 7, 18) shown with dimensions, weight, price and certification badge, each with a "Vergleichen" checkbox — genuinely useful rather than random recommendations.
We found no outbound third-party links in the main content area — nothing pulls a buyer off the page mid-decision.

There is no review content and no review infrastructure: no star ratings, no review widget, and no review-app script for Judge.me, Yotpo, Stamped, Loox, Okendo or Reviews.io. No Trustpilot integration either, and the words "Bewertung" and "Rezension" never appear on the product page. For purchases of €500–€6,500 where the core promise is a certified security claim, third-party validation at the decision point is the most valuable missing asset on the site.
⏱ Estimated: 8 dev hours
Because no review system exists, there is nothing to surface as a star rating under the product title or on collection listings — where ratings do most of their conversion work by helping buyers shortlist. Note this compounds with Block 15: with no email platform, there is also no post-delivery review request generating the reviews in the first place. Fixing both together is what breaks the deadlock.
⏱ Estimated: 4 dev hours
EN 1143-1 / EN 14450 badges attributed to ECB•S and VdS appear on listings and product pages, and the certifying body is named in the spec table. This is real external validation and unusually credible — it mitigates, though does not replace, the absence of customer reviews.

The product page has an excellent accessory configurator, but the drawer offers nothing — no anchoring kit, spare keys, extra shelf or fire-protection add-on. The moment after a €522 commitment is the highest-intent point in the session; two relevant accessories here would lift AOV with no new traffic.
⏱ Estimated: 5 dev hours
The drawer carries no payment icons, returns note or guarantee line. Express-checkout buttons (Shop Pay, PayPal, Google Pay) provide some implicit reassurance, but an explicit "14-day returns · certified & insured · secure checkout" line directly above "Zur Kasse gehen" is standard practice at this price point.
⏱ Estimated: 3 dev hours
The line-item image renders at 66×66 px. For a product whose variants differ mainly in size and finish, a larger thumbnail helps the buyer confirm they configured the right model before paying.
⏱ Estimated: 3 dev hours
Adding an item slides out a drawer and keeps the shopper on the product page — verified live. Momentum is preserved instead of being broken by a full-page cart.
Each line has −/+ quantity steppers and a delete icon, with the item count and totals updating in place.
"Geschätzte Gesamtsumme €522,95" sits directly above the checkout button, with "Zölle und Steuern inbegriffen. Die Versandkosten werden beim Checkout berechnet." — no surprises, which matters most where delivery can add €80–€530.
"Rabatt" is collapsed into an accordion rather than displayed as an open field, so it doesn't prompt buyers to abandon and hunt for a coupon.
"Besondere Anweisungen" and "Angaben für Geschäfts- und Behördenkunden" let business and public-sector buyers supply delivery instructions and order references without leaving the cart — a thoughtful touch for this customer mix.


With the category grid hidden and no hero, the opening mobile screen contains only the utility bar, header and one "Ratgeber" article card. Mobile visitors — typically the majority of Shopify traffic — get no value proposition, no category entry point and no product before they must scroll. This is the same root cause as Blocks 2 and 3, but its impact is larger on a 390×844 screen.
⏱ Estimated: 4 dev hours
The computed body font is 14 px, below the 16 px mobile baseline. Beyond legibility on dense technical copy, inputs under 16 px cause iOS Safari to auto-zoom on focus, which disrupts form entry at checkout.
⏱ Estimated: 4 dev hours
13 of the first 40 interactive elements measured under 44 px in at least one dimension — notably the utility-bar links (phone 103×22 px, email 127×22 px). Those are exactly the contact shortcuts a mobile buyer with a pre-sales question will reach for, and they are the hardest to hit accurately.
⏱ Estimated: 3 dev hours
The menu opens a full drawer listing all five categories with drill-down chevrons, a language switcher and visual category cards — verified by opening it live.
Document width measures exactly 390 px at a 390 px viewport — no sideways scrolling or clipped layout anywhere.
Card grids become horizontally swipeable carousels on mobile rather than stacking into an endless column — appropriate responsive behaviour.
No interstitial or full-screen overlay blocks the mobile experience; the GDPR consent notice is contained and dismissible.

At 3,000 px scroll depth the sticky bar measured opacity: 0, transform: translateY(131.5px) and a bounding top of 884 px against an 844 px viewport — entirely below the screen and fully transparent. The screenshot confirms no bar is visible. Mobile is precisely where a persistent buy button matters most, on a page 9,501 px tall.
⏱ Estimated: 3 dev hours
The in-page Add-to-Cart button sits at 2,047 px on an 844 px viewport — about two and a half full screens of scrolling before a mobile buyer can act, with no sticky fallback. Price and buy controls should be reachable within the first screen or two, and the sticky bar should cover everything after that.
⏱ Estimated: 4 dev hours
Product images can be swiped through on mobile rather than requiring taps on small arrows — the expected gesture, correctly implemented.
The 12 size options, colour swatch and lock-type swatches render as generously sized tap targets on mobile, so configuring a safe on a phone is genuinely workable.
Lighthouse measured the homepage at 67/100 on mobile — FCP 2.9 s, LCP 6.7 s, Speed Index 5.6 s, and the product page at 74/100 — FCP 2.5 s, LCP 6.0 s. The same pages score 98/100 with a 1.0 s LCP on desktop, so this is specifically a mobile problem: the largest element takes roughly six times longer to appear. Mobile LCP is both a ranking signal and the strongest single speed correlate of conversion, and here it is more than double the recommended threshold on every page tested.
⏱ Estimated: 10 dev hours
Measured in-browser: 303 network requests, 207 JS files and 60 <script src> tags. Blocking time is currently excellent (TBT 0 ms), so this isn't hurting interactivity yet — but a request count this high on a mobile connection is a direct contributor to the slow LCP above and leaves no headroom for future apps.
⏱ Estimated: 6 dev hours
Of 47 homepage images, 36 are JPG/PNG and only 11 WebP, with no AVIF. All are served through Shopify's CDN with sizing parameters, so switching the remainder to WebP/AVIF is low-risk and typically cuts image payload 25–50% — directly targeting the mobile LCP problem.
⏱ Estimated: 4 dev hours
The only H1 on the homepage is "SafeGear" (the logo). For a store competing on terms like "Tresor kaufen" or "zertifizierte Tresore Österreich", the primary heading carries no topical signal. We also found two empty H2 elements and an H2 used for the "Sprache" language switcher — headings used for styling rather than structure.
⏱ Estimated: 2 dev hours
98/100 with FCP 0.6 s, LCP 1.0 s and Speed Index 1.0 s. The foundations — hosting, CDN, server response — are sound; the mobile gap is an optimisation problem, not an architectural one.
CLS 0 and TBT 0 ms on mobile and desktop. Despite 207 JS files nothing blocks the main thread and nothing jumps during load — genuinely better than most Shopify storefronts.
38 of 47 homepage images carry loading="lazy", with above-the-fold images correctly excluded.
Homepage, collection and product pages each have precisely one H1 — no duplicate-H1 problem, which is the more common and more damaging error.
All 47 images are requested with Shopify CDN width parameters, so devices receive appropriately scaled files rather than full-resolution originals.

We found zero input[type=email] fields site-wide — no newsletter form, no footer subscribe, no popup, no gated content. For a catalogue where buyers research certification classes for weeks before spending €500–€6,500, not capturing a single address means every non-converting visitor is lost permanently. A "which resistance class do you need?" guide or installation-cost checklist would be a natural, high-value exchange for an email here.
⏱ Estimated: 6 dev hours
No popup of any kind was detected — including no exit-intent capture. Given the long consideration cycle, an exit-intent offer of a comparison guide or a callback from a specialist (rather than a discount, which suits this category poorly) would recover a meaningful share of abandoning researchers.
⏱ Estimated: 4 dev hours
No points, rewards or refer-a-friend mechanism. Lower priority for predominantly one-off, high-ticket purchases — but a referral incentive aimed at B2B buyers (facility managers, pharmacists, retail chains who buy repeatedly and talk to peers) is worth considering later.
⏱ Estimated: 5 dev hours
A chat widget sits persistently in the bottom-right corner across homepage, collection and product pages — verified in every screenshot. For a category full of pre-sales questions about classes, anchoring and installation, this is the single most valuable support channel and it is already in place.
No fake countdowns, no invented "only 2 left" counters and no artificial scarcity. For a certification-led, B2B-facing brand this restraint protects credibility — and it is the correct choice, not an omission.
A GDPR consent banner with explicit Akzeptieren / Ablehnen / "Einstellungen verwalten" options is implemented — proper granular consent rather than a forced accept.

Neither GA4 nor GTM is present — no gtag/js, no googletagmanager.com, no measurement ID in the page source, and no network requests to Google Analytics domains. Only Shopify's built-in analytics is running. Without GA4 there is no funnel reporting, no landing-page or channel analysis, and no way to quantify any of the issues in this report.
⏱ Estimated: 8 dev hours
No Meta Pixel (fbevents.js / fbq), no Google Ads conversion tag, no TikTok or Pinterest pixel, and no Hotjar or Clarity. The only third-party domain contacted during the session was shop.app. Paid acquisition therefore cannot be measured, optimised or retargeted — and for a catalogue with a €359–€6,577 order value, remarketing to researchers is normally the highest-ROI channel available.
⏱ Estimated: 8 dev hours
A single custom Shopify Web Pixel is registered, which could easily be mistaken for working tracking. We fetched its sandbox source: it subscribes to all_standard_events and then only calls console.log when a shopify-pixel-mode debug flag is set in localStorage. It sends no data to any destination — a developer debug stub, not analytics. Anyone reviewing the admin would see "a custom pixel is installed" and reasonably assume tracking exists.
⏱ Estimated: 2 dev hours
No Klaviyo, Omnisend or Mailchimp integration was detected. Combined with the complete absence of email capture (Block 14), this means there is no abandoned-cart recovery, no browse-abandonment flow, and no post-delivery review request. Abandoned-cart email is typically the highest-return automation in ecommerce, and the review request is what would finally solve the zero-reviews problem in Block 9. These three gaps reinforce each other and should be fixed as one project.
⏱ Estimated: 14 dev hours
Shopify's own analytics (trekkie) is running, so order, session and basic conversion data is being recorded in the admin. That gives a baseline to validate against once GA4 and the advertising pixels are installed — the store is not starting from zero data.
Average dev hours and a fixed price at $40/hour. Suggested order: Critical → Medium → Low.
| Block | Task | Hours (avg) | Fixed Price |
|---|---|---|---|
| 5 | Populate or unpublish 9 empty collections + clean up Brandschutz menu | 10 | $400 |
| 2 | Re-enable & configure the hidden "Shop by Category" grid | 4 | $160 |
| 2 | Build homepage hero with value proposition + primary CTA | 8 | $320 |
| 3 | Homepage best-sellers / featured-products section | 8 | $320 |
| 7 | Fix the broken sticky Add-to-Cart bar (desktop + mobile) | 6 | $240 |
| 6 | Move price + Add to Cart above the fold (PDP layout reorder) | 8 | $320 |
| 9 | Review platform setup (Judge.me / Trustpilot) + ratings on cards | 8 | $320 |
| 15 | GA4 + Google Tag Manager + Consent Mode v2 | 8 | $320 |
| 15 | Meta Pixel + Google Ads conversion tracking (incl. CAPI) | 8 | $320 |
| 15 | Email platform + abandoned cart, browse abandonment, review request | 14 | $560 |
| 14 | Email capture — embedded forms, lead magnet, exit-intent | 6 | $240 |
| 13 | Mobile LCP optimisation (above-fold images, preload, defer JS) | 10 | $400 |
| 4 | Fix broken footer "Cookies" link (404) | 1 | $40 |
| Subtotal — Critical | 99 hrs | $3,960 | |
| Block | Task | Hours (avg) | Fixed Price |
|---|---|---|---|
| 5 | Add price / volume (Liter) / lock-type filters + product counts | 8 | $320 |
| 13 | Convert remaining images to WebP/AVIF + reduce request count | 6 | $240 |
| 10 | Cart drawer upsell (anchoring kits, shelves, spare keys) | 5 | $200 |
| 5 | Merge / consolidate thin collections (1–3 products) | 4 | $160 |
| 11 | Base font 14px → 16px + enlarge mobile tap targets | 4 | $160 |
| 3 | Homepage social-proof band (certifications, client references) | 4 | $160 |
| 5 | Clamp collection intro copy with "Mehr lesen" expander | 3 | $120 |
| 6 | Translate variant option values (cart shows English) | 3 | $120 |
| 7 | Trust / guarantee strip under Add to Cart | 3 | $120 |
| 7 | Klarna / BNPL activation + product-page messaging | 3 | $120 |
| 10 | Trust badges + larger thumbnails in cart drawer | 3 | $120 |
| 1 | Announcement bar with delivery / returns / lead-time terms | 3 | $120 |
| 5 | Fix mixed-language filter values (EN → DE) | 2 | $80 |
| 1 | Add Austrian phone number + local contact details | 2 | $80 |
| 4 | Impressum page + footer link | 2 | $80 |
| Subtotal — Medium | 55 hrs | $2,200 | |
| Block | Task | Hours (avg) | Fixed Price |
|---|---|---|---|
| 14 | Referral / loyalty programme for repeat B2B buyers | 5 | $200 |
| 8 | Anchor / section navigation on long product pages | 4 | $160 |
| 6 | Product video / 3D model integration | 4 | $160 |
| 3 | UGC / real installation gallery on the homepage | 4 | $160 |
| 4 | Consolidated FAQ page + footer link | 3 | $120 |
| 13 | Descriptive homepage H1 + fix empty / misused headings | 2 | $80 |
| 6 | Hide "None" placeholder values in spec tables | 1 | $40 |
| Subtotal — Low | 23 hrs | $920 | |
* Hours are averages and the price is fixed at $40/hour, for development implementation only. Content creation (product videos, installation photography), product data entry for the empty collections, and third-party subscription costs (email platform, review app) are not included. Suggested order: Critical → Medium → Low.
The fixes in this report aren't theory — they're the same conversion levers we implement for the stores we work with. Here's the Total Sales curve from a store running our approach versus the previous period:
Total Sales over the period: $168,636 — +19% vs the prior period. Solid line = current (our approach), dotted = before.