Note: The AestheticsPro integration is currently built for med spa practices using the non-surgical lead-to-patient pipeline.
Opportunity & pipeline automation to decrease manual data entry and drive reporting efficiency
Automate Google review collection after appointments
Automate post-appointment follow-up
Automate patient retention campaigns for specific treatment and service types
Collect data for better patient/client segmentation
Automated birthday campaigns
Patient lifetime value tracking from paid invoices
Multi-location support with location-level data
The integration uses AX Connect, a HIPAA-compliant middleware platform that runs all integrations between Aesthetix CRM and your EMR.
Contact your AestheticsPro Client Success Manager to sign up for the integration and enable Webhooks access on your account.
AestheticsPro will create a user account for [email protected] so we can configure and maintain the connection.
Webhooks are available on the AestheticsPro Executive and Enterprise editions. AestheticsPro charges the following fees, billed directly by AestheticsPro:
$25 API access fee per month, per location
$0.02 per task over 5,000 per billing cycle
Aesthetix CRM charges $99 per month for AX Connect, which covers the setup and ongoing maintenance of the integration.
This is a one-way sync from AestheticsPro to Aesthetix CRM utilizing AestheticsPro webhooks, which enable near-instantaneous updates (typically within 30 seconds).
AestheticsPro sends client, appointment, and invoice events to a webhook in AX Connect. For each event, we enrich and standardize the data, map it to the appropriate fields, and push it into Aesthetix CRM, including adding the contact to the appropriate workflow for pipeline and automation processing.
For multi-location practices, we pull location data from the webhook payload and map it to the APro Location custom field.
Test pings are ignored. AestheticsPro fires a test ping whenever the integration is activated or its configuration changes. The integration automatically detects and skips these so they never create or update a contact.
What triggers it: A new appointment is created in AestheticsPro.
What happens:
We receive the webhook and standardize the appointment data (client details, services, provider, location, appointment date).
We confirm the contact has a valid email or phone (AestheticsPro contacts missing both are not synced, since Aesthetix CRM requires at least one).
We create or update the contact in Aesthetix CRM and add them to the APro Appointments Update workflow.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Next Visit Date
Next Visit Service
APro Appt Status (set to Booked)
APro Appt Date
APro Appt ID
APro Appt Services
APro Appt Service Type
APro Provider
APro Location
APro Client ID
APro DOB
Workflow actions in Aesthetix CRM:
A contact note is added with the appointment status, service, date, and location. These notes are your audit trail for troubleshooting.
The contact's opportunity is updated to the Booked stage of the lead-to-patient pipeline.
Existing patients maintain their current status; new leads keep an open status.
Important: Next Visit Date and Next Visit Service are updated only on new appointment bookings. They are not changed by cancellations or no-shows.
What triggers it: An appointment is cancelled in AestheticsPro.
What happens:
We standardize the data and update the contact in Aesthetix CRM.
The contact is added to the APro Appointments Update workflow.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
APro Appt Status (set to Cancelled)
APro Appt Date
APro Appt ID
APro Appt Services
APro Appt Service Type
APro Provider
APro Location
APro Client ID
APro DOB
Note: Next Visit Date and Next Visit Service are not updated for cancellations.
Workflow actions in Aesthetix CRM:
A contact note is added documenting the cancellation.
The contact's opportunity is updated to the Cancel/No-Show stage of the pipeline.
What triggers it: An appointment is marked as a no-show in AestheticsPro.
What happens:
The workflow mirrors the cancellation flow.
The contact is added to the APro Appointments Update workflow.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
APro Appt Status (set to NoShow)
APro Appt Date
APro Appt ID
APro Appt Services
APro Appt Service Type
APro Provider
APro Location
APro Client ID
APro DOB
Workflow actions in Aesthetix CRM:
A contact note is added documenting the no-show.
The contact's opportunity is updated to the Cancel/No-Show stage of the pipeline.
What triggers it: An invoice is paid in AestheticsPro. A paid invoice is AestheticsPro's completion signal: it means the visit happened.
What happens:
We receive the webhook and standardize the invoice data, reading the clean invoice-level fields first and falling back to the nested appointment block when needed.
We capture invoice financials, last visit details, and the client's information.
We create or update the contact in Aesthetix CRM and add them to the APro Invoice Paid workflow (which functions similarly to the Zenoti Invoice Paid workflow).
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Last Visit Date
Last Visit Service
Invoice Paid Amount
APro Appt Status (set to Completed)
APro Invoice ID
APro Location
APro Client ID
APro DOB
Workflow actions in Aesthetix CRM:
A contact note is added with the invoice details (amount, service, invoice number, location).
The Invoice Paid Amount is added to the Patient Lifetime Value via a math function.
The contact's opportunity is moved to the Patient stage and marked as won, and the opportunity value is updated with the patient lifetime value.
If no opportunity exists, one is created in the Patient stage.
The contact is added to the Birthday workflow (see Birthday Field Sync section below).
Retail-only invoices are supported. Invoices without an appointment (for example, a retail product purchase) are handled. In those cases the last visit date falls back to the invoice or payment date.
Why a paid invoice instead of a check-in? A paid invoice is the most reliable signal that a patient actually completed their visit, so it is what we use to set Last Visit Date/Service, record revenue, and move the contact to the won/patient stage.
What triggers it: A client is created or updated in AestheticsPro. Both events arrive on the same webhook.
What happens:
We standardize the client data and create or update the matching contact in Aesthetix CRM.
This flow does not add the contact to any workflow. It is a demographic sync that keeps the contact record current.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
City, State, Address, Postal Code
APro Client ID
APro DOB
The APro Appointments Update workflow routes contacts based on their appointment status and contact type.
Event | APro Appt Status | Pipeline Stage |
Appointment Booked | Booked | Booked |
Appointment Cancelled | Cancelled | Cancel / No-Show |
Appointment No-Show | NoShow | Cancel / No-Show |
Invoice Paid | Completed | Patient (won) |
For each appointment event, the workflow:
Adds a note to the contact for the audit trail.
Checks whether the contact is a Lead or a Patient.
Finds the existing opportunity. If one exists, it updates the stage. If not, it creates one in the appropriate stage.
Existing patients maintain their status as they move between stages.
New leads keep an open status until a paid invoice moves them to the Patient (won) stage.
Aesthetix CRM (GoHighLevel) does not currently expose the native Date of Birth field via API. To work around this, we create a custom field called APro DOB and bring in the birthday data from AestheticsPro into that field. Birthdates are read across multiple formats (for example MM/DD/YYYY) so they import consistently.
A dedicated Birthday workflow then copies the value from the APro DOB custom field into the native Date of Birth field, keeping them in sync. This ensures that any birthday automations you've built in the CRM will work correctly using data from AestheticsPro.
Several workflows in your Aesthetix CRM account are hidden and locked. This is intentional, these workflows contain the core integration logic, and modifications could break the integration. The locked workflows include:
APro Appointments Update
APro Invoice Paid
APro Birthday
If you need custom automation built on top of any of these, let us know and we can either unlock specific workflows or help you build triggers off of the tags and fields these workflows create.
All AestheticsPro-specific fields are organized in an Aesthetics Pro folder within your custom fields.
Custom Field Name | Type | Custom Value |
APro Client ID | Text |
|
APro DOB | Date |
|
APro Location | Text |
|
APro Appt ID | Text |
|
APro Provider | Text |
|
APro Appt Status | Text |
|
APro Appt Date | Date |
|
APro Invoice ID | Text |
|
APro Appt Services | Text |
|
APro Appt Service Type | Text |
|
In addition to the AestheticsPro-specific fields above, the integration also updates these standard Aesthetix CRM fields:
Next Visit Date (on new appointment bookings)
Next Visit Service (on new appointment bookings)
Last Visit Date (on paid invoices)
Last Visit Service (on paid invoices)
Invoice Paid Amount (on paid invoices)
Patient Lifetime Value (on paid invoices)
Contact Type
First Name, Last Name, Email, Phone
City, State, Address, Postal Code (on client create/update)
Med spa only. The integration is currently built for the non-surgical lead-to-patient pipeline. It does not include dual-pipeline (surgical) routing.
One-way sync. Data flows from AestheticsPro to Aesthetix CRM. The integration does not currently create or update records in AestheticsPro based on changes in the CRM.
Next Visit fields update only on new bookings. Next Visit Date and Next Visit Service are set when an appointment is booked. They are not updated by cancellations or no-shows.
Last Visit fields come from the paid invoice. Last Visit Date, Last Visit Service, revenue, and the move to the won/patient stage are all driven by a paid invoice, not by an appointment check-in.
Appointment reschedules and deletions are not currently acted on. The integration responds to new bookings, cancellations, and no-shows. Appointment update (reschedule) and delete events are received but do not currently move the pipeline or change next-visit details.
Contacts need a valid email or phone. AestheticsPro allows clients without an email or phone, but Aesthetix CRM requires at least one. Clients missing both will not sync.
Birthday requires a workaround. GoHighLevel's native Date of Birth field isn't accessible via API, so we use the APro DOB custom field and a sync workflow to keep them aligned.
No membership or marketing preference sync. The current integration does not include membership tracking or email/SMS opt-out (DND) syncing.
Q: How do I know if the integration received an appointment?
Check the contact's Notes tab. Every appointment event (booked, cancelled, no-show) and paid invoice generates a note with the relevant details. If there's no note, the integration did not receive the event.
Q: Why is a contact in the wrong pipeline stage?
Review the contact's notes for the audit trail. If the expected note is missing, the webhook event may not have fired from AestheticsPro, or there may have been a processing issue we can investigate.
Q: Why didn't a rescheduled appointment update the contact? The integration currently acts on new bookings, cancellations, and no-shows. Reschedule (update) events are received but do not currently move the pipeline or change next-visit details.
Q: Why does Last Visit Date update when an invoice is paid rather than when the appointment happens?
A paid invoice is the most reliable signal that a visit was actually completed. We use it to set Last Visit Date/Service, record revenue toward Patient Lifetime Value, and move the contact to the won/patient stage.
Q: How does Patient Lifetime Value get calculated?
Each paid invoice adds its amount to the Patient Lifetime Value field, which then updates the contact's opportunity value.
Q: Does the integration support multiple locations?
Yes. Location data from AestheticsPro is captured and mapped to the APro Location custom field.
Q: Can I build custom automations off the integration?
Yes. You can trigger your own workflows off the APro custom field changes (for example, APro Appt Status). If you need a locked workflow unlocked for customization, contact us