If you run a service business and your ad costs keep climbing, the instinct is to blame the platform. Meta got worse. Google got greedy. The audience is tapped out.
I don't think that's what's actually happening. After a month and a half heads-down building FormLock, I've come back to the same three problems over and over again — and none of them are about the platform itself. They're about what happens between the click and the close.
This is the first post in a build-in-public series. I'm not pitching anything here. I'm laying out the patterns I kept hitting while setting up campaigns for service businesses, and the reasons I decided to build a tool to handle them in one place.
People want speed. They want easy. They want to say "yes, I want to work with you" without clicking through three pages to do it.
The standard service-business funnel is a form, then a redirect to a questionnaire, then another redirect to a calendar. Sometimes only two of those, but it's almost always a chain. And every redirect is a chance to lose someone.
This was actually the first thing I set out to solve. I was building an intake process for a campaign, watching myself stitch together page after page, and thinking: this is too many steps. Every step is a leak. The fix isn't a better landing page — it's collapsing the whole sequence into one inline experience so the lead never has to load a new URL to keep going.
If you have no qualification logic in your funnel, unqualified leads slip through and your sales team burns hours chasing people who were never going to close.
If you do have qualification logic, it's usually painful to set up — branching if/then conditions across a questionnaire that has to talk to your CRM and your calendar and your follow-up automations. Most owners give up halfway and just rely on the front desk to screen people on the phone.
Unless you're taking anyone with a credit card, you need this layer. You need to be able to protect the calendar for the people you can actually help — the ones who will leave a real testimonial and refer the next three. The trick is making qualification light enough to set up that you actually finish it.
You wake up. There are ten leads in the inbox. Which one do you call first?
Without an intent signal, you call them in the order they came in, or whoever has the nicest-looking name. Meanwhile the hottest lead — the one who spent four minutes on the page, came in from a high-intent keyword, and answered every qualification question the "right" way — sits in the queue long enough to go to your competitor.
The intent layer I'm building inside FormLock learns from a few signals: time on page, how the qualification questions were answered (some answers technically qualify, but some answers qualify *and* signal higher intent), and the source — Google vs. Meta vs. TikTok vs. organic. It scores each lead so when your team opens the dashboard, they know who to call first. It's specific to each business's standards, not industry averages, because industry averages aren't your business.
This is the one that quietly kills campaigns.
Meta and Google build their targeting on thousands of data points per user. They show your ad to people who behave like the people who already converted on your ad. The catch: "converted" means whatever event you fire back at them.
If the only event you're sending is "form fill," the platform thinks it's doing a great job every time someone fills out the form. It doesn't know that 90 of those 100 fills never closed. So it goes and finds you more form-fillers. People who love filling out forms. Not people who love buying.
The fix is firing back the events that actually matter — closed deals, purchase values, average order values — so the algorithm starts optimizing for revenue instead of intake volume. It's a more manual process, which is exactly why most owners skip it. So I built it into the submit button. One click fires the lead notification, kicks off speed-to-lead, stores partial data for abandoned-lead recovery, sends the pixel back to Meta, sends the tag back to Google, and writes the lead into the intent learning system. Server-side, all of it.
FormLock is live in two businesses right now — one onboarding, one mine. Every event signals back correctly. The intent system is learning. The dashboard shows priority scores, appointment dates, and full lead history, all white-labeled to the business using it. No "powered by" badges. No third-party-tool feel.
The next 30 to 60 days are the real test. I'm running it against cold traffic, not a warm audience, because I want to know if it holds up when nobody knows me. The goal is a hundred users in six months. The bigger goal is to make it normal for a small service business to train its ads on revenue instead of form fills — without hiring an agency to do it.
If any of the four problems above sound like your business, follow the build. I'll post the wins, the breaks, and the numbers as they come in.