West Story
Website Performance
& Technical Audit
Performance
Performance
Accessibility
SEO
This report presents a comprehensive analysis of west-story.com, a Saudi-based e-commerce store selling premium fragrance diffusers and home scenting products. The audit encompasses PageSpeed performance metrics, Core Web Vitals, traffic intelligence from SimilarWeb, technology stack profiling, competitive positioning, and a structured action roadmap for performance and conversion improvement.
Executive Summary
Key findings for decision-makers
West Story (west-story.com) is a niche Saudi Arabian e-commerce brand selling premium fragrance diffusers and home scenting solutions, having migrated to Shopify from a Zid platform in late 2025. The domain has been active since December 2013, and the site is currently hosted on Shopify's infrastructure behind Cloudflare's CDN.
The audit reveals a significant performance gap between mobile and desktop experiences, which is critically misaligned with the site's own traffic composition: 73.73% of all visits originate from mobile devices. While the desktop experience scores acceptably, mobile performance sits at a score of 50/100 — borderline failing — with a Largest Contentful Paint of 23.5 seconds under simulated mobile conditions.
Technical root causes include an excessive number of render-blocking CSS and JavaScript files, nearly 1 MB of unused JavaScript, large unoptimised images, and significant third-party script overhead from Google Tag Manager, Facebook Pixel, and multiple analytics tags executing at page load.
Critical Risk
Mobile LCP of 23.5s is severely outside Google's "Good" threshold of 2.5s. This directly impacts SEO rankings and user abandonment.
Key Opportunity
Image optimisation alone could save ~399 KiB on mobile and ~561 KiB on desktop, delivering the single largest performance gain.
Traffic Insight
100% of traffic originates from Saudi Arabia. Organic search accounts for only 44.15%, with 33.14% direct — indicating strong brand awareness but limited discovery reach.
Positive Signal
Bounce rate is 31.01% — well below e-commerce averages — and visitors browse ~2.07 pages per session, signalling genuine engagement.
Top 5 Priority Findings
- Mobile Performance Score of 50/100 — a failing grade that affects organic search ranking and conversion rates for the majority of visitors.
- Mobile LCP: 23.5 seconds — the primary hero image loads after a 1.91s element render delay and insufficient image optimisation.
- 955 KiB of unused JavaScript on mobile — primarily from Google Tag Manager (1,174 KiB transferred, 624 KiB unused) and Shopify hosting scripts.
- Total network payload of 4,817 KiB (mobile) / 4,968 KiB (desktop) — far exceeding the recommended budget of ~1,600 KiB for a mobile-first store.
- Multiple render-blocking resources — 14+ CSS files and Swiper JS bundle (35.5 KiB) blocking initial paint, with an estimated 780ms savings available on mobile.
Website Overview
Domain, technology & market profile
Domain Intelligence
laura.ns.cloudflare.com
Technology Stack
Business Profile
Market Ranking
The site is included in Google's CrUX Top 5M dataset, indicating sufficient real-world traffic for Core Web Vitals field data collection. Being in this dataset means Google has enough data to use real user metrics for ranking signals.
Performance Score Summary
Google Lighthouse audit results · 26 March 2026
Performance
Needs ImprovementThe mobile performance score sits at 50/100 — the lowest of all categories and a direct indicator of poor user experience on smartphones. With 73.73% of traffic mobile, this is the highest-priority item in the entire audit. The score is primarily dragged down by an extremely high LCP, unused JavaScript, and render-blocking resources.
Accessibility
ModerateMobile accessibility scores 89/100. Key failures include buttons without accessible names (multiple "quick add" product buttons), dialog elements missing ARIA labels, and touch targets with insufficient size or spacing — impacting usability for all users, not just those with disabilities.
Best Practices
ModerateBest Practices at 77/100 on mobile. Issues include use of deprecated APIs (AttributionReporting), browser console errors (ReferenceError: gtag is not defined), and missing Content Security Policy headers. The CSP gap exposes the site to XSS attack vectors.
SEO
GoodMobile SEO scores 92/100 — the strongest category. The site has valid hreflang tags, a canonical URL, robots.txt, meta descriptions, and descriptive link text. The one failure is a non-crawlable link using href="javascript:void(0)" on a "See all reviews" anchor, which prevents crawlers from following it.
Performance
Needs ImprovementDesktop performance at 69/100 is better than mobile but still falls in the "Needs Improvement" band. The Speed Index of 4.5 seconds and Total Blocking Time of 400ms are the primary drags. Unused JavaScript (959 KiB savings), render-blocking resources (80ms savings), and an enormous network payload of 4,968 KiB are the main causes.
Accessibility
ModerateDesktop accessibility at 83/100 — slightly lower than mobile. Issues include buttons without accessible names, images missing alt attributes, dialog elements without accessible names, and heading elements not in sequentially-descending order. These affect both accessibility compliance and SEO.
Best Practices
ModerateDesktop Best Practices mirrors mobile at 77/100. Deprecated APIs, console errors, and missing security headers (CSP, HSTS strengthening, COOP) apply across both form factors. JavaScript libraries including jQuery 3.3.1 are detected — an older version with known CVEs.
SEO
GoodDesktop SEO at 85/100 — slightly below mobile. The same non-crawlable "javascript:void(0)" link failure applies. Additionally, some image elements lack alt attributes on desktop, which impacts both accessibility and image search indexing potential.
Mobile vs. Desktop — Score Comparison
Core Web Vitals & Speed Metrics
Measured via Lighthouse 13.0.1 · 26 March 2026
Core Web Vitals are Google's standardised performance metrics used as ranking signals. "Good" thresholds are: LCP ≤ 2.5s · FID/TBT ≤ 100ms · CLS ≤ 0.1. The table below shows both mobile (simulated Moto G Power, Slow 4G) and desktop (emulated desktop, custom throttling) results.
| Metric | Mobile | Desktop | Good Threshold | Mobile Status |
|---|---|---|---|---|
| LCP Largest Contentful Paint |
23.5 s | 1.3 s | ≤ 2.5 s | Critical |
| FCP First Contentful Paint |
4.7 s | 0.7 s | ≤ 1.8 s | Critical |
| TBT Total Blocking Time |
340 ms | 400 ms | ≤ 200 ms | Elevated |
| CLS Cumulative Layout Shift |
0 | 0.036 | ≤ 0.1 | Good |
| Speed Index Visual completeness |
9.8 s | 4.5 s | ≤ 3.4 s | Critical |
LCP Breakdown — Mobile (23.5s total)
The LCP element is the hero Ramadan campaign image in the homepage slideshow. The breakdown of the 23.5s shows where time is wasted:
Critical insight: The Element Render Delay of 1.91s dominates — this means JavaScript is executing and blocking the browser from painting the LCP image even after it has been downloaded. The Swiper slider bundle (swiper-bundle.min.js, 35.5 KiB, 1,890ms duration) is identified as a primary culprit in the forced reflow analysis.
Traffic & Engagement Insights
SimilarWeb data · February 2026
Device Distribution
The stark mobile dominance makes the mobile performance score of 50/100 a business-critical issue. Over 3 in 4 users experience the degraded mobile journey.
Geography
All traffic originates from Saudi Arabia — a highly focused market. This suggests the store has not yet penetrated GCC neighbours (UAE, Kuwait, Bahrain) despite shipping to 200+ countries.
Traffic Channels
Despite running Google Ads (AW-789 tag detected), paid search drives under 1.5% of traffic. Organic and direct dominate — indicating strong brand recall but a dependency on SEO health.
Outgoing Traffic
All outgoing link traffic flows to the Paymob payment gateway, confirming it as the primary payment processor. No competitor referral traffic detected.
Social Traffic Source
Despite maintaining Facebook, Instagram, TikTok, and Twitter accounts, social media drives minimal traffic — a significant gap given the brand's product category appeal in the Gulf market.
Competitive Landscape
Similar sites identified via SimilarWeb · February 2026
SimilarWeb identified 7 websites with audience overlap with west-story.com. The affinity score indicates the degree of shared audience behaviour and interest. Note that the full-access version was limited; competitor details shown reflect available data.
| # | Domain | Industry | Global Rank | Monthly Visits (Feb 2026) | Affinity Score |
|---|---|---|---|---|---|
| — | west-story.com YOU | Home Fragrance | #8,806,435 | 1,478 | |
| 1 | alwalaa-first.com | Unknown | — | 99 | |
| 2 | diyalastore.com | Unknown | #3,557,795 | 4,701 | |
| 3 | aljazerah-perfume.com | Unknown | #4,481,637 | 3,967 | |
| 4 | ruajalyasamin.com | Unknown | — | 540 | |
| 5 | altyab.com | Beauty & Cosmetics | #1,942,071 | — |
Strategic Insight
Competitors diyalastore.com (#3.5M global rank) and aljazerah-perfume.com (#4.4M global rank) both generate significantly more monthly traffic than west-story.com despite being in the same niche. West Story's 1,478 monthly visits versus diyalastore's 4,701 represents a 3.2× traffic gap to close. Improving mobile performance directly impacts organic search ranking, which could meaningfully shift this competitive position.
Technical Findings
Detailed diagnostic analysis from PageSpeed Insights
Unused JavaScript
955 KiB savings (mobile)What it is: JavaScript files are downloaded and parsed by the browser but never executed during the initial page load. This wastes bandwidth and CPU time.
Why it matters: JavaScript parsing and compilation on mobile consumed 1,629ms of script evaluation time. Every kilobyte of unused code delays the browser's ability to become interactive.
Key offenders:
- Google Tag Manager scripts: 1,174.8 KiB transferred, 624.8 KiB unused
- Shopify platform scripts (math.min.js): 195.1 KiB transferred, 143 KiB unused
- Shopify product-o….js: 133.4 KiB, 110.8 KiB unused
- Facebook Pixel (fbevents.js): 94.3 KiB, 31.8 KiB unused
Business impact: Directly increases TBT (340ms mobile), delays interactivity, and reduces conversion probability on mobile devices.
Render-Blocking Resources
780 ms savings (mobile)What it is: CSS and JavaScript files loaded in the <head> that force the browser to pause rendering until they are fully downloaded and parsed.
Why it matters: The browser cannot paint any pixels until these resources load — directly extending FCP and LCP beyond acceptable thresholds.
Key offenders (mobile, total 71.6 KiB, 6,140ms):
- swiper-bundle.min.js: 35.5 KiB, 1,890ms duration
- base.css: 7.9 KiB, 790ms
- 14 individual CSS files loaded synchronously
- Google Fonts CSS (fonts.googleapis.com): 1.3 KiB, 780ms
Business impact: Users on mobile see a blank screen for 4.7 seconds before any content appears — a critical abandonment risk.
Image Delivery Issues
399 KiB savings (mobile)What it is: Product images are served at dimensions larger than their displayed size, and with insufficient compression. Images are the largest content type on the page.
Why it matters: Images are the primary LCP resource. The hero banner image (Ramadan.jpg) is identified as the LCP element. Multiple product card images are served at 750×750 pixels but displayed at only 317×317 pixels — a 5.6× oversize.
Key examples:
- Main banner: 112.5 KiB, 87.3 KiB savings possible
- Product card 23.jpg: 102 KiB, 85.6 KiB savings
- Product card 15_1.jpg: 100.8 KiB, 84.4 KiB savings
- Product card 17_1.jpg: 77 KiB, 63.2 KiB savings
Business impact: Product images are the primary conversion driver. Poor image quality OR slow image loading both reduce add-to-cart rates.
Enormous Network Payload
Total: 4,817 KiB (mobile)What it is: The total weight of all resources downloaded by the browser to render the page. Google recommends keeping payloads under ~1,600 KiB.
Why it matters: On a mobile connection (especially in areas with variable 4G), a 4.8MB page load is a significant bandwidth cost for users, increasing both load time and data usage. This directly correlates with the 9.8s Speed Index on mobile.
Breakdown:
- Google Tag Manager: 1,049.1 KiB
- First-party (Shopify store): 353.9 KiB
- Shopify hosting (CDN): 331.2 KiB
- Facebook Social: 138 KiB
- Images (first party): 487.1 KiB
Third-Party Script Impact
Main thread: 715 ms (GTM)What it is: External scripts from analytics, advertising, and tracking platforms that load independently of the store's code and consume main thread time.
Why it matters: Third-party scripts are responsible for 848ms of CPU time on mobile (Google Tag Manager alone: 477ms script evaluation, 338ms script parse). They compete with user-facing code for the main thread.
Third parties detected: Google Tag Manager (8 separate gtag calls), Facebook Pixel, omnisnippet1.com (popups/forms), helixo.co (loyalty program), Secomapp (SEO app), hengam.io (discount), instant.page, Soundest/Omnisend.
Business impact: Each third-party script increases TBT and can degrade ad conversion tracking accuracy due to delayed execution.
Legacy & Duplicated JavaScript
42 KiB legacy + 5 KiB duplicateWhat it is: Legacy JavaScript contains Babel polyfills (transform-classes, transform-regenerator, transform-spread) for browser features natively supported since 2018. Duplicate modules load the same code twice.
Why it matters: Polyfills add unnecessary parse/compile time on modern devices. Duplicate modules waste bandwidth. jQuery 3.3.1 is also an older library version.
Key files: math.min.js (Shopify CDN, 19.1 KiB legacy); flatpickr.js (8.2 KiB); Facebook fbevents.js (12.5 KiB legacy). Duplicate: quick-add.js and product-form.js loaded twice.
Cache Lifetime Issues
232 KiB could be cachedWhat it is: Several resources are served without appropriate long-term cache headers, forcing repeat visitors to re-download unchanged assets.
Key offenders (short TTLs): Facebook Social scripts (20-minute cache: 138 KiB), Shopify-hosted bucksSdk.min.js (30-minute cache), latest/accelerated-checkout-backwards-compat.css (5-minute cache), omnisnippet1.com scripts (1-hour cache, 70 KiB).
Business impact: Repeat visitors (brand loyalists, returning customers) experience the same slow load times on every visit — reducing lifetime value and repeat purchase rates.
Main Thread Work & Long Tasks
3.5s main thread (mobile)What it is: The browser's main thread handles JavaScript execution, style calculations, layout, and rendering. When it is occupied for long periods, the browser cannot respond to user interactions.
Stats: 15 long tasks found on mobile. Main thread breakdown: Script Evaluation (1,629ms), Script Parsing & Compilation (676ms), Other (622ms), Style & Layout (373ms).
DOM size: 4,954 total elements — excessive DOM depth creates style recalculation costs. Max DOM depth is 18 levels. A select element contains 238 child options (country dropdown).
Unused CSS
17 KiB savingsWhat it is: CSS rules downloaded but not applied to any element on the current page.
Key file: Shopify hosting's assets/style-COzgbOh_.css (17.3 KiB, 100% unused on this page).
Recommendation: Audit which Shopify theme CSS files are actually needed per page and use critical CSS inlining for above-the-fold styles.
Preconnect Overuse
Reduce to max 4 originsWhat it is: The page declares more than 4 preconnect hints, including unused ones (e.g., https://shop.app which is not actually requested). This wastes connection resources on mobile.
Recommendation: Limit preconnect to the 4 most critical origins (cdn.shopify.com, fonts.googleapis.com, connect.facebook.net, www.googletagmanager.com) and remove unused hints.
Accessibility & UX Observations
Lighthouse accessibility audit findings
Accessibility failures are not just compliance issues — they directly reduce conversion rates. Inaccessible buttons cannot be activated via assistive technologies; missing alt text harms product discovery in Google Image Search; undersized touch targets cause mis-taps on mobile, leading to accidental navigations and cart abandonment.
Buttons Without Accessible Names
Affects: ~20+ "Quick Add" product buttons
Every product card has a "Quick Add to Cart" button that lacks a human-readable accessible name. Screen readers announce these as "button" with no context — making them completely unusable for visually impaired shoppers using VoiceOver or TalkBack.
aria-label="Add [Product Name] to cart" to each quick-add button, dynamically populated from the product title.
Images Without Alt Attributes
Affects: Product card images (desktop)
Product images in the collection grid are missing alt attributes. This prevents screen readers from describing product visuals, harms Google Image Search indexing, and reduces the overall accessibility score to 83 on desktop.
alt="[Product Name] - [Brief Description]". In Shopify Liquid, use {{ image.alt | escape }}.
Dialog ARIA Naming Failure
Affects: Email subscription popup modal
The email subscription popup dialog has role="dialog" with an empty aria-label="". Screen reader users cannot determine the purpose of the modal when it opens, causing confusion and potentially trapping keyboard focus invisibly.
aria-labelledby pointing to the modal's heading element, or set a meaningful aria-label such as aria-label="Subscribe to newsletter".
Touch Target Size & Spacing
Affects: Subscribe button & newsletter email input
The newsletter subscription button and email input field fail the minimum touch target size requirement of 48×48 CSS pixels with 8px spacing. Users with motor impairments — and average users on small screens — frequently mis-tap these elements.
Non-Sequential Heading Order
Affects: Product collection section heading
A section heading is not in sequentially descending order (e.g., an H2 follows an H1 with no H2 in between). This disrupts both screen reader navigation and SEO parsing of page content hierarchy.
Non-Crawlable JavaScript Links
Affects: "See all reviews" anchor element
A "See all reviews" link uses href="javascript:void(0)", which is not crawlable by search engines and not activatable by keyboard-only users who navigate via the Enter key on links.
href="/pages/reviews" or href="#reviews-section") or convert to a <button> element if it triggers JavaScript behaviour.
Business Impact Analysis
Translating technical findings into commercial outcomes
Performance is not merely a technical concern — it is a direct driver of revenue. Research by Google indicates that a 1-second delay in mobile page load time can reduce conversions by up to 20%. For West Story, with a Mobile LCP of 23.5 seconds, the impact is compounded across the entire funnel.
Mobile Conversion Suppression
73.73% of visitors arrive on mobile. With a 23.5s LCP and 9.8s Speed Index, a substantial portion of these users abandon before the page fully loads. The current 42-second average visit duration on mobile is diagnostic of shallow engagement driven by load-time frustration rather than product disinterest.
SEO Ranking Suppression
Google uses Core Web Vitals as ranking signals. West Story's mobile LCP (23.5s vs. the 2.5s "Good" threshold) and FCP (4.7s vs. 1.8s) will likely result in ranking penalties in Google's Page Experience system. This particularly impacts the 44.15% organic search traffic channel — the site's largest acquisition source.
Paid Advertising Inefficiency
Google Ads (AW-789 tag), Google Analytics 4, Google Tag Manager with 8 script calls, and Facebook Pixel all load at page start. These third-party scripts consume 848ms of CPU time, delaying the user's experience after clicking an ad. Slow landing pages directly increase Google Ads cost-per-click and reduce Quality Score, meaning the same budget yields fewer conversions.
Product Discovery Quality
Product images missing alt attributes cannot be indexed in Google Image Search — a significant traffic source for home décor and fragrance categories. The non-crawlable "See all reviews" link prevents search engines from discovering and indexing the reviews page, reducing social proof visibility in search results.
Brand Perception & Trust
West Story sells premium, luxury-positioned fragrance products priced at a premium. A slow, janky mobile experience creates cognitive dissonance — the website's performance signals contradict the premium brand promise. Missing security headers (CSP, COOP) and browser console errors may also trigger security warnings in future browser updates, damaging checkout trust.
Market Expansion Barrier
100% of traffic comes from Saudi Arabia despite shipping to 200+ countries. Poor Core Web Vitals scores limit organic search visibility in other GCC markets (UAE, Kuwait, Bahrain) — markets with high disposable income and strong demand for premium home fragrance. Performance improvement is a prerequisite for international SEO expansion.
Prioritised Action Plan
A structured roadmap from quick wins to strategic improvements
Quick Wins
0 – 2 Weeksaria-label="Add {{ product.title }} to cart". Fix the email popup dialog by adding aria-labelledby="popup-heading-id".href="javascript:void(0)" with a real URL. If it opens a JS overlay, use a proper anchor and intercept the click with JavaScript. This ensures crawlability and keyboard accessibility.Mid-Term Improvements
2 – 6 Weeks<link rel="preload"> with onload conversion. Use critical CSS inlining for above-the-fold styles.loading="lazy" (already present on some, but verify all). Critically, the LCP hero image should NOT use lazy loading — it must use fetchpriority="high" (already set on the Ramadan.jpg banner — maintain this).includeSubDomains and preload directives. Add a COOP header. Consult Shopify documentation for CSP implementation in Liquid.display=swap for Tajawal (Google Fonts). Consider self-hosting font files via Shopify's CDN to eliminate the external fonts.googleapis.com DNS lookup (780ms additional delay). Pre-load the WOFF2 font files.Strategic Improvements
6+ Weeksp=none (monitor only). Gradually progress to p=quarantine and then p=reject to fully protect the domain from email spoofing. Monitor DMARC reports via Mailgun to ensure legitimate email flows are not affected.Final Conclusion
Strategic closing statement
To the West Story team,
West Story has built a genuine brand with real market traction in the Saudi premium home fragrance segment. The low bounce rate (31.01%), the above-average pages-per-visit (2.07), and the organic search dominance (44.15%) all point to a product and brand that resonates with its audience. These are strong foundations.
However, the technical performance of the website — particularly on mobile — currently functions as a hidden tax on every dimension of business performance. A mobile Largest Contentful Paint of 23.5 seconds means that the majority of your visitors are waiting over 23 seconds to see your most important content. Google measures this. Users experience this. Conversion rates reflect this.
The highest-return actions are clearly identified: image optimisation and render-blocking resource elimination can be executed within days and will yield the most significant improvement in mobile load time. These changes require minimal development effort but produce outsized results.
The mid-term investments — JavaScript deferral, security header improvements, and touch target remediation — will compound the initial gains and bring the site to a performance level competitive with the broader regional market.
The strategic investments — theme performance rebuild and a structured social and GCC expansion strategy — represent the transformation from a nationally recognised brand to a regionally dominant one.
This report provides all the data and directives needed to begin that journey. The path from a mobile performance score of 50 to a score of 80+ is achievable within 60–90 days with focused execution. That improvement alone could increase organic search visibility, conversion rate, and return-on-ad-spend in ways that compound over time.
The opportunity is clear. The roadmap is defined. The next step belongs to the team.