Make Google Ads bid on real revenue, not form fills
I connect your CRM, booking system and phone calls back to the ad click, then send the outcomes to Google Ads. Consent-safe, checked against your own records, and monitored after launch.
Google Ads, tied to patients who actually showed up
For a New York City medical practice, I built an offline conversion loop that reports real patient visits back to the Google Ads click that produced them. The loop keeps calls and web bookings as separate conversion actions, uploaded through the Data Manager API, so one patient is never counted twice. Both launched in observation mode, and the call loop is proven end-to-end: the first ad-driven patients were counted in the account with the correct value.
- Click id captured at booking through GTM, with no site-file edits
- Calls matched to appointments by hashed phone number and a time window
- Only a click id, a value and a timestamp leave the system
For businesses where the sale happens after the click
I work with two kinds of clients: New York City medical practices and whoever runs their Google Ads, and US businesses where the sale closes on a call, at a booking or in a CRM. Skim both columns before reaching out.
Great fit
- NYC medical practices running Google Ads that cannot see which clicks became patients who showed up
- Agencies and in-house marketers running Google Ads for a practice who need patient outcomes in the account, HIPAA-conscious
- US businesses where the sale closes offline: on a phone call, at a booking or in a CRM
- Accounts where calls land as Direct or Unassigned, or one customer is counted twice
- Teams whose GA4, Google Ads and CRM numbers disagree and need to know which one to trust
Not for me
- Sending patient names, emails or visit reasons to Google Ads or GA4
- A new dashboard on top of tracking nobody has verified
- A guaranteed ROAS or cost per patient before anything is measured
- Cold pitching / spammy outreach automation
- MLM, crypto pump schemes, or anything dishonest
From ad click to real outcome
De-identified work for medical practices and multi-source marketing measurement: an attribution rebuild, a booking-system rescue and two architecture write-ups. Client details are removed, the engineering is not.
All case studies
Multi-location clinicGoogle Ads Attribution Rebuild: Clinic Case Study
Every booking and call keeps its real source, no double counting
How I rebuilt Google Ads attribution for a multi-location medical practice: bookings keep their source, calls carry a source, no double counting.
US medical practiceCase Study: Rescuing a Booking System That Failed Silently
Silent booking failures found and fixed, confirmations land
A clinic's online booking widget showed success while the backend failed. Here's how I reproduced it, found the identity collision, and fixed it.
US medical practicesThe HIPAA Boundary in a Marketing Data Pipeline
A boundary you can show a compliance officer on one page
Where patient data stops and ad tech begins, drawn as an architecture: two zones, a scrub before load, and a table that physically cannot hold PHI.
Multi-source marketing measurementThe Marketing Pipeline That Re-Reads Yesterday
Reports that stop changing after you send them
Ad platforms restate history and CRMs edit rows late. The ingestion design that survives it: watermarks, per-source lookback, idempotent loads.
From ad click to closed sale: one engineer, zero handoffs
Engineering background (Master's) and 8 years in web development behind the tag and API work. I find where a conversion loses its source or gets counted twice, fix it, and send the real outcome back to Google Ads so bidding follows revenue, not form fills.
Offline conversion import
I capture the click id (GCLID, gbraid or wbraid) when the lead comes in, then upload the real outcome from your CRM or booking system to Google Ads through the Data Manager API, deduplicated so each sale counts once.
Call attribution
I connect CallRail to Google Ads so each tracked call carries the campaign that produced it. Calls and web bookings go in as separate conversion actions, so one customer who does both is not counted twice.
Consent-safe measurement
I set up consent mode so tags follow each visitor's choice, and count what can still be counted when they decline: server-side sales, plus modeled totals labeled as modeled. Medical builds stay HIPAA-conscious, with patient data kept out of the marketing layer.
When Google Ads, GA4 and your CRM disagree, I find out why and fix it
I trace each of the three counts to its source, remove double-firing tags, restore lost sources, and reconcile them into one number you can bid on.
Tracking monitoring
Tracking breaks silently. I add checks that flag a broken tag, a dropped consent update or a failed offline upload before bidding learns from bad data. The checks run on n8n or a scheduled job.
Performance Ads
Nearly $700K ad spend managed across Google, Meta and TikTok. I judge media buying on the outcomes the tracking reports, not on the conversions a platform claims.
From first call to verified tracking in 2-4 weeks
No discovery phases that drag for months. No 80-page proposals. One call, a written scope, then I build and verify.
- Day 0
Discovery call
Free 15-min call. You tell me what the ad account reports, what actually closes, and your constraints. If it's not a fit, I'll say so.
- Day 1-2
Scope & proposal
I send a written scope with timeline, deliverables, and fixed price. No vague hourly bills.
- Week 1+
Build & iterate
Daily updates in Slack or Telegram. You see progress, not status meetings.
- Week 2-4
Ship & validate
I launch new conversion actions in observation first, check the counts against real sales, and document everything.
- Ongoing
Optional retainer
If it's working, I can stay on retainer to monitor tags and uploads and fix breaks before they skew bidding.
How I work. Priced after a call.
Three ways to work together. I quote once I know what your setup actually looks like, and you get the number in writing before you commit to anything. Book a 15-min call and I will scope it.
Hourly
Best for small fixes, quick consults, or scoping unknowns.
- Min 5 hours
- Invoiced weekly
- Slack / Telegram access
- Same-day response
Project
Best for one-shot builds with a clear scope and deadline.
- Fixed price agreed before work starts
- 2-4 week delivery
- Source code + docs
- 30-day post-launch support
- Success metric agreed upfront
Retainer
Best for ongoing measurement, monitoring, and optimization.
- 20 / 40 / 80 hours per month
- Priority response
- Monthly strategy call
- Performance dashboard
- Pause anytime, no lock-in
No retainer lock-in. Cancel any month with 7 days' notice. If the first week of any project isn't working, you get a 100% refund. I'd rather lose a paycheck than your trust.
What clients say
A selection of real, unedited reviews from my 22 Upwork contracts. Every quote below is transcribed word-for-word. Click “Verify on Upwork” on any card to read it on my profile.
I had an excellent experience working with Alexander. He completed the project with outstanding quality and great attention to detail. Beyond simply delivering what was requested, he took the time to provide valuable suggestions that significantly improved the final result. His communication was clear, professional, and timely throughout the entire project. He understood the requirements quickly, offered practical solutions, and consistently demonstrated strong expertise. I especially appreciated that Alexander genuinely cared about the success of the project rather than just completing the assigned tasks. His recommendations saved me time and improved the overall outcome. I would definitely hire Alexander again and highly recommend him to anyone looking for a skilled, reliable, and thoughtful professional.
Fix React Booking System Submission Error (Hetzner API Backend)
Working with Alexander is spot on. You quickly get to the heart of the matter, exchange ideas about possible implementation approaches, and get exactly the right solution. I would work with him again anytime and recommend him to anyone as an implementation partner.
Prototyping dynamic landing page engine based on WordPress
Alexander is working outstandingly and enjoyably on our projects. Besides flawlessly handling his technical parts he is always open to thinking aloud about possibilities besides the main tasks, optimizations, and the like. We will come back to work on more together
WPAllImport, WooCommerce – various shortcodes and template works
It was a pleasure to get this project fast and as bespoken done by Alexander.
Relaunch a WP site with Elementor Pro
Prefer Upwork escrow? Hire me on Upwork
The questions clients always ask
(so I answered them upfront)
Still have a question?
Prefer writing? . I reply within 24 hours.
See which ad clicks become customers
Tell me how leads reach you today (forms, calls, bookings) and where the sale closes. I'll get back within 24 hours.
or send a message
Prefer Upwork escrow? Hire me on Upwork