ClinicSync Pro Documentation
Quick Reference: Field Sync Map
How Syncing Works
ClinicSync Pro keeps your clinic data flowing automatically between Jane, Cliniko, Nookal, PtEverywhere, and GoHighLevel — with robust automations for booking, reminders, reactivation, and reporting.
Key Features:
What Gets Synced?
- Contacts: All patients/clients, including name, phone, email, DOB, and much more
- Appointments: Past/future bookings, cancellations, no-shows, practitioner, room, and notes
- Invoices/Payments: Revenue, payment source, outstanding balances
- Purchases: Packages, products
- Custom Fields: Enriched GHL contacts with total visits, last/next appt, status, retention, ROI fields
Supported Automations
- AI Booking: Book appointments directly from SMS, email, or your website—with real-time EMR sync to prevent double-bookings.
- No-Show & Reactivation: Automated reminders, win-back, and reactivation campaigns triggered by actual EMR data.
- Review Requests: Automatically prompt for Google reviews after each attended visit.
- KPI & ROI Dashboards: Live Looker Studio dashboards for patients, revenue, retention, and full ad ROI (Meta, Google, GHL calls).
- Voice AI Booking: Enable seamless booking by phone through AI agents using your live GHL + EMR calendar sync.
These are just a few examples—the sky is truly the limit. If you can imagine it, you can automate it with ClinicSync Pro.
Walkthrough Videos & Tutorials

