UnlockLARGER
PROFITS Through CRO

We build, optimise and scale e-commerce websites by combining behavioural economics with best in class design for Shopify founders looking to boost profitability.

Our
services

CRO

If you’re driving traffic but conversion rate and AOV are not where they should be, we’ll show you what’s holding your store back, and how to find profitability.

THEME BUILD

We build and launch bespoke and template Shopify and Shopify Plus themes that put profit first, with a mobile-friendly, CRO-led shopping experience that feels genuinely unique.

CUSTOM APP

We build custom Shopify apps that make commercial sense, from bespoke back-end features and API integrations to enhanced front-end functionality, when a theme tweak or App Store solution won’t cut it.

/** * CUSTOM SHOPIFY FRAMEWORK v4.2.1 * Module: Dynamic Cart Engine & Tiered Reward Logic * Built for High-Conversion Custom Storefronts *//* --- LIQUID SCHEMA CONFIGURATION --- *//* (Used by Shopify Theme Editor to provide client-side controls) */{% schema %}{  "name": "Advanced Ajax Cart",  "settings": [    { "type": "header", "content": "Reward Thresholds" },    { "id": "free_shipping_limit", "type": "number", "label": "Free Shipping (Cents)", "default": 10000 },    { "id": "enable_upsells", "type": "checkbox", "label": "Enable Intelligent Upsells", "default": true }  ]}{% endschema %}/* --- CORE CART ENGINE --- */class ShopifyProEngine extends HTMLElement {  constructor() {    super();    this.config = {      threshold: {{ settings.free_shipping_limit | default: 10000 }},      currency: "{{ shop.currency }}",      symbol: "{{ cart.currency.symbol }}"    };        this.state = {      cart: null,      loading: false,      tierReached: false    };    this.dom = {      items: this.querySelector('[data-cart-items]'),      progress: this.querySelector('.progress-bar__fill'),      total: this.querySelector('.total-display'),      announcer: document.getElementById('cart-live-region')    };  }  connectedCallback() {    this.addEventListener('change', debounce((e) => this.updateQuantity(e), 300));    this.initObservers();    this.refreshState();  }  // Uses the Fetch API to interface with Shopify's /cart.js endpoint  async refreshState() {    this.setLoading(true);    try {      const response = await fetch(`${window.Shopify.routes.root}cart.js`);      this.state.cart = await response.json();      this.renderUI();      this.calculateRewards();    } catch (err) {      this.handleError("Failed to sync cart state", err);    } finally {      this.setLoading(false);    }  }  calculateRewards() {    const total = this.state.cart.total_price;    const remaining = this.config.threshold - total;        if (remaining <= 0) {      this.state.tierReached = true;      this.updateProgress(100, "You've earned Free Shipping!");    } else {      const percent = (total / this.config.threshold) * 100;      const formattedRemaining = this.formatCurrency(remaining);      this.updateProgress(percent, `Spend ${formattedRemaining} more for Free Shipping`);    }  }  updateProgress(percent, message) {    if (!this.dom.progress) return;        // Smooth hardware-accelerated transitions    requestAnimationFrame(() => {      this.dom.progress.style.transform = `translateX(-${100 - percent}%)`;      this.dom.progress.dataset.label = message;            if (percent >= 100) {        this.dom.progress.classList.add('is-complete');        this.confettiEffect();       }    });  }  async updateQuantity(event) {    const input = event.target;    const line = input.dataset.line;    const qty = input.value;    const body = JSON.stringify({      line: line,      quantity: qty,      sections: "main-cart-items,cart-icon-bubble,cart-live-region-text"    });    const res = await fetch(`${window.Shopify.routes.root}cart/change.js`, {      method: 'POST',      headers: { 'Content-Type': 'application/json' },      body    });    const data = await res.json();    this.state.cart = data;    this.renderUI();  }  formatCurrency(cents) {    return new Intl.NumberFormat('en-US', {      style: 'currency',      currency: this.config.currency,    }).format(cents / 100);  }  setLoading(status) {    this.state.loading = status;    this.classList.toggle('is-loading', status);    this.setAttribute('aria-busy', status);  }  handleError(msg, error) {    console.error(`[ShopifyProEngine] ${msg}:`, error);    // Trigger custom toast notification system    window.Toast.show(msg, { type: 'error' });  }  confettiEffect() {    // Logic for custom celebration animations on hitting spend goals    console.log("Tier unlocked: Customer reached free shipping threshold.");  }}// Instantiate the custom Web Componentif (!customElements.get('shopify-pro-engine')) {  customElements.define('shopify-pro-engine', ShopifyProEngine);}

This Scroll Animation Doesn't Loop & You've Reached The End of Some Seriously Long Filler Code. If you're reading this, you have too much time on your hands, lock in...

CREATIVE

Your brand is what customers feel before they ever click “buy”. A consistent, effective identity cuts through the noise, builds trust, and supports growth. We make sure your creative foundation does exactly that.

FEATURED
projects

CNP

CRO
↑ 40% CVR
↑ 30%+ Profitability
View Case Study

P.Louise Cosmetics

CRO
↑ 25% AOV
↑ 34% CVR
View Case Study

Maters & Co

CRO
↑ 14% Cart Success Rate
↑ 9% CVR
View Case Study

The Box Supplements

CRO
ARPU £1.10
2% CVR
View Case Study

Perfect Little Thing

CRO
↑ 41% AMPU
↑ 64% CVR
View Case Study

What
our clients say

Meet ThE
team

Sam James

CEO & Co-Founder

Charlie Timlin

Senior Developer & Co-Founder

David Gorton

UI/UX Designer & Board Member

Miles Crompton

Full Stack Developer & Board Member

Gabriella Pagliuca

Shopify Developer

Vanessa Neri

Lead Designer & Creative Director

Shannon Hardisty

Social Media & Marketing Executive

Ben Parkes

Business Development Executive

HOW
we work

Stop guessing, start testing. Your website is a goldmine of untapped data. We decode it and run strategic A/B tests that drop your CPA and boost your profit.

STEP 1

Our 100-point heuristic audit benchmarks your site against behavioural best practice and Shopify leaders.

STEP 2

Baseline builds your CRO foundations: brand clarity, clean tracking, CEP insight, quick wins, and a prioritised test roadmap.

STEP 3

Design, Development & Data combined to create a new experience for customers that removes friction, improves flow, and boosts performance

STEP 4

We turn customer behaviour, surveys, and reviews into a profit-first testing roadmap, with clear, measurable hypotheses tied to real buying moments and emotional triggers.

BOOKA call

Fill out the form and get yourself booked in for a 100 point audit and a 1-1 chat with Sam to guide you through your next steps.

Thank you! We have received your request for a callback.

A member of our team will be in touch shortly.
Oops! Something went wrong while submitting the form.