Skip to main content
Easy!AppointmentsWebsite builders & WordPress booking plugins

Conversion tracking for self-hosted Easy!Appointments

Easy!Appointments is open source and runs on your own server, which removes the problem most hosted schedulers have: the booking pages can live on your own domain or a subdomain, inside your cookie scope. Since v1.4 a GA4 Measurement ID entered in settings loads on every public booking page, and v1.5 added Matomo. Neither tells Google Ads or Meta about a booking, and when the app is iframed into WordPress from a different host, much of the advantage of self-hosting is lost.

Free30 minutesNo obligation

Easy!Appointments · what breaks

What goes wrong on self-hosted Easy!Appointments

  1. 01

    Booking app on a different host from the site

    An iframe from another domain cuts off your cookies, even though you control both.

  2. 02

    GA4 configured, ads still blind

    The built-in Measurement ID gives you analytics, not Google Ads or Meta conversions.

  3. 03

    Funnel steps without a confirmed booking

    Step views in GTM don't prove the appointment was saved.

  4. 04

    Upgrades overwrite custom code

    Tracking patched into core files disappears with the next release.

Easy!Appointments · the fix

What self-hosting makes possible — Easy!Appointments

  • Bookings sent from the database, not the browser

    Your server knows an appointment exists the moment it is saved.

  • Booking pages served first-party

    On your domain or a subdomain, with no iframe crossing hosts.

  • Tracking that survives upgrades

    Kept outside core files, so a new version does not break it.

Easy!Appointments · architecture

What Easy!Appointments actually lets you do

Self-hosting changes what is possible. Here is what the project documents and what is yours to check.

  1. 1

    GA4 Measurement ID in settings

    From v1.4, applied to all public booking pages under Settings > Integrations.

  2. 2

    Matomo tracking

    From v1.5, with a tracker URL and site ID; useful if you avoid Google for analytics.

  3. 3

    Funnel tracking through GTM

    Described on the project's blog for following visitors through the booking steps.

  4. 4

    Your own server and database

    Appointments are stored where you can read them, which is the basis for server-side conversions.

  5. 5

    Check whether your version offers webhooks

    If it does, they are the cleanest trigger; if not, a scheduled read of the database does the same job.

Easy!Appointments · diagnose

Debugging an Easy!Appointments install, in order

Self-hosted setups tend to break in ways only the person who installed them knows about, so the checks start with the install itself.

  1. 01

    Check which version is running

    GA4 support needs v1.4 and Matomo needs v1.5.

  2. 02

    Check where the booking pages are served from

    A different domain inside an iframe explains most missing conversions.

  3. 03

    Look for tracking edits in core files

    They are often what stopped working after an upgrade.

  4. 04

    Compare the appointments table to reported conversions

    Per row, over a closed window.

  5. 05

    Check that customer details never reach analytics

    Name, email and phone are typed on a page your tags can read.

Easy!Appointments · prove

The QA evidence — Easy!Appointments

Done on your live install, with a real appointment saved to the database.

Source of truth

The Easy!Appointments appointments table: booked and cancelled, by date and service

  • A booking made from an ad-tagged URL, with the click identifier stored alongside the appointment.
  • The server-side conversion confirmed once per appointment, deduplicated with the browser.
  • Booking pages confirmed on your own domain with first-party cookies set.
  • Customer details confirmed absent from GA4 and Matomo hits.
  • An appointment deleted or cancelled in the admin panel shown to retract its conversion.
  • Reconciled per appointment against the database over a closed window.
  • Re-run after the next Easy!Appointments upgrade, and 30 days later.

Easy!Appointments · free audit

What we check in the free audit

  • Check which version is running
  • Check where the booking pages are served from
  • Look for tracking edits in core files
  • Compare the appointments table to reported conversions
  • Check that customer details never reach analytics

Checked against

The Easy!Appointments appointments table: booked and cancelled, by date and service

Get my free conversion tracking audit

Free30 minutesNo obligation

Easy!Appointments · when not to buy

When you don't need this on Easy!Appointments

If you self-host your booking app, you may be able to do this yourself. Here is when you should.

  • If you only need booking analytics, the built-in GA4 or Matomo setting does that with no extra work.
  • If you are not running paid ads, server-side conversions solve a problem you don't have.
  • If you are comfortable with PHP and GTM, sending a booked appointment from your own server is within reach, and we will happily say so.
  • If bookings are low enough that you know every new client personally, a monthly look at the database may be all the attribution you need.

Easy!Appointments · what we deliver

The event map on Easy!Appointments

  • Service selected

    First funnel step: which service and provider the visitor picked.

  • Date and time chosen

    Second step. Drop-off here usually points at availability, not ads.

  • Customer details entered

    Third step. Nothing typed here goes to analytics.

  • Appointment booked

    The conversion, sent from the server, with the service price as value where you have set one.

  • Appointment cancelled or rescheduled

    Cancelled reverses; rescheduled does not.

Written guarantee

95%+ tracking accuracy

Measured against The Easy!Appointments appointments table: booked and cancelled, by date and service. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Easy!Appointments questions, answered

Yes, from v1.4: you enter a GA4 Measurement ID in the integration settings and it loads on all public booking pages. That is analytics, not ad conversions.

Free · 30 min

Get Easy!Appointments tracking done properly

Free30 minutesNo obligation