Opportunity & pipeline automation to cut manual data entry and keep reporting accurate
Your Meevo appointments on a CRM calendar, one calendar per location, kept up to date as appointments are booked, moved, completed, cancelled or missed
Automated Google review requests after appointments
Automated post-appointment follow-up
Patient retention campaigns for specific treatments and services
Better patient segmentation from appointment, service and provider data
Automated birthday campaigns
Patient lifetime value tracking from completed sales, with each sale counted once
Email opt-out sync (Meevo to 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.
The Meevo integration costs $149/month for the first location and $75/month for each additional location, paid directly to Aesthetix CRM.
Aesthetix CRM coordinates with the Meevo team to set up API access and the integration for you.
The integration receives Meevo data in two ways:
Event | How it arrives | Timing |
|---|---|---|
Appointment booked, moved or checked out | Meevo webhook | Within moments |
Client created or updated | Meevo webhook | Within moments |
Appointment cancelled, no-show or rebooked | Our hourly sync of Meevo's change history | Within about an hour |
Sale completed, edited, refunded or voided | Our hourly sync of Meevo's change history | Within about an hour |
The hourly sync runs once an hour per location from about 7 am to midnight Eastern. It pauses overnight during Meevo's nightly maintenance, so changes made between midnight and 7 am Eastern arrive with the first run of the morning.
Each change is handled once. The integration keeps a record of what it has already sent for every appointment and sale, so the same cancellation or sale is never sent twice.
Contact details are checked before they are sent. Placeholder emails and fake phone numbers (such as 555 numbers or repeated digits) are dropped, and international numbers are kept in full. A Meevo client with neither a valid email nor a valid phone number is not sent to Aesthetix CRM, because there is no way to contact them.
Blank values never erase your data. If Meevo has no value for a field (for example, no birthday on file), the integration leaves the value already in Aesthetix CRM as it is.
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.
Every Meevo appointment is copied onto a calendar in your Aesthetix CRM account called EMR Appointments, so your team can see the Meevo schedule alongside everything else in the CRM. Practices with one Meevo location get one calendar, EMR Appointments. Practices with several locations get one calendar per location, named EMR Appointments ยท [location name] (for example, EMR Appointments ยท Downtown). Every Meevo appointment service appears as an event on that location's calendar.
In Meevo | On the EMR Appointments calendar |
|---|---|
Appointment booked | An event is created for each service on the appointment |
Appointment moved to a new time or provider | The event moves |
Appointment checked out | The event is marked as showed |
Appointment cancelled | The event is cancelled |
Appointment rebooked | The old event is closed and the new one is created |
Appointment marked as a no-show | The event is marked as a no-show (within about an hour) |
Things to know about the EMR Appointments calendar:
It is a mirror of Meevo, not a booking calendar. Changes made on this calendar in Aesthetix CRM are not sent back to Meevo. Always book and change appointments in Meevo.
It is silent. Events on the EMR Appointments calendar do not send confirmations or reminders to patients.
Check-ins are not shown. Only bookings, moves, check-outs, cancellations, rebooks and no-shows update the event.
Appointments booked before the calendar went live are not on it. There was no backfill, so only appointments booked after go-live appear.
The calendar itself sends nothing, but your workflows can still react to it. Because Meevo appointments are now real appointments on a CRM calendar, workflow triggers behave like this:
Workflow trigger | Fires for Meevo appointments on the EMR Appointments calendar? |
|---|---|
Appointment Status with no calendar filter | Yes. It fires when an event is added and each time its status changes (showed, cancelled, no-show). |
Appointment Status filtered to another calendar ("In Calendar") | No |
Appointment Status filtered to an EMR Appointments calendar | Yes, on purpose |
Customer Booked Appointment | No. This trigger is for bookings made through a booking link or widget. |
What this means for your account:
Check your own appointment workflows. If you built a workflow on the Appointment Status trigger without an "In Calendar" filter, it now also runs for every Meevo appointment. That could mean a second reminder or a second follow-up for patients who already get one from Meevo. Add an In Calendar filter for the calendars the workflow is meant for.
An appointment with several services fires more than once. Meevo creates one event per service, so a three-service appointment adds three events to the calendar and a workflow on this trigger runs for each of them.
The standard Aesthetix CRM workflows are not affected. The appointment workflows we install are limited to their own calendars, and the Meevo workflows run from the integration, not from calendar triggers.
You can use it on purpose. A workflow with the Appointment Status trigger filtered to your EMR Appointments calendar (for example, status No-show) is a way to build automations from Meevo appointment statuses. Contact support if you'd like help setting one up.
What triggers it: A new appointment is created in Meevo. This is a webhook-based trigger, so it arrives in Aesthetix CRM within moments.
Meevo occasionally sends a new booking as an "appointment updated" event instead of "appointment created". The integration recognizes these and processes them as new bookings, so they are not missed.
What happens:
We look up the client in Meevo to get their full details.
We check the phone number and email.
We add the location and the birthday, if Meevo has one.
We set the Next Visit Date and Next Visit Service from the appointment.
We create or update the contact in Aesthetix CRM and add them to the Meevo Appointment Created workflow.
We add the appointment to the location's EMR Appointments calendar.
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
Workflow actions in Aesthetix CRM:
A green contact note is added with the appointment status (Booked), service, 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 within moments.
What happens:
We pull the appointment details, client information, location and birthday.
Because the appointment is complete, we update Last Visit Date and Last Visit Service instead of the Next Visit fields.
We create or update the contact and add them to the Meevo Appointment Completed workflow.
We mark the appointment as showed on the location's EMR Appointments calendar.
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
Workflow actions in Aesthetix CRM:
A blue contact note is added with the appointment status (Completed), service, date and location.
The Appointment Booked tag is removed.
The contact's opportunity is updated to the Patient stage and marked as won.
If this is the contact's first completed appointment, 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. Cancellations and no-shows are picked up by our hourly sync, so they arrive within about an hour (or the next morning if they happen overnight).
What happens:
We confirm this is a new status change that has not already been sent.
We pull the client and location information and update the contact in Aesthetix CRM.
We add a plain (uncolored) contact note that reads Appt Status: Cancelled or Appt Status: No Show, with the appointment date and location.
The EMR - Meevo - Cancel / No Show workflow in Aesthetix CRM sees that note and moves the contact's opportunity to the Cancel/No-Show stage.
The event on the location's EMR Appointments calendar is cancelled or marked as a no-show.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Meevo Client ID
Meevo Location
Note: Next Visit Date and Next Visit Service are not changed by a cancellation or no-show. The appointment service is not included in the note.
Note: The appointment fields (Meevo Appt Category, Appt ID, Appt Provider, Appt Service and Appt Service Add-On) are not changed either, so they keep the values from the patient's most recent booking.
Note: The opportunity is only moved if the contact already has one. A cancellation never creates a new opportunity.
What triggers it: An appointment is moved to a new date or time in Meevo. Meevo calls this a replaced appointment: it keeps the same appointment and replaces its services. Rebooks are picked up by our hourly sync.
A rebook in Meevo is usually a patient moving their appointment, not booking again after a cancellation.
What happens:
We confirm this is a new change that has not already been sent.
We look up the services the appointment now holds in Meevo (up to three) and write them to Next Visit Service.
We update Next Visit Date with the new appointment date.
We add the contact to the Meevo Appointment Created workflow, so they flow through the same booking steps as a new appointment.
On the location's EMR Appointments calendar, the old event is closed and the new one is created.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Next Visit Date
Next Visit Service
Meevo Client ID
Meevo Location
Note: The other appointment fields (Meevo Appt Category, Appt ID, Appt Provider, Appt Service and Appt Service Add-On) are not changed by a rebook, so they keep the values from the original booking. Use Next Visit Service for the services the patient is now booked for.
Workflow actions in Aesthetix CRM:
A green contact note is added, the same as for Appointment Created. A patient who reschedules will show two booking notes.
The Appointment Booked tag is added.
The contact's opportunity is moved back to the Booked stage.
What triggers it: A sale is completed, changed, refunded or voided in Meevo. Sales are picked up by our hourly sync, so they arrive within about an hour.
Each sale is counted once. The Meevo Sale Closed workflow adds the Invoice Paid Amount to the contact's Patient Lifetime Value every time it runs, so the integration only ever sends the part of a sale that has not been counted yet:
In Meevo | What is sent to Aesthetix CRM |
|---|---|
A sale is completed | The sale total |
A completed sale is edited or partly refunded | Only the difference (negative if the total went down) |
A completed sale is voided | Minus the amount already counted |
A sale is open or on hold | Nothing yet. It is sent once it is completed |
A sale dated before the integration went live | Nothing. It is never counted |
What happens:
We work out the amount not yet counted, as in the table above.
We pull the client and location information.
We create or update the contact in Aesthetix CRM and add them to the Meevo Sale Closed workflow.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Invoice Paid Amount (the amount counted this time, which is negative for a refund or void)
Meevo Client ID
Meevo Email Opt In
Meevo Location
Meevo Sale Date
Meevo Transaction ID
Workflow actions in Aesthetix CRM:
An orange contact note is added with "Order Completed," the amount, the services and the transaction ID.
The Invoice Paid Amount is added to Patient Lifetime Value.
If an opportunity exists, its value is updated to 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).
Note: Patient Lifetime Value counts sales completed since your integration went live. Meevo does not provide a lifetime spend total, and past sales were not loaded, so long-standing patients may show a lower value than their full history.
Note: Membership charges are sales in Meevo, so they count toward Patient Lifetime Value. Meevo often processes them in overnight batches, so they usually appear the next morning.
What triggers it: A new client is created in Meevo.
What happens:
We create or update the contact in Aesthetix CRM.
No workflow is triggered. This simply makes sure new Meevo clients appear in the CRM.
Fields updated in Aesthetix CRM:
First Name, Last Name, Email, Phone
Meevo Client ID
Meevo DOB
Meevo Location
What triggers it: An existing client is updated in Meevo.
What happens:
We update the contact in Aesthetix CRM with the latest details.
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 Client ID
Meevo DOB
Meevo Email Opt In
Meevo Location
What triggers it: The meevo-create tag is added to a contact in Aesthetix CRM, either manually or by an automation.
What happens:
The tag starts a workflow in AX Connect.
Before creating the client, we search Meevo for clients with the same last name and compare their email and phone number. If a match is found, we skip creation to avoid a duplicate.
If there is no match, we create the client in Meevo.
Required fields in Aesthetix CRM:
First Name
Last Name
Phone
Optional fields (sent if filled in):
Date of Birth
Address
Gender
Recommendation: If you plan to use two-way client creation, reduce your Meevo client creation requirements to first name, last name, email and phone. You control these requirements inside your Meevo account. Meevo also rejects a country code at the start of a phone number, so we remove it before sending.
The integration syncs each client's email marketing preference from Meevo to Aesthetix CRM using the Meevo Email Opt In field. It is updated on bookings, check-outs, sales and client updates.
A dedicated Opt-Out Sync workflow in Aesthetix CRM watches this field and updates the contact's email DND (Do Not Disturb) setting to match. If a client opts out of marketing email in Meevo, they are opted out in Aesthetix CRM too.
Limitation: SMS preferences are not synced. The integration does not currently bring SMS opt-in status over from Meevo. Patients who reply STOP to a text from Aesthetix CRM are opted out automatically, but an SMS opt-out recorded only in Meevo will not reach the CRM.
Limitation: Preferences sync one way only. Preferences sync from Meevo to Aesthetix CRM. Opt-outs made in Aesthetix CRM are not sent back to Meevo.
The platform's native Date of Birth field is not available through the API. To work around this, we bring the birthday from Meevo into a custom field called Meevo DOB.
A dedicated Birthday workflow runs every time Meevo DOB is updated and copies the value into the native Date of Birth field. This means any birthday automations you have built in the CRM work with 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 changing them could break the integration. The locked workflows are:
Meevo Appointment Created
Meevo Appointment Completed
EMR - Meevo - Cancel / 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. We can unlock specific workflows or help you build triggers off the tags and fields these workflows set.
All Meevo-specific fields are in a Meevo folder within your custom fields.
Custom Field Name | Type | Custom Value |
|---|---|---|
Meevo Client ID | Text |
|
Meevo DOB | Date |
|
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 |
|
Note: Your account also has Meevo SMS Opt In and Meevo Anniversary Date fields in the Meevo folder. The integration does not currently fill them in, so they will be blank or out of date. Don't build automations on them.
Note: Meevo Appt Category holds the category name exactly as it is set up in Meevo. Meevo is not part of the Appointment Categorization sheet used for some other EMRs, and this field does not move contacts through the surgical pipeline.
The integration also updates these standard Aesthetix CRM fields. For how the visit fields work across EMR integrations, see Understanding Next Visit & Last Visit Fields in EMR Integrations.
Next Visit Date (on appointment created and rebooked)
Next Visit Service (on appointment created and rebooked)
Last Visit Date (on appointment completed)
Last Visit Service (on appointment completed)
Invoice Paid Amount (on sales)
Patient Lifetime Value (on sales)
Contact Type
First Name, Last Name, Email, Phone
Address information (on client updates, if available)
Membership Tracking: Membership charges already count toward Patient Lifetime Value. Next, we plan to capture membership status from Meevo to enable automated membership tags and membership-specific 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.
Cancellations, no-shows, rebooks and sales arrive within about an hour. Bookings, check-outs and client changes arrive within moments. Changes made between midnight and 7 am Eastern arrive the next morning.
Each sale is counted once. Edits and refunds send only the difference, and voids send a negative amount, so Patient Lifetime Value stays accurate.
Patient Lifetime Value starts at go-live. Sales from before the integration went live are not included.
The EMR Appointments calendar is one-way. It mirrors Meevo. Changes made on it in Aesthetix CRM are not sent to Meevo, and appointments booked before go-live are not on it.
Clients without a valid email or phone are not sent. Placeholder emails and fake numbers are dropped.
Only email preferences sync, and only one way. SMS opt-ins are not synced from Meevo, and opt-outs made in the CRM are not sent back to Meevo.
Birthday requires a workaround. The native Date of Birth field is not available through the API, so we use the Meevo DOB field and a sync workflow.
Two-way client creation checks for duplicates. Before creating a client in Meevo, we check for an existing client with the same last name and a matching email or phone.
How do I know if the integration received an appointment?
Check the contact's Notes tab. Bookings add a green note, completed appointments add a blue note, and cancellations and no-shows add a plain note that starts with "Appt Status". You can also check the location's EMR Appointments calendar. If there's no note, check that the Meevo client has a valid email or phone number. Clients with neither are not sent.
How quickly do cancellations and no-shows show up?
Within about an hour. They are picked up by our hourly sync, which runs from about 7 am to midnight Eastern. A cancellation made overnight shows up the next morning.
Why didn't a cancellation move the opportunity?
The EMR - Meevo - Cancel / No Show workflow only moves an opportunity the contact already has. If the contact has no opportunity, the note is still added but nothing moves. If the patient has since rebooked or completed a visit, their opportunity will reflect that newer event.
What happens when an appointment is rebooked?
The contact's Next Visit Date and Next Visit Service are updated with the new appointment, they move back to the Booked stage, and a new booking note is added. On the EMR Appointments calendar, the old event is closed and the new one is created.
Why is a patient's Patient Lifetime Value lower than I expect?
Patient Lifetime Value only counts sales completed since your integration went live. Meevo does not provide a lifetime spend total, so earlier sales are not included. Refunds and voids also reduce the value.
Why did a sale not update the CRM?
A sale is only sent once it is completed. Open and on-hold sales wait until they are completed, and sales dated before your go-live date are never counted. A sale that has already been fully counted is not sent again.
Why do I see a negative Invoice Paid Amount?
That sale was refunded, voided or edited down in Meevo. The integration sends the difference so Patient Lifetime Value stays correct.
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. A contact is only moved to Patient when an appointment is completed (checked out), so the pipeline reflects completed visits, not just payments.
What do the different note colors mean?
Green notes are bookings (including rebooks), blue notes are completed appointments, and orange notes are completed sales. Cancellations and no-shows add a plain, uncolored note that starts with "Appt Status: Cancelled" or "Appt Status: No Show". This makes it easy to scan a contact's integration history at a glance.
Will my appointment workflows run for Meevo appointments?
Workflows using the Appointment Status trigger without an "In Calendar" filter will, because Meevo appointments are now on a CRM calendar. Add an In Calendar filter to any workflow that should only run for your other calendars. Workflows using Customer Booked Appointment are not affected.
Can I book appointments on the EMR Appointments calendar?
No. The EMR Appointments calendar mirrors Meevo and does not send anything back. Book and change appointments in Meevo, and the calendar will update.
Can I build custom automations off the integration?
Yes. You can use the tags our workflows add (Appointment Booked, Patient) as triggers for your own workflows, or trigger automations off custom field changes. If you need a locked workflow unlocked, contact us.
Why didn't a client get created in Meevo after I added the meevo-create tag?
Before creating a client, we check Meevo for an existing client with the same last name and a matching email or phone. If one exists, creation is skipped to prevent a duplicate. Also make sure all four required fields are filled in: first name, last name, email and phone. If your Meevo account requires other fields (such as gender or referral source), creation will fail until those requirements are reduced.
How does the opt-out sync work?
Every time we receive a booking, check-out, sale or client update from Meevo, we bring over the client's email marketing preference. The Opt-Out Sync workflow updates the email DND setting in Aesthetix CRM to match. SMS preferences are not synced from Meevo, and changes made in the CRM are not sent back.
If you have questions about your Meevo integration, contact our support team from inside Aesthetix CRM. If you need custom automation built on top of the integration, submit a Custom Build Request and we'll scope it with you.