Verte, end to end
An Indian watch brand's whole digital side, rebuilt almost from scratch and run as one system: two storefronts, every page and launch, the 3D and the modelling, the checkout, the tracking and the Meta ads. Its best month went from 160 orders to over 300.
My role: Rebuilt and ran both stores: every page, the launches, 3D and modelling, checkout, tracking, profit analytics and the Meta ads
verte.co.in160 → 300+
orders a month: best month before I took over, then July to September 2026
10 to 12x
Shopify sales against Meta spend, June to August
96
orders through the global store's own USD checkout, 19 May to 23 Oct (team orders included)
41%
of the India store's purchases now come from Google search, on 16% of its sessions

01
The brief
Verte makes watches: URBN, the everyday line, and Project Karbon, carbon-fibre pieces on a Miyota 9015 (the Series) or a Sellita SW200-1 (the Speciale). It sells in India on verte.co.in and to the rest of the world on vertewatches.com. Before I took the store over at the end of November 2025, its best month ever was 160 orders, in May 2025.
We rebuilt the site almost from scratch. The old theme's basic code and designs were thrown out, and every page a shopper sees was built again around the brand's launches. From there the job was the whole digital side: both stores, every page and launch, the 3D, the checkout, the tracking, the ads, and the numbers to prove what worked, measured on Shopify orders rather than on what an ad platform says it sold.
02
What I built
- Every page of verte.co.in on the rebuilt theme: the home page, the Project Karbon, Karbon Speciale and URBN pages, the blog, the watch FAQ, the warranty claim flow, the launch waitlist and the Diwali registration page, on 33 sections of our own.
- Urban Canvas, the layout system under all of it: text, images and video placed at exact coordinates with parallax, in desktop, phone, hero, day-and-night and card variants, so every launch looks exactly as designed.
- Launch pages for Project Karbon, Karbon Speciale (where the hero's watch flies into the product gallery as you scroll) and URBN's batch pre-booking and last-restock launch, with a campaign bar for each.
- 3D and modelling: a scroll-driven three.js stage whose scenes blend into each other, an orbiting two-layer globe inside a wall of real customer reviews, and a real-time Karbon whose movement works, prepared part by part in Blender.
- A new watch for Verte, the Titanium 38, designed from the brief to factory CAD over eight rounds, with an offline 3D configurator.
- vertewatches.com: a headless Next.js port of the theme that renders the theme's own templates in React, prices in USD and takes payment through its own Stripe checkout. Indian visitors are routed to verte.co.in, and both sites stay indexable.
- Checkout and payments: our own buy buttons, a theme switch between three checkout providers, pay-later and card EMI amounts worked out from the gateways' own rates, a side cart in Verte's style, and a nudge that moves Instagram shoppers to their real browser.
- Tracking that matches reality: GA4 and Meta events across both stores, and fixes wherever the numbers disagreed with Shopify.
- A profit app where every cost carries its source, and a checkout monitor that runs a test checkout every 15 minutes, emails an alert and can pause the India ads in one click.
- Meta ads for both markets: account structure, launches, budget proposals and kill or keep reviews, market tests in the UAE and Canada, and a monthly analytics report.
- SEO on both sites, the Karbon launch emails, a colour grade for a brand spot, a US landed-cost model, and planning and lighting for the product shoots behind the ads.
33
sections of our own on verte.co.in, from the home page to the Diwali page
~43,000
lines of TypeScript in the global store
93
parts split out of the Karbon's fused 3D model so its movement can run
8
design rounds for a new 38 mm titanium watch, from the brief to factory CAD
03
How I did it
Start again, then build for launchesJanuary to April 2026
We threw out the old theme's basic code and designs and rebuilt the store. The launches needed exact, art-directed layouts, so I built Urban Canvas first and used it for the home page and the Karbon, Speciale and URBN pages. On the Speciale page the hero's watch travels into the product gallery as you scroll and lands on the matching photo, following whichever colour is selected.
3D, from the model to the pageApril to July 2026
The 3D stage paints every scene into one shared canvas and blends them as you scroll, so the team can arrange 3D moments in the theme editor. A second engine spins two models around one centre with real HDR reflections, inside a fisheye wall of customer reviews that scrolls forever and opens any review on a tap.
A global store with its own checkout19 May 2026
Shopify Payments isn't available to Indian merchants, and without it Shopify can't charge in any currency but rupees. So the global store got its own checkout: a Stripe session in USD, then a webhook that writes the order back into Shopify as paid, so inventory and fulfilment carry on as before. It went live on 19 May, with a one-line DNS rollback.
Run the ads like a systemJune to August 2026
One ad set per product per market, location as a hard rule, and no verdict on an ad before days live and spend give enough evidence. Orders rose from 175 in June to 275 in July and 309 in August, with Shopify sales running at 10 to 12 times Meta spend.
A Karbon that tells the timeJuly 2026
The Karbon's 3D model came with its movement fused into one 113,000-vertex mesh. In Blender I split it into 93 parts, named the gears by size and built the missing balance wheel. In the browser the second hand steps 8 times a second like the Miyota 9015, the balance wheel swings at 4 Hz, the rotor spins when you drag it, and the hands show the viewer's own time.
Catch the numbers lying26 and 27 September 2026
Meta showed 12 global purchases over two days when Shopify had 3 orders. The thank-you page was firing a purchase for cancelled and declined redirect payments, and again on every reload. I fixed it the same day: the page now checks the payment's real status, fires once per order, and tells a customer whose payment failed exactly that.
Explain the "alternate day" ordersLate September to October 2026
Orders started dropping on some days. I checked Meta, GA4, Shopify, the checkout's own logs and Clarity: the ads and traffic were normal. On 5 of 14 days, the checkout provider's payment step stopped completing for hours. Shoppers who chose a payment method paid 30% of the time on those days against 63% on others, which cost 18 to 25 orders. The test-checkout monitor came out of this, along with a second checkout provider that uses our own buy buttons.
Checkout and payments, made switchableOctober 2026
The India checkout moved from Shopflo to Shiprocket with our own buy buttons, then became a theme setting, so the provider can change without code. Pay-later and card EMI amounts are worked out in Liquid from each gateway's own rates and match the checkout on all 94 plans checked. Instagram's and Facebook's in-app browsers completed payment 31% of the time against Chrome's 61%, so those shoppers now get a card to reopen the store in their browser with the cart carried over, run as a 50/50 test.
Search and the festive seasonOctober 2026
Google search brings 16% of the India store's sessions but 41% of its purchases, so an SEO pass went live on both sites on 7 October: brand-first titles, meta descriptions, Product structured data with shipping and returns, hreflang between the two stores and one H1 per page. For Diwali, a registration page I built from the team's design, with a sparkler that follows the cursor, collected about 150 sign-ups in its first three days at roughly ₹15 (16 US cents) of ad spend each.
A new watch, from brief to CADOctober 2026
Verte's next watch is ours to design: a 38 mm titanium piece around a Ronda quartz movement. Dial directions, case styles, a 20-finish dial library and straps were decided one step at a time over eight rounds. The case is factory CAD written in Python, a STEP assembly of six named parts, and a one-file offline configurator shows each round in 3D.
04
What it changed
Show as a table
| Month | Orders |
|---|---|
| Best before, 160, May 2025 | 160 |
| Dec | 37 |
| Jan | 197 |
| Feb | 150 |
| Mar | 0 |
| Apr | 10 |
| May | 33 |
| Jun | 198 |
| Jul | 317 |
| Aug | 335 |
| Sep | 310 |
| Oct | 187 |
Shopify's own count across both stores, with cancelled orders included in every month. The line is Verte's best month before I took over the store.
The new store went live at the end of December. January brought 197 orders against December's 37. Meta spend rose about four times that month, so the store wasn't the only change, but ad spend per order still fell by about a quarter. After that launch, Verte gave me one of the two original URBN samples. URBN sold out from March to May while we prepared Karbon, then came back in June, and July to September were the brand's best months on record: 317, 335 and 310 orders. October fell to 187. Across the 11 months since I took over, Verte took 1,774 orders, against 1,108 in the 11 months before.
Share of sessionsShare of purchases
Show as a table
| Share of sessions | Share of purchases | |
|---|---|---|
| Google search | 16% | 41% |
Days it failedNormal days
Show as a table
| Days it failed | Normal days | |
|---|---|---|
| Payment step | 30% | 63% |
Instagram and FacebookChrome
Show as a table
| Instagram and Facebook | Chrome | |
|---|---|---|
| Browser | 31% | 61% |
Verte now runs on a store rebuilt around its launches, sells worldwide in its own currency through a checkout it owns, shows its watches in live 3D, and judges its ads on real orders. When something breaks, a monitor says so within 15 minutes instead of a slow week saying it later.
05
Inside this entry
Verte's Indian store, rebuilt almost from scratch and run end to end: every page on a freeform layout system, the Project Karbon and URBN launches, 3D, checkout and payments, SEO and the Meta ads.
- Verte's best month went from 160 orders to over 300 (July to September 2026) while we ran its stores and ads (Shopify)
- About 150 Diwali sign-ups in the page's first three days, at roughly ₹15 (16 US cents) of ad spend each
- Rebuilt almost from scratch on 33 sections of our own: the home page, the Karbon, Speciale and URBN pages, the blog, the watch FAQ, warranty claims and launch forms
- Urban Canvas: place text, images and video at exact coordinates with parallax, in desktop, mobile and hero variants
- Moved checkout from Shopflo to Shiprocket with our own buy buttons after the vendor's theme hid them
- Diwali registration page posting to Google Sheets through Apps Script, with a consent line and a Meta registration event
- Monthly EMI shown on product pages, worked out in Liquid from the payment gateway's rates
- Warranty claim page wired to SparrowOS


vertewatches.com: a headless Next.js port of Verte's Shopify theme that sells worldwide in USD through its own Stripe checkout.
- 96 orders through its own Stripe checkout from launch on 19 May to 23 Oct 2026 (Shopify count, team orders included)
- The theme's JSON templates are imported and rendered in React, so pages keep the same sections and settings as the Shopify store
- Stripe checkout with orders created back in Shopify, and USD prices read from variant metafields
- Geo split that sends Indian visitors to verte.co.in while keeping both sites indexable
- SEO pass: sitemap, robots, Product and Organization JSON-LD with ratings and shipping policy, hreflang and H1s
- Fixed the layout shift that was failing Core Web Vitals (CLS 0.52 on phones) by measuring every element with and without media
- Review stars and a region-aware payment and pay-later line on every watch page
- Host allowlist, Cloudflare WAF and authenticated origin pulls against a live reverse-proxy clone of the site
- Fixed a thank-you page that reported unpaid checkouts to Meta as purchases
- About 43,000 lines of TypeScript


The bespoke launch pages for Verte's Project Karbon, Karbon Speciale and URBN watches, built end to end on the Shopify store and ported to the global storefront.
- Urban Canvas: a freeform section system that places text, images and video at exact coordinates with parallax, in desktop, mobile and hero variants
- Project Karbon and Karbon Speciale product pages for the carbon-fibre, Miyota 9015 launch
- URBN page with batch pre-booking and the last-restock launch
- Ported to Next.js for vertewatches.com, checked against the theme with pixel-difference comparisons


A real-time 3D Karbon for Verte's product pages, with a working movement behind the exhibition caseback and hands that tell the viewer's own time.
- The second hand steps 8 times a second, matching the Miyota 9015's 28,800 vph, with every hand checked against seven clock times
- Balance wheel oscillates at exactly 4 Hz; the rotor has inertia and is spun by dragging, as on a wrist
- Gears turn at speeds inverse to their radius, neighbours counter-rotating, and the hairspring coils instead of spinning
- Blender prep: a fused 113,000-vertex fittings mesh split into 93 parts, gears named by size and the missing balance wheel built
- Materials made physically valid (the crystal had been an opaque metal), and the washed-out look traced to an HDR used as the backdrop
- Section-scoped three.js viewer, about 1,860 lines, with a fisheye sheet of review cards around the watch

A new 38 mm titanium watch for Verte, taken from brief to factory CAD: dial directions, case styles, finishes and straps, decided one step at a time.
- Design brief from two reference watches: what to take, what to leave, and why
- Factory CAD written in Python: a STEP assembly of six named parts plus STL files for 3D-printed mock-ups
- 38 mm across, 44.7 mm lug to lug and 9.2 mm thick, sized around a Ronda quartz movement
- Three dial directions (numerals, edge, 24-hour GMT), a 20-finish dial library, case styles and straps, over eight rounds
- A one-file offline three.js configurator, with each round's model compressed from up to 111 MB to under 10 MB
- Movement research across Ronda's range for height, battery life and cost



A fixed full-screen three.js canvas whose scenes blend as you scroll, written for the Shopify theme and ported to React for the global store.
- Scene-type registry: a new scene is one class with build, animate, camera and environment
- Each Shopify section declares its scene and config, so merchants arrange 3D moments in the theme editor
A single-purpose profit app for Verte, because revenue minus product cost leaves out ad spend, shipping, gateway fees, returns and packaging.
- Live, and the checkout alert has watched the India checkout since 8 Oct 2026
- Every cost carries its provenance (measured, rate card, assumed or unknown) and no cost is ever silently zero
- Every figure states its coverage, so the app was useful on day one and gets more accurate as estimates are replaced
- Checkout health alert: a Playwright test checkout every 15 minutes, an email alert and a one-click button to pause the India ads, added after the payment step silently failed for hours while the vendor's status page showed 100% uptime
- Built and verified against live data in about four days
A Shopify Checkout UI extension that shows international shoppers an exact USD reference price, and a note on the INR charge, on Shopify's own checkout page.
- Reads the price from a public SparrowOS endpoint backed by a cached Admin GraphQL catalog lookup
- Renders nothing for Indian shoppers, where INR is already right
HTML emails for the Karbon launch, with every heading rendered to a transparent image so the typography holds in Outlook, Gmail and Apple Mail.
- Python renders each text block to PNG and uploads it to Cloudinary
- Figma assets pulled and re-hosted, with one JSON map of every URL
- Early-access and campaign emails with separate desktop and mobile art
A soft morning-warmth colour grade for a Verte watch spot, designed as a custom LUT outside the editor so it could be iterated quickly.
- 33-point .cube LUT built in Python: tone curve first, green desaturation after, warmth that fades to zero at white and in shadows
- Skin and greens kept apart by hue, so skin never turns orange
- The graphic end card protected by blending graded and ungraded renders frame by frame
- Drove DaVinci Resolve's free edition through a Lua console bridge, since it has no scripting API
- Resolve's render verified against the reference to within 2/255
A per-model margin model for shipping watches to the US, built against the US tariff schedule itself.
- Chapter 91 component duty plus Section 301, checked against the 2026 USITC schedule
- Absorbed duty versus customer-paid duty compared per model
A three-week review of Verte's US Reddit campaign against Meta, ending in a rebuild plan with pass marks set in advance.
- Showed that three weeks of US Reddit spend had produced no sales, by Shopify and by Reddit's own count
- Click-through, engagement and cost per funnel step compared against Meta USA on the same pages
- Pass marks for a 14-day rebuild, and where the budget goes if it misses
Platform proposals, capability and cost roadmaps and a product readiness answer, each generated from a script so every figure has one source.
- A build script holds every line and number; a checker re-adds the totals from the finished HTML
- Prints to paginated A4 PDFs through headless Chrome
- The checker fails the build on any dash character, so the house writing style can't slip