ClinicSync Pro logo

ClinicSync Pro Documentation

Quick Reference: Field Sync Map

For a complete list of fields,and what gets synced between your EMR and GoHighLevel, check out our real-time mapping sheet.

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?

Supported Automations

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

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

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

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

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

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 Snapshot

Jane Integration Snapshot

All automations and custom fields for Jane + GHL.Download Jane Snapshot

PtEverywhere Integration Snapshot

Custom fields and automations for PT clinics using PtEverywhere.Download PtEverywhere Snapshot

Cliniko Integration Snapshot

Prebuilt GHL setup for Cliniko + automations.Download Cliniko Snapshot

Tip: If you need help installing or customizing any snapshot, book a 1:1 call or join the weekly Q&A above!

Data Security & Privacy

Troubleshooting & Support

FAQ

Important: Enable AI Booking Access First

Before you can use the Jane API endpoints below:
  • 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.
Need help? Email hello@clinicsyncpro.com to get AI Booking enabled for your account.

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 https://jane-api.clinikoconnect.com/api-book-appointment
Required headers: x-api-key and Content-Type: application/json
Request Example:
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
}
Note: The location field is not required; it is set by your API key automatically.
Success Response:
{
  "message": "Appointment booked successfully",
  "bookedAppointment": { /* Jane appointment object */ }
}
Common Errors:
  • 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 https://jane-api.clinikoconnect.com/api-update-appointment
Required headers: x-api-key and Content-Type: application/json
Request Example:
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 Response:
{
  "success": true,
  "appointment": { /* Updated Jane appointment object */ }
}
Common Errors:
  • 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 https://jane-api.clinikoconnect.com/api-cancel-appointment
Required headers: x-api-key and Content-Type: application/json
Request Example:
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
}
Tip: calendar.appointmentId is also accepted.
Success Response:
{
  "success": true,
  "appointment": { /* Jane appointment cancellation response */ }
}
Common Errors:
  • 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": "..."
}
Note: All fields and mapping are kept up to date in the Sync Field Map. You can use any field in your Zapier, Make, or custom automation logic.
Note: All appointment endpoints are fully isolated by API key/location.
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 https://cliniko-api.clinikoconnect.com/api-book-appointment
Required headers: x-api-key and Content-Type: application/json
Request Example:
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"
}
Note: The location field is not required; it is auto-injected based on your API key.
Success Response:
{
  "success": true,
  "appointment": { /* Cliniko appointment object */ }
}
Common Errors:
  • 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 https://cliniko-api.clinikoconnect.com/api-update-appointment
Required headers: x-api-key and Content-Type: application/json
Request Example:
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 Response:
{
  "success": true,
  "appointment": { /* Updated Cliniko appointment object */ }
}
Common Errors:
  • 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 https://cliniko-api.clinikoconnect.com/api-cancel-appointment
Required headers: x-api-key and Content-Type: application/json
Request Example:
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 Response:
{
  "success": true,
  "appointment": { /* Cliniko appointment cancellation response */ }
}
Common Errors:
  • 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": "..."
}
Note: All fields and mapping are kept up to date in the Sync Field Map. You can use any field in your Zapier, Make, or custom automation logic.
Note: All appointment endpoints are fully isolated by API key/location. Need more fields or support? Contact us.

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",
}
Note: Appointment Booking APIs are coming soon for PtEverywhere. For the most up-to-date field mappings, see the Sync Field Map.
Note: All endpoints are fully isolated by API key/location. Need more fields or support? Contact us.

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 Meeting

No registration required. Just click the link and drop in on Tuesdays at 3pm PST!

More tutorials and snapshot downloads coming soon.
Need something not covered here? Contact us.