Hardt Web Development  ·  SOP Library

Booking Tool
Integration Reference

SOP refHWD-SOP-BOOKING
CategoryClient delivery
Applies toMedical, alt health, and nonprofit clients with online booking or scheduling requirements
CoversJane App, Vagaro, Acuity Scheduling, SimplePractice, GiveWP
Prepared byCharles Hardt  ·  charleshardt.com
00

Overview & scope

Every booking tool integrates differently. This SOP gives you the exact embed method, notification configuration, and test procedure for each one.

Booking tool integration is included in every medical and alt health project. The integration fee ($300 in the pricing calculator) covers setup, embed, notification testing, and mobile testing for one tool. A second tool in the same project is an additional $200.

Never store patient appointment data in WordPress. Booking tools handle scheduling data on their own servers. Your role is to embed the booking interface into the WordPress site and configure the client's notification settings — not to build a database of patient appointments.
Before starting: Confirm the client has an active account with the booking tool and has provided you login access or admin credentials. Never set up the booking tool account yourself under your own email — it must be in the client's name and email.

01

Jane App

Most common for Canadian-founded multi-disciplinary clinics. Increasingly used by US practices. HIPAA-eligible with BAA.

1
Get the embed code from Jane
Log into the client's Jane App account. Go to Settings → Integrations → Website Widget. Jane provides two embed options:

Option A — Inline widget (recommended): Embeds the booking calendar directly on a WordPress page. Jane provides an iframe snippet.

Option B — Button embed: Adds a floating or inline "Book Now" button that opens Jane in a modal overlay.

Copy the inline widget iframe code. It will look like:
<iframe src="https://[clinicname].janeapp.com/ locations/[location-id]/book" width="100%" height="800" frameborder="0"></iframe>
2
Embed on the WordPress page
In the Kadence block editor on the target page (typically the New Patients or Booking page): add a Custom HTML block. Paste the Jane iframe code.

Set the iframe height to 800px minimum. Jane's booking flow is multi-step and requires enough vertical space to complete without scrolling within the iframe.

On mobile, set the container to full width. Jane's widget is responsive within its iframe.
3
Configure Jane notifications
In Jane App Settings → Notifications, confirm:

  • Practitioner notification email is set to the correct address (not a generic @janeapp.com)
  • New booking notifications are enabled
  • Patient confirmation email template is customised with the clinic name and address
  • Reminder emails are configured (Jane sends them automatically if enabled)
Send a test booking through the embedded widget and confirm the practitioner notification arrives.
4
HIPAA configuration note
Jane App is HIPAA-eligible and will sign a BAA with US practices. Direct the client to Jane's HIPAA BAA page (available in Jane App account settings) and advise them to execute it with Jane before going live if they are a covered entity.

Document in the HIPAA advisory email at handoff that the client was advised to execute a BAA with Jane App.

02

Vagaro

Most common for med spas, aesthetics, salons, and massage. Strong e-commerce and gift card features.

1
Get the booking widget from Vagaro
Log into the client's Vagaro account. Go to Setup → Integrations → Website Widget. Vagaro offers several widget types: Book Now button, inline booking widget, and a Vagaro-hosted booking page link.

For in-page embedding: select Widget → choose the inline option → copy the JavaScript embed code. Vagaro's widget is JavaScript-based (not iframe), which loads faster than iframe embeds but requires the JS deferral exclusion in WP Rocket (see SOP-010 Section 02.6).
2
Embed on WordPress
Add a Custom HTML block on the booking or services page. Paste the Vagaro widget JavaScript code. The widget will render after page load.

Important: Add the Vagaro script domain (vagaro.com) to WP Rocket's excluded JavaScript list to prevent the widget from breaking when JavaScript is deferred. See SOP-010 Section 02.6.

Also exclude Vagaro from WP Rocket's combine JS setting if enabled.
3
Test notifications
In Vagaro Setup → Notifications: confirm the business notification email and the customer confirmation email are both configured and going to the correct addresses.

Book a test appointment through the embedded widget. Confirm the practitioner receives a notification email and the test patient (your test email) receives a confirmation. Cancel the test appointment immediately.

03

Acuity Scheduling

Best for solo and multi-practitioner alternative health practices. Strong package and series scheduling.

1
Get the Acuity embed code
Log into Acuity (acuityscheduling.com). Go to Integrations → Embedding & API. Acuity provides three embed options:

Inline embed (recommended): full scheduling page embedded inline on a WordPress page
Float button: a fixed "Schedule Now" button floating on the page
Popup button: a button that opens Acuity in an overlay

Select Inline embed. Copy the iframe code. Set the height to 800px in the iframe attributes.
2
Alternatively: use the official Acuity WordPress plugin
Acuity maintains an official WordPress plugin (search "Acuity Scheduling" in the WordPress plugin repository). Install and activate it. Go to Settings → Acuity Scheduling → enter your Acuity API credentials.

The plugin adds an Acuity block to the Kadence block editor, which is slightly cleaner than a raw iframe embed. Either method works; the plugin method requires fewer manual steps.
3
Configure notifications and intake forms
In Acuity Business Settings → Client Notifications: confirm confirmation and reminder emails are enabled and going to the right addresses.

