skip to content
← All case studies

Professional · Case study

Victors Holdings Campaign Setup Platform

Multi-step campaign setup form with a progress checklist
Role
Design, engineering and deployment
Type
Client project
Stage
In use
Client
Victors Holdings
Read time
2 min read

01 · The problem

Collecting the details needed to launch Victors Holdings' campaigns — pricing, delivery, payment and customer information — over WhatsApp was slow, incomplete and impossible to keep organised.

02 · Approach

How I approached it

Give the client one private link to a step-by-step form that asks exactly what's needed, in the language of their industry, and saves the answers where the team already works: Google Sheets.

Rather than hard-coding one form, I built a template system: each industry template defines its questions, answer types and follow-up questions, so new clients don't need new code.

Key decisions

Templates are copied onto each link

A link stores the template it was created with, so improving a template later never changes a form a client has already received — while built-in templates can still be upgraded deliberately.

Google Sheets as the data store

The client team already worked in Sheets. Writing there removed the need for a separate admin tool for reading submissions and kept the data in a familiar place.

Duplicate-safe submissions

Each submission's reference is derived from its link, so a retried or double-clicked submit can't create a second record.

03 · Solution

What I built

Private, unguessable setup links with optional expiry

Create, copy, extend, disable, replace and delete links

Step-by-step form with a progress checklist and review step

04 · Engineering

How I engineered it

End-to-end validation

Every answer is validated against the template on the server with Zod — required fields, option lists, number formats and conditional questions — regardless of what the browser sends.

Keyless access to Google

The app authenticates to Google Sheets through Workload Identity Federation with Vercel's OIDC tokens, so no service-account key is ever created or stored.

Abuse protection

Rate limiting on submissions, unguessable tokens, expiry and disable checks on every request, and admin pages protected by signed session cookies.

05 · Technologies

Under the hood

Frontend

Next.js (App Router)
Server-rendered pages for the client form and admin area
React & TypeScript
Multi-step form, template-driven fields and admin tools
Tailwind CSS
Responsive, accessible interface

Backend & data

Next.js route handlers
Submission and link-management APIs
Zod
Validation of templates and every submitted answer
Google Sheets API
Stores setup links and submissions

Infrastructure

Vercel
Hosting and deployment
Google Cloud Workload Identity Federation
Keyless authentication to Google APIs

06 · Results & lessons

What it achieved

  • In use for Victors Holdings' campaign setup: the client completes their information in one guided session.
  • Every submission arrives complete, validated and in a consistent format, ready to plan the campaign from.

What I learned

Separating the client's identity from the form template made the platform reusable for other industries without code changes.

What’s next

  • Add templates for more industries as new clients come on board.

Where are you losing customers?

Get a free Customer Leak Audit. I'll check how your business handles enquiries, what happens after a quote, and where customers slip away, then show you what to fix first.

No assumptions about the solution before understanding the problem.