Interactive golf club finder and enrollment flow
A seasonal campaign needed one enrollment flow for multiple clubs, each with availability rules set by the client, so that every lead reached the right club with the right next step.
- Period
- 2024
- Context
- Professional work
- Client
- Undisclosed
Context
A seasonal acquisition campaign needed a single enrollment flow for multiple participating golf clubs. Users had to be able to find a suitable club, submit their details and understand the next steps for arranging their first class.
The participating clubs did not all work in the same way. Some provided predefined days and times, others offered flexible scheduling, and others needed to contact the user directly after submission. The experience therefore had to adapt to each club while keeping the journey consistent for the user.
The client defined those scheduling rules and each club’s availability, and set new ones as the campaigns went on. My part was implementing that logic and adapting the flow to the rules as they changed.
- Platform
- WordPress · Gravity Forms
- Flow
- Two-step enrollment
- Selection
- Interactive map
- Scheduling
- Per-club states
The challenge
The main challenge was keeping the map selection, Gravity Forms state, club-specific availability and notification behavior synchronized.
Selecting a club could change which scheduling controls appeared, what information was stored with the submission and which confirmation path the user received. The flow also had to remain usable when a club had fixed availability, flexible scheduling, both options or no predefined schedule at all.
What I was responsible for
Form experience
- Built the two-step enrollment form in Gravity Forms, including the interface, responsive behavior and separate Spanish and Catalan versions.
Interactive club finder
- Integrated Google Maps JavaScript API with province-based navigation, club markers, information windows and map-driven club selection.
Dynamic scheduling
- Connected each selected club with its availability configuration so the form could display fixed schedules, flexible scheduling or a direct-contact state.
Notifications and delivery
- Configured conditional Gravity Forms notifications for users and selected clubs, and set up authenticated email delivery through WP Mail SMTP.
Solution
I built the experience from scratch in WordPress using Gravity Forms and Google Maps JavaScript API.
The first step collects the user’s contact details. In the second step, users can filter participating clubs by province or navigate the map directly. Each marker provides basic information about the club, and selecting one connects that location with the rest of the form.
From there, the interface adapts to the selected club. Clubs with predefined availability expose day and time options, flexible clubs allow the user to request an alternative schedule, and clubs without configured availability fall back to a direct-contact journey.
The selected club and scheduling information then travel with the submission and determine the notification flow used after the form is completed.
Technical approach
Collect
Capture the user’s personal details in the first step of the Gravity Forms journey.
Locate
Let users narrow the map by province while keeping direct map navigation available.
Select
Use Google Maps markers and information windows to explore clubs and connect the selected location with the form.
Resolve availability
Read the selected club’s configuration and determine which scheduling state should be shown.
Schedule
Generate available days and times when they exist, expose flexible scheduling where supported or fall back to direct contact.
Notify
Route the submission to the selected club and send the appropriate user confirmation based on the completed scheduling path.
The system
- Choose what arrives to run it.
Personal details collected in the first step lead to a province filter and an interactive map. Selecting a club from the map feeds the availability logic, which reads that club’s configuration and resolves it into one of three interface states. A club with predefined availability exposes days and times; a club with flexible scheduling lets the user request an alternative; a club with neither falls back to being contacted after submission. All three paths converge on the same submission, which then routes the appropriate notifications to the club and to the user.
Interface states
The club a user picks decides what the rest of the form asks them. Two of the three scheduling states are shown here.
The same logic also supports clubs without predefined scheduling options, where the interface explains that the club will contact the user after submission.
Scheduled availabilityFig. 2 — Clubs with predefined availability expose the available days and time slots directly within the form. Flexible availabilityFig. 3 — Clubs with flexible scheduling allow the user to continue without committing to a predefined time and arrange the final schedule directly with the club.
Notification flow
Completing the form does not trigger a single generic confirmation. The selected club and scheduling state determine what happens next.
The appropriate club receives the submitted lead information, while the user receives a confirmation adapted to the journey they completed. This includes different messaging for predefined schedules, flexible scheduling and clubs that arrange availability after submission.
I also configured WP Mail SMTP so the project could send through an authenticated email account instead of relying on the default WordPress mail setup.
A completed submission fans into two independent routes. The selected club determines which club notification is sent and who receives it. Separately, the scheduling state the user completed determines which of several user confirmations is sent, so a predefined schedule, a flexible request and a club that arranges availability afterwards each produce different messaging.
Outcome
The club finder and enrollment flow was deployed to production and continues to be used in seasonal campaigns.
The implementation remains active and is updated as participating clubs and their availability change.
Lessons learned
This project was my first practical experience building an interactive Google Maps integration. I learned how to work with coordinates, markers and information windows, and how to connect a map interaction with the state of a separate form system.
The scheduling logic also taught me how to design a single journey around different underlying configurations. Instead of forcing every club through the same path, the form adapts its interface according to the availability attached to the selected location.
I also gained experience with conditional Gravity Forms notifications and WordPress email delivery. Configuring authenticated SMTP was particularly useful because it introduced me to the deliverability issues that can appear when production forms rely on the default WordPress mail setup.
Technologies
More of my work
All projects- 01 · Client workMulti-hotel reservation data, consolidated for reportingReservation data from twelve hotels depended on monthly lists reviewed by hand, so the workflow brings reservations in continuously and keeps one consistent, historical dataset for client reporting.View project
- 02 · Client workMulti-step form and API integrationA two-step form had to check vehicle eligibility against an external service, turn each response into a clear result state, and carry campaign attribution through to submission.View project
- 03 · Client workWordPress rebuild and structured content systemA new WordPress site built so a non-technical team can publish articles, ebooks and webinars through structured content, with lead forms connected to the CRM the client already used.View project
Open to integration, automation and technical implementation roles.
