company logo

Help Center

Go to Aesthetix CRM
Terms & ConditionsPrivacy Policy
All collectionsIntegrationsModMedOverview of ModMed Integration with Aesthetix CRM

Overview of ModMed Integration with Aesthetix CRM

Learn more about the fields, workflows, triggers, and actions available in the ModMed integration.

Integration Benefits & Automation

  • Opportunity & pipeline automation to decrease manual data entry and drive reporting efficiency

  • Supports multiple pipelines to automate updating opportunities in surgical and non-surgical pipelines

  • 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

  • Two-way sync to create patients in ModMed from Aesthetix CRM

  • Multi-location support with location-level routing


Platform Connection Requirements

  • ModMed integration requires ModMed API access, which starts at $25 per provider paid directly to ModMed, plus a $149/month integration fee paid to Aesthetix CRM.

  • Clients will be required to provide all appointment types in a spreadsheet for Aesthetix CRM to properly set up the appointment categorization (see Appointment Categorization section below).


Requesting the Integration

The customer will need to submit a request to [email protected] for the Aesthetix CRM integration. The ModMed Practice Solutions team will manage the enablement process and provide the customer with instructions for generating API credentials, which they must then share with Aesthetix CRM for implementation.

Required credentials you must send to Aesthetix CRM:

  • Prefix URL for your practice

  • FHIR Username

  • FHIR Password

Aesthetix CRM will generate a unique API key for your account via ModMed Developer Support.


How the Integration Works

Unlike webhook-based integrations (such as Zenoti or PatientNow Pro), the ModMed integration is a polling integration. This means that every 5 minutes, we hit the ModMed API to check for modified changes to appointments, patients, and charges. When we detect a change (for example, an appointment status moving to "checked out"), we pull that data in and process it through our workflows.

Because this is polling-based rather than webhook-based, updates typically appear in Aesthetix CRM within 5 minutes of the action being taken in ModMed.

For multi-location practices, we pull location data from the ModMed API and map it to a ModMed Location custom field, ensuring contacts are properly attributed to the correct location.


Polling Triggers & Workflow Details

1. New Appointment -- Pending & Confirmed Statuses

What triggers it: An appointment is created or moves to a Pending or Confirmed status in ModMed (detected every 5 minutes via polling).

What happens:

  • We detect the modified appointment and pull the patient ID, provider ID, and location ID.

  • We make a GET Patient request to pull full patient data.

  • We format the email, phone number, and appointment date for our system.

  • We make a GET Location request to pull location details (critical for multi-location practices).

  • We make a GET Provider request to pull the provider name associated with the appointment.

  • For plastic surgery practices: We run appointment categorization to classify the appointment type into the correct category, which determines the pipeline and stage (see Appointment Categorization section below).

  • We create or update the contact in Aesthetix CRM and add them to the ModMed Appointments and Pipeline Update workflow.

Fields updated in Aesthetix CRM:

  • First Name, Last Name, Email, Phone

  • Next Visit Date

  • Next Visit Service

  • Appointment Category (for plastic surgery practices)

  • ModMed Appointment Date

  • ModMed Appointment Description

  • ModMed Appointment ID

  • ModMed Appointment Status

  • ModMed Appointment Type

  • ModMed Location

  • ModMed Patient ID

  • ModMed Provider

Workflow actions in Aesthetix CRM:

  • A contact note is added with appointment details. This is your audit trail for troubleshooting -- you can see which appointments came into the system and in what order.

  • The contact is routed through the Appointments and Pipeline Update workflow based on their appointment category and status (see Pipeline Logic section below).

Important: Next Visit Date uses a date-only format (e.g., 3/12/2026). We do not currently support time-based dates.


2. Appointment Status -- Fulfilled & Checked Out

What triggers it: An appointment status changes to Fulfilled or Checked Out in ModMed (detected every 5 minutes via polling).

What happens:

  • The workflow is identical to the Pending & Confirmed flow in terms of data collection and appointment categorization.

  • The key difference is which date fields are updated: instead of Next Visit Date and Next Visit Service, we update Last Visit Date and Last Visit Service -- since this is a completed appointment.

  • We also update the ModMed Birthday field at checkout.

  • The contact is added to the same ModMed Appointments and Pipeline Update workflow for pipeline movement.

Additional fields updated (compared to Pending/Confirmed):

  • Last Visit Date (instead of Next Visit Date)

  • Last Visit Service (instead of Next Visit Service)

  • ModMed Birthday


3. Appointment Status -- Cancelled & No-Show

What triggers it: An appointment status changes to Cancelled or No-Show in ModMed (detected every 5 minutes via polling).

What happens:

  • The workflow follows the same pattern as the other appointment status workflows.

  • The contact is added to the ModMed Appointments and Pipeline Update workflow, where they are routed to the Cancelled/No-Show stage of the appropriate pipeline.


