Work through this guide when something in ModMed did not reach Aesthetix CRM, or reached it and looks wrong. For how the integration works end to end, see Overview of ModMed Integration with Aesthetix CRM.
Before anything else, open the contact in Aesthetix CRM and click Notes.
Every appointment change the integration sends is logged as a note on the contact, with the appointment status, type, description, date, ModMed appointment ID and the category it was assigned. This is the fastest way to tell whether Aesthetix CRM received the update.
You see a note: Aesthetix CRM received the update. Keep reading to find out why something still looks wrong.
No note at all: Aesthetix CRM never received the update. Start from the sections below.
The integration checks ModMed every 5 minutes, so changes are not instant. Updates usually appear within about 5 minutes. A few things add time:
Several changes for one patient. When one patient has more than one change in the same check (for example a checkout and a new booking), the changes are sent about 60 seconds apart, in the order that keeps the pipeline correct.
ModMed's nightly maintenance window. ModMed's API is unavailable for about 15 minutes every night, around 1 AM Pacific. Changes made during that window come through on the next successful check. Nothing is lost.
Very high appointment volume. At practices with very high daily volume the sync can run behind on busy weekday mornings and catch up later in the day.
Wait 10 minutes before assuming something did not sync.
The integration only sends a change when something that matters changed: the appointment's status, date or time, provider, appointment type, or description. Re-saving an appointment in ModMed without changing any of those does not send the contact through your workflows again, so no new note is expected.
Statuses the integration does not use (for example an appointment entered in error) are never sent.
Wait 10 minutes first. If the appointment was booked moments ago, check again shortly.
The appointment type may not be categorized yet. Every ModMed appointment type is mapped to a category that decides the pipeline and stage. A type added in ModMed after your integration went live may not be categorized yet, and an appointment with no category is not routed.
Find the exact appointment type name as it appears in ModMed.
Send it to Aesthetix CRM support.
We add it to your category list, and appointments of that type route correctly from then on.
The patient has no valid email or phone number in ModMed. Placeholder and malformed email addresses and invalid phone numbers are not written to a contact. If a patient has neither a valid email nor a valid phone number, the change is not written to Aesthetix CRM at all. Fix the patient's contact details in ModMed and the next change comes through.
Many contacts are affected, not just one. Contact support right away with the date the problem started and a few example patient names.
The appointment type is mapped to the wrong category. This is the most common cause. The note shows the appointment type that came in and the category the integration assigned. If the category is wrong, that is your answer. Send support the appointment type and the correct category. Do not edit the integration workflows yourself: they are locked to protect the integration.
The appointment is Pre-Op, Post-Op or Block. These three categories deliberately do not move opportunities. No stage change is expected. Pre-Op and Post-Op appointments can still be shown on the EMR Appointments calendar for practices that choose this.
It was a reschedule. When a patient's appointment is cancelled and a new appointment is booked for the same patient, the integration treats it as a reschedule and sends only the new booking, so the contact does not drop to Cancelled / No-Show. The contact sits on the new booking's stage, which can look like nothing happened.
The patient was checked in, not checked out. A check-in (or arrival) counts as a show, so Last Visit and the completed stage can update as soon as the patient is checked in, before the visit is marked Fulfilled.
The contact's type is Patient, so the opportunity shows as won. Existing patients keep a won status at every stage so their revenue stays attributed in your reports. The stage still moves; only the status looks unexpected.
There is no opportunity on the contact. The integration creates or updates one opportunity per contact. Contacts whose type is still Lead get an opportunity with an open status.
The events arrived out of order. An opportunity can move backward between stages when ModMed sends changes out of order, for example a late cancellation arriving after a new booking. Check the notes to see what came in and when, then contact support to correct the stage. When your team reschedules, cancel or delete the old appointment first and then book the new one.
Surgical Pipeline:
Appointment Category | ModMed Status | Pipeline Stage |
|---|---|---|
Surgical Consult | Pending / Booked | Consult Booked |
Surgical Consult | Checked In / Fulfilled / Checked Out | Consult Complete |
Surgical Consult | Cancelled / No-Show | Cancelled / No-Show |
Surgical Appointment | Pending / Booked | Surgery Scheduled |
Surgical Appointment | Checked In / Fulfilled / Checked Out | Surgery Complete |
Surgical Appointment | Cancelled / No-Show | Cancelled / No-Show |
Non-Surgical Pipeline:
Appointment Category | ModMed Status | Pipeline Stage |
|---|---|---|
Non-Surgical Consult | Pending / Booked | Booked |
Non-Surgical Consult | Checked In / Fulfilled / Checked Out | Patient |
Non-Surgical Appointment | Pending / Booked | Booked |
Non-Surgical Appointment | Checked In / Fulfilled / Checked Out | Patient |
Non-Surgical Consult / Appointment | Cancelled / No-Show | Cancelled / No-Show |
Pre-Op, Post-Op and Block appointments do not move the pipeline. Cancelled and no-show appointments share one stage per pipeline.
Here is when each field updates:
Next Visit Date and Next Visit Service show the patient's soonest upcoming booking in ModMed at the time of the change, which is not always the appointment that just changed.
Last Visit Date and Last Visit Service update when an appointment is checked in, arrived, Fulfilled or Checked Out.
Next Visit is cleared when the patient has no other upcoming booking in ModMed, including after a cancellation or no-show.
If a field did not update:
Check the Notes tab to confirm the appointment change came through.
Confirm the status in ModMed is the one you expect. An appointment that happened but was never checked in or marked Fulfilled or Checked Out does not update Last Visit Date.
Check whether the patient has a sooner upcoming appointment in ModMed, which is the one Next Visit shows.
If the note is there but the field is still blank, contact support with a screenshot of the note.
These fields store the date only. Appointment times are not included. See Understanding Next Visit & Last Visit Fields in EMR Integrations.
The Patient Charges sync is switched off for all ModMed practices. The charge data available through ModMed's API produced duplicate charge records in Aesthetix CRM, so we turned it off rather than send inaccurate data. This is the expected state today, not a fault at your practice.
What that means:
Patient Lifetime Value is not updated from ModMed, and opportunity values are not set from payments.
ModMed Charge Type and ModMed Transaction ID are no longer updated. Values already on a contact stay as they were.
The charge data in ModMed's API is not actual payment data. ModMed has indicated that a Payments API is in beta. Once it is available we can bring in real payment data and complete Patient Lifetime Value tracking.
We are working on a replacement that links charges to the patient's visit so each charge is counted once.
If accurate revenue attribution is critical in the meantime, talk to your Aesthetix CRM team about supplementary reporting options.
The EMR Appointments calendar is a silent mirror of your ModMed schedule, used so the CRM's appointment reports match ModMed.
The appointment is older than the calendar. The calendar went live for every ModMed practice on October 27 and 28, 2026. There was no backfill. An older future appointment appears the next time it changes in ModMed.
It was rescheduled. The original entry is marked Invalid so it does not count as a cancellation, and the new booking appears.
You are a multi-location practice looking at the wrong calendar. Each location has its own calendar, for example EMR Appointments ยท Downtown.
Do not fix it on the calendar. Edits made on the EMR Appointments calendar are replaced the next time the appointment changes in ModMed. Make the change in ModMed and the calendar follows.
ModMed appointments are real appointments on a CRM calendar, so appointment triggers can react to them.
An Appointment Status trigger with no calendar filter fires for every synced ModMed appointment, which can send patients a second reminder or follow-up.
Add an In Calendar filter so each appointment workflow only fires for the calendars it is meant for.
A Customer Booked Appointment trigger does not fire for synced appointments. That trigger is for bookings made through a booking link or widget.
The workflows we install are already limited to their own calendars. If you would like help reviewing your appointment workflows, contact support.
To create a patient in ModMed from Aesthetix CRM, fill in the required fields on the contact and then add the tag ModMed Create. The patient appears in ModMed within a few minutes.
All six fields must be filled in before you add the tag:
Field | Notes |
|---|---|
First name | Required |
Last name | Required |
Required | |
Phone number | Required |
Date of birth | Required |
Gender | Required |
Still not working? The most common cause is a missing field. Check all six, remove the tag, and apply it again.
Does ModMed require more at your practice? Some practices configure ModMed to require extra information, such as a full address, before a patient can be created. Those fields need to be filled in too. Contact support if you are not sure what your practice requires.
Patient already exists in ModMed? Search by email and phone in ModMed before assuming the sync failed.
See How to Create a Patient in ModMed From Aesthetix CRM.
ModMed birthdays arrive in a custom field called ModMed Birthday, not the native Date of Birth field, and a built-in workflow copies the value across. The ModMed Birthday field is written when an appointment is checked in, Fulfilled or Checked Out, so a patient who has only ever had booked appointments will not have a birthday yet.
If birthday automations are not firing:
Open the contact and check that ModMed Birthday has a value.
Check whether the native Date of Birth field is filled in.
Confirm the patient has had at least one appointment reach check-in, Fulfilled or Checked Out in ModMed.
If ModMed Birthday is filled in and Date of Birth is empty after a completed appointment, contact support.
The integration workflows are locked, but everything they write is available to build on.
Tags added by the integration: appt cancelled and appt noshow. Both are added on a cancellation or no-show and are not removed later, so allow for a patient who re-books afterwards.
Fields you can trigger from: Next Visit Date, Next Visit Service, Last Visit Date, Last Visit Service, Appointment Category, ModMed Appt Status, ModMed Appt Type, ModMed Appt Description, ModMed Provider, ModMed Location, ModMed Patient ID.
Contact Source: a contact created by the integration with no source is given the source ModMed Direct.
Patient Lifetime Value is not currently updated from ModMed, so do not build automations that depend on it. Need a workflow unlocked or a new appointment type categorized? Contact Aesthetix CRM support.
The ModMed integration needs API credentials from ModMed before Aesthetix CRM can connect. If nothing is syncing at all, the credentials may be missing, expired or never provided.
To request API access from ModMed:
Email [email protected], copying your Aesthetix CRM Implementation Manager, and ask for the API to be enabled for the Aesthetix CRM integration.
ModMed confirms when access is enabled and sends instructions for generating your credentials.
Share the FHIR username, FHIR password and your practice prefix URL with your Aesthetix CRM Implementation Manager.
Once credentials arrive we also work with you on your Appointment Categorization Document, which maps your ModMed appointment types to the correct pipelines and must be reviewed and approved before the integration goes live.
See Requesting API Access from ModMed for Aesthetix CRM.
What's happening | What to do |
|---|---|
No note after 10 minutes, one patient | Check the appointment type and the patient's email and phone, then contact support |
No note, several patients affected | Contact support right away with the date it started |
New appointment type not routing | Send support the exact appointment type name |
Contact in the wrong pipeline stage | Send support the appointment type and the correct category |
Contact moved backward between stages | Contact support with the contact's notes |
Patient Lifetime Value not updating | Expected: the charges sync is off for all ModMed practices |
Patient creation not working | Check all six required fields and re-apply the tag |
Patient already exists in ModMed | Search by email and phone before re-trying |
Birthday automation not running | Confirm a completed appointment exists, then contact support |
Appointment missing from the calendar | Confirm it changed in ModMed after October 27 and 28, 2026 |
A workflow fired for a synced appointment | Add an In Calendar filter, or contact support for a review |
Nothing is syncing at all | Contact support: API credentials may need to be set up |
Need to customize a locked workflow | Contact support |
How long should I wait before reporting a sync issue?
Ten minutes. The integration checks ModMed every 5 minutes, and changes usually appear within about 5 minutes.
I re-saved an appointment in ModMed and nothing happened. Is the integration broken?
No. Only a real change sends an update: the status, date or time, provider, appointment type or description.
A patient rescheduled. Why didn't they move to Cancelled / No-Show?
A cancellation followed by a new booking for the same patient is treated as a reschedule, so only the new booking is sent and the contact stays on the new appointment's stage.
The patient was checked in but not checked out, and the pipeline already moved. Why?
A check-in counts as a show, so Last Visit and the completed stage update at check-in.
Why does an existing patient show as won at Consult Booked?
Existing patients keep a won status at every stage so their revenue stays attributed in your reports. This is expected.
Why is Patient Lifetime Value empty for all of my ModMed patients?
The Patient Charges sync is off for every ModMed practice because ModMed's charge data produced duplicate records. ModMed's Payments API is in beta, and we will complete lifetime value tracking once it is available.
Why doesn't Next Visit Date match the appointment that just changed?
Next Visit shows the patient's soonest upcoming booking in ModMed at the time of the change. If they have an earlier appointment on the books, that is the one you see.
Can I fix a wrong appointment on the EMR Appointments calendar?
No. Make the change in ModMed. Edits made on the calendar are replaced the next time the appointment changes in ModMed.
Why did my reminder workflow text a patient about an EMR appointment?
An Appointment Status trigger with no calendar filter fires for synced ModMed appointments. Add an In Calendar filter to that workflow.
Contact Aesthetix CRM support through the help widget in your account or by email. For a sync issue, include the patient's name, the appointment date and ModMed appointment ID, and a screenshot of the contact's Notes tab. For custom automations built on the ModMed fields, the EMR Appointments calendar or your pipelines, submit a Custom Build Request.