Replacing a third-party form vendor
Took critical forms off an external vendor and rebuilt them in-house, removing recurring cost and lifting completion.
- Role
- Frontend Engineer
- Timeframe
- Multi-month build
- Stack
- React · TypeScript · Conditional logic · Form validation
- Rebuilt multi-step, conditional, compliance-bound forms previously served by a third-party vendor.
- Removed a recurring per-year vendor dependency and the integration surface that came with it.
- Improved completion rates by redesigning the flow, validation, and error states for clarity.
An abstract case study. Details are generalised; no employer, vendor, or confidential figures are included.
The problem
Some of the most important forms on the product weren’t ours. They were embedded from a third-party vendor — which meant a recurring annual cost, a rigid integration, limited control over UX, and a completion funnel we couldn’t fully instrument or fix. For forms that sit directly in a critical path, that’s a lot of leverage handed to an outside dependency.
The approach
I rebuilt the forms in-house in React/TypeScript. These aren’t trivial forms: they’re multi-step, with conditional logic that changes which fields apply based on earlier answers, strict validation tied to compliance rules, and a review-and-confirm step before submission.
Owning the implementation meant I could:
- Instrument the whole funnel and see exactly where users dropped off.
- Redesign error and empty states so requirements were clear at the moment they mattered, not after a failed submit.
- Simplify the step structure so users only saw what applied to them.
Outcome
The vendor dependency — and its recurring cost — went away. Because we now owned the funnel, the redesigned flow measurably improved completion. And the forms became consistent with the rest of the product’s design and accessibility standards instead of living in an isolated embedded frame.
This work later folded into the broader schema-driven form platform, where forms became configuration rather than bespoke code.