4. Patient Created or Updated

What triggers it: A new patient is created or an existing patient is updated in ModMed (detected every 5 minutes via polling).

What happens:

  • We detect the change and create or update the contact in Aesthetix CRM.

  • No workflow is triggered -- this simply keeps the contact record in sync.

Fields updated in Aesthetix CRM:

  • First Name, Last Name, Email, Phone

  • Address information

  • ModMed Patient ID

This is a simple sync to keep patient demographics current between ModMed and Aesthetix CRM.


5. Patient Charges Created

What triggers it: A patient charge with a status of "charged" is created in ModMed (detected every 5 minutes via polling).

Fields updated in Aesthetix CRM:

  • ModMed Charge Type

  • ModMed Transaction ID

⚠ Known Limitation -- No Payment Data: The charge data available through ModMed's API is not actual payment data. Because of this, most customers do not actively utilize this trigger for Patient Lifetime Value tracking. ModMed has indicated that a Payments API is in beta and has been for some time. Once the Payments API rolls out (hopefully in 2026), we will be able to bring in actual payment data, complete the Patient Lifetime Value tracking, and significantly deepen this integration.

What this means for you: Unlike our Zenoti or PatientNow Pro integrations, the ModMed integration currently cannot automatically track Patient Lifetime Value or update opportunity values based on payments. If accurate revenue attribution is critical, we recommend discussing supplementary reporting options with your Aesthetix CRM team.


6. Create Patient in ModMed (Two-Way Sync)

What triggers it: A tag called ModMed-Create is added to a contact in Aesthetix CRM (either manually or via automation).

What happens:

  • The tag triggers a workflow in AX Connect that sends a create patient request to the ModMed API.

  • The patient is created in ModMed.

Required fields in Aesthetix CRM:

To successfully create a patient in ModMed, the contact must have all six of the following fields populated:

  • First Name

  • Last Name

  • Email

  • Phone Number

  • Gender

  • Date of Birth (Birthday)

Note: ModMed may allow you to customize which fields are required on their side. Check with ModMed support if you need to adjust the requirements. However, all six fields listed above are required by our integration workflow by default.


Appointment Categorization & Pipeline Logic

For plastic surgery practices (and any practice using dual pipelines), the integration uses appointment categorization to route contacts to the correct pipeline and stage. This is critical to the integration working properly.

Setup Process

During integration setup, we pull all of your appointment types from the ModMed API and provide them to you in a Google Sheet. We do some initial categorization, but you must review and confirm every mapping before we finalize the integration. This step is critical -- incorrect categorization is the most common cause of contacts moving to the wrong pipeline stage.

Each appointment type is mapped to one of these appointment categories:

  • Surgical Consult

  • Surgical Appointment

  • Non-Surgical Consult

  • Non-Surgical Appointment

  • Pre-Op Appointment (no pipeline updates)

  • Post-Op Appointment (no pipeline updates)

  • Blocked (no pipeline updates)

Important: If you add new appointment types in ModMed after the initial setup, contact us to get them categorized. Uncategorized appointment types may not route correctly.

Pipeline Movement

Surgical Pipeline:

Appointment Category

Status

Pipeline Stage

Surgical Consult

Pending / Confirmed

Consult Booked

Surgical Consult

Fulfilled / Checked Out

Consult Complete

Surgical Consult

Cancelled / No-Show

Cancelled / No-Show

Surgical Appointment

Pending / Confirmed

Surgery Scheduled

Surgical Appointment

Fulfilled / Checked Out

Surgery Complete

Surgical Appointment

Cancelled / No-Show

Cancelled / No-Show


Non-Surgical Pipeline:

Appointment Category

Status

Pipeline Stage

Non-Surgical Consult

Pending / Confirmed

Booked

Non-Surgical Consult

Fulfilled / Checked Out

Patient

Non-Surgical Consult

Cancelled / No-Show

Cancelled / No-Show

Non-Surgical Appointment

Pending / Confirmed

Booked

Non-Surgical Appointment

Fulfilled / Checked Out

Patient

Non-Surgical Appointment

Cancelled / No-Show

Cancelled / No-Show

Patient vs. Lead Logic

The workflow also checks whether a contact is a lead or an existing patient:

  • Existing patients maintain a single "won" status throughout the pipeline as they move between stages.

  • New leads keep an open status until they check out, at which point they're moved to the appropriate completed/patient stage.

Troubleshooting Pipeline Issues

If a contact is in the wrong pipeline stage, check:

  1. Contact Notes -- review the audit trail to see which appointments came in and in what order. Sometimes a cancellation is processed after a new booking, causing the contact to move backward.

  2. Appointment Category -- verify the appointment type is mapped to the correct category. Incorrect categorization is the #1 cause of pipeline issues.

  3. Appointment Status -- confirm the status in ModMed matches what you expect.


