Handover Dashboard
Technical Handover Dashboard
Central reference for McCalls website management and the custom Outfit Builder.
Overview
Scope and ownership of the systems being handed over.
| Area | Position |
|---|---|
| McCalls website | Pre-existing Shopify website. BCA took over ongoing management, fixes and requested changes; BCA did not originally develop the website. |
| Outfit Builder | The principal custom development undertaken by BCA, including the Shopify-focused redevelopment/migration and subsequent maintenance. |
| Handover scope | Documents the actual systems, code, services and configurations used. Generic infrastructure that does not exist is not applicable. |
The Outfit Builder is a custom feature that runs within the existing McCalls Shopify website. McCalls does not need a separate server or BabyCEO-owned service for it to operate.
| Area | Simple explanation |
|---|---|
| Live Builder | The customer-facing Builder runs on the McCalls Shopify website at https://www.mccalls.co.uk/pages/outfit-builder. |
| Products & content | Products shown in the Builder are controlled through McCalls' Shopify products, Outfit Builder collections and relevant metafields. |
| Builder imagery | The base mannequin, thumbnails and garment overlay images used by the live Builder are hosted within McCalls' Shopify environment. |
| Editable source | The Builder is a React project. The complete editable source has been handed over to McCalls and is now held in the McCalls-owned GitHub repository. A ZIP copy is also stored in McCalls' own Shopify Files. |
| Live code in Shopify | The Shopify theme contains the compiled outfit-builder.css and outfit-builder.js. These are generated from the editable React source. |
| Future code changes | A developer edits and tests the React project locally, runs npm run build, then replaces the two compiled Builder files in Shopify. |
| Hire enquiries | The Builder sends hire-enquiry data to McCalls' Make.com automation, which handles the relevant email workflow. |
| Analytics | Builder tracking uses McCalls' existing GA4 setup; there is no separate BabyCEO-owned Builder analytics account. |
| Future developer access | A future developer needs McCalls Shopify access, the handed-over React source (ZIP/GitHub), and Make.com access when working on the hire-enquiry workflow. |
Shopify Website
Core website platform and relevant customisations.
| Item | Details |
|---|---|
| Platform | Shopify |
| Hosting | Shopify-managed for the main website. |
| Original website development | Not developed by BCA. |
| BCA work | Ongoing management, requested theme/code changes, fixes, integrations and related digital work. |
There is no separate BCA-built server/database/SSL/CDN infrastructure for the main Shopify website. Any external service that genuinely applies is listed under Apps & Integrations.
Outfit Builder
Primary custom-development handover.
| Component | Current setup |
|---|---|
| Front end | Custom React application. |
| Commerce/data | Shopify products, variants and Builder-specific product data/metafields. |
| Preview | Transparent garment layers are composed over a shared mannequin base. |
| Hire / Buy | Separate availability and product-selection logic within the Builder. |
| Cart | Completed selections are converted into the relevant Shopify cart items/properties. |
| Development & deployment | Editable React source is held locally. Development/testing uses npm run dev; production assets are generated with npm run build and the resulting CSS/JavaScript is manually copied into the relevant Shopify theme files via Edit code. |
Each Outfit Builder product has a Shopify custom.outfit_code metafield. The Builder loads this value as outfitCode and uses it to build the existing McCalls enquiry-system outfit code.
Active format: K[t:4][s:3]H[sh:2]N[nk:2][so:1][j:2]L[h:2][B|H] — 21 characters when all expected components are present.
| Component | Length / meaning |
|---|---|
| Tartan | 4 characters |
| Sporran | 3 characters |
| Shirt | 2 characters |
| Neckwear | 2 characters |
| Shoes | 1 character |
| Jacket | 2 characters |
| Hose | 2 characters |
| Final character |
B = Buy, H = Hire |
The encoder finds each selected item by its internal ref or code, reads its outfitCode, and assembles the result using the fixed K, H, N and L separators. This preserves compatibility with the existing McCalls enquiry system.
The decoder accepts the existing 21-character format beginning with K, extracts the fixed-position component codes and matches them back to Builder products using their outfitCode values.
Some source mannequin images are positioned differently within their transparent canvas. These are corrected individually in OutfitPreview.jsx; do not use a global jacket transform to fix a single image.
| Image key | Garment | Correction |
|---|---|---|
contemporary-lightgrey |
Light Grey Contemporary Tweed | x +3 / y -3 |
crail_black_herringbone |
Black Crail Herringbone Tweed | x +3 / y -3 |
jacket_3805 |
Dark Green Crail Tweed | x +2 / y -2 |
crail_black_5 |
Black Crail Oban 5 Button | x +3 / y -2 |
charlie_black_5 |
Black Prince Charlie 5 Button | x +3 / y -3 |
sherrifmuir-lightgrey |
Grey Sherrifmuir | x +4 / y -3 |
Products & Metafields
How products are made available to the Outfit Builder and the product-level data the Builder uses.
The Outfit Builder uses Shopify collections to determine which products are available within the Hire and Buy sides of the Builder. Builder collections follow the naming convention Outfit Builder - Hire... or Outfit Builder - Buy.... Sub-collections are used for the relevant garment/product groups such as jackets, sporrans, shoes, hose, shirts, neckwear and kilts.
| Metafield / data | Purpose |
|---|---|
Outfit code (custom.outfit_code) |
McCalls-compatible product code. The Builder loads this as outfitCode and uses it when encoding and decoding complete outfit selections. |
| Outfit Builder Title | The product name/title displayed within the Outfit Builder. |
| Outfit Builder Mannequin Image | Shopify CDN URL for the transparent mannequin/garment layer used in the live outfit preview. |
| Outfit Builder Thumbnail | Thumbnail image used for the product's selection card in the Builder. |
| Hide from search | Used to prevent Builder-only products from appearing in normal storefront search. |
| Hide product | Where used, the value 1 marks the product as hidden from internal search/site-map behaviour. |
- Create or open the required product in Shopify.
- Add the product to the appropriate collection beginning Outfit Builder - Hire or Outfit Builder - Buy, including the relevant garment/category collection where applicable.
- Enter the product's Outfit code (
custom.outfit_code). Use the correct code length/value for that product type because the live McCalls outfit code is assembled directly from these metafield values. - Enter the Outfit Builder Title that should appear in the Builder.
- Add the Outfit Builder Thumbnail.
- Add the Outfit Builder Mannequin Image / Shopify-hosted preview layer where the product requires an overlay image.
- Set the relevant product visibility metafield(s), including Hide from search and Hide product, where the product should remain Builder-only.
- Save the product and verify it appears in the correct Hire/Buy section of the live Outfit Builder.
Imagery
Current Shopify-hosted image setup and legacy image-system status.
| Area | Details |
|---|---|
| Base mannequin | Shopify CDN image. |
| Garment overlays | Transparent PNG/WebP imagery hosted in Shopify and referenced by the Builder. |
| Cloudinary | Legacy / no longer required. The live Builder imagery is Shopify-hosted. Cloudinary is not part of the current image-management workflow and no Cloudinary account or image-management process is required to operate or maintain the current Builder. |
Source & Deployment
How the Outfit Builder source is transferred, developed, built and published.
| Item | Details |
|---|---|
| Source repository | McCalls-owned GitHub repository. This is the preferred source/version-control location for future development. |
| Editable source | The complete React project has been handed over and is available in the McCalls-owned GitHub repository. |
| Source handover | Complete. In addition to GitHub, a ZIP copy of the editable project is stored in McCalls' own Shopify Files/CDN. |
| Local development | Open the project in an IDE and run npm run dev to start the local development version for testing. |
| Production build | Run npm run build. This creates the compiled production CSS and JavaScript assets. |
| Hosting | Shopify. There is no separate Render or other external production host for the Outfit Builder. |
| Live Builder | https://www.mccalls.co.uk/pages/outfit-builder |
| Deployment | After npm run build, the generated production assets are copied into exactly two Shopify theme files under Online Store → Themes → Edit code: outfit-builder.css and outfit-builder.js. These are the only two Shopify code files that need to be edited/replaced when deploying Builder code changes. |
| Shopify theme file | What goes into it |
|---|---|
outfit-builder.css |
The compiled production CSS generated after running npm run build. |
outfit-builder.js |
The compiled production JavaScript generated after running npm run build. |
npm run dev, then run npm run build. Copy the resulting CSS into outfit-builder.css and JavaScript into outfit-builder.js. For normal Builder development/deployment, no other Shopify theme files need to be changed.
- Clone/download the current Outfit Builder source from the McCalls-owned GitHub repository. The Shopify Files ZIP can be retained as an additional handover copy.
- Open the project locally in an IDE.
- Run
npm run devand make/test the required changes locally. - When the changes are verified, run
npm run build. - Take the generated production CSS and JavaScript from the build output.
- Open the McCalls Shopify theme and go to Online Store → Themes → Edit code.
- Update
outfit-builder.csswith the newly built CSS. - Update
outfit-builder.jswith the newly built JavaScript. - Do not edit any other Shopify theme code files for a normal Outfit Builder code deployment.
- Save both files and test the live Builder at
https://www.mccalls.co.uk/pages/outfit-builder.
npm run dev, and compiled with npm run build. For deployment, only the resulting CSS and JavaScript are copied to Shopify, into outfit-builder.css and outfit-builder.js respectively. These are the only two Shopify theme files that should need editing for Builder code changes.A normal Outfit Builder deployment changes only outfit-builder.css and outfit-builder.js. If a deployment causes a problem, revert those files to their previous working versions using Shopify's code-editor version history.
- Go to Shopify Admin → Online Store → Themes → Edit code for the affected theme.
- Open
outfit-builder.cssand use Shopify's file/version history to restore the last known working version from before the deployment. - Open
outfit-builder.jsand restore the matching previous working version. - Save the restored files where required.
- Test the live Builder and verify loading, selections, preview rendering and the relevant Hire/Buy flow.
If the problem originated in the editable React source, return to the last known working source version, test locally with npm run dev, run npm run build, and redeploy the resulting outfit-builder.css and outfit-builder.js.
Code Structure
File-by-file guide to the React source supplied in the Outfit Builder ZIP.
| File | Purpose |
|---|---|
src/main.jsx |
Application entry point. Boots the React application and mounts the Outfit Builder into the page. |
src/App.jsx |
Main application controller/layout. Connects the Builder steps, state, selected products and major components together. |
src/styles/main.css |
Main source stylesheet for the Outfit Builder before production compilation. CSS changes should be made here rather than directly in the compiled Shopify outfit-builder.css. |
src/components/.| File | Purpose |
|---|---|
BuyModal.jsx |
Buy-side modal used when the customer proceeds with a purchase flow. |
DetailsPanel.jsx |
Legacy / currently unused. Present in the source but not imported by the active application flow. |
ElementMenu.jsx |
Controls the menu/navigation for Builder element categories. |
ElementSelector.jsx |
Reusable selector for choosing products/options within a Builder category. |
EnquiryModal.jsx |
Legacy / currently unused. It is not imported by the active application. Current hire enquiries are submitted from SizeModal.jsx directly to the McCalls Make.com webhook. |
HireBuyToggle.jsx |
Legacy / currently unused. Present in the source but not imported by the active application flow. |
OutfitDesignerApp.jsx |
Primary Outfit Builder application component. Coordinates the main Builder experience and selected outfit state. |
OutfitPreview.jsx |
Renders the mannequin preview and layered garment images. Also contains individual garment alignment corrections where source images require offsets. |
PriceDisplay.jsx |
Legacy / currently unused. Present in the source but not imported by the active application flow. |
ShareModal.jsx |
Handles sharing a configured outfit / share-related UI. |
SizeModal.jsx |
Active hire-enquiry form. Collects customer details and measurements, then posts the enquiry payload directly to the McCalls Make.com webhook. |
TartanSelector.jsx |
Tartan-specific product/variant selector and UI behaviour. |
UpsellModal.jsx |
Displays optional upsell products returned from Shopify upsell metafields. |
src/lib/.| File | Purpose |
|---|---|
analytics.js |
GA4 tracking helper. Sends Builder-specific events such as ob_click and ob_field_change through McCalls' existing window.gtag. |
cloudinary.js |
Legacy. Cloudinary is no longer required by the current Shopify-hosted imagery workflow. Any remaining helper/import references are remnants of the older implementation and may be removed as code cleanup, provided the related import/call references are removed together so the project still builds. |
email.js |
Legacy / unused. This file belongs to the older EnquiryModal.jsx/EmailJS flow and is not part of the current live hire-enquiry workflow. Current submissions go from SizeModal.jsx to Make.com. |
outfitCode.js |
Encodes and decodes the existing McCalls 21-character outfit code using Shopify custom.outfit_code metafields. |
pricing.js |
Legacy / currently unused. Present in the source but not imported by the active application. |
shopify.js |
Main Shopify integration layer. Uses the Shopify Storefront GraphQL API to discover Outfit Builder collections/products, read metafields, pricing, variants and upsells, resolve selected products to variants, and hand items to the native Shopify cart. |
src/icons/ contains local icon assets/components used by the Outfit Builder interface. These are part of the source project and will be bundled when npm run build is run.
- Start with
src/App.jsxandsrc/components/OutfitDesignerApp.jsxto understand the overall application flow. - Use
src/components/for UI-specific changes. - Use
src/lib/shopify.jsfor Shopify product, Storefront API, variant, upsell and cart behaviour. - Use
src/lib/outfitCode.jsfor outfit-code encoding/decoding behaviour. - Use
src/lib/analytics.jsfor tracking changes. - Use
src/styles/main.cssfor visual styling changes. - Test locally with
npm run dev. - Build production assets with
npm run build. - Deploy only the compiled output to Shopify by updating
outfit-builder.cssandoutfit-builder.js.
Apps & Integrations
External services relevant to the current McCalls setup, including the hire-enquiry automation.
| Service | Purpose | Handover position |
|---|---|---|
| Shopify | Main website, products, checkout, Outfit Builder production assets and current Builder imagery. | McCalls-owned primary live platform. |
| Make.com | Receives Outfit Builder hire enquiries from SizeModal.jsx, routes each enquiry to the selected branch, sends the internal branch notification and sends the customer confirmation email. |
McCalls-owned account and scenario. |
| Gmail / Google Email connection | Used by the Make.com scenario to send branch notifications and customer confirmations. | Scenario uses McCalls' Google email connection. |
| Powerful Form Builder | Separate Shopify contact-form functionality, including branch-based dynamic email routing where configured. | Managed through the Shopify app/store setup; it is not the Outfit Builder hire-enquiry automation. |
The active Make.com scenario is named McCalls Hire Automation. The Outfit Builder's SizeModal.jsx sends the hire-enquiry payload to the scenario's custom webhook. Make then routes the submission according to the customer's selected branch.
| Stage | What it does | Where to change it |
|---|---|---|
| 1. Custom webhook | Receives the Outfit Builder submission, including outfit code/link, selected outfit items, customer details, event information, measurements and address. | Make.com scenario → first module, Hire Automation Webhook. The sending code is in src/components/SizeModal.jsx. |
| 2. Router | Checks the submitted branch value and sends the bundle down the matching branch route. |
Make.com scenario → router immediately after the webhook. |
| 3. Internal branch email | Sends the selected branch the hire request, readable outfit selection, outfit code/link, customer details, measurements and address. | First Gmail/Google Email module inside the relevant branch route. |
| 4. Customer confirmation | Sends a confirmation email back to the email address submitted by the customer. | Second Gmail/Google Email module inside the relevant branch route. |
src/lib/email.js. The current live Builder posts directly from SizeModal.jsx to Make.com.| Branch | Internal branch recipient |
|---|---|
| Aberdeen |
hire@mccalls.co.uk + levi@mccalls.co.uk
|
| Broughty Ferry |
bferry@mccalls.co.uk + levi@mccalls.co.uk
|
| Dundee |
dundee@mccalls.co.uk + levi@mccalls.co.uk
|
| Edinburgh |
edinburgh@mccalls.co.uk + levi@mccalls.co.uk
|
| Elgin |
elgin@mccalls.co.uk + levi@mccalls.co.uk
|
| Glasgow |
glasgow@mccalls.co.uk + levi@mccalls.co.uk
|
| Inverurie |
inverurie@mccalls.co.uk + levi@mccalls.co.uk
|
| Tillicoultry |
daiglen@mccalls.co.uk + levi@mccalls.co.uk
|
Each route contains an internal branch email followed by a customer confirmation email sent to the submitted customer email address.
| If this changes… | Update here |
|---|---|
| Branch email recipient | Edit the To field of that branch's first email module. |
| Internal hire email wording/layout | Edit the HTML content of the first email module in each applicable branch route. |
| Customer confirmation wording/layout | Edit the HTML content of the second email module in each applicable branch route. |
| Add/remove a branch | Update the branch options in SizeModal.jsx and add/remove the corresponding Make router route and email modules. |
| Change submitted fields | Update the payload in SizeModal.jsx, then update the webhook data structure/mappings and any affected email modules in Make.com. |
| Service / item | Status |
|---|---|
| Cloudinary | Legacy and not required by the current Builder. Live Builder imagery is hosted in Shopify. |
mapping.json |
Legacy and not required by the current product-loading path. Products are discovered dynamically from Shopify Outfit Builder collections and metafields. |
Shopify Storefront API
How the Outfit Builder reads Shopify collections, products, metafields, variants, prices and upsells.
| Item | Current setup |
|---|---|
| API | Shopify Storefront GraphQL API |
| Shopify domain | mccalls-highlandwear.myshopify.com |
| API version | 2026-04 |
| Endpoint | https://mccalls-highlandwear.myshopify.com/api/2026-04/graphql.json |
| Authentication | Public Storefront access token sent in the X-Shopify-Storefront-Access-Token header. |
| Request method |
POST with JSON containing GraphQL query and variables. |
The Builder queries Shopify collections matching Outfit and then filters them by collection handle:
- Hire collections start with
outfit-builder-hire-. - Buy collections start with
outfit-builder-buy-.
The collection handle determines the Builder category — tartans, sporrans, shirts, shoes, hose, jackets or neckwear. This is why adding a product to the correct Shopify Outfit Builder collection normally makes it available without changing React code.
| Metafield | Purpose |
|---|---|
custom.collection_icon |
Collection/category icon. |
custom.outfit_collection_title |
Builder-facing collection title. |
custom.outfit_description |
Builder-facing collection description. |
| Metafield | Purpose |
|---|---|
custom.outfit_builder_thumbnail_image |
Product-level thumbnail. |
custom.outfit_builder_mannequin_image |
Product-level mannequin/overlay image. |
custom.outfit_builder_title |
Product-level Builder display title. |
custom.outfit_code |
Product-level McCalls-compatible outfit code. |
custom.outfit_thumbnail_image |
Variant-level thumbnail used for variant-based tartans. |
custom.outfit_builder_mannequin_image |
Variant-level mannequin/overlay image where required. |
custom.outfit_title |
Variant-level Builder title. |
custom.outfit_varriant_show |
Controls whether a variant is shown. A value of false skips it. |
custom.outfit_code |
Variant-level outfit code; for tartan variants this can override the parent product's code. |
| Metafield | Behaviour |
|---|---|
custom.outfit_builder_upsells |
Variant-specific upsells. Used first when present. |
custom.product_upsell |
Parent-product fallback when a selected variant has no variant-specific upsells. |
The Builder resolves the referenced products and reads their handle, title, image, price, currency, default/selected variant and availability. Upsell failure is non-critical; the Builder continues loading even if the upsell query fails.
The Builder reads current Shopify prices and availableForSale directly from the Storefront API. It can resolve products by handle and can use a Shopify title search fallback for certain categories.
When adding to cart, the Builder resolves the correct Shopify variant based on selected options:
- Hire tartan/kilt: selected Jacket & Waistcoat option.
- Shirt: Collar size.
- Jacket: Chest + Length.
- Shoes: selected Shopify shoe size.
- Hose: derived from shoe size — Small 4–7, Medium 8–10, Large 11–13.
After variant IDs are resolved, the Builder creates a standard HTML form and posts directly to:
https://www.mccalls.co.uk/cart/add
Hire items receive internal line-item properties including _outfit_builder=hire and _outfit_code. Customer measurements and event details are attached to the first cart item.
| Customer/cart property | Purpose |
|---|---|
| Waist / Seat / Height / Kilt Length | Hire measurements. |
| Collar Size | Shirt measurement. |
| Jacket Size / Sleeve Length | Jacket measurement. |
| Shoe Size / size system / displayed size | Shoe selection details. |
| Accidental Damage Insurance | Selected insurance option. |
| Occasion / Event Information | Customer event information. |
| Date of Collection | Hire collection date. |
| Measurement Disclaimer Confirmed | Customer acknowledgement. |
| Outfit Code | Generated McCalls outfit code. |
The current source notes that mapping.json is no longer needed by the active product-loading path. Current Builder elements are discovered dynamically from Shopify Outfit Builder collections and metafields. Some older helper functions remain in source; verify actual call sites before removing legacy code.
Analytics & Tracking
Builder-specific GA4 event tracking implemented in the frontend.
The Outfit Builder uses McCalls' existing GA4 implementation through window.gtag. The Builder does not own or require a separate GA4 account.
All Builder events are sent with:
app: 'outfit_builder'
If window.gtag is unavailable, the tracking helper returns immediately and does not interrupt Builder functionality.
| Event | Trigger | Parameters |
|---|---|---|
ob_click |
Any click on a button or a element. |
app = outfit_buildertext = button/link text, title or aria-label, truncated to 80 characterstag = element tag nameurl = element href or current page URL
|
ob_field_change |
Any change event on INPUT, SELECT or TEXTAREA. |
app = outfit_builderfield_type = input type or element typefield_name = field name, placeholder or class name
|
The helper trackEvent(eventName, params) sends the GA4 event:
window.gtag('event', eventName, {
app: 'outfit_builder',
...params
});
installGlobalTracking() installs document-level listeners for clicks and field changes. Because the listeners are global, new buttons, links and form controls are automatically tracked without adding an individual GA4 call to every React component.
GA4, Google Ads, Merchant Center and Meta are already owned and controlled by McCalls. No BCA account transfer is required. The only handover item here is the custom Outfit Builder event implementation described above.
Maintenance Guide
Common Builder administration and developer tasks.
- Create or update the Shopify product/variant.
- Apply the correct Builder classification/availability data.
- Populate the required Builder title/code fields.
- Upload/update thumbnail imagery where used.
- Upload the transparent mannequin layer to Shopify and update its Builder image reference.
- Test the product in the Builder locally.
- Verify preview alignment, outfit-code behaviour and cart output.
| Problem | First checks |
|---|---|
| Product/image missing | Check product data, Builder code and mannequin-image URL. |
| One garment misaligned | Check source-image registration and use an individual correction if required. |
| Outfit code fails | Check that every selected Builder product has the correct custom.outfit_code metafield and that each value uses the expected length for its product type. The index-based fallback is disabled in the current production code. |
| Local works, production does not | Confirm the latest production build was generated and the correct compiled CSS/JS files were copied into Shopify; then clear browser/cache before changing source code. |
| Outfit Builder hire enquiry/email fails | Check the McCalls Hire Automation run history in Make.com. Confirm the webhook received the payload, the correct branch route ran, and the relevant Gmail modules completed. Customer confirmation also requires a valid submitted email address. |
Known Issues / Notes
Current maintenance notes and legacy items a future developer may see in the handed-over source.
| Area | Note |
|---|---|
| Garment imagery | Some mannequin assets require individual alignment offsets. These are intentional per-image corrections rather than a global preview transform. |
| Cloudinary | Legacy / no longer required. Current live imagery is Shopify-hosted. Remaining Cloudinary helper/import references in source are old implementation remnants and may be removed together as code cleanup. |
mapping.json |
Legacy / no longer required. Current products are loaded dynamically from Shopify Outfit Builder collections and metafields. The file may be removed from the maintained source. |
| Legacy source files |
EnquiryModal.jsx, email.js, DetailsPanel.jsx, HireBuyToggle.jsx, PriceDisplay.jsx and pricing.js are not part of the current active application flow. They remain only as older source unless removed during cleanup. |
| Hire automation | The active hire-enquiry workflow is SizeModal.jsx → Make.com McCalls Hire Automation → selected branch email → customer confirmation email. |
Access & Transfer
What McCalls already owns and what has been supplied for the technical handover.
| System / item | Status | Details |
|---|---|---|
| Shopify | Already owned by McCalls | McCalls owns and controls the Shopify store and granted BCA access. No Shopify ownership or access transfer is required from BCA. |
| Outfit Builder source / GitHub | Provided | The complete editable React source has been handed over in the McCalls-owned GitHub repository. An additional ZIP handover copy is stored on McCalls' own Shopify CDN:https://cdn.shopify.com/s/files/1/0940/2751/4238/files/mccalls-outfit-builder-main.zip?v=1788935407
|
| Make.com | Already owned by McCalls | The McCalls Hire Automation scenario is in McCalls' Make.com account. No ownership transfer is required. Its workflow and maintenance points are documented under Apps & Integrations. |
| Analytics / advertising accounts | Already owned by McCalls | GA4, Google Ads, Merchant Center and Meta are already owned and controlled by McCalls. No BCA ownership transfer is required. |
| Cloudinary | Phased out | Legacy only. Cloudinary is not required by the current live Builder; current Builder imagery is hosted in Shopify. |
| Technical handover dashboard | Provided | This dashboard is the ongoing technical reference for the website changes and Outfit Builder handover. |
outfit-builder.css and outfit-builder.js.