BAGGATTI PARIS campaign photograph: two models in a dimly lit Parisian interior, one in a black leather biker jacket and sunglasses, the other in a tan leather jacket over a white top with denim
Headless Commerce · Next.js · Shopify Storefront API

BAGGATTI PARIS: One Brand, Two Shopify Stores, One Headless Storefront

A Paris fashion house needed one editorial storefront selling into France and the US under two legal entities, each with its own currency, tax, and payout. A theme lives in one store, so we built a headless storefront that reads both.

BAGGATTI PARISAvant-garde luxury fashion · Paris · France & US
2 stores
Two Shopify stores
2 markets
EUR · USD
1 domain
US on /us
Client-owned
Code, hosting, data
Start a project like this

Campaign, Spring / Summer 26

2 stores
One brand, two Shopify stores
2 currencies
EUR and USD, own tax and payouts
/us subfolder
One domain, one SEO footprint
Client-owned
Code, hosting, and data
BAGGATTI PARIS lookbook image from the live storefront: a wide editorial campaign photograph of models in leather and denim

The House

Counter-couture, cut in Paris.

BAGGATTI PARIS is an avant-garde house: rockstar glamour, gender-fluid silhouettes, and leather finished in its own atelier, across boots, denim, leather jackets, and eyewear.

  • Paris atelier
  • Boots · Denim · Leather · Eyewear
  • France & US
  • Square Online to headless

Lookbook, Spring / Summer 26

Overview

One editorial storefront, two legal entities behind it

BAGGATTI needed one website selling into France (EUR) and the US (USD) under two separate legal entities, each with its own payout and tax. A Shopify theme lives inside a single store, so we built a custom Next.js storefront that reads both stores through the Storefront API and routes every shopper to the right entity. Every account sits in BAGGATTI's name from day one: the house owns the code, the hosting, and the data.

Who it serves

  • Shoppers in France (EUR)
  • Shoppers in the US (USD)
  • One brand, two legal entities
  • A team managing catalogue directly in Shopify

What we owned, end to end

Next.js storefront engineeringDual Shopify Storefront API integrationPer-market currency, tax, and payoutFrench / English localisationCart, checkout, accounts, wishlistSEO and EU compliance foundations

The Challenge

One brand, but two stores a single theme could never span

Custom by necessity, not preference: one unified website had to run on two separate Shopify stores at once, one per legal entity.

Two legal entities, one brand

BAGGATTI PARIS and BAGGATTI US each have their own payout account and tax treatment. The shopper should never see the seam.

A theme lives in one store

A standard Shopify theme cannot read from two stores, which ruled out a theme from the start.

EU-correct by default

Consent-gated tracking, distance-selling-aware pre-orders, and FR / US localisation built in, not bolted on.

No dead ends across markets

A shopper switching markets must never hit a 404 for a product that only exists in the other store.

The constraint that made it custom

A Shopify theme lives inside one store. BAGGATTI needed one website across two.

System Architecture

One storefront, two stores, the right entity every time

One website reads live product data from two Shopify stores through the Storefront API. Market routing sends each shopper to the correct entity, currency, tax, and payout; checkout hands off to that store's hosted payment page. The front end deploys on Vercel.

One shopper, one domain

baggatti.com, with the US market served on a /us subfolder.

Runs in parallel
01

BAGGATTI PARIS · France

A Shopify store on EUR with French tax and shipping, settling into its own payout account.

02

BAGGATTI US · United States

A separate Shopify store on USD with US tax and shipping, settling into its own payout account.

03

Market routing and language

Each market resolves to the correct store; FR / EN follows the market with a manual toggle, and store-switch safety keeps every journey alive.

One custom Next.js storefront

Reads both stores through the Storefront API and renders one brand-consistent experience.

One site, correct entity per market

Checkout hands off to the right store's hosted payment page, so currency, tax, and payout are always right.

The /us subfolder is the luxury-house standard: SEO authority compounds into a single site instead of being split across separate domains.

The Stack

Twelve services, one storefront, every account in BAGGATTI's name

