Telehealth Ads by State: Which States Actually Convert
Telehealth ads by state: read sessions, booked visits, cost per booked visit, and funnel completion per state, then ask Curve Analyst by region.
Most telehealth teams set state budgets by license footprint and gut feel, then report at the national level because splitting every metric by state is a spreadsheet chore nobody finishes. That is backwards: the per-state view is where the allocation decisions live, and the national average is mostly noise around them. If you run ads in many states, the numbers that should decide next month's budget are sessions, booked visits, cost per booked visit, and funnel completion, each broken out by state, and each should be one question rather than a pivot table. Curve keeps region as a dimension on every website metric and on its funnels, and Curve Analyst lets you filter those by state in plain language, so the pivot table stops being the reason the analysis never happens.
TL;DR
- A national conversion rate is a weighted average of states that work and states that quietly burn money. It cannot tell you which is which.
- Four per-state views carry the decision: sessions, booked visits, cost per booked visit, and funnel completion. Read them in that order.
- Traffic with no bookings in a state usually means a licensing or provider availability gap, or a landing page mismatch. The ads did their job; something after the click did not.
- Google and Meta each report conversions by geo under their own attribution. Curve reports its own attributed conversions and says which figure it is quoting.
- Per-state analysis stays aggregate. Curve Analyst answers "how many booked visits came from this state" and declines "who in this state booked."
- Ask by region the same way you would ask a colleague: name the state and the metric, and let the screen you opened it from set the period.
Why the national average hides the states that lose money
A telehealth account with a wide license footprint is really a portfolio of small state accounts wearing one campaign structure. Each state has its own competition, its own search demand, its own provider coverage, and its own payer mix. When you roll them up into one cost per booked visit, the strong states subsidize the weak ones and the blended number looks fine.
Fine is the problem. A blended number that is on target gives nobody a reason to look underneath it, so the state where bookings collapsed after a provider left keeps its budget for another quarter. The state that could absorb far more spend at the same efficiency never gets it, because nothing in the national report suggests it exists.
Platform geo reports do not rescue you here. Google Ads and Meta will each show conversions by state, but each shows its own conversions, credited under its own attribution window, counted against its own spend. Put the two side by side and the state totals overlap, and neither matches what your scheduling system recorded.
The fix is a single source for the outcome (booked visits, as recorded by your own site or scheduler) with region attached to every one of them, and spend joined to it per state. That is the reason Curve keeps location on the event itself instead of trying to infer it later.
The four per-state views that matter
Pull these in order. Each one changes how you read the next.
Sessions by state
Start with demand, because everything downstream is a rate against it. Sessions by state tells you whether your targeting is delivering people into the states you are licensed in, and whether you are getting meaningful volume from states you never meant to target. Both happen. State targeting on an ad platform is a preference for where the platform thinks the person is, and people travel and set their location loosely. Curve records the region on the session itself, so you see where visitors were when they landed.
Compare sessions by state against your license list first. A licensed state with almost no sessions is a targeting or budget problem before it is anything else. An unlicensed state with real sessions is spend you should be able to redirect.
Booked visits by state
Booked visits is the goal that matters, and it should be configured as a goal in Curve with the region carried through from the session that produced it. Once it is, the per-state breakdown is a ranked list rather than a project. Read it beside sessions: a state that is near the top in traffic and near the bottom in bookings is the first thing you should look at this week.
Use your own booking count here rather than the platform's. Platform-reported bookings by state are the platform's guess about who it influenced. Curve's number is the visit that was booked on your site, attributed with the model you chose.
Cost per booked visit by state
Spend comes from the platforms, bookings come from your site, and the join is per state. This is the number that should set next month's allocation, and it is the number the national report destroys by averaging. A state can have a healthy click cost and a terrible cost per booked visit if the people clicking cannot get an appointment there, and the blended figure will hide that completely.
Read it against volume. A cheap state with a handful of bookings is a rounding error; a cheap state with steady bookings is a place to add budget. For the general argument about why cost per booked patient beats platform ROAS, see cost per booked patient versus platform ROAS.
Funnel completion by state
The booking flow (landing page, eligibility or intake questions, provider selection, scheduling) is a funnel, and Curve shows drop-off step by step. Filter that funnel by state and the pattern is often obvious in a way nothing upstream reveals. A state where visitors drop at the same step every time is telling you something about that step in that state: a licensing wall, a provider list with no open slots, an insurance question the landing page did not prepare them for, a form field that assumes a different intake process.
Compare one state's completion rate to the national figure rather than to zero. Every funnel leaks. The question is whether this state leaks somewhere the others do not.
Traffic but no bookings: targeting problem or availability problem?
This is the pattern that gets misdiagnosed most. A state with solid sessions, a normal bounce rate, and few or no booked visits gets read as "the ads don't work in that state," and the budget gets cut. Usually the ads worked. Something after the click did not.
Work through it in this order:
- Confirm you are licensed and actively scheduling there. Telehealth licensing is per state, and a state can fall out of coverage when a provider leaves or a license lapses while the campaign keeps running. If you are not licensed, the answer is to stop the ads, and you should read how licensing borders shape virtual care marketing before the next state launch.
- Check provider availability in the scheduler for that state. Visitors who reach the calendar and find nothing open for weeks leave, and the funnel will show them dropping at the scheduling step.
- Check the landing page. If your ads promise a service or an insurance acceptance that does not apply in that state, the funnel will show the drop at the first intake question, and sessions will look fine right up to that point.
- Only then look at targeting and creative. If sessions are healthy and the funnel completes at a normal rate but volume is small, that is a targeting or budget question and belongs with the ad team.
The per-state funnel is what separates these. Drop at the scheduling step points at availability. Drop at eligibility points at the landing page or the license. Healthy completion with thin volume points at targeting. Without the state filter, all of them collapse into one national drop-off number, and you cannot tell them apart.
On the ad side, the practical setup for multi-state Google campaigns is covered in Google Ads for multi-state telehealth platforms.
Why the per-state view has to stay aggregate
Region is a sensitive dimension in healthcare. Combine a state with a city, a date, and a condition-specific landing page and you are close to describing a person. That is why Curve's analytics report location at the country, region, and city level as counts, and why Curve Analyst answers questions about states and declines questions about people.
Ask "how many booked visits came from this state last month" and you get a stat card. Ask "who from this city booked a visit on Tuesday" and Analyst refuses, because it does not look up individuals and does not answer person-level questions at all. We built it read-only and aggregate-only on purpose, and the geo dimension is where that choice matters most.
Curve receives events server-side, strips what should not go to an ad platform, and forwards conversions under a BAA it signs with every customer on every plan. Location data that supports an aggregate report is a different thing from location data attached to an identifiable patient in a platform's audience system, and the platform never needs the second one to optimize a campaign.
If you run telehealth and want the compliance side laid out in full, the telehealth solutions page covers what Curve does with events from a virtual care site before anything reaches Google or Meta.
How to phrase a region question so Analyst answers it
Analyst filters website metrics and funnels by region, and it keeps whatever date range and filters were active on the screen you opened it from. That second part matters: if you are already looking at last month's campaign report, "booked visits by state" will answer for last month and for those campaigns without you restating either.
A few habits that get clean answers:
- Name a single state, or say "by state." A region in your data is a state, so "sessions from the Midwest" has nothing to match against.
- Name the metric the way it is configured. If your booking goal is called "Visit Booked," ask for visit bookings, and Analyst will match the goal.
- Say "by state" when you want the ranked list and name a single state when you want the stat. Ranked lists come back as tables, single values as stat cards, trends as line charts, and funnels as step charts.
- Ask for the comparison in the question. "Compared to the national average" or "compared to last month" produces the comparison in one pass.
- Expect it to tell you when a state is empty. Analyst says so when a metric has no data for that filter, and it treats "zero bookings" and "no data yet" as different answers, which is exactly the distinction you need when a state was just launched.
Every number Analyst returns comes from a query against your account. It does not estimate, it does not fill gaps, and if a state's data is still syncing it says so before the figure. A fuller description of what it can and cannot do is at what is Curve AI Analyst.
What to ask Curve Analyst
Open Analyst from the report you are already looking at, so it inherits the date range, and type the question the way you would say it in the Monday meeting. The launch announcement walks through how it turns each of these into a chart.
- Show booked visits and cost per booked visit by state this month.
- Which states had sessions this month but no booked visits?
- What is the booking funnel completion rate for Colorado compared to the national average this month?
Frequently asked questions
Can Curve tell me which states convert best for telehealth ads?
It can tell you which of your states convert best, from your own sessions, goals, spend, and funnels. It cannot tell you an industry benchmark by state, because conversion by state depends on your license coverage, your provider availability, your pages, and your payer mix far more than on the state itself.
Why don't Google's and Meta's state conversions match Curve's?
Each platform credits conversions under its own attribution model and window, and each only sees the clicks it delivered. Curve attributes with the model you chose across all sources, so the totals differ, and Analyst says which figure it is quoting. The reconciliation view shows what Curve sent to each platform next to what the platform credited; a gap there is usually the platform's window still being open.
Can I ask Analyst about a city instead of a state?
Yes, as an aggregate. Curve's location reporting covers country, region, and city, and Analyst can filter on any of them. What it will not do is drill from a city to a person, and it will say so when a city filter returns nothing.
Does per-state reporting require sending patient location to the ad platforms?
No. The per-state report is built from events Curve records on your site, with region attached to the session. Conversion forwarding to Google or Meta is a separate step, and Curve strips what should not leave before anything is sent. You get the state breakdown without pushing identifiable geo into a platform audience.
If you run telehealth ads across more states than you can comfortably report on, the per-state view is the first thing to fix, and it should take a sentence rather than a spreadsheet. Book a demo of Curve and ask Analyst which of your states are actually converting.
Related articles
- GuideTelehealth Attribution: Measuring Marketing ROI Across Virtual and In-Person Visits
- GuideCost Per Booked Patient: Platform ROAS vs Real ROAS
- GuideGoogle Ads for Telehealth Platforms: Multi-State Virtual Care Campaign Architecture
- ArticleThis Week in Healthcare Marketing: LinkedIn Tightened Health Ads, HIPAA Fines Jumped, and the FTC Got Permanent
Stay Compliant. Scale Confidently.
Join healthcare innovators who trust Curve for HIPAA-compliant ad tracking.Launch in hours, not months. Your growth stack, now HIPAA-safe.
Book a free tracking audit