Category: Saclab

  • Story 1.5.1 Homepage – Performance Improvement

    General Info

    The homepage’s LCP is above 5s on mobile. Lighthouse confirms the hero image is discovered late, blocking CSS/JS, legacy polyfills, and the HiPay SDK load are all hurting performance.

    Bildschirmfoto 2025-07-09 um 14.29.04.png

    saclab.com_home_lighthou…

    User Story

    As a first-time visitor landing on the homepage, I want the hero image and key content to appear instantly so I feel confident to explore the site.

    Acceptance Criteria

    ID

    Scenario

    Details

    01

    Scenario: Hero image loads eagerly and is preloaded

    Given the hero image is the LCP element

    When the page loads

    Then it is discovered early and fetched as priority

    Evidence: Lighthouse: “Preload the Largest Contentful Paint image” flagged; delays LCP by ~5s.

    Why: Lazy-loading the hero image delays browser discovery.

    Action direction: Exclude from lazy-load, use loading="eager", fetchpriority="high", and add <link rel="preload"> in <head>.

    02

    Scenario: Render-blocking CSS eliminated

    Given main CSS blocks first paint

    When the page loads

    Then only critical CSS is loaded upfront

    Evidence: “Eliminate render-blocking resources” for main.css (~114 KB).
    Why: Large blocking styles delay FCP.
    Action direction: Use WP Rocket’s Remove Unused CSS, inline critical CSS, defer rest.

    03

    Scenario: Non-critical JS is deferred

    Given JS blocks interactivity

    When the page loads

    Then non-essential scripts load deferred

    Evidence: Lighthouse: “Defer parsing of JavaScript” – total JS ~512 KB.
    Why: Early script parsing ties up the main thread.
    Action direction: Delay analytics, consent scripts (CookieYes), and any chat widgets; use WP Rocket’s Delay JS Execution or theme-level defer.

    04

    Scenario: Legacy JS polyfills removed if not needed

    Given modern browsers dominate

    When the page loads

    Then no unnecessary legacy JS loads

    Evidence: “Avoid serving legacy JavaScript to modern browsers”. core-js polyfill seen.

    Why: Legacy scripts inflate bundle size.

    Action direction: Remove or conditionally load polyfills only if browser checks require them.

    05

    Scenario: HiPay SDK only loads where needed

    Given HiPay is for checkout only

    When the homepage loads

    Then HiPay scripts do not run

    Evidence: hipay-sdk.js (~200–300 KB) loaded on homepage.

    Why: Unnecessary third-party scripts waste bandwidth and CPU. Action direction: Wrap enqueue logic in if ( is_checkout() ) or unload globally via plugin.

    06

    Scenario: Static assets have efficient cache policy

    Given repeat visitors should benefit from cache

    When they revisit

    Then assets are reused

    Evidence: “Serve static assets with an efficient cache policy” – TTL near zero.

    Why: No cache means repeated downloads.

    Action direction: Use Cloudflare/Page Rules to set proper TTL for images, CSS, JS.

  • Epic 1.5. Core PageSpeed Improvements for saclab.com

    General info

    We need to bring Largest Contentful Paint (LCP), Time to Interactive (TTI), and overall page responsiveness in line with Google’s recommended thresholds across our Homepage, /bags listing page, and Product Detail Pages.

    Recent Lighthouse audits on mobile show LCP values as high as 5–6 s, with known issues such as delayed hero image loading, inefficient image formats, render-blocking CSS/JS, unused or legacy scripts (like the HiPay SDK running globally), and insufficient caching.

    Because 80% of our traffic is mobile, we focus on mobile-first performance, but many improvements will benefit desktop as well.

    The goal is to systematically remove confirmed bottlenecks, follow best practices for Core Web Vitals, and deliver a faster, more reliable experience for all visitors.

    Epic ticket:

    Epic User Story

    As a customer browsing saclab.com, I want all core pages – including the homepage, bags listing, and product pages – to load fast and interact smoothly so that I feel confident exploring, selecting, and purchasing items.

    Acceptance Criteria

    This EPIC is fully covered by three focused stories, each addressing verified performance bottlenecks on a specific page type:

    1. Homepage

    2. /bags product feed page

    3. Product detail page

    Screenshots and attached Lighthouse reports often highlight Mobile performance issues as the priority – this is intentional, since around 80% of our traffic is mobile.

    However, many Acceptance Criteria (such as optimising image formats, removing render-blocking CSS/JS, or deferring third-party scripts) will have a positive impact on both mobile and desktop.

    We adopt a mobile-first approach, but expect improvements across all device types.

    Note for developers:

    All recommended actions and configuration tips in the individual stories are provided as a directional starting point only.

    The dev team should validate what’s technically feasible, adapt to our theme and plugins, and test thoroughly in staging to ensure stable, measurable PageSpeed gains.

  • Release Notes – Saclab General – 01.07 Release – Jul 08 15:10

    How to use this page:

    Find your selected Jira issues in the table below. Select the expand to use them as your source of truth to write release notes.

    Issues in this release

    Before you share the page, review the contents of each Jira issue and remove any sensitive data.

    Issue

    Summary

    Issue Type


    SCLB-1471

    Update Checkout Button Label for Direct Bank Transfer to “Place Order”

    Task


    SCLB-1469

    HDK coupon isn’t converted into other currencies

    Bug


    SCLB-1468

    Language Slider stage: rename "english (UK)" back to "English"

    Bug


    SCLB-1467

    Stage (+ LIVE): Cancelled on Hold order does not trigger email "the order for your xx has been cancelled"

    Bug


    SCLB-1466

    Prices are displayed in Euro when user with US IP reaches US checkout

    Bug


    SCLB-1464

    HKD – registration of the user doesn’t work

    Bug


    SCLB-1460

    HKD – yaycurrency – adding "Fixed fee" breaks the price calculation

    Bug


    SCLB-1458

    HKD – Gift card isn’t displayed in the search results. UPD: search doesn’t work

    Bug


    SCLB-1457

    manually reaching stage.saclab.com/us/ displays incorrect country+currency switcher

    Bug


    SCLB-1454

    Update the HiPay Plugin including local JS SDK

    Task


    SCLB-1451

    Exotic leather bag doesnt trigger PopUp "exotic leather unsupported country" for first-time checkout visit

    Bug


    SCLB-1450

    AC04 browser language support does not work on mobile

    Bug


    SCLB-1447

    No TY page for HKD Directbank

    Bug


    SCLB-1443

    US location – homepage and currency switcher issue

    Bug


    SCLB-1430

    Feature: Hong Kong Storefront with HKD Pricing

    Task


    SCLB-1426

    Company name not printed on UPS label when creating label from WooCommerce order

    Bug


    SCLB-1412

    Story 1.4.1 Region & Language Auto-Detection

    Task

    Summary

    New Features

    Improvements to existing features

    Bug fixes

  • Release Notes – Saclab General – 12.06 Release – Jul 01 08:18

    How to use this page:

    Find your selected Jira issues in the table below. Select the expand to use them as your source of truth to write release notes.

    Release

    https://cheitgroup.atlassian.net/projects/SCLB/versions/11078

    Date

    Version

    12.06 Release

    Description

    Contributors

    Andrii KupriianovAlexander Böhringer

    Issues in this release

    Before you share the page, review the contents of each Jira issue and remove any sensitive data.

    Issue

    Summary

    Issue Type


    SCLB-1432

    LIVE Homepage – (Mobile) Layout and CTA Fixes

    Task


    SCLB-1378

    Checkout Logic: unsuccesful checkout attempt "blocks" product from being bought for 20 minutes

    Task

    Summary

    New Features

    Improvements to existing features

    Bug fixes

  • Story 13.1.4 Bag Vault Tracking via dataLayer.push()

    General info

    We are implementing frontend tracking for the Bag Vault multistep submission form using dataLayer.push() events. These events will be picked up by Google Tag Manager (GTM) and tracked in Google Analytics 4 (GA4) to analyze user funnel behavior. Tracking is triggered directly after each key interaction, including form steps, account actions, and final submission. No GTM configuration is required from dev side.

    Changes

    • Add dataLayer.push() calls to the Bag Vault form steps

    • Include hashed user data (email and phone) where available

    • No changes to GTM triggers/tags

    • Triggers to fire immediately after action (button clicks)

    User story

    As a user submitting a bag via the Bag Vault form,

    When I progress through steps or submit my form,

    Then each interaction is tracked using GA4 events,

    And my identity is anonymized where appropriate.

    Process flow diagram:

    Bildschirmfoto 2025-06-26 um 09.19.34.png

    Documents

    PDF with this story outline from Lukas Becker (External Marketing Tracking) lukas@lukas-becker.euDeveloper Briefing – Tra…

    Developer Briefing – Tra…

    Acceptance Criteria

    #

    Acceptance Criteria

    Screenshot Reference

    01

    Scenario: Add Bag Details
    Given the user is on the first step,
    When they click “Next Step” after entering bag details,
    Then push event saclab_bag_vault_add_bag_details

    window.dataLayer.push({
    event: 'saclab_bag_vault_add_bag_details'
    });

    Bildschirmfoto 2025-06-26 um 09.46.33.png

    02

    Scenario: Additional Info
    Given the user completed condition/accessories step,

    When they click “Next Step”,

    Then push event saclab_bag_vault_add_additional_information

    window.dataLayer.push({
    event: 'saclab_bag_vault_add_additional_information'
    });

    Bildschirmfoto 2025-06-26 um 09.46.43.png

    03

    Scenario: Log In

    Given the user is logging in,

    When they click “Log In”,

    Then push event saclab_bag_vault_step_login

    window.dataLayer.push({
    event: 'saclab_bag_vault_step_login'
    });

    Bildschirmfoto 2025-06-26 um 09.46.51.png

    04

    Scenario: Create Account

    Given the user doesn’t have an account,

    When they click “Create an Account”,

    Then push event saclab_bag_vault_step_create_an_account

    window.dataLayer.push({
    event: 'saclab_bag_vault_step_create_an_account'
    });

    Bildschirmfoto 2025-06-26 um 09.46.55.png

    05

    Scenario: Confirm Email

    Given the user is in the email step,

    When they click “Confirm your email”,

    Then push event saclab_bag_vault_step_confirm_your_email

    window.dataLayer.push({
    event: 'saclab_bag_vault_step_confirm_your_email'
    });

    Bildschirmfoto 2025-06-26 um 09.47.00.png

    06

    Scenario: Sign Up

    Given the user is registering,

    When they click “Sign up”,

    Then push event saclab_bag_vault_step_confirm_your_email WRONG

    saclab_bag_vault_sign_up RIGHT

    window.dataLayer.push({
    event: ‘saclab_bag_vault_step_confirm_your_email’
    });

    window.dataLayer.push({

    event: 'saclab_bag_vault_sign_up' // right

    });

    Bildschirmfoto 2025-06-26 um 09.47.06.png

    07

    Scenario: Submit Bag Form

    Given the user reviews their bag,

    When they click “Submit” and it succeeds,

    Then push event saclab_bag_vault_review_your_bag with user_data

    window.dataLayer.push({
    event: 'saclab_bag_vault_review_your_bag',
    user_data: {
    customer_id: '123456',
    email: 'user@example.com',
    email_hash: '6f1ed002ab5595859014ebf0951522d9faaa'
    }
    });

    • user_data.customer_id: Internal user ID (WordPress)

    • user_data.email: The user’s email address (lowercased and trimmed)

    • user_data.email_hash: SHA256 hash of the email (lowercased and trimmed)

    Bildschirmfoto 2025-06-26 um 09.47.10.png

    08

    Scenario: Submission Success

    Given the form is submitted,

    When the success screen is displayed,

    Then push event saclab_bag_vault_success with user_data incl. hashed phone

    window.dataLayer.push({
    event: 'saclab_bag_vault_success',
    user_data: {
    customer_id: '123456',
    email: 'user@example.com',
    email_hash: '6f1ed002ab5595...',
    phone: '+4917612345678',
    phone_hash: '5a1c123f4d2e...'
    }
    });

    • user_data.customer_id: Internal user ID (WordPress)

    • user_data.email: The user’s email address (lowercased and trimmed)

    • user_data.email_hash: SHA256 hash of the email (lowercased and trimmed)

    • user_data.phone: The user’s phone number in E.164 format

    • user_data.phone_hash: SHA256 hash of the trimmed E.164 phone number

    Bildschirmfoto 2025-06-26 um 09.47.16.png

  • Release Notes – Saclab General – 10.06 Release – Jun 11 17:20

    How to use this page:

    Find your selected Jira issues in the table below. Select the expand to use them as your source of truth to write release notes.

    Release

    https://cheitgroup.atlassian.net/projects/SCLB/versions/11045

    Date

    Version

    10.06 Release

    Description

    Contributors

    Thư Phan

    Issues in this release

    Before you share the page, review the contents of each Jira issue and remove any sensitive data.

    Issue

    Summary

    Issue Type


    SCLB-1433

    Feature: Auto-fill phone number on step 4 saclab.com/sell

    Task


    SCLB-1168

    Email Automation for FT Seller – Scope Changes and Additions

    Task


    SCLB-1034

    Submission submitted Email automation for FT seller

    Story

    Summary

    New Features

    Improvements to existing features

    Bug fixes

  • Release Notes – Saclab General – 03.06 Release – Jun 04 15:56

    How to use this page:

    Find your selected Jira issues in the table below. Select the expand to use them as your source of truth to write release notes.

    Release

    https://cheitgroup.atlassian.net/projects/SCLB/versions/11012

    Date

    Version

    03.06 Release

    Description

    Contributors

    Andrii KupriianovAlexander Böhringer

    Issues in this release

    Before you share the page, review the contents of each Jira issue and remove any sensitive data.

    Issue

    Summary

    Issue Type


    SCLB-1435

    Check UTM tracking

    Bug


    SCLB-1434

    PayPal AND Creditcard Transaction Marked as Cancelled in WooCommerce Despite Successful Payment via HiPay

    Bug

    Summary

    New Features

    Improvements to existing features

    Bug fixes

  • Release Notes – Saclab General – 29.05 Release – Jun 03 08:28

    How to use this page:

    Find your selected Jira issues in the table below. Select the expand to use them as your source of truth to write release notes.

    Release

    https://cheitgroup.atlassian.net/projects/SCLB/versions/10979

    Date

    Version

    29.05 Release

    Description

    Contributors

    Thư Phan

    Issues in this release

    Before you share the page, review the contents of each Jira issue and remove any sensitive data.

    Issue

    Summary

    Issue Type


    SCLB-1431

    The text isn’t centered

    Bug


    SCLB-1424

    Promotion box on saclab.com/sell

    Task

    Summary

    New Features

    Improvements to existing features

    Bug fixes

  • Feature: Auto-fill phone number on step 4

    User Story

    As a returning seller,
    I want my previously entered phone number to be automatically pre-filled
    So that I don’t have to re-enter it every time I submit a bag for sale.

    Scenario: Pre-fill phone number field on return visit
    Given I am a logged-in user
    And I have previously submitted a bag for sale
    And I entered my phone number in the submission form
    When I go to http://saclab.com/sell to submit another bag
    Then the phone number field should be pre-filled with my last used phone number

    Screenshot 2025-05-29 at 12.40.38.png

    Scenario: No phone number stored
    Given I am a logged-in user
    And I have never submitted a phone number before
    When I go to http://saclab.com/sell
    Then the phone number field should be empty

    Scenario: Update phone number on new submission
    Given I am a logged-in user
    And I submit a new bag with a different phone number
    When the submission is completed
    Then the new phone number should replace the previously saved number for future autofill

  • Emails in HKD

    Scenario: All user emails display prices in the correct currency based on storefront or shipping address
    Given the user’s location is detected as Hong Kong by IP address
    Or the user has manually selected the Hong Kong storefront
    Or the user completes checkout with a shipping address in Hong Kong
    When any email is sent to the user (e.g. order confirmation, shipping update, invoice, gift card, etc.)
    Then all monetary values in the email should be displayed in Hong Kong Dollars (HKD)
    And the currency symbol should be shown as "HKD"
    And the values should match the currency and pricing shown on the storefront or checkout at the time of purchase