KPI & ROI Dashboard Walkthrough
See real dashboards for Jane, Cliniko, and PT Everywhere — track real-time ROI, patient retention, practitioner performance, and more. Learn how to enable them inside ClinicSync Pro and GoHighLevel.
Watch on YouTube →
Jane + GHL Full Integration Walkthrough
How to automate no-show follow-ups, reviews, reactivation, and enable 2-way calendar sync between Jane App and GoHighLevel — with real automations you can copy.
Watch on YouTube →
Cliniko + GHL Full Integration Walkthrough
ClinicSync Pro’s Cliniko integration: reminders, no-show/cancellation follow-up, AI booking, and advanced reactivation — real snapshot demo and best practices.
Watch on YouTube →
PT Everywhere + GHL Integration
Automate your PT clinic: see how all custom fields sync, how to build automations for reminders, reactivation, and reviews with PT Everywhere and GHL.
Watch on YouTube →
Voice AI Booking with GHL + EMR
How to connect Jane or Cliniko calendars to GoHighLevel for real-time Voice AI booking — perfect for agencies and clinics wanting automated phone bookings.
Watch on YouTube →Ready-to-Use GHL Snapshots
Instantly clone our recommended GoHighLevel snapshot for your EMR and automation setup. Click below to download the exact workflows, custom fields, and pipelines we demo in our videos. (You must be logged into your GHL account to install.)
ROI Dashboard (Add-On)
For clinics/agencies: add full ROI reporting to any sub-account. $15/mo per location.Download ROI SnapshotPtEverywhere Integration Snapshot
Custom fields and automations for PT clinics using PtEverywhere.Download PtEverywhere SnapshotTip: If you need help installing or customizing any snapshot, book a 1:1 call or join the weekly Q&A above!
Data Security & Privacy
- All sync traffic and credentials are protected with bank-grade encryption. No passwords stored in plain text.
- Each clinic’s syncs are isolated. No cross-tenant access possible.
- HIPAA, PIPEDA, and GDPR aligned. You control your data — we never sell or share it.
Troubleshooting & Support
- Sync status and errors are shown in your dashboard for every location. If you see an error about cookies or 2FA, re-sync your credentials and make sure two-factor is disabled.
- Still stuck? Book a 1:1 session or email hello@clinicsyncpro.com.
FAQ
- How often does it sync? Every 5–30 minutes depending on volume and load. Most clinics see updates in under 5 minutes.
- Can I use more than one platform? Yes, just add new connections for each location/platform.
- Can you migrate me from another system? Yes! Use the help section in your dashboard to book onboarding.
- Where can I see all the fields? Use the live mapping sheet above.
Important: Enable AI Booking Access First
- Your location must have AI Booking enabled in ClinicSync Pro.
- If you see a "not enabled for booking" error, go to your dashboard and enable AI Booking, or contact support for access.
- Each API key only works for the linked location it was issued for.
Jane API Endpoints – Book, Update, and Cancel Appointments
Authentication
All endpoints require the x-api-key header. Find your API key in your dashboard under “Manage API / Webhooks.”
- Each API key is mapped to a specific Jane-connected location. You cannot book for another location with your key.
Book Appointment
POST /api-book-appointment Host: jane-api.clinikoconnect.com x-api-key: YOUR_API_KEY_HERE Content-Type: application/json { "customData": { "staff_member": "practitioner@email.com", "treatment_name": "Physio Consult", "clinic_location_name": "Pitt St Clinic", "roomName": "Room 2" }, "calendar": { "startTime": "2024-08-02T10:00:00Z", "endTime": "2024-08-02T10:30:00Z", "selectedTimezone": "Australia/Sydney", "appointmentId": "abc123-xyz" }, "first_name": "Sam", "last_name": "Smith", "email": "sam.smith@example.com", "phone": "+61400000000" // city, state, country optional }
{ "message": "Appointment booked successfully", "bookedAppointment": { /* Jane appointment object */ } }
- 401 Unauthorized: API key missing or invalid.
- 400 Bad Request: Required booking fields missing.
- 422 Unprocessable Entity: Invalid staff, treatment, or time.
- 500: Server error (try again or contact support).
Update (Reschedule) Appointment
POST /api-update-appointment Host: jane-api.clinikoconnect.com x-api-key: YOUR_API_KEY_HERE Content-Type: application/json { "calendar": { "appointmentId": "abc123-xyz", "startTime": "2024-08-02T12:00:00Z", "endTime": "2024-08-02T12:30:00Z", "selectedTimezone": "Australia/Sydney" } }
{ "success": true, "appointment": { /* Updated Jane appointment object */ } }
- 401 Unauthorized: API key missing or invalid.
- 400 Bad Request: Required fields missing.
- 404 Not Found: Appointment not found.
- 422 Unprocessable Entity: Update failed (check new times, or try again).
Cancel Appointment
POST /jane-api.clinikoconnect.com Host: api-sync.clinicsyncpro.com x-api-key: YOUR_API_KEY_HERE Content-Type: application/json { "appointmentId": "abc123-xyz", "cancelled_reason": "Patient requested cancellation", "with_notifications": true, "send_wlns": true }
{ "success": true, "appointment": { /* Jane appointment cancellation response */ } }
- 401 Unauthorized: API key missing or invalid.
- 400 Bad Request: Required cancel fields missing.
- 404 Not Found: Appointment not found.
- 422 Unprocessable Entity: Cancel failed (already cancelled, or wrong id).
Webhook Payload: Jane Patient Update
When a patient is created or updated, your webhook receives a JSON body with all the following fields:
View full live sync field map →
View Example Payload
{ "firstName": "Sam", "lastName": "Smith", "email": "sam.smith@example.com", "phone": "+61400000000", "dateOfBirth": "1990-01-01", "state": "NSW", "city": "Sydney", "credit_card_expiry_formatted": "...", "intake_forms_summary": "...", "send_notifications": "Yes/No", "send_sms_notifications": "Yes/No", "email_wait_list_notifications": "Yes/No", "sms_wait_list_notifications": "Yes/No", "email_auto_pay_balance_notifications": "Yes/No", "sms_auto_pay_balance_notifications": "Yes/No", "referring_staff_member_id": "...", "do_not_email": "Yes/No", "no_show_count": 0, "available_credit": 0, "amount_owing": 0, "claims_amount_owing": 0, "loyalty_balance": 0, "referring_professional": "...", "referring_professional_phone": "...", "referring_professional_email": "...", "ratings_emails": "Yes/No", "last_updated_date_via_api": "2024-07-18T10:01:00Z", "upcoming_appt_reminder_start_time": "2024-08-02T10:00:00Z", "patient_number": "123456", "first_visit": "2024-01-01", "last_visit": "2024-07-01", "referral_source": "...", "marketing_emails": "Yes/No", "member_since": "2022-04-01", "discharged_at": null, "active": true, "appointments_count": 23, "total_purchased": 5, "upcoming_appointments_count": "2", "last_appt_insurance_state": "...", "upcoming_appt_insurance_state": "...", "second_upcoming_appt_insurance_state": "...", "last_appt_location_name": "...", "last_appt_treatment_name": "...", "last_appt_staff_member_name": "...", "last_appt_state": "...", "last_appt_chart_status": "...", "last_appt_notes_text": "...", "last_appt_booked_at": "...", "last_appt_arrived_at": "...", "last_appt_no_show_at": "...", "last_appt_cancelled_at": "...", "last_appt_cancelled_reason": "...", "last_appt_end_at": "...", "last_appt_start_at": "...", "upcoming_appt_location_name": "...", "upcoming_appt_treatment_name": "...", "upcoming_appt_staff_member_name": "...", "upcoming_appt_state": "...", "upcoming_appt_chart_status": "...", "upcoming_appt_notes_text": "...", "upcoming_appt_booked_at": "...", "upcoming_appt_arrived_at": "...", "upcoming_appt_no_show_at": "...", "upcoming_appt_cancelled_at": "...", "upcoming_appt_cancelled_reason": "...", "upcoming_appt_end_at": "...", "upcoming_appt_start_at": "...", "second_upcoming_appt_location_name": "...", "second_upcoming_appt_treatment_name": "...", "second_upcoming_appt_staff_member_name": "...", "second_upcoming_appt_state": "...", "second_upcoming_appt_chart_status": "...", "second_upcoming_appt_notes_text": "...", "second_upcoming_appt_booked_at": "...", "second_upcoming_appt_arrived_at": "...", "second_upcoming_appt_no_show_at": "...", "second_upcoming_appt_cancelled_at": "...", "second_upcoming_appt_cancelled_reason": "...", "second_upcoming_appt_end_at": "...", "second_upcoming_appt_start_at": "...", "total_payment_amount": 1200, "total_remaining_balance": 0, "total_payment_made": 1200, "total_appt_booked": 18, "total_appt_cancelled": 2, "total_appt_no_show": 1, "total_appt_arrived": 15, "total_appt_rescheduled": 1, "patient_notes": "...", "appointmentsObject": "..." }
Need additional fields or help? Contact us.
Cliniko API Endpoints – Book, Update, and Cancel Appointments
Authentication
All endpoints require the x-api-key header, found in your dashboard under “Manage API / Webhooks”.
- Each api key is mapped to a specific clinic/location. You cannot book for another clinic with your key.
Book Appointment
POST /api-book-appointment Host: cliniko-api.clinikoconnect.com x-api-key: YOUR_API_KEY_HERE Content-Type: application/json { "customData": { "staff_member": "practitioner@email.com", "appt_type_name": "Physio Consult", "appt_type_category": "Physiotherapy", "appt_type_duration": "30", "business_name": "Downtown Health" }, "calendar": { "startTime": "2024-08-02T10:00:00Z", "endTime": "2024-08-02T10:30:00Z", "selectedTimezone": "Australia/Sydney", "appointmentId": "abc123-xyz" }, "first_name": "Sam", "last_name": "Smith", "email": "sam.smith@example.com", "phone": "+61400000000" }
{ "success": true, "appointment": { /* Cliniko appointment object */ } }
- 401 Unauthorized: API key missing or invalid.
- 400 Bad Request: Required booking fields missing.
- 422 Unprocessable Entity: Invalid practitioner, appointment type, or business name.
- 500: Unhandled errors (try again, or contact support).
Update Appointment
POST /api-update-appointment Host: cliniko-api.clinikoconnect.com x-api-key: YOUR_API_KEY_HERE Content-Type: application/json { "calendar": { "appointmentId": "abc123-xyz", "startTime": "2024-08-02T11:00:00Z", "endTime": "2024-08-02T11:30:00Z", "selectedTimezone": "Australia/Sydney" } }
{ "success": true, "appointment": { /* Updated Cliniko appointment object */ } }
- 401 Unauthorized: API key missing or invalid.
- 400 Bad Request: Required update fields missing.
- 404 Not Found: Appointment not found.
- 422 Unprocessable Entity: Appointment could not be updated (check times, or try again).
Cancel Appointment
POST /api-cancel-appointment Host: cliniko-api.clinikoconnect.com x-api-key: YOUR_API_KEY_HERE Content-Type: application/json { "appointmentId": "abc123-xyz", "cancellation_note": "Client requested cancellation", "cancellation_reason": 50 }
{ "success": true, "appointment": { /* Cliniko appointment cancellation response */ } }
- 401 Unauthorized: API key missing or invalid.
- 400 Bad Request: Required cancel fields missing.
- 404 Not Found: Appointment not found.
- 422 Unprocessable Entity: Appointment could not be cancelled (already cancelled, wrong id, etc).
Webhook Payload: Cliniko Patient Update
When a patient is created or updated, your webhook receives a JSON body with all the following fields:
View Example Payload
{ "firstName": "Sam", "lastName": "Smith", "email": "sam.smith@example.com", "phone": "+61400000000", "dateOfBirth": "1990-01-01", "state": "NSW", "city": "Sydney", "upcoming_appointment_cancelled_at": "...", "upcoming_appointment_cancellation_reason": "...", "upcoming_appointment_name": "...", "last_appointment_name": "...", "last_updated_date_via_api": "...", "last_appointment_cancelled_at": "...", "last_appointment_did_not_arrive": "...", "last_appointment_cancellation_reason": "...", "upcoming_appointment_reminder_start_time": "...", "patient_id": "123456", "upcoming_appointment_start_time": "...", "upcoming_appointment_business_name": "...", "upcoming_appointment_practitioner_name": "...", "upcoming_appointment_type": "...", "upcoming_appointment_counts": 1, "accepted_email_marketing": "Yes/No", "accepted_sms_marketing": "Yes/No", "total_amount_spent": 1000, "total_amount_spent_this_month": 200, "total_number_of_appointments": 15, "last_appointment_start_time": "...", "last_appointment_business_name": "...", "last_appointment_practitioner_name": "...", "last_appointment_type": "..." }
PtEverywhere API Endpoints – Patient Sync (Appointments Coming Soon)
Authentication
All endpoints require the x-api-key header, found in your dashboard under “Manage API / Webhooks”.
- Each api key is mapped to a specific PT Everywhere location. You cannot sync for another location with your key.
Webhook Payload: PtE Patient Update
When a patient is created or updated in PtEverywhere, your webhook receives the following JSON fields:
View Example Payload
{ "last_updated_date_via_api": "...", "TotalNumberOfVisits": 10, "PatientId": "12345", "Age": 36, "LastSeenBy": "Dr. Lee", "LastVisit": "2024-05-10", "NextVisit": "2024-08-05", "Service": "Initial Consultation", "LastVisit_serviceName": "Manual Therapy", "LastVisit_locationName": "Downtown Clinic", "LastVisit_provider": "Dr. Lee", "LastVisit_status": "Completed", "NextVisit_serviceName": "Follow Up", "NextVisit_locationName": "Downtown Clinic", "NextVisit_provider": "Dr. Smith", "NextVisit_status": "Scheduled", "NextVisit_apptReminder_startTime": "2024-08-05T09:00:00Z", "FirstAppt": "2021-10-15", "TotalRevenue": 1700, "TotalCollected": 1500, "Primary_payer": "Medicare", "Secondary_payer": "Bupa", "Tertiary_payer": null, "firstName": "Sam", "lastName": "Smith", "email": "sam.smith@example.com", "phone": "+61400000000", "dateOfBirth": "1990-01-01", "state": "NSW", "city": "Sydney", }
Join Our Weekly Live Q&A!
Every Tuesday at 3pm PST, Siavash hosts a live Zoom meeting for all ClinicSync Pro users, agency partners, and anyone considering our platform.
Bring your questions, get help with automations, or see live demos of new features. It's the best way to get expert support, network with other clinics and agencies, and learn how to get even more value from ClinicSync Pro.
Join Weekly Zoom MeetingNo registration required. Just click the link and drop in on Tuesdays at 3pm PST!
Need something not covered here? Contact us.