Work / Case study

Form Platform Migration — 24 Forms to Google Forms

Shipped Shipped October 23, 2026 Google Apps Script

Migrated 24 business forms from a paid form builder to Google Forms in one day, with a rules engine that rebuilds routing, notifications, lookups and webhooks the native product lacks.

Source code is private. Walkthroughs are available on request.

24forms rebuilt and live in one day
89conditional rules mapped to Google Forms routing
0failures in 34 parity-test trigger runs
659historical submissions reconciled

Business impact

Moved the agency's day-to-day forms onto the Google Workspace it already pays for, with routing, notifications and lead-platform integration preserved, a fix for a long-silent alert failure, and a documented path to retire most of a paid subscription.

Problem

Every agency form (lead capture, referrals, IT and purchase requests, time clock) lived in a paid form builder with conditional logic, per-form email rules, hidden lookup fields and webhooks into the agency's lead platform. Leadership wanted Google Forms instead, but Google Forms has no conditional show/hide, no hidden fields, no per-answer email routing, no webhooks, and its APIs cannot create file-upload questions or set a theme.

Solution

Exported every form, question, condition, email rule and webhook from the source API into a versioned JSON build spec, then generated each Google Form from that spec with an Apps Script engine. A hand-built branded template supplies the theme, header and file-upload question (copies keep them; the APIs cannot create them). One submit trigger per response workbook runs the engine, which adds the derived columns, routes approvals, sends branded notifications and posts a payload shaped exactly like the old webhook, so the lead platform needed no change.

Results & highlights

  • Inventory from the live API before building: 39 forms, 545 questions, 89 conditions, 73 email rules, 5 webhook integrations and 659 historical submissions, every count reconciled against the source product
  • Conditional show/hide rebuilt as section routing from the controlling question; 55 hidden per-employee lookup fields replaced by engine-written requester, team and supervisor columns from one table; a separate parity audit decoded all 89 conditions
  • Found and fixed a misspelled notification address that had silently kept every referral-form alert from reaching sales leadership
  • Worked around three platform limits with tested probes: template copies for branding and uploads, a one-time folder restore Google requires on copied upload forms, and one trigger per workbook to stay under Apps Script's 20-trigger cap
  • Parity test before cutover: 24 of 24 synthetic submissions and 34 of 34 trigger runs completed with 0 failures, webhooks held back under a test mode
  • Cut over without downtime: the team portal's embeds were switched the same morning, the old forms stay live through a 14-day parallel run, and five public lead forms that need anonymous uploads stay on the old builder by decision (2026-10-26)
  • Shipped with an operations SOP covering the template-copy procedure, the folder-restore step and the cutover checklist

Competencies demonstrated

  • Platform migration: API-first inventory, spec-driven rebuild of 24 forms, parallel run and staged cutover.
  • Integration design: Replayed the old webhook payload shape so the downstream lead platform needed no change.
  • Working within platform limits: Template-copy technique for branding and uploads the Forms APIs cannot create; trigger consolidation under the 20-trigger cap.
  • Data parity and QA: Reconciled counts against the source, decoded every condition, and ran a 24-form synthetic submission test before go-live.

Architecture

  1. Source API exportforms, rules, webhooks
  2. JSON build specversioned, regenerable
  3. Template copytheme, header, upload
  4. Form generatorsections, routing
  5. Submit enginelookups, emails, approvals
  6. Same-shape webhooklead platform unchanged
Design-level view. Hostnames, addresses and account details are intentionally omitted.

Notes

  • Form contents, respondent data and account identifiers are not shown; figures are from the deploy record of 2026-10-23.

Next: AI IT Support Agent — Slack and Web Chat →