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 completed sales
DND sync for email and SMS opt-in preferences (Meevo → Aesthetix CRM)
Two-way sync to create clients in Meevo from Aesthetix CRM
Multi-location support
The Meevo integration is built on AX Connect, a HIPAA-compliant middleware platform that runs all integrations between Aesthetix CRM and your EMR.
Meevo integration requires a $149/month integration fee for the first location and $75/month for each additional location, paid directly to Aesthetix CRM.
Aesthetix CRM will coordinate with the Meevo team to establish API access and set up the integration for you.
The Meevo integration uses a combination of webhooks and polling. Appointment creation and checkout events are webhook-based and arrive in Aesthetix CRM near-instantly. Appointment status updates (cancellations, no-shows, rebookings) and sales data are polling-based, checked every 5 minutes.
To prevent duplicate data, we use a ledger-based deduplication system within AX Connect for all polling-based triggers. This creates a record of each processed event, ensuring we only act on brand-new changes and skip duplicates.
Note: This integration is currently built for the med spa segment (non-surgical lead-to-patient pipeline). If a plastic surgery practice comes on with Meevo, we will design dual-pipeline workflows for that segment at that time.
What triggers it: A new appointment is created in Meevo. This is a webhook-based trigger, so it arrives in Aesthetix CRM near-instantly.
What happens:
We receive the webhook and make a GET Client request to pull full client details.
We validate phone and email.
We pull the location information.
We pull the birthday if it exists.
We standardize the appointment date for the Next Visit Date field.
We create or update the contact in Aesthetix CRM and add them to the Meevo Appointment Created workflow.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Next Visit Date
Next Visit Service
Meevo Appt Category
Meevo Appt ID
Meevo Appt Provider
Meevo Appt Service
Meevo Appt Service Add-On
Meevo Client ID
Meevo DOB
Meevo Email Opt In
Meevo Location
Meevo SMS Opt In
Workflow actions in Aesthetix CRM:
A green contact note is added with: appointment status (Booked), appointment service name, appointment date, and location.
An Appointment Booked tag is added.
The contact's opportunity is updated to the Booked stage in the lead-to-patient pipeline.
What triggers it: An appointment is checked out in Meevo. This is a webhook-based trigger, so it arrives near-instantly.
What happens:
We receive the webhook and pull appointment details, client information, location, birthday, and appointment date.
Since this is a completed appointment, we update Last Visit Date and Last Visit Service instead of Next Visit fields.
We create or update the contact and add them to the Meevo Appointment Completed workflow.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Last Visit Date
Last Visit Service
Meevo Appt Category
Meevo Appt ID
Meevo Appt Provider
Meevo Appt Service
Meevo Appt Service Add-On
Meevo Client ID
Meevo DOB
Meevo Email Opt In
Meevo Location
Meevo SMS Opt In
Workflow actions in Aesthetix CRM:
The Last Visit Date is updated on the contact.
A blue contact note is added with: appointment status (Completed/Checked Out), appointment service, appointment date (last visit date), and appointment location.
The Appointment Booked tag is removed.
The contact's opportunity is updated to the Patient stage in the pipeline, marked as won.
If this is the contact's first completed appointment (they're still a lead), their Contact Type is changed to Patient and a Patient tag is added.
What triggers it: An appointment is cancelled or marked as a no-show in Meevo. This is a polling-based trigger -- we poll the Meevo API every 5 minutes for appointment status updates.
What happens:
We detect cancelled and no-show status changes via polling.
We check our internal ledger database to confirm this is a new status change and not a duplicate.
We pull client and location information.
We create or update the contact in Aesthetix CRM and add them to the Meevo Appointment Cancelled/No-Show workflow.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Meevo Appt Category
Meevo Appt ID
Meevo Appt Provider
Meevo Appt Service
Meevo Appt Service Add-On
Meevo Client ID
Meevo Location
Note: Next Visit Date and Next Visit Service are not updated for cancelled or no-show statuses.
Workflow actions in Aesthetix CRM:
A red contact note is added with: appointment status (Cancelled or No-Show), appointment service, appointment date, and location.
The contact's opportunity is updated to the Cancel/No-Show stage in the lead-to-patient pipeline.
What triggers it: An appointment is replaced or rebooked in Meevo (e.g., a cancelled appointment is rescheduled). This is a polling-based trigger.
What happens:
We detect rebooked/replaced appointments via polling.
We check our internal ledger database to prevent duplicate processing.
The contact is treated similarly to a new appointment -- we update Next Visit Date and Next Visit Service with the new appointment details.
The contact is added to the Meevo Appointment Created workflow, flowing through the same booking logic.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Next Visit Date
Next Visit Service
Meevo Appt Category
Meevo Appt ID
Meevo Appt Provider
Meevo Appt Service
Meevo Appt Service Add-On
Meevo Client ID
Meevo DOB
Meevo Email Opt In
Meevo Location
Meevo SMS Opt In
Workflow actions in Aesthetix CRM:
A green contact note is added (same as Appointment Created) with the updated appointment details.
An Appointment Booked tag is added.
The contact's opportunity is moved back to the Booked stage, reflecting the new appointment.
What triggers it: A new sale is completed in Meevo. This is a polling-based trigger -- we poll the Meevo API every 5 minutes for new sales.
What happens:
We detect new sales via polling and standardize the data (total invoice amount, sale date, etc.).
We check our internal ledger database to confirm this is a brand-new sale and not a duplicate or update to an existing record.
We pull client and location information.
We create or update the contact in Aesthetix CRM and add them to the Sale Closed workflow.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Invoice Paid Amount (total amount from the sale)
Meevo Client ID
Meevo Email Opt In
Meevo Location
Meevo Sale Date
Meevo SMS Opt In
Meevo Transaction ID
Workflow actions in Aesthetix CRM:
An orange contact note is added with: "Order Completed," the order total (invoice paid amount), order line items (last visit service), and the transaction ID.
The Invoice Paid Amount is added to Patient Lifetime Value via a math function.
If an opportunity exists, the opportunity value is updated with the patient lifetime value.
If no opportunity exists, one is created in the Patient stage (but not marked as won until an appointment is completed).
What triggers it: A new client is created in Meevo.
What happens:
We automatically create or update the contact in Aesthetix CRM with core contact information.
No workflow is triggered -- this simply ensures new Meevo clients appear in the CRM.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
What triggers it: An existing client is updated in Meevo.
What happens:
We update the contact in Aesthetix CRM with any additional information available.
No workflow is triggered -- this keeps contact records in sync.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Address information (if available)
Meevo DOB
Meevo Client ID
Meevo Email Opt In
Meevo SMS Opt In
What triggers it: A tag called meevo-create is added to a contact in Aesthetix CRM (either manually or via automation).
What happens:
The tag triggers a workflow in AX Connect.
Before creating the client, we search Meevo by email to check if the client already exists. If they do, we skip creation to avoid duplicates.
If the client does not exist, we create them in Meevo.
Required fields in Aesthetix CRM:
First Name
Last Name
Phone
Optional fields (sent if populated):
Date of Birth
Address
Gender
SMS Opt-In status
Recommendation: If you intend to use the two-way client creation, we recommend reducing your Meevo client creation requirements down to first name, last name, email, and phone. You can control these requirements inside your Meevo instance.
The integration syncs email and SMS opt-in preferences from Meevo to Aesthetix CRM using the Meevo Email Opt In and Meevo SMS Opt In custom fields.
A dedicated Opt-Out Sync workflow in Aesthetix CRM monitors these fields and updates the DND (Do Not Disturb) settings for SMS and email accordingly. This ensures that if a client opts out in Meevo, their DND settings in Aesthetix CRM are updated to match.
⚠ Limitation: One-way sync only. Opt-in/opt-out preferences currently sync from Meevo to Aesthetix CRM only. We cannot currently update opt-in preferences in Meevo based on changes made in Aesthetix CRM. This is a limitation on the Aesthetix CRM API side that we hope to resolve in the future.
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 Meevo DOB and bring in the birthday data from Meevo into that field.
A dedicated Birthday workflow is triggered every time the Meevo DOB field is updated. It copies the value from the Meevo 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 Meevo.
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:
Meevo Appointment Created
Meevo Appointment Completed
Meevo Appointment Cancelled/No-Show
Meevo Sale Closed
Meevo Birthday
Meevo Opt-Out Sync
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 Meevo-specific fields are organized in a Meevo folder within your custom fields.
Custom Field Name | Type | Custom Value |
Meevo Client ID | Text |
|
Meevo DOB | Date |
|
Meevo Anniversary Date | Date |
|
Meevo SMS Opt In | Text |
|
Meevo Email Opt In | Text |
|
Meevo Appt Category | Text |
|
Meevo Appt ID | Text |
|
Meevo Appt Service | Text |
|
Meevo Appt Service Add-On | Text |
|
Meevo Location | Text |
|
Meevo Appt Provider | Text |
|
Meevo Sale Date | Date |
|
Meevo Transaction ID | Text |
|
In addition to the Meevo-specific fields above, the integration also updates these standard Aesthetix CRM fields:
Next Visit Date (on appointment created)
Next Visit Service (on appointment created)
Last Visit Date (on appointment completed)
Last Visit Service (on appointment completed)
Invoice Paid Amount (on sale completed)
Patient Lifetime Value (on sale completed)
Contact Type
First Name, Last Name, Email, Phone
Address information (on client updates, if available)
The following feature is planned for an upcoming release:
Membership Tracking -- Capture membership purchases and updates from Meevo, enabling automated membership tags, Patient Lifetime Value updates, and membership-specific drip campaigns.
Med spa only (currently). The integration is built for the non-surgical lead-to-patient pipeline. Plastic surgery dual-pipeline support will be added when a plastic surgery practice comes on with Meevo.
Appointment events use a mix of webhooks and polling. Appointment creation and checkout are webhook-based (near-instant). Cancellations, no-shows, and rebookings are polling-based (every 5 minutes) with ledger-based deduplication to prevent duplicates. Sales data is also polled every 5 minutes.
DND sync is one-way only. Opt-in/opt-out preferences sync from Meevo to Aesthetix CRM, but changes made in the CRM do not sync back to Meevo.
Birthday requires a workaround. GoHighLevel's native Date of Birth field isn't accessible via API, so we use the Meevo DOB custom field and a sync workflow to keep them aligned.
Two-way client creation checks for duplicates. Before creating a client in Meevo, we search by email to prevent duplicate records.
Color-coded notes for easy identification. Appointment Created notes are green, Appointment Completed notes are blue, Cancelled/No-Show notes are red, and Sale Closed notes are orange -- making it easy to scan a contact's history at a glance.
Q: How do I know if the integration received an appointment?
Check the contact's Notes tab. Appointment Created events generate a green note, Appointment Completed events generate a blue note, and Cancelled/No-Show events generate a red note. If there's no note, we didn't receive the event.
Q: How do cancellations and no-shows work?
Cancellations and no-shows are detected via polling every 5 minutes. When detected, the contact is moved to the Cancel/No-Show stage in the pipeline and a red note is added to their contact record. We use ledger-based deduplication to prevent the same cancellation from being processed multiple times.
Q: What happens when an appointment is rebooked?
Rebooked/replaced appointments are detected via polling. The contact is treated like a new appointment -- their Next Visit Date and Next Visit Service are updated, and they move back to the Booked stage in the pipeline.
Q: Why do I see a sale note but the contact wasn't moved to Patient?
The Sale Closed workflow creates an opportunity if one doesn't exist but does not mark it as won. The contact's status is only updated to Patient when an appointment is completed (checked out). This ensures the pipeline accurately reflects appointment completion, not just payment.
Q: Can I build custom automations off the integration?
Yes. You can use the tags added by our workflows (Appointment Booked, Patient) as triggers for your own workflows. You can also trigger automations off custom field changes. If you need a locked workflow unlocked, contact us.
Q: Why didn't a client get created in Meevo after I added the meevo-create tag?
We search Meevo by email before creating. If a client with that email already exists, creation is skipped to prevent duplicates. Also verify that all four required fields are populated: first name, last name, email, and phone.
Q: How does the DND sync work?
Every time we receive appointment, sale, or client update data from Meevo, we pull the email and SMS opt-in status. The Opt-Out Sync workflow evaluates these fields and updates the DND settings in Aesthetix CRM to match. This is currently one-way (Meevo → CRM only).
Q: What do the different note colors mean?
Green notes are appointment bookings (and rebookings), blue notes are completed appointments, red notes are cancellations/no-shows, and orange notes are completed sales/orders. This makes it easy to visually scan a contact's integration history.