Each was created under the house's own business email from day one. No transfer step, no lock-in.

  • Next.js logo

    Next.js

    Custom storefront framework

  • Vercel logo

    Vercel

    Hosting and edge deployment

  • Shopify logo

    Shopify

    Two stores, Storefront API, hosted checkout

  • Klaviyo logo

    Klaviyo

    Notify Me back-in-stock flows, per market

  • CookieYes logo

    CookieYes

    EU / CNIL cookie consent

  • Cloudinary logo

    Cloudinary

    Media delivery

  • Cloudflare logo

    Cloudflare

    DNS and edge security

  • Resend logo

    Resend

    Transactional email for the enquiry form

  • Meta logo

    Meta Pixel

    Ad tracking, consent-gated

  • Google Analytics logo

    Google Analytics 4

    Storefront-layer analytics

  • Google Search Console logo

    Google Search Console

    Sitemap submitted at go-live

  • GitHub logo

    GitHub

    Source code, client-owned

Logos are the property of their respective owners.

Backlit silhouette of a figure in a long dark coat standing in a spotlight, from the film section of the BAGGATTI PARIS homepage design

The Storefront

Designed in Figma, shipped to the pixel.

The design was the specification. What follows is the storefront the build was measured against, screen by screen.

Homepage film, design frame

Screen by Screen

Every surface, built to the design

Six storefront surfaces from the Figma file, plus two paid change requests quoted separately from the fixed Phase 1 scope and built to the same standard.

01 · Homepage

BAGGATTI PARIS homepage hero design: a full-bleed monochrome campaign image of a model in a dark leather coat under the BAGGATTI PARIS wordmark and navigation

An editorial film hero, not a template

  • Full-bleed campaign film with the season's statement
  • Nav, market indicator, and FR / EN switch in the header
  • Mobile-first, one design language on every breakpoint

02 · The collection

The Collection section of the BAGGATTI PARIS homepage design: three tall tiles for Leather Jackets, Denim, and Boots, each with a monochrome campaign photograph and a Women / Men label

Leather jackets, denim, boots

  • Three-tile collection entry for women and men
  • Every tile driven from live Shopify collections
  • Editorial crops, brand photography, no stock imagery

03 · Two stores, one switch

The live BAGGATTI PARIS header with the Deliver to dropdown open: FRANCE ticked in EUR with Shop from our France store, and USA in USD with Shop from our US store, beside the search, account, bag, and EN language controls

BAGGATTI PARIS (EUR) and BAGGATTI US (USD)

  • A Deliver-to switcher in the header: France on EUR, USA on USD
  • Language follows the market, with a manual FR / EN toggle
  • Store-switch handling so no product route dead-ends

04 · Category pages

BAGGATTI PARIS Leather Jackets category page design: filter chips and sort above a three-column grid of monochrome product photographs with a Load More button

Filtering and sort that stay out of the way

  • Breadcrumb, category title, and a one-line editorial intro
  • Filter chips (all, women, men, biker, moto, aviator, shearling) plus sort
  • Product count and Load More, so the grid never feels like a database

05 · Product detail

BAGGATTI PARIS product page design for The Biker Perfecto: a product image gallery beside a buybox with rating, EUR price, colour and material chips, a size selector, Add to Bag, Express Checkout, delivery window, and trust badges

A buybox that sells the piece and states the terms

  • Gallery, colour, material, and size with live stock hints
  • Add to bag, wishlist, and express checkout for the right market
  • Delivery window, returns, secure payment, and authenticity in one glance

06 · Search

BAGGATTI PARIS search overlay design: a search field, Popular Searches chips (Biker, Leather, Aviator, Denim, Boots), and three Suggested For You product cards

Search that behaves like a stylist

  • Popular searches surfaced before a letter is typed
  • Suggested products, saved per market
  • Synced to the account when the customer signs in

Change request 01 · Notify Me

Product page for the Nico 60mm ankle boot in silver calfskin with size 38 sold out, showing the Notify Me email capture that emails the shopper once the size is back in the France store

Back-in-stock email capture, per market

  • Email capture on unavailable products
  • Powered by Klaviyo, wired per market
  • Turns an out-of-stock dead end into a re-engagement

Change request 02 · Pre-order

Product page for the Nico 60mm ankle boot in pre-order mode: a Pre-order badge, size 42 selected, the expected delivery date of 12 June stated before purchase, and a Pre-order button above Express Checkout

Per-product pre-order, compliant by construction

  • A per-product mode (Regular / Notify Me / Pre-order) the client sets in Shopify
  • An expected delivery date shown before purchase
  • Orders tagged for fulfilment, built to respect EU distance-selling rules

Engineering Judgement

Where the real decisions were

A headless build creates trade-offs a themed store never faces. Each was handled deliberately, and named honestly.

01

The challenge

Shopify's visitor counters cannot see a headless front end.

How we solved it

Analytics run at the storefront layer (GA4, Vercel). A deliberate trade-off, not a defect, and cleaner data for a custom front end.

