Most tracking advice assumes the booking finishes on your website. In Australian veterinary it usually does not, and that single fact decides whether your best action is countable. So we stopped assuming and read the code the booking platforms actually serve.
The booking normally runs inside a frame served from the booking company's domain, or on a portal at a different address entirely. Your conversion tag does not run in either place, and the browser will not let your page read what happens inside a frame it does not own.
So the most valuable thing a clinic can get from an ad, a booked appointment, is frequently the one thing the Google Ads account cannot see. Accounts end up optimising against calls and form fills while bookings go uncounted, and the campaigns that drive bookings look worse than the campaigns that drive phone enquiries.
We checked this rather than repeating it. What follows comes from fetching the live widget scripts and portal pages in September 2026 and reading them. Any developer can repeat the same checks in about ten minutes.
Same question asked of each: where does the booking actually render, and can a conversion tag reach it?
| Platform | How it renders | Domain | Can it fire a booking conversion? |
|---|---|---|---|
| Vetstoria | Iframe with postMessage | ap-booking.vetstoria.com | Not directly, but it already captures the click ID |
| PawsApp, redirect mode | Full page redirect | pawsapp.com.au | Partly, a GA4 linker is applied on this path |
| PawsApp, iframe mode | Iframe | pawsapp.com.au | No, the linker is not applied on this path |
| PawsApp, white label | First party app | Your own subdomain | Yes, tag it like any other page |
| ezyVet EzyBooking | Outbound link to a portal | yourclinic.ezyvet.com | No, the page carries no analytics at all |
Verified September 2026 by fetching each platform's live scripts. The two Vetstoria loader scripts contain seventy references to iframes and not one gtag, dataLayer or fbq call. The ezyVet portal returns a full working page with no analytics of any kind on it.
ezyVet is owned by IDEXX, which bought it in 2021, and it publishes a developer API using OAuth. Read only access to your own clinic's data carries no monthly fee, which surprises people who assume the data is locked behind a paywall. The cost is process rather than money: access is approved by IDEXX, and writing data back attracts a per hospital charge.
RxWorks and VisionVPM are owned by Covetrus and are often written off as legacy. They are not. Both are actively sold and supported in Australia with staffed phone support. They are on premise rather than cloud, which means the clinic physically holds its own database, though the schema is proprietary. Their published integration route runs through Covetrus Connect, whose own partner process quotes six to eight weeks just to make first contact.
OpenVPMS is the outlier and the best case. It is Australian, open source, member owned, and runs on a self hosted MySQL database. A scheduled query joining yesterday's appointments to a stored click identifier needs no vendor approval, no partner agreement, no per hospital fee and no rate limit. Nothing else in the market is close, which is the opposite of what people expect from open source clinical software.
Provet Cloud publishes the most open API of the commercial cloud systems, including documented webhooks, and opens access to customers rather than only to approved vendors. Worth noting that it has nothing to do with Provet the Australian distributor, which is a separate company owned by Covetrus. The shared name causes real confusion in this market.
No published survey of online booking adoption among Australian clinics exists, so we ran our own scan. We took a national directory that skews independent rather than corporate, fetched each clinic homepage and matched booking platform signatures.
Source: Our own scan of 81 independent Australian veterinary clinic websites, September 2026, homepage detection only. A convenience sample rather than a survey, drawn from a directory that under represents corporate groups, and we would rather label it honestly than dress it up as national data.
None of this requires changing your practice system. It requires knowing which one you have.
Right click the booking button on your site and inspect it. If it opens a frame served from another domain, your conversion tag is not firing inside it, whatever your reporting says.
If you run Vetstoria this already exists in the vs_campaign_tracking cookie. If not, store gclid on your own domain on arrival. This step is cheap and it is the one everybody skips.
Here the practice system decides the effort. A direct database query on OpenVPMS, an approved read only API call on ezyVet, a partner process on the Covetrus systems.
A booking nobody turns up to is not a conversion, and uploading it teaches Google to buy more people who do not turn up. This is the step that separates a useful feed from an actively harmful one.
Google retains click data for ninety days. A nightly or weekly upload is comfortable. A quarterly one silently drops your oldest and often your best conversions.
A senior team that lives inside your account. Conversion infrastructure wired in before any ad goes live. Reporting that ties spend to booked appointments, not impressions.
A senior specialist who runs clinic accounts day to day.
Every keyword, headline and account structure built inside real Australian clinic accounts.
Winner, Best Google Ads Campaign, Australia 2025. Google Partner. AFR Fast 100.