· Quablo ·

Quablo: the QR + attribution platform we kept describing in client meetings.

QR code on product packaging

A SaaS we built in-house — branded QR codes, custom-domain link shortener, and conversion tracking that ties scans to Stripe revenue. Now live at quablo.co and powering FTR DIGITAL campaigns end to end.

· Services ·
  • Product strategy
  • Brand & UX
  • Full-stack engineering
  • FastAPI rendering service
  • Stripe attribution
  • Custom domains via Cloudflare for SaaS
· Client ·
Quablo2025Our Product

3 → 1

Vendor stack collapsed into a single product (QR + shortener + attribution)

100%

Of issued QRs reroutable after print, including on the free tier

3 tiers

Free, Pro at $24/mo, Business at $79/mo

· The Origin ·

A brief that kept showing up

Three or four engagements in a row, the conversation went the same way. A client was finishing a packaging redesign, a flyer drop or an OOH wave, and the question landed late: can we put a QR code on this? What does it link to? What happens when we want to change that next quarter? And how do we know whether anyone scanned the thing at all?

Off-the-shelf generators baked the destination URL into the image — every campaign change meant another print run. Link platforms had analytics but no branded QR. Marketing-attribution suites could connect online to revenue but treated the box as someone else's problem. Stitching three vendors together worked once. After that, it stopped being worth the integration cost.

We had two choices. Keep recommending workarounds, or build the product we kept describing in client meetings. We built it.

· The Product ·

Create, Optimize, Measure — one platform for print campaigns

Quablo combines three things into one product: a branded, print-ready QR code generator with custom colors, gradients, logo embed and SVG/PNG/PDF export; a custom-domain link shortener with UTM templates, A/B variants and geo and device targeting; and conversion tracking that ties every scan and click to the lead, signup or sale it produced.

It's live at quablo.co with a free tier for tinkerers, Pro at $24/month for solo marketers and small brands, and Business at $79/month for teams running attribution end to end.

Print once. Reroute forever. Track the revenue.

· Design Decisions ·

Every QR is backed by a short link

This is the core architectural call. A static QR — where the destination URL is encoded directly into the image — is faster to generate but worthless the moment a campaign needs to change. So we made the choice once, for the whole product: every QR Quablo issues, including on the free plan, points at a Quablo-owned short link first and the destination second.

Change the link's target and every printed code on every box updates instantly. That sounds obvious in retrospect. It also rules out a class of fast-generator use cases — and the customer we wanted was the one who cared whether next quarter's campaign would survive.

· Under the hood ·

Next.js, FastAPI, OpenCV verification, Cloudflare for SaaS

The frontend is Next.js 16 with tRPC for typed APIs, Tailwind and shadcn/ui. Auth runs on Better Auth with the org plugin so multi-tenant teams, roles and invitations work out of the box. PostgreSQL stores links, scans, customers and conversion events; Redis fronts short-link resolution so redirects stay snappy under load.

QR rendering is its own FastAPI microservice using Segno, Pillow and OpenCV. The OpenCV pass simulates a camera scan before we hand the file back, so a logo that's too aggressive or a contrast that's borderline is refused at render time rather than discovered after a 10,000-unit print run. Custom domains are issued through Cloudflare for SaaS — real branded hostnames with managed TLS, not basic CNAME aliases. Billing runs on Polar so the Stripe relationship stays clean as the conversion-tracking integration, not the billing one.

· Outcome ·

The product still earns its keep on agency engagements

Quablo is the layer we reach for whenever an FTR DIGITAL client ships something physical — packaging redesigns, OOH launches, event activations, retail inserts. It's also a standalone SaaS with paying customers we will never meet.

Dogfooding it on real campaigns surfaced things a beta program would not have. The right unit of attribution turned out to be the customer, not the link — so the data model rolls revenue up across every event we attribute to a single identity. The most-requested feature on launch day was always live data, which is why Business ships server-sent events for the dashboard and outbound webhooks for everything else. And the OpenCV verification step exists because we'd rather refuse to ship a borderline file than be the team that made a client reprint a run.