GoHighLevel Integration
Connect GoHighLevel to sync contacts and automatically send review requests after an invoice is paid
GoHighLevel integration connects your GoHighLevel (HighLevel) sub-account to demeterrr. It supports contact and team-member sync, plus a no-code automation that sends a review request when an invoice is paid in GoHighLevel.
What It Supports
- Marketplace OAuth install (one sub-account per organization)
- Contact sync from GoHighLevel to demeterrr contacts (manual or automatic)
- User sync from GoHighLevel to demeterrr employees (manual or automatic)
- Built-in invoice-paid review automation
- Invoice-paid review automation through a GoHighLevel workflow webhook
- Disconnect and reconnect from Integrations
Connect GoHighLevel
- Go to Settings > Integrations.
- Click Connect GoHighLevel.
- Complete the marketplace install in HighLevel and pick your sub-account.
- Return to demeterrr and confirm Connected.
The install supports exactly one sub-account (location) per organization.
Sync Contacts and Team Members
Use Sync Now in the GoHighLevel card to import contacts and users on demand. Each manual sync imports up to 2,500 contacts and 2,500 users. Synced records keep their GoHighLevel IDs, so re-syncs update the same records instead of creating duplicates.
Automatic sync (optional)
Manual sync is the default. If you prefer demeterrr to stay in sync by itself, enable Auto-sync from GoHighLevel on the integration card. New and updated contacts and new team members in GoHighLevel then appear in demeterrr automatically through signed webhooks, with no button to click. You can turn it off at any time to return to manual sync.
Deletions are never synced automatically: removing a contact in GoHighLevel does not remove it from demeterrr.
Built-In Invoice-Paid Trigger
The simplest automation path once GoHighLevel is connected:
- Open Settings > Integrations and find the GoHighLevel card.
- Enable Trigger on invoice paid.
- Pick the sequence to run and an optional delay in days.
- Click Save Trigger Settings.
When an invoice is paid in your HighLevel sub-account, demeterrr receives a signed webhook and runs the sequence automatically. Each invoice triggers at most once, cooldowns and unsubscribes are respected, and no GoHighLevel workflow is needed.
Alternative: Review Request Through a GoHighLevel Workflow
If you want filtering or routing logic inside GoHighLevel (for example, only certain invoice types), you can drive the same automation from a GoHighLevel workflow instead. Once configured, your team never has to open demeterrr to request reviews.
Step 1: Prepare demeterrr
- Create a sequence with a Review Request step (see Creating Your First Sequence) and set it to Active.
- Copy the sequence ID from the sequence page URL.
- Go to Settings > API and create an API key with the
sequences:executescope. Copy the key, it is shown only once.
Step 2: Build the GoHighLevel workflow
- In GoHighLevel, go to Automation > Workflows and create a new workflow.
- Add the trigger Invoice and filter it to status Paid. (The Payment Received trigger also works if you collect payments outside invoices.)
- Add the action Custom Webhook (a HighLevel premium action) and configure it:
- Method: POST
- URL:
https://your-domain.com/api/v1/sequences/YOUR_SEQUENCE_ID/execute - Headers:
Authorization:Bearer YOUR_API_KEYContent-Type:application/json
- Body:
{
"contacts": [
{
"email": "{{contact.email}}",
"firstName": "{{contact.first_name}}",
"lastName": "{{contact.last_name}}",
"phone": "{{contact.phone}}"
}
]
}
- Save and publish the workflow.
What happens on each paid invoice
- GoHighLevel fires the workflow and posts the customer to demeterrr.
- demeterrr finds the contact by email, or creates it if new.
- The sequence runs and the review request goes out by email or SMS.
Avoiding duplicate sends
- Sequences respect the configured cooldown period, so a repeat customer is not asked again too soon.
- Unsubscribed contacts are skipped automatically.
- The endpoint supports an optional
Idempotency-Keyheader. If your workflow can pass a unique value such as the invoice number, retried webhooks will not double-send.
Manual Send From GoHighLevel
You can reuse the same workflow as a manual action: open any contact in GoHighLevel and add them to the workflow by hand. This acts as a "send review request" button inside GoHighLevel.
Troubleshooting
401 Unauthorized
The API key is missing or invalid. Check the Authorization header value.
403 Insufficient permissions
The API key is missing the sequences:execute scope. Create a new key with the correct scope.
400 SEQUENCE_INACTIVE
The sequence is paused or in draft. Set it to Active in demeterrr.
404 Not Found
The sequence ID in the webhook URL is wrong. Copy it again from the sequence page URL.
Contact skipped
The GoHighLevel contact has no email address, or is unsubscribed, or is inside the sequence cooldown window.
Disconnect GoHighLevel
- Open Settings > Integrations.
- Click Disconnect in the GoHighLevel card.
- Confirm the action.
Disconnecting stops contact sync. Workflow webhooks keep working as long as the API key stays active, because they use the public API rather than the OAuth connection.
// Related articles
QuickBooks Integration
Connect QuickBooks Online to import customers and support invoice-paid automation triggers
Zapier Integration
Connect demeterrr to Zapier for trigger-based automations and inbound actions
Creating Your First Sequence
Build and activate an automated multi-step sequence for survey and follow-up workflows
API-Triggered Sequences
Enroll contacts into sequences programmatically using the API
Was this article helpful?
Let us know if you found this article helpful or if you need more information.
Join hundreds of businesses already using demeterrr to collect feedback, boost reviews, and grow faster.
Sign Up