|
> 1000euro: |
||
|
<1000 euro: 130€ |
||
|
sync with airtable and Hubspot |
||
|
TAB theme settings for buyer fee |
Category: Saclab
-
Story 72.2. Buyer Fee increase from 9% to 13%
-
Le registry traffic source (UTM)
As we are running ads for Le registry page, we would like to track which one are coming in from the which ads, so we know if the ads are working
User story
As an Airtable user
I want to see the source of the le registry submission
So that helps to analyze the ads campaign and understand the source of the submission
Acceptance criteria
01
Given: ads campaign with the link that included UTMs
When: click in the campaign with this link as example:
https://saclab.com/bags/bottega-veneta-jodie-mini-lamb-light-blue/?utm_source=Facebook&utm_medium=Video&utm_campaign=bottega-veneta-jodie-mini-lamb-light-blue&utm_content=somename111
AND submit new le registry submissionThen: save cookies for this with UTMs to the bag submitted record https://airtable.com/appYjRuQ4YEFTUwtb/tbloP7ITyOCRbYsea/viwmuJNWLzba3r5bJ/recVYmperMEN5juNo?blocks=hide
02
Given: https://airtable.com/appYjRuQ4YEFTUwtb/tbloP7ITyOCRbYsea/viwmuJNWLzba3r5bJ?blocks=hide
When: I open a Le registry record in AirTable
Then: I see these columns in the Airtable:
-
utm_source: The source of the traffic (e.g., Google Ads, Facebook Ads).
-
utm_medium: The marketing medium (e.g., CPC, banner).
-
utm_campaign: The specific campaign name.
-
utm_content: specific ad name
Example:
utm_source=meta&utm_medium=cpc&utm_campaign={{campaign.name}}&utm_content={{ad.name}}
-
-
Release Notes – Saclab General – Release 24.07 – Jul 24 17:31
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/11243
Date
Version
Release 24.07
Description
Contributors
Summary
New Features
Improvements to existing features
Bug fixes
-
Release Notes – Saclab General – 17.07 Release – Jul 17 16:27
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/11210
Date
Version
17.07 Release
Description
Contributors
Summary
New Features
Improvements to existing features
Bug fixes
-
Release Notes – Saclab General – 15.07 Release – Jul 17 13:50
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/11177
Date
Version
15.07 Release
Description
Contributors
Summary
New Features
Improvements to existing features
Bug fixes
-
Story 47.2 Photo Import Automation
General info
Why we need this
Right now our team manually downloads ZIPs of bag photos from an external partner. We use these images to review each bag’s shape, color, and condition, then send them to our retouch agency. That takes time. With this automation, as soon as someone checks “Import Photos” in Airtable, the system will:
-
Log in to the partner site and download the ZIP.
-
Extract all images.
-
Save them into Box under All Files/001_Sales/Bags/02 New Bags/External Partners_Luxclusif/YYYY_MM_DD/[SKU].
-
Attach the photos back into the Airtable record for our sales team to review right away.
This cuts out manual steps, speeds up review, and gives our photo team instant access for editing.
User story
As an Inventory Manager
I want to check a box and have all bag photos fetched, saved in Box, and shown in Airtable
So that I can import up to 30 bags at once without downloading or uploading by hand
Credentials
Direct Luxclusif Login
-
Login URL: https://store.luxclusif.com/login?ReturnUrl=%2Fbags-2
-
Email: sales@saclab.com
-
Password: Dropship!
-
API documentationLCI-LUXCLUSIF API DOCUME…
Luxclusif Stage API
Base URL: https://staging.upteamco.com/1api/
Credentials
ID: 2613
GET: 1135ae4224213c50304c1f46fc46468b
POST: 042756131e79896e2d1dfaa1b7b3ef99Box
Account Type: Business
Limited Access App: Photo Import App
Client ID: x1e2jssnqvd0x48cpz3013nuzriy5sbhPrimary Access Token: gLkO6Q9yLSuCCdyJ6haFwyXRzUtF0xLr
Acceptance Criteria
Screenshot
01
Start import
Given up to 30 rows in “Bulk Bag Import” with valid “Photos (external)” links
When I check “Import Photos”Then Status → “In Progress: Image Import” and the job kicks off
Example “Photos (external)” link: http://store.luxclusif.com/product/DownloadImages?productId=275198
02
Download ZIP
Given Status = “In Progress: Image Import” and correct login info-
Login URL: https://store.luxclusif.com/login?ReturnUrl=%2Fbags-2
-
Email: sales@saclab.com
-
Password: Dropship!
When the job hits each link
Then it logs in, downloads the ZIP for each SKU, or on failure Status → “Error: Image Import”03
Extract images
Given a ZIP is downloaded
When the system unzips it
Then all JPG/PNG files are extracted
04
Upload to Box
Given images are extracted
When it makes folders All Files/001_Sales/Bags/02 New Bags/External Partners_Luxclusif/YYYY_MM_DD/[SKU] and uploads
Then each image is in the right Box folder
Link to box folder: https://app.box.com/folder/331484713369
05
Attach in Airtable
Given Box upload succeeds for a SKU
When it updates that record
Then photos appear in “Product Images”, and Status → “Images Imported”
06
Batch size
Given 30 rows checked and valid links
When the job runs
Then it finishes all within 10 minutes, with no failures for good links
07
Errors & retries
Given any step fails for a SKU
When an error happens
Then it retries up to 3×, and on final failure Status → “Error: Image Import” but other SKUs continue
-
-
Website Accessibility Compliance (WCAG 2.1 AA)
User Story
As a user with visual, motor, auditory, or cognitive impairments,
I want the website to meet WCAG 2.1 AA accessibility standards (https://www.w3.org/TR/WCAG21/),
So that I can navigate, understand, and interact with all content and features without barriers.1
Scenario: Semantic HTML structure supports screen readers
Given a user navigates the website using a screen reader
Then each page must contain semantic landmarks (e.g.header,nav,main,footer)
And headings must follow a logical hierarchical order (h1,h2,h3, …)
And all ARIA roles and attributes must be used appropriately where native HTML is insufficient (only use ARIA when absolutely needed)2
Scenario: Images include meaningful alternative text
Given a user encounters an image on any page
Then every image (including background image) must include a descriptivealtattribute3
Scenario: All interactive elements are keyboard accessible
Given a user navigates the website using only a keyboard
Then all buttons, links, form elements, and controls must be reachable using Tab
And focus order must follow the visual layout and user expectations
And the focused element must have a clear visual indicator (e.g. outline or border)4
Scenario: Provide high contrast mode toggle in the website footer
Given the user scrolls to the footer of any page
Then the footer must include a clearly labeled button or link called "High Contrast Mode"DEsk: https://www.figma.com/design/6KT0tZfJw3u7R8b5pCH8vw/Saclab-Team-Library?node-id=11897-3602&m=dev
Mobile: https://www.figma.com/design/6KT0tZfJw3u7R8b5pCH8vw/Saclab-Team-Library?node-id=11897-3607&m=dev
And the toggle must be accessible via keyboard and screen readers
And activating the toggle must apply or remove the high contrast mode as defined
And the toggle state must visually indicate whether high contrast is active
And the user’s preference must persist across pages and sessions4.1
Scenario: Optional high contrast mode toggle for improved readability
Given a user requires enhanced visual contrast
When the user clicks the "High Contrast Mode" toggle
Then the website must apply a high-contrast stylesheet or class
And all text must meet a minimum contrast ratio of 4.5:1 against the background
And interactive elements (buttons, links) must remain clearly distinguishable
And the user’s preference should persist across sessions
And the toggle must be accessible via keyboard and screen readersToggle button in footer:
Desk: https://www.figma.com/design/6KT0tZfJw3u7R8b5pCH8vw/Saclab-Team-Library?node-id=11940-2255&m=dev
Mobile: https://www.figma.com/design/6KT0tZfJw3u7R8b5pCH8vw/Saclab-Team-Library?node-id=11897-3607&m=dev
Toogle button: https://www.figma.com/design/6KT0tZfJw3u7R8b5pCH8vw/Saclab-Team-Library?node-id=11940-2531&m=dev
5
Scenario: Text can be resized up to 200% without loss of content or functionality
Given a user zooms the browser up to 200%
Then all text must remain legible
And content must not overflow, be cut off, or require horizontal scrolling6
Scenario: Forms are accessible and assistive-technology friendly
Given a user interacts with a form
Then each form field must have a visible label
And each input must be programmatically labeled (usinglabel for=,aria-label, oraria-labelledby)
And error messages must be associated with the relevant inputs via ARIA or HTML
And required fields must be explicitly indicated7
Scenario: Avoid flashing and motion that causes seizures or disorientation
Given the site includes animations or effects
Then no element may flash more than 3 times per second
And users withprefers-reduced-motionmust see reduced or no animation8
Scenario: Language is correctly defined
Given a user visits a page
Then the<html>element must include the correctlangattribute (e.g.lang="en",lang="fr")
And any language change within the content must be marked usinglangattributes9
Scenario: Accessible name and role for custom components
Given a user interacts with a custom component (e.g. modal, dropdown, slider)
Then it must expose a name, role, and state to assistive technologies using ARIA roles and properties
And the component must be operable via keyboard and screen reader -
Release Notes – Saclab General – 10.07 Release – Jul 15 11:19
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/11144
Date
Version
10.07 Release
Description
Contributors
Summary
New Features
Improvements to existing features
Bug fixes
-
Story 1.5.3 Product Detail Page – Performance Improvement
General Info
The Product Detail Page on saclab.com has a Largest Contentful Paint (LCP) of 5.2 s on mobile – which exceeds the recommended target of 2.5 s.
The Lighthouse report confirms the hero bag image is the likely LCP element but is being lazy-loaded or discovered late, delaying final rendering.
Other issues on the product page include: unnecessary legacy scripts, third-party scripts like CookieYes and HiPay running on non-checkout pages, render-blocking CSS, and missing static caching headers.
User Story
As a customer viewing a product, I want the main bag image and details to appear immediately so I trust the site’s quality and feel ready to buy.
Acceptance Criteria
ID
Scenario
Details
01
Scenario: Hero product image loads eagerly and is preloaded
Given the bag image is the LCP element
When the page loads
Then the hero image is not lazy-loaded and is preloaded properly
Evidence: largest-contentful-paint.numericValue = 5200 ms shows hero image discovered late.
Why: Lazy-loading above-the-fold images delays discovery, hurting LCP and FCP.
Action direction: Exclude hero image from lazy-load, use loading="eager", fetchpriority="high", and add <link rel="preload" as="image"> in <head>. Devs should confirm this works with the theme.
02
Scenario: Product hero image uses next-gen format
Given the hero image is JPEG
When the page loads
Then it’s served as WebP where possible
Evidence: “Serve images in next-gen formats” could save ~30–40% on hero images.
Why: Smaller image payload improves LCP.
Action direction: Auto-Convert hero images to WebP; test for color accuracy.
03
Scenario: Render-blocking CSS is eliminated
Given large CSS blocks the paint
When the page loads
Then only critical CSS is loaded upfront
Evidence: “Eliminate render-blocking resources” flags ~150 KB CSS.
Why: Blocking styles delay FCP/LCP.
Action direction: Use WP Rocket’s Inline Critical CSS and Remove Unused CSS. Dev to test styling carefully.
04
Scenario: Cookie and chat scripts run only when needed
Given they run immediately
When the page loads
Then these scripts are deferred or delayed
Evidence: “Minimize main-thread work” – CookieYes adds ~200 ms CPU time on load.
Why: Third-party scripts slow Time to Interactive.
Action direction: Use WP Rocket’s Delay JS Execution for consent/chat scripts; confirm they run on user interaction instead.
05
Scenario: HiPay SDK only loads where needed
Given payments happen in checkout only
When the product page loads
Then HiPay scripts do not run
Evidence: hipay-sdk.js visible in product page network log.
Why: Adds 200–300 KB unused JS.
Action direction: Wrap enqueue for is_checkout() only; or manage via Asset CleanUp.
06
Scenario: Static assets have efficient caching
Given cache headers are missing
When user revisits
Then static assets are reused from cache
Evidence: “Serve static assets with an efficient cache policy” flagged; TTL is 0 for key files.
Why: Poor caching wastes bandwidth.
Action direction: Use Cloudflare or server headers to apply long TTLs for images, CSS, and JS.
Implementation Note:
Each recommendation explains why it matters and what to aim for, but the dev team should adjust the best technical solution, verify on staging, and test across breakpoints. The goal is to bring LCP below 2.5 s, reduce Time to Interactive, and improve perceived speed.
-
Story 1.5.2 Product Feed (/bags) – Performance Improvement
General Info
The /bags product feed page currently has an LCP of ~5.5 s on mobile.
The biggest driver is that the first visible product grid images (likely hero thumbnails) are discovered late — probably due to incorrect lazy-loading or missing preload hints.
Other issues include: large DOM size, unused CSS, some images still in JPEG, and the HiPay SDK script unnecessarily loading on the listing page.
User Story
As a customer browsing /bags, I want visible products to load instantly without waiting for hidden ones so I can find what I want quickly.
Acceptance Criteria
ID
Scenario
Details
01
Scenario: Above-the-fold product images load eagerly and are preloaded
Given grid product thumbnails drive LCP
When the page loads
Then the first visible images are not lazy-loaded and are preloaded
Evidence: Lighthouse: “largest-contentful-paint.numericValue = 5474ms” confirms slow LCP due to grid images.
Why: When above-the-fold images are lazy-loaded, the browser discovers them late, delaying LCP.
Action direction: For the first ~6–8 visible product images: use loading="eager", fetchpriority="high" on <img>, and <link rel="preload" as="image"> in the <head>. Dev to confirm which images become LCP candidates at different breakpoints.
02
Scenario: Offscreen grid images are lazy-loaded
Given thumbnails below the fold don’t need to load immediately
When the page loads
Then only visible images load upfront
Evidence: The audit shows more images load upfront than needed, pushing network requests. Why: Loading all thumbnails delays the main grid.
Action direction: Use loading="lazy" for offscreen items; confirm WP Rocket LazyLoad is correctly configured.
03
Scenario: Product images served in next-gen formats
Given many grid images are still JPEG
When they load
Then they use WebP
Evidence: “Serve images in next-gen formats” – significant savings potential.
Why: Reduces payload, faster LCP.
Action direction: Convert grid thumbnails to WebP; test for color fidelity.
04
Scenario: DOM size is reasonable
Given product grids can create massive DOM trees
When page loads
Then initial HTML keeps DOM under control
Evidence: Large grids often exceed ~4000+ nodes.
Why: High DOM size increases layout cost. Action direction: Limit initial product count (e.g., 16 items) with auto“Load More” or pagination.
05
Scenario: Remove unused CSS
Given the grid pulls in widget styles not needed
When page loads
Then only relevant CSS is served
Evidence: “Remove unused CSS” flagged in prior audit – ~180 KB waste likely persists. Why: Redundant CSS blocks paint.
Action direction: Enable WP Rocket Remove Unused CSS; verify nothing breaks in grid styling.
06
Scenario: HiPay SDK does not load unnecessarily
Given payments only happen in checkout
When the /bags page loads
Then HiPay scripts are not included
Evidence: HiPay script seen in page waterfall for /bags.
Why: Large third-party payment JS (~200–300 KB) adds overhead for no reason.
Action direction: Wrap enqueue for is_checkout() or unload with Asset CleanUp.
Additional Note for Devs
These recommendations explain why to fix each problem and how it typically works, but exact implementation must match our theme’s structure and breakpoints. For the grid images especially, test different viewport widths to see which images consistently become the LCP candidate.
Use staging and verify LCP improvement in Lighthouse.






