Multistep Order Form

Product Development Case Study

Order form location and date step with an address, date fields, a pinned map, and a continue action
My Role
Product Owner & Developer
Platform
Web Application
Deliverables
Full-Stack Web Development
Tools
Vue.js · Node.js · Firebase · Google Maps APIs · Nodemailer · Google Cloud

Overview

MVP
Focused first release
3 steps
Progressive order journey
Web app
Responsive product interface
1 goal
Complete a valid order

The multistep order form is a responsive web application that helps customers submit detailed service orders online. It guides them through three steps: choosing a service and size, confirming the location and dates, and adding contact details before submitting the order.

I designed and developed the application as a minimum viable product (MVP) to make complex orders easier to complete and give the business the structured information needed for fulfilment. This first release focuses on the core ordering journey and provides a foundation for future validation and product development.

Problem

The business owner identified a bottleneck in the existing contact form: addresses did not specify exactly where a container or big bag should be placed. Follow-up emails delayed fulfilment, while calls added staff workload and friction for customers.

Customer, dispatcher, and driver passing unclear delivery details between them

Customers had to repeat information, and dispatchers had to clarify the location before passing it to drivers. Capturing the drop-off point upfront could reduce this coordination and the risk of misplaced deliveries.

Improvement opportunity

Replace the standard contact form with a guided, multistep order flow that lets customers confirm the exact drop-off point on a map. Include those coordinates with the submitted order so the dispatcher and driver have a clear location, reducing the need for follow-up calls.

Capturing the drop-off point during ordering offered a practical way to reduce manual coordination for the waste-disposal company.

Product Approach

The approach retained the existing three-step process and email communication, replacing repeated location clarification with a precise map selection during ordering.

  1. 01

    Make location the core feature

    Give the map fields prominence in Step 2. A draggable Google Maps pin captures the exact drop-off coordinates for customer and administrator emails, ready to share through the existing dispatch workflow.

  2. 02

    Fit the existing workflow

    Support Estonian and English, with a mobile-friendly form and clickable coordinates in emails so drivers can open the location on their phones.

  3. 03

    Keep the MVP focused

    Deliver the three-step order form and coordinate emails first. Leave cost calculation out of the initial scope.

Multistep Order Form Flow

One precise location, shared by everyone

An address gets the driver to the property; a draggable map pin identifies the actual drop-off point. Customer and administrator emails include the coordinates as a clickable Google Maps link, giving dispatchers a precise location to share with the driver.
A guided three-step journey, from choosing a service to submitting contact details.

Technical Delivery

The core data flow is simple: select the drop-off point, save its coordinates with the order, and email a location link that can be opened on a phone.

  1. 01

    Frontend and location capture

    Vue 3, Vite, Vue Router, and Pinia manage the three-step form and retain order details between steps. Vue-i18n supports Estonian and English. Google Maps address search positions the map; dragging the marker updates the stored coordinates, with reverse geocoding to resolve the address.

  2. 02

    Validated order storage

    A Node.js and Express API uses Firebase anonymous authentication to associate orders with a user session. Server-side checks cover contact details, coordinates, service options, quantities, delivery dates, and terms acceptance. Firestore stores the order with a server-assigned sequential reference.

  3. 03

    Email and driver handoff

    Nodemailer builds an Estonian summary from the saved order and sends it to the customer and configured administrator. It includes a Google Maps Static API preview and clickable coordinates that open Google Maps. Dispatchers can share this location with drivers; a separate driver email recipient is not configured.

  4. 04

    Recoverable submission

    If saving succeeds but email delivery fails, the interface offers an email retry using the original order reference rather than creating another order. Delivery status prevents concurrent sends and repeat sends after recorded success. An interrupted send with an uncertain outcome requires an operator to check delivery before retrying.

  5. 05

    Deployment and observability

    GitHub Actions deploys the frontend to Firebase Hosting and the containerized backend to Google Cloud Run. Hosting routes API requests to Cloud Run. Firebase token verification and rate limits protect requests, email content is HTML-escaped, and Winston sends redacted production logs to Google Cloud Logging.

  6. 06

    Testing

    Repository tests cover order validation, date handling, map coordinates and previews, autocomplete request races, email safety, terms acceptance, and runtime protections. Firestore rules tests use the Firebase emulator. These checks do not replace real-device usability testing or production delivery monitoring.

Outcome & Reflections

The MVP retained the existing three-step ordering process while adding precise drop-off selection and emailed location links. Support for Estonian and English, a mobile-friendly form, and clickable coordinates addressed the core workflow requirements.

The key lesson was to improve the information captured at the start rather than add more coordination afterward. Next, I would validate the flow with customers and drivers, track how often orders still need clarification, and use those findings to guide further development.