In Acuity appointment types, review intake form questions. Confirm no form field is collecting information that would constitute PHI if the client is a covered entity. Acuity offers a HIPAA-eligible plan — advise the client to upgrade if they need it.

04

SimplePractice

Standard for mental health and psychiatry practices. HIPAA-compliant by design. Embed is more restricted than other tools.

SimplePractice does not support inline embeds
SimplePractice intentionally does not provide an iframe or JavaScript widget for embedding in third-party websites. The booking flow must happen on SimplePractice's own hosted page for security and compliance reasons.

What you do instead: Create a prominent "Request an appointment" button on the WordPress site that links to the client's SimplePractice portal URL (format: practitioner-name.simplypractice.com or similar). The button should open in a new tab.
2
Implement the SimplePractice request button
In Kadence, create a prominent CTA button on the Contact, Services, and New Patients pages. Link to the SimplePractice portal URL. Label: "Request an Appointment" or "Schedule Online."

Also add the SimplePractice portal link to the header navigation CTA and the footer. For psychiatry and mental health practices, the booking CTA should be visible on every page without scrolling on mobile.
3
Advise on Headway (insurance billing alternative)
If the mental health practice takes insurance, they may also use Headway for insurance billing. Headway has a WordPress-embeddable booking widget that connects to the practitioner's Headway profile. If applicable, embed the Headway widget on a dedicated "Insurance Billing" or "Accepted Insurance" page in addition to the SimplePractice button.

05

GiveWP — donation processing

The standard for WordPress nonprofit donation pages. Integrates with Stripe and PayPal.

1
Install and configure GiveWP
Install GiveWP (free core plugin from the WordPress repository). Activate. Go to Donations → Settings → General:

  • Success page: create a Thank You page and set it here
  • Failure page: create a Donation Failed page and set it here
  • Base country: United States
  • Base state: Virginia
  • Currency: US Dollar
  • Currency symbol position: before
2
Connect Stripe payment gateway
GiveWP Donations → Settings → Payment Gateways → Stripe. Click Connect with Stripe. The client must have a Stripe account. Walk them through creating one if needed during onboarding.

After connecting, enable both Live mode and Test mode keys. Set the default gateway to Stripe. Confirm Stripe is connected in live mode before launch — not test mode.

Stripe fees: 2.9% + $0.30 per transaction for standard accounts. Nonprofits may qualify for reduced rates through Stripe's nonprofit program.
3
Create the donation form
GiveWP → Donations → Add Form. Configure:

Form title: "Support [Organisation Name]" or "Make a Gift"
Donation amounts: set 4–5 suggested amounts plus a custom option. For nonprofits, common tiers: $25, $50, $100, $250, Custom.
Recurring donations: enable if the GiveWP Recurring Donations add-on is installed. Set default to "One-time" with "Monthly" as a visible option.
Goal: optional — use for campaign-specific forms
501(c)(3) disclosure: add to the form content using a Text block above the donation fields.

Embed the form on the Donate page using the GiveWP shortcode or block.
4
Test with a live transaction
Make a real test donation of $1 through the live form before launch. Confirm:

  • Transaction appears in Stripe dashboard
  • Donor receives a confirmation email with tax receipt language
  • Organisation receives a notification email
  • Transaction appears in GiveWP → Donations
After confirming everything works, refund the $1 test donation from the Stripe dashboard. Document the test date and result in the client's Notion row.

06

Universal testing checklist

Run this checklist for every booking or donation integration before staging review.

TestHow to testPass criteria
Widget loads on mobileOpen page on real iPhone or AndroidWidget renders, is readable, and functional without horizontal scroll
Widget loads on desktopOpen page in Chrome at 1280pxWidget renders at full width, no clipping
Test booking/submissionComplete a booking or form submissionConfirmation screen appears
Practitioner notificationCheck notification inboxEmail received within 2 minutes
Customer confirmationCheck test email inboxConfirmation email received with correct details
Cancel test appointmentCancel through the booking tool dashboardTest data removed, no real booking left open
GA4 conversion eventCheck GA4 Realtime after booking clickbooking_click event appears in Realtime
PageSpeed not degradedRun PageSpeed after embeddingMobile score remains 90+; if dropped, add tool to WP Rocket JS exclusions

07

Booking tool decision guide

Use this when a client asks which tool to use or is starting from scratch.

Client typeRecommended toolReason
Multi-practitioner medical clinicJane AppBest multi-provider scheduling, HIPAA BAA available, strong intake forms
Med spa / aestheticsVagaroStrongest retail/gift card integration, good for cash-pay services, marketing features
Solo alt health practitionerAcuityBest for packages, series, and prepaid appointments; affordable; simple embed
Mental health / psychiatrySimplePracticeHIPAA-compliant by design, insurance billing integration, standard of care in the specialty
Church / nonprofit (events)The Events Calendar + StripeNative WordPress, no third-party account required for simple event registration
Nonprofit (donations)GiveWP + StripeNative WordPress, deepest WP integration, recurring donations, campaign pages
Budget-conscious solo practitionerSimply Schedule Appointments (free)Free WordPress plugin, no monthly fee, adequate for single practitioner with simple needs