Birthday Field Sync

Aesthetix CRM does not currently expose the native Date of Birth field via API. To work around this, we create a custom field called ModMed Birthday and bring in the birthday data from ModMed into that field.

A dedicated Birthday workflow then copies the value from the ModMed Birthday 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 ModMed.

The Birthday workflow is triggered when a contact's appointment reaches the Fulfilled/Checked Out status.


Hidden / Locked Workflows

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:

  • ModMed Appointments and Pipeline Update

  • ModMed 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.


Contact & Opportunity Custom Fields

All ModMed-specific fields are organized in a ModMed folder within your custom fields.

Custom Field Name

Type

Custom Value

ModMed Appt Status

Text

{{ contact.modmed_appt_status }}

ModMed Appt Date

Date

{{ contact.modmed_appt_date }}

ModMed Appt Type

Text

{{ contact.modmed_appt_type }}

ModMed Appt Description

Text

{{ contact.modmed_appt_description }}

ModMed Appt ID

Text

{{ contact.modmed_appt_id }}

ModMed Birthday

Date

{{ contact.modmed_birthday }}

ModMed Location

Text

{{ contact.modmed_location }}

ModMed Provider

Text

{{ contact.modmed_provider }}

ModMed Patient ID

Text

{{ contact.modmed_patient_id }}

ModMed Charge Type

Text

{{ contact.modmed_charge_type }}

ModMed Transaction ID

Text

{{ contact.modmed_transaction_id }}

In addition to the ModMed-specific fields above, the integration also updates these standard Aesthetix CRM fields:

  • Next Visit Date (on pending/confirmed appointments)

  • Next Visit Service (on pending/confirmed appointments)

  • Last Visit Date (on fulfilled/checked-out appointments)

  • Last Visit Service (on fulfilled/checked-out appointments)

  • Appointment Category (for plastic surgery practices)

  • First Name, Last Name, Email, Phone

  • Address information


Important Notes & Limitations

  1. This is a polling integration, not webhook-based. Updates appear in Aesthetix CRM within approximately 5 minutes of the action in ModMed, rather than the near-instant updates seen with webhook-based integrations.

  2. Payment data is not currently available. ModMed's Payments API is in beta. Until it launches, we cannot track Patient Lifetime Value or update opportunity values based on actual payments. The Patient Charges trigger brings in charge data (not payment data), and most customers do not actively use it.

  3. Appointment categorization is critical. Incorrect categorization is the most common cause of pipeline issues. Review the Google Sheet we provide during setup carefully, and contact us whenever you add new appointment types in ModMed.

  4. Next Visit Date is date-only. We cannot store appointment times -- only the date (e.g., 3/12/2026).

  5. Birthday requires a workaround. GoHighLevel's native Date of Birth field isn't accessible via API, so we use the ModMed Birthday custom field and a sync workflow to keep them aligned. Birthday data is updated when an appointment is fulfilled/checked out.

  6. Two-way sync requires six fields. To create a patient in ModMed from Aesthetix CRM, the contact must have first name, last name, email, phone, gender, and date of birth populated before the ModMed-Create tag is applied.


FAQ

Q: How do I know if the integration received an appointment? Check the contact's Notes tab. Every appointment event generates a note with the appointment details. If there's no note, we didn't receive the event. Since this is a polling integration, allow up to 5 minutes for the data to appear.

Q: Why is a contact in the wrong pipeline stage? The most common cause is incorrect appointment categorization. Check the contact's notes to see the appointment audit trail, then verify the appointment type is mapped to the correct category. Also check whether a cancellation was processed after a new booking -- this can cause a contact to appear to move backward.

Q: Why can't I see Patient Lifetime Value updating? ModMed's Payments API is currently in beta. Until it's available, we cannot track actual payment data. The Patient Charges trigger brings in charge information but not payment amounts.

Q: Why didn't a patient get created in ModMed after I added the ModMed-Create tag? Verify that all six required fields are populated: first name, last name, email, phone, gender, and date of birth. If any are missing, the creation will fail.

Q: How often does the integration sync? Every 5 minutes. This is a polling integration, so there is a short delay compared to webhook-based integrations.

Q: I added new appointment types in ModMed. What do I need to do? Contact Aesthetix CRM support so we can pull the new appointment types and add them to your categorization mapping. Until they're categorized, new appointment types may not route contacts to the correct pipeline stage.

Q: How does multi-location work? We pull location data from the ModMed API via a GET Location request and map it to the ModMed Location custom field. This ensures contacts are attributed to the correct location.

Did this answer your question?
šŸ˜ž
😐
😁