POP Local
A shop that resells the work of hundreds of Australian makers. We moved it from a 20-second Next.js and Square build to headless Shopify, then built the portal that pays the makers.
- Client
- Independent retailer, Canberra
- Industry
- Retail & local makers
- Shipped
- 2025
- Live at
- poplocal.com.au
Twenty seconds a page, and the makers paid by hand.
POP Local sells the work of hundreds of small Australian makers, in store and online. The old site, Next.js on top of Square, loaded every product and every category on every category page, so the pages people shop from took up to twenty seconds. Online sales were close to nothing.
Behind the counter it was worse. Every fortnight someone built a sales report for each maker by hand and typed up a bank file for the payments. Makers dropped products at the shop with a name and a price, and the team wrote the descriptions with no idea what was in them.
A store that loads, on Shopify.
A headless storefront on SvelteKit reading products, collections, search and cart from Shopify's Storefront API, with the slow parts (recommendations, reviews, the maker's other products) streamed in after the page has painted. Category pages filter by maker, type, price and availability without a reload. Customer accounts sign in by email code or Google, with order history, loyalty points and reviews on top.
Every page of content is in Sanity with a page builder and visual preview, so the team edits the site themselves. Click and collect runs through Shopify, and it is where online orders have taken off.
Square to Shopify, counter included.
The shop moved from Square to Shopify in one go: products, customers and the point of sale in store, so in-store and online sales sit in one system and every sale carries the maker who made it. The old catalogue had 1,208 product addresses; each one redirects to its new home, so nothing that ranked was lost.
The portal that pays the makers.
POP Maker is a web app for both sides of the counter. Makers apply, sign the agreement, then log in to see their own sales pulled live from Shopify, their payout history, and submit new products with the details the shop never had: ingredients, materials, care, allergens, the story. They keep their bank and GST details current themselves.
Staff approve applications (which sets the maker up in Shopify, with a collection of their own on the site), review product submissions with an AI-enhanced description they can edit, and push products into Shopify as drafts. Every fortnight the payout run collects each maker's sales, works out the payout on cost of goods with GST added where the maker is registered, lets staff adjust and confirm, emails every maker their report, and generates the ABA files the bank accepts as a batch payment. What took a day of spreadsheets is a few clicks, with the numbers logged.
The numbers.
<1s
page loads
category pages took up to 20 seconds on the old build
343
makers on the portal
each with their own sales, payouts and product submissions
1
system for shop and online
Square and Next.js replaced by Shopify, point of sale included
1 click
fortnightly payout files
bank files generated, reports emailed to every maker
6k
product URLs kept alive
every old address redirected in the migration
Maker count from the portal, June 2026. Online sales had no baseline to compare against; they started from close to zero.
Theirs to keep.
Shopify is the system of record for the shop, the site and the portal. Everything else runs in POP Local's own Cloudflare, Supabase and Sanity accounts, from their repositories.
- SvelteKit
the storefront and the maker portal
- Shopify
products, checkout, point of sale, sales data by maker
- Sanity
site content with visual preview, portal copy and the AI prompt
- Supabase
accounts, the portal database, payout files
- Cloudflare
hosting, plus a queue-driven worker for the payout run
- Growave
loyalty points, reviews and Instagram
- Resend · Klaviyo
maker emails and customer marketing
- Gemini
product descriptions drafted from what the maker submits
















