Welcome! This guide walks you through the process of integrating your GoHighLevel (GHL) CRM with your HealthSherpa Medicare account. This works with all GHL sub-brands too – GoGuru, DFY, AgentCRM, etc.
If you have any questions, email medicare-integrations@healthsherpa.com.
What this integration offers
With this integration in place, your workflow from GHL to quoting to enrollment is streamlined, eliminating the need for dual data entry.
Contacts from GHL automatically sync to HealthSherpa Medicare in real time – both when created and when updated.
Each GHL contact record gets a unique link into the HealthSherpa Medicare quoter, taking you directly into a quote tied to that contact record.
When you enroll, the enrollment form is pre-filled with the contact data originating from your GHL contact record.
Getting started
We’re currently onboarding agencies one-by-one. To get started:
We'll respond shortly after
We'll deliver you an API key
Before you begin
Create a HealthSherpa Medicare agency account.
Know your GHL sub-account location ID (the sub-account you want to sync).
Have a HealthSherpa Medicare agent account created for every downline agent.
⚠️ Ensure user emails match between GHL accounts and HealthSherpa Medicare accounts.
Setting up the integration
To set up the integration, watch the video above, or follow the text instructions below.
Step 1. Install the HealthSherpa Medicare for Workflows App
Log in to your HealthSherpa Medicare account
Load the GHL installation link we’ve provided. Scroll down and click next.
Enter the API key we provided.
You'll be redirected to HealthSherpa Medicare, and will see an installation successful message.
Step 2. Add required custom fields
In GHL, go to Settings > Custom Fields and create two custom fields attached to the Contacts object:
hsmedicare_contact_id → HealthSherpa Medicare Contact ID
hsmedicare_redirect_url → HealthSherpa Medicare Redirect URL
Step 3. Set up your Workflows
⚠️ Important: Make sure each contact is assigned to an agent with a HealthSherpa account and is connected to your agency. The sync will not occur if there is no agent assigned to the Contact.
⚠️ Important: If you'll be updating a contact's assigned agent over time, this will require a separate custom Workflow – see section below for how to set up a Workflow to handle that.
Create Contact Workflow
Create a new workflow with the trigger: Contact Created
Add an Assign to User step and assign the contact to your agent
Add the Create Contact V1 workflow action defined in the HealthSherpa Medicare for Workflows app
Make any edits you need to the workflow action
Add a new step Update contact field that updates the two custom fields you defined with values returned from the previous action:
hsmedicare_contact_id: HealthSherpa Medicare For Workflows > Create Contact V1 > Contact ID
hsmedicare_redirect_url: HealthSherpa Medicare For Workflows > Update Contact V1 > Redirect URL
Update Contact Workflow
Create a new workflow and define your trigger when you want to update the contact record that was previously synced over
Add the Update Contact V1 workflow action defined in the HealthSherpa Medicare for Workflows app
Make any edits you need to the workflow action
Add a new step Update contact field that updates the redirect URL custom field you defined with the value returned from the previous action:
hsmedicare_redirect_url: HealthSherpa Medicare For Workflows > Update Contact V1 > Redirect URL
Supporting contact reassignment between agents
If you use GHL in a way where contacts may be reassigned from one agent to another over time, you’ll need to add a separate Reassignment Workflow to keep your sync working as expected.
Without this workflow, when you update the agent assigned to a contact, it will fail to sync, because the contact will be tied to a original agent’s HealthSherpa account.
You'll handle for this by building a Reassignment Workflow:
Reassignment Workflow
This workflow triggers when a contact's assigned agent changes and syncs the contact to the new agent’s HealthSherpa account.
⚠️ Important: This is not a true "transfer” of the Contact record in HealthSherpa – it results in a new contact being created in HealthSherpa, in the new agent's account.
Step 1. Create a new workflow
Go to Automation > Workflows in GHL and click + Create workflow
Select Start from scratch
Set the trigger to: Contact Changed
Then apply a filter: Assigned User > Has changed
Press Save trigger
Step 2. Add conditional logic (important!)
Add a condition block immediately after the trigger:
Only continue if:
HS Medicare Contact ID
exists on the contact
This prevents the workflow from running for brand new contacts (since those should use the Create Contact workflow instead). It ensures this workflow only runs when an already-synced contact is being reassigned.
Step 3. Add the Create Contact workflow action
Under the Yes branch of your condition:
Click the + sign
Add the Create Contact V1 action from the HealthSherpa Medicare for Workflows app
Configure as needed (e.g. lead vs client, contact fields, etc.)
Step 4. Update the custom fields
Add an Update Contact Field step to set the new contact’s:
hsmedicare_contact_id
→ value returned from the Create Contact stephsmedicare_redirect_url
→ value returned from the Create Contact step
What to expect
After a contact is reassigned to a new agent, a new HealthSherpa contact is created in the new agent's HealthSherpa Medicare account.
The redirect link now points to that new contact
Old redirect links (from the previous agent) will still work – but only for that agent
Medicare applications are not transferred between agents (since they're tied to separate contact records in HealthSherpa)
Let us know at medicare-integrations@healthsherpa.com if you have any questions, or would like help configuring this.
Field Reference & Validation
Below are the contact fields HealthSherpa expects, with their rules. Any optional fields that did not pass validation will be ignored and contact creation/update will sync so long as the required fields pass validation:
Field | Required? | Rules / Format |
external_id | Required (hidden) | Auto‑populated from contact.id |
agent_email | Required (hidden) | Auto‑populated from user.email |
first_name | Required | String, 1–100 chars |
last_name | Required | String, 1–100 chars |
Optional | Must be a valid email format if present | |
phone | Optional | Must be a valid US phone number if present and E.164 format |
address_1 / address_2 | Optional | Strings, max 100 chars each |
city | Optional | String, max 100 chars |
state | Optional | Must be a valid US state (e.g., TX or Texas) |
zip | Optional | 5-digit US ZIP code (e.g., 77001) |
birth_date | Optional | Use a Date Picker field |
sex | Optional | Must be male or female if provided |
type | Optional | Must be client or lead, defaults to lead |
medicare_number | Optional | String, max 100 chars |
medicaid_number | Optional | String, max 100 chars |
medicare_part_a_effective_date | Optional | Use a Date Picker field |
medicare_part_b_effective_date | Optional | Use a Date Picker field |
medicaid_eligible | Optional | true or false |
extra_help | Optional | true or false |