02

The challenge

Switching markets could 404 on a product the other store does not carry.

How we solved it

Store-switch handling routes the shopper somewhere useful, so moving between France and the US never breaks the journey.

03

The challenge

EU visitors must not be tracked before they consent.

How we solved it

Meta Pixel and cookies fire only after marketing consent via CookieYes (CNIL-compliant). Correct for the EU by default.

04

The challenge

US SEO could have been split onto a separate domain.

How we solved it

The US runs on baggatti.com/us, the luxury-house standard, so search authority compounds into one site.

05

The challenge

EU pre-orders must state a delivery date before purchase.

How we solved it

Pre-order shows the expected date before checkout and tags orders for fulfilment: distance-selling rules satisfied by construction.

06

The challenge

Custom scope can sprawl.

How we solved it

A fixed Phase 1 scope with change requests quoted separately kept the build clean and the costs predictable.

The Journey

From landing to the right checkout, without a seam

What a shopper experiences, and which store answers at each step.

01

Land

baggatti.com, or /us for the United States.

02

Choose market and language

Remembered for next time.

03

Browse and filter

Women / Men, live from that market's store.

04

Add to bag

Slide-over cart, sticky on mobile.

05

Checkout

Shopify hosted payment for that entity, express supported.

06

Account

Orders, tracking, addresses, on baggatti.com.

Switch markets mid-journey and the storefront routes you somewhere useful, never a 404.

Live on baggatti.com

The catalogue, as shoppers see it

Real product photography from the live France store, served from two Shopify catalogues through one storefront.

Women's collection entry tile on the live BAGGATTI PARIS store, a campaign photograph of a model in leather
Women, collection tile
Men's collection entry tile on the live BAGGATTI PARIS store, a campaign photograph of a model in a leather jacket
Men, collection tile
Eyewear collection entry tile on the live BAGGATTI PARIS store, a campaign photograph featuring sunglasses
Eyewear, collection tile
Nico 60mm men's ankle boot in silver calfskin, product photograph from the live BAGGATTI PARIS store
Nico 60mm, men's, silver calfskin
Nico 60mm women's ankle boot in silver calfskin, product photograph from the live BAGGATTI PARIS store
Nico 60mm, women's, silver calfskin
Nico 60mm men's ankle boot in brown suede, product photograph from the live BAGGATTI PARIS store
Nico 60mm, brown suede

Catalogue, pricing, inventory, and orders are managed by BAGGATTI directly in Shopify.

What Launch Delivered

A production storefront the house owns outright

No performance metrics yet: the store launched recently and campaign imagery is still landing. Every result below is a structural fact of the delivery.

One brand, one site, two Shopify stores, two currencies, and every account in BAGGATTI's name from day one.

Platform

A basic website builder (Square Online)
A custom Next.js headless storefront on Vercel

Markets

A single-market storefront
France (EUR) and US (USD), each its own entity, tax, and payout

Brand experience

Template constraints
Editorial, brand-led, mobile-first throughout

Ownership

Tied to a builder
Client owns the code, hosting, and data, no lock-in

Search footprint

Basic on-page setup
One domain, US on /us, hreflang for FR and US, structured data

Compliance

Off-the-shelf defaults
Consent-gated tracking and distance-selling-aware pre-order

Where this fits

The same architecture fits any brand that outgrows one store

One storefront reading multiple Shopify stores, with market-aware routing, whenever a single brand spans more than one store, currency, or legal entity.

A separate legal entity per country

One website, one brand, a Shopify store per entity, each with its own currency, tax, and payouts.

Wholesale plus DTC on separate stores

A single storefront that reads both, so one brand experience spans both business models.

Regional stores consolidated under one site

Several country stores unified behind one domain, with search authority compounding instead of splitting.

Moving off a page builder or basic store

A custom headless front end that keeps Shopify's checkout and admin while giving the brand an editorial experience it owns.

Common questions

What this project shows

Because a standard theme lives inside a single store, and BAGGATTI needed one website selling from two separate Shopify stores, one per legal entity. A custom Next.js storefront reads both through the Storefront API and routes each shopper to the correct entity, currency, and checkout, which a theme structurally cannot do.

Outgrown a single store?

If your brand spans markets, currencies, or legal entities, a custom headless storefront can run all of them from one site you own outright. Tell us about it, or book a call. Fixed Phase 1 scope, quoted after one conversation.

Fixed Phase 1 scope, quoted after one call
You own the code, hosting, and data
EU-based, US overlap hours