company logo

Help Center

Go to Aesthetix CRM
Terms & ConditionsPrivacy Policy
All collectionsIntegrationsModMedModMed Integration Troubleshooting Guide

ModMed Integration Troubleshooting Guide

Use this guide to diagnose and fix the most common ModMed integration issues.

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.

First step: check the Notes tab

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.


Before you troubleshoot: how long a change takes

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.

What does not send an update

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.


"The contact didn't move in the pipeline after an appointment was booked"

There's no note on the contact

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.

  1. Find the exact appointment type name as it appears in ModMed.

  2. Send it to Aesthetix CRM support.

  3. 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.

There's a note, but the pipeline didn't move

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.


Pipeline stage reference

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.


"Next Visit Date or Last Visit Date didn't update"

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:

  1. Check the Notes tab to confirm the appointment change came through.

  2. 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.

  3. Check whether the patient has a sooner upcoming appointment in ModMed, which is the one Next Visit shows.

  4. 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.


"Patient Lifetime Value isn't updating for ModMed patients"

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.


"An appointment is missing from the EMR Appointments calendar"

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.


"A workflow fired that shouldn't have"

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.


"A patient I added in Aesthetix CRM isn't showing up in ModMed"

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

Email

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.


"Birthday automations aren't running for ModMed patients"

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:

  1. Open the contact and check that ModMed Birthday has a value.

  2. Check whether the native Date of Birth field is filled in.

  3. Confirm the patient has had at least one appointment reach check-in, Fulfilled or Checked Out in ModMed.

  4. If ModMed Birthday is filled in and Date of Birth is empty after a completed appointment, contact support.


"I want to add my own automations on top of the integration"

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 integration stopped working, or was never set up"

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:

  1. Email [email protected], copying your Aesthetix CRM Implementation Manager, and ask for the API to be enabled for the Aesthetix CRM integration.

  2. ModMed confirms when access is enabled and sends instructions for generating your credentials.

  3. 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.


When to contact support

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


Frequently Asked Questions

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.


Need Help?

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.


Related articles

  • Overview of ModMed Integration with Aesthetix CRM

  • How to Create a Patient in ModMed From Aesthetix CRM

  • Requesting API Access from ModMed for Aesthetix CRM

  • Appointment Category: How It Works and Why It Matters To Your EMR Integration

  • Understanding Next Visit & Last Visit Fields in EMR Integrations

Did this answer your question?
๐Ÿ˜ž
๐Ÿ˜
๐Ÿ˜