Tier 2 search audit, with Search Console, GA4 and AI visibility
Three months after the relaunch, Search Console shows the site being evaluated on the right terms and held on page five and beyond. The map pack, where a mobile service actually gets its calls, turns largely on reviews, and the count is 2. Meanwhile the analytics that would tell you what is working has been swamped by scanner bots, including 712 fake form leads in July before the bot check went in. Nothing here needs a rebuild; the build is the strongest part.
The short version
One decision and one program. The decision is a Cloudflare rule that blocks the scanner bots which have written most of your analytics history (they also submitted the contact form 712 times across two July days, before the bot check went live on 2026-07-27; no Google Ads campaign is running, so no money followed them). The program is reviews: the highest-reviewed IV businesses near you carry 200 to 260 and you carry 2, and reviews are the largest gap you control in the map pack. Behind those: the site is being shown 9,670 times a quarter on the right searches and clicked 35 times, because the core terms sit on page five and beyond and the snippets were cut short (33 titles and 26 descriptions across 40 pages were rewritten today); the home hero image loaded in 7.5 seconds on a cold cache (cache lifetime fixed today; two of three re-runs are now fast, one is not); and AI assistants already send more visitors than paid search, with Perplexity naming the practice in 7 of 8 buyer questions. The technical build, schema and indexing are clean.
This is a Tier 2 audit with three additions: your Search Console, your GA4 and a live AI-assistant probe. Every figure below is taken from a named source on September 19, 2026 and re-derived from the saved data when this page was built. Where a number is an estimate or a single index, it says so.
| Source | What it gave us | Status |
|---|---|---|
| Google Search Console API | Impressions, clicks, positions, pages, devices; 2026-06-19 to 2026-09-16 vs the prior 90 days | Used |
| Google Analytics 4 Data API | Sessions, channels, cities, events, conversions, daily series | Used |
| DataForSEO LLM Responses | Live answers from ChatGPT, Gemini and Perplexity to 8 buyer prompts, web search on (24 calls, $0.56) | Used |
| Google Maps live results | Map-pack position on 3 queries from central Sarasota; competitor review counts (5 calls, $0.05) | Used |
| PageSpeed Insights API v5 | Mobile lab Core Web Vitals, 3 runs on the home page, 1 on a service page, plus 3 after the cache change | Used |
| Chrome UX Report field data | Real-visitor speed | None yet, traffic below threshold |
| Link-walk crawl vs sitemap | 69 URLs fetched: titles, descriptions, headings, JSON-LD, alt text | Used |
Google site: query | How many pages Google holds (1 call, $0.02) | Used |
| DataForSEO backlinks summary | Referring domains, directional only (1 call, $0.02) | Used |
| Google Ads API | Conversion history on the two burst days | Not pulled; the account id is not on file, confirm in the Ads UI |
Total paid data used: about $0.65 of DataForSEO credit. Everything else was your own accounts or free tooling.
GA4 recorded 727 generate_lead events in the last 90 days against 89 form_submit events.
712 of the leads landed on two days (2026-07-12, 2026-07-26), 351 and
241 of them geolocated to New York, desktop, direct, in sessions averaging 29 seconds. A
Cloudflare Turnstile bot check was added to the form on 2026-07-27 and no day since has exceeded six
leads, so the form flood is closed. What continues is page-view traffic with the same signature:
bursts of 401, 376, 346, 207 sessions on 2026-07-12, 2026-07-26, 2026-08-11, 2026-09-08, 1,348
sessions in total on that signature, 1,157 of them from "New York". The origin log for the September burst shows
Google Cloud addresses probing for .env files and cgi-bin exploits with a Chrome user
agent, so these are vulnerability scanners that happen to run JavaScript. No Google Ads campaign is
running now (GA4 saw 5 google / cpc sessions in the window, from old tagged links), so nothing was
bid on this traffic; the thank-you page does fire the Ads conversion tag, so the July numbers will
sit in that Ads account's conversion history.
Done or ready: a Cloudflare WAF rule that blocks the probe paths and challenges datacenter networks is written and waiting to be applied; GA4 needs a filter or a date annotation so the history reads correctly.
Evidence: GA4 events: generate_lead 727, form_submit 89. generate_lead by day and city: 20260712 New York 351, 20260726 New York 241. City x device x channel: New York desktop Direct 1,157 sessions, engagement 90%, 29s average. Bot-city desktop sessions per day >= 100: [('20260712', 401), ('20260726', 376), ('20260811', 346), ('20260908', 207)]. Turnstile widget created 2026-07-27 (vault record). nginx access log 2026-09-08: 1,421 requests from four Google Cloud IPs, paths include /.env, /cgi-bin/php-cgi. Source: contact/thank-you.astro fires generate_lead and the Ads conversion on load.
The Google Business Profile exists, is rated 5 and has 2 reviews. The highest-reviewed IV businesses within 20 km have 251, 248 and 225. On a live Maps search from central Sarasota, "mobile iv therapy sarasota" places you at #12 behind SHINE IV Drip Spa & Mobile IV Therapy, Jeffe (7 reviews), SHINE IV Drip Spa & Mobile IV Therapy, Downt (258) and Drip Refresh Mobile IV Therapy, Sarasota (12); "iv therapy sarasota" does not place you in the top 20. Proximity and a street address matter too, which is why a 7-review listing can sit at #1, but reviews are the largest gap you control, and for a mobile service the map pack is where the calls come from.
Evidence: Google Maps live SERP, September 19, 2026, 27.3364,-82.5307: brand search returns the profile (5 stars, 2 reviews); rank 12 on the mobile query, unranked on the generic one. Business listings dataset, 20 km radius, by review count: SHINE IV Drip Spa & Mobile IV Ther 251, Ultimate IV & Wellness 248, Sarasota IV Lounge 225, ELITE IV HYDRATION 205. Live SERP and the listings dataset report SHINE at 258 and 251; both are quoted as their source gives them.
Average position across all queries is 40.3. The terms that describe the business sit on page five and beyond: "iv therapy sarasota" 54.2, "mobile iv therapy sarasota" 41.4, "iv hydration sarasota" 62.0. Only 32 queries rank on page one and together they were shown 71 times: about a third are brand or near-brand ("sarasota iv infusion", "drip doctor") and about half are junk queries with no buyer behind them. Impressions rose 59% from July to August, so the site is being evaluated; it has not yet been trusted.
Evidence: Search Console, sc-domain property, 2026-06-19 to 2026-09-16: 9,670 impressions, 35 clicks, CTR 0.36%, position 40.3. Prior 90 days: 281 impressions, 3 clicks. 437 distinct queries.
The single biggest source of impressions is /concierge/weight-loss/ at
1,633, driven by "tirzepatide sarasota" (633 impressions, position
43.4) and "sarasota weight loss doctors" (403, position
50.7). Weight-loss queries total 1,627 impressions, more than any single
IV term (the largest, "iv therapy sarasota", has 381) though less than all IV terms together
(3,664). The page gets zero clicks because it sits on page five. Decision: is medical weight loss a line Dr.
Patel wants to grow? If yes, it deserves its own content plan; if no, the page is pulling
crawl attention toward a service you do not lead with.
Evidence: Search Console pages report: /concierge/weight-loss/ 1,633 impressions, 0 clicks, position 49.9. Query report as quoted.
We asked ChatGPT, Gemini and Perplexity the same eight questions a Sarasota buyer would ask, with web search on. Perplexity named Sarasota IV Doctors in 7 of 8 answers and cited the site in 8 of 8. ChatGPT named you in 4 and cited the site once. Gemini named you in 3 and never cited the site. The domains AI answers cite most, after yours, are shineivdripspa.com and theivdoc.com at 7 of 24 each, then five domains at 6 of 24. GA4 confirms this is real traffic: 9 sessions arrived from chatgpt.com in 90 days, already more than paid search (5).
Evidence: DataForSEO LLM Responses, September 19, 2026, 24 live calls, $0.56, saved in ai_probes.json. Negative control (ai_control_tampa.json): the same question for Tampa on Perplexity named no Sarasota provider. GA4 source/medium: chatgpt.com / ai-assistant 9 sessions.
GA4 reports 0 conversions for the period while recording 727 generate_lead events. The event fires; it is not marked as a key event, so every GA4 report and every attribution view see a site with no goals. Phone taps were sent to the Google Ads tag only and never reached GA4; fixed today, they now arrive as a phone_call event. Mark both as key events and the Analytics section of the next report can show which channel produced which call.
Evidence: GA4 Data API: conversions metric 0 across all channels; eventCount generate_lead 727. Source: Base.astro ivPhoneConvert() sends an Ads conversion event only.
Three PageSpeed Insights runs on the home page scored 71, 99, 74 with LCP 7.7s, 1.4s, 7.5s. One run on one service page scored 100 with LCP 1.2s, so the template is fast; the hero poster image is not always. Slow, fast, slow is consistent with a cold-cache fetch of the poster: the origin was sending a 4-hour cache lifetime and Cloudflare reported the file as revalidated. Done today: the origin now sends a 30-day lifetime for images and fonts and the edge reports a cache hit. Three runs after the change scored 94, 100 and 74 (LCP 1.5s, 1.5s, 7.1s), so the cache was part of the cause and not all of it; the remaining slow run is still open and is the one performance item left on this list.
Evidence: PSI API v5, mobile, September 19, 2026: home samples [(71, 7663), (99, 1375), (74, 7459)]; median score 74, LCP 7459ms. /services/classic-hangover/ one run (100, 1233). No CrUX field data (traffic below threshold). Poster headers before: cache-control max-age=14400, cf-cache-status REVALIDATED; after the nginx change: max-age=2592000, HIT. Post-change PSI: 94/1530ms, 100/1509ms, 74/7090ms (evidence/psi-after-cache.json holds the slow run).
33 titles run past 60 characters (the longest is 128) and 26 meta descriptions run past 160. Google rewrites or truncates these, which means the words you chose to win the click are often not the words a searcher sees. With a 0.36% CTR across 9,670 impressions, the snippet is the cheapest lever on this list. Done today: all 40 affected titles and descriptions were rewritten, local term first, within Google's display limits (33 titles and 26 descriptions across 40 pages), and the home page H1 now names Sarasota.
Evidence: Crawl of 65 HTML pages, September 19, 2026: title length > 60 on 33, meta length > 160 on 26. Example: /services/myers-cocktail/ title 79 characters.
The best non-brand positions on the site belong to "sarasota cme" (115 impressions,
position 11.7), "medical conference sarasota florida" (100,
14.5) and "sarasota cme conferences". They land on /events/,
which is written for conference attendees who might want an IV. That is a real audience, and it is
the best-ranked non-brand topic on the site (the athletic-recovery science page, at 11.9, is the other). Decision: lean in (a conference-recovery
package page, priced) or accept it as incidental.
Evidence: Search Console queries: sarasota cme (115, 0, 11.7), medical conference sarasota florida (100, 0, 14.5), cme sarasota florida (72, 0, 12.6). /events/ page: 738 impressions, position 13.8.
The backlink index shows 55 links from 51 domains, 10 of them nofollow, domain rank 56 on a 0-1000 scale. This is directional only (a single index, not authority-scored). For a site relaunched three months ago it is normal; it will not by itself move the terms in finding 3. Reviews and citations (finding 2) matter more here than links.
Evidence: DataForSEO backlinks summary, September 19, 2026: backlinks 55, referring domains 51, main domains 48, broken 0, rank 56.
The sitemap lists 66 URLs. A link-walk from the home page reached 65 HTML pages and did
not reach /book/ (it carries a noindex tag, so it should not be in the
sitemap at all) or /case-studies/ (the index page for The Science
section was not linked from any crawled page). Small, but a sitemap that lists what you tell Google
not to index sends a mixed signal. Done today: the QR page is out of the sitemap and the footer
now links the Science index.
Evidence: Sitemap 66 URLs; crawl 69 URLs, 65 HTML 200s. In sitemap, not crawled: /book/, /case-studies/. /book/ meta robots: noindex,nofollow (evidence/book.html).
Every other security header is present (HSTS, frame, content-type, referrer). CSP is the one that limits what an injected script could do on a site that collects health intake. Not urgent, and it needs care because the site loads Google and Meta tags; a report-only policy first.
Evidence: audit-live-security.sh: one WARN, content-security-policy missing; secrets in served JS: none.
A site: query estimates 72 results against 66 sitemap URLs, consistent with
full coverage (URL Inspection in Search Console would confirm it page by page). Structured data covers 13 MedicalBusiness pages,
20 MedicalProcedure pages and 28 FAQPage blocks, all parsing
clean; the 10 blog posts and the About page carry a second block the crawler records as untyped
(a nested graph, checked by hand on one post), and the three Science pages carry Article. robots.txt names and allows the AI crawlers (one, meta-externalagent, has no explicit
rule and passes by default), llms.txt is present, and pages average 1,001 words. Nothing to fix here.
Evidence: DataForSEO SERP site:sarasotaivdoctors.com se_results_count 72. JSON-LD types across 65 pages: BreadcrumbList 67, FAQPage 28, MedicalProcedure 20, MedicalBusiness 13, Service 8, CollectionPage 3. audit-seo-files.sh 14 PASS, 1 WARN (meta-externalagent has no explicit Allow), 0 FAIL (evidence/audit-seo-files.txt); audit-ai-crawler-access.sh 0 blocked (evidence/audit-ai-crawler.txt).
Strip the bot sessions out and about 299 sessions remain over 90 days, roughly 23 a week. Organic search visitors stayed an average of 232 seconds, which for a service site is a reader, not a bouncer. The problem in this report is volume, not the site.
Evidence: GA4 channels: Organic Search 72 sessions, 232s average; Organic Social 34; AI Assistant 9; Paid Search 5; Direct 1,528 (bot-dominated, see finding 1).
Impressions and clicks by month within the 90-day window (2026-06 to 2026-09). The site was relaunched in June, so the prior-period comparison is against almost nothing: 281 impressions and 3 clicks.
Bar = impressions. Label = impressions / clicks.
| Query | Impressions | Clicks | Position |
|---|---|---|---|
| iv therapy sarasota | 381 | 0 | 54.2 |
| mobile iv therapy sarasota | 213 | 0 | 41.4 |
| iv hydration sarasota | 174 | 0 | 62.0 |
| iv therapy near me | 91 | 0 | 25.5 |
| iv therapy lakewood ranch | 101 | 0 | 29.0 |
| iv therapy bradenton | 69 | 0 | 30.3 |
| hangover iv sarasota | 40 | 0 | 54.1 |
| tirzepatide sarasota | 633 | 0 | 43.4 |
| sarasota weight loss doctors | 403 | 0 | 50.7 |
| sarasota cme | 115 | 0 | 11.7 |
| Query | Impressions | Clicks | Position |
|---|---|---|---|
| tirzepatide sarasota | 633 | 0 | 43.4 |
| sarasota weight loss doctors | 403 | 0 | 50.7 |
| iv therapy sarasota | 381 | 0 | 54.2 |
| medical weight loss sarasota | 214 | 0 | 54.6 |
| mobile iv therapy sarasota | 213 | 0 | 41.4 |
| iv hydration sarasota | 174 | 0 | 62.0 |
| bachelor party iv | 170 | 0 | 47.5 |
| sarasota cme | 115 | 0 | 11.7 |
| iv therapy lakewood ranch | 101 | 0 | 29.0 |
| medical conference sarasota florida | 100 | 0 | 14.5 |
| iv therapy sarasota fl | 93 | 1 | 57.0 |
| iv therapy near me | 91 | 0 | 25.5 |
| Page | Impressions | Clicks | Position |
|---|---|---|---|
| /concierge/weight-loss/ | 1,633 | 0 | 49.9 |
| / | 1,127 | 9 | 26.6 |
| /areas/lakewood-ranch/ | 783 | 0 | 30.5 |
| /areas/sarasota/ | 772 | 0 | 62.3 |
| /events/ | 738 | 4 | 13.8 |
| /areas/bradenton/ | 717 | 1 | 46.8 |
| /services/ | 576 | 0 | 80.0 |
| /areas/lakeland/ | 486 | 0 | 39.5 |
| /case-studies/athletic-recovery/ | 448 | 0 | 11.9 |
| /services/vitamin-shots/ | 271 | 1 | 60.0 |
Devices: mobile 23 clicks from 2,494 impressions; desktop 12 from 7,159. Mobile produces two thirds of the clicks from a quarter of the impressions.
GA4 reports 1,647 sessions in 90 days against 75 in the prior 90. Most of the growth is not people. 1,348 sessions come from 9 cities that share one signature in the city x device x channel report: desktop, direct, under a minute on site, engagement above 85%, and arrival in bursts of several hundred on a single day.
| Channel | Sessions | Engaged | Avg duration |
|---|---|---|---|
| Direct | 1,528 | 1,286 | 48s |
| Organic Search | 72 | 48 | 232s |
| Organic Social | 34 | 20 | 41s |
| AI Assistant | 9 | 9 | 131s |
| Paid Search | 5 | 0 | 0s |
| City | Sessions | |
|---|---|---|
| New York | 1,158 | bot pattern |
| Simferopol | 56 | bot pattern |
| Newark | 47 | bot pattern |
| (not set) | 40 | |
| Little Rock | 38 | bot pattern |
| Sarasota | 37 | |
| Rock Hill | 31 | bot pattern |
| Pereira | 26 | |
| Pikeville | 19 |
Sarasota itself: 37 sessions. That, plus Bradenton and the surrounding towns, is the real audience, and it is small enough that every one of the 35 organic clicks counts.
Those are generate_lead events per day, against 89 real form_submit events in the whole 90 days. The Turnstile bot check went live on 2026-07-27 and no day since has exceeded six.
Eight questions a buyer in Sarasota would type into an assistant, asked live to three models with web search enabled. "Named" means the answer mentioned Sarasota IV Doctors or Dr. Patel; "cited" means it linked sarasotaivdoctors.com as a source.
| Prompt | ChatGPT | Gemini | Perplexity |
|---|---|---|---|
| Who offers mobile IV therapy in Sarasota, FL? Give me specific providers. | named | absent | named + cited |
| Best IV hydration near me in Sarasota Florida for a hangover | absent | absent | named + cited |
| Is there a doctor who does house-call IV therapy in Sarasota or Bradenton? | named | named | named + cited |
| Mobile IV for migraine relief in Sarasota, who should I call? | named | absent | named + cited |
| Recommend an IV therapy service on Siesta Key or Longboat Key that comes to your hotel | absent | named | named + cited |
| NAD+ IV therapy Sarasota providers | absent | absent | cited only |
| Physician-supervised IV therapy Sarasota vs a nurse-run drip bar, which companies? | named + cited | absent | named + cited |
| IV therapy for a bachelorette party in Sarasota, who delivers to an Airbnb? | absent | named | named + cited |
Perplexity leans on the site's own pages. ChatGPT and Gemini lean on directory-style pages and the competitors with long review histories. The fix is the same as the map pack fix: reviews, citations and being named on third-party pages, not more on-site copy.
Live Google Maps results for "mobile iv therapy sarasota", searched from central Sarasota.
| # | Business | Rating | Reviews |
|---|---|---|---|
| 1 | SHINE IV Drip Spa & Mobile IV Therapy | 5 | 7 |
| 2 | SHINE IV Drip Spa & Mobile IV Therapy | 5 | 258 |
| 3 | Drip Refresh Mobile IV Therapy | 4.2 | 12 |
| 4 | Prime IV Hydration & Wellness | 4.9 | 58 |
| 5 | Sunshine's In Home IV Solutions | 5 | 37 |
| 6 | Hone Into Wellness | 4.9 | 75 |
| 7 | COMFORT IV THERAPY | 5 | 6 |
| 8 | SHINE IV Drip Spa & Mobile IV Therapy | 5 | 69 |
Sarasota IV Doctors appears at #12. On "iv therapy sarasota" it does not appear in the top 20.
Every business above you in the pack shows a street address. A service-area profile can rank, and proximity to the searcher plays a part you cannot control, so reviews and consistent citations are the part of the plan that is not optional.
| Page | PSI score | LCP |
|---|---|---|
| Home, run 1 | 71 | 7.7s |
| Home, run 2 | 99 | 1.4s |
| Home, run 3 | 74 | 7.5s |
| /services/classic-hangover/ | 100 | 1.2s |
The home page is bimodal: a warm cache gives 99 and 1.4s, a cold one gives the low 70s and 7.5s. The one service page measured is fast. The poster's cache lifetime was raised today; two of three re-runs then scored 94 and 100 and one still 74, so one cause remains.
Index: about 72 results for site: against 66 sitemap URLs. Schema types present:
BreadcrumbList (67), FAQPage (28), MedicalProcedure (20), MedicalBusiness (13), Service (8), CollectionPage (3), ItemList (3). robots.txt, llms.txt and AI-crawler access all pass.
Next step
A site relaunched three months ago with clean technical foundations, complete medical schema and readable pages is the right starting point. What it lacks is the two things Google weighs most for a mobile medical service: reviews and time. Three of the nine steps were done the day of the audit and two more were started; the review program is the one that changes the phone.
Happy to walk through any finding, or the scope and timing of the review and citation program, on a call.
Greg Bentz
MySEODesk
greg@myseodesk.com