List all workflows in a GoHighLevel sub-account, inspect their statuses, and identify trigger types through the GHL MCP server. This quick-start walks you through authentication, your first GET /workflows call, and verifying the response data.
Prerequisites
Before listing workflows, confirm you have the following in place:
- A GoHighLevel sub-account with at least one published workflow
- Access to Settings > Integrations > Private Integrations in the sub-account
- A REST client such as Postman, Insomnia, or
curlin your terminal - Your sub-account’s
locationId(found under Settings > Business Profile) - At least one workflow with a known name so you can verify the response
Set Up Authentication
All Workflow Lister calls require a Private Integration Token (PIT) with the workflows scope enabled.
Navigate to Settings > Integrations > Private Integrations in your sub-account. Click Create New Integration and name it something descriptive like “Workflow Reader.” Under Scopes, enable the workflows scope. This grants read access to workflow definitions, statuses, and trigger configurations.
Click Save and copy the generated token. Store it in a secure location. Every request must include the Authorization: Bearer {your-pit-token} header along with Content-Type: application/json and Version: 2021-07-28.
Set your base URL to https://services.leadconnectorhq.com. All endpoints in this guide are relative to that base.
Make Your First Call
Send a GET request to /workflows with the required locationId query parameter:
GET /workflows?locationId={your-location-id}
Authorization: Bearer {your-pit-token}
Version: 2021-07-28
This returns all workflows in the sub-account. The response includes each workflow’s id, name, status, and createdAt timestamp. Use these fields to build dashboards, audit automation coverage, or sync workflow metadata to external systems.
You can filter the list programmatically after retrieval by checking the status field for values like "draft" or "published". The API does not support server-side filtering, so pull the full list and filter client-side.
Handle the Response
A successful call returns a 200 status with an array of workflow objects:
{
"workflows": [
{
"id": "wf_abc123",
"name": "New Lead Follow-Up",
"status": "published",
"createdAt": "2026-01-15T10:30:00Z"
}
]
}
Each workflow object contains the id you need for deeper inspection or cross-referencing with other tools. The status field tells you whether the workflow is active (published) or still in development (draft).
Common error codes: 401 means your token is invalid or lacks the workflows scope. 400 indicates a missing or malformed locationId parameter. If you receive an empty array, confirm that workflows exist in the sub-account and that your PIT belongs to the correct location.
Test Your Setup
Validate your integration with these checks:
- List all workflows with
GET /workflows?locationId={id}and confirm a200response - Count the results and compare against the number of workflows visible in the GHL dashboard
- Verify a known workflow by name, confirming the
namefield matches what you see in the UI - Check statuses to ensure published workflows show
"published"and drafts show"draft" - Test with an invalid token to confirm you receive a
401, validating your error handling
Run the call twice in succession to confirm consistent results and stable authentication.
Next Steps
Read the full Workflow Lister Guide for advanced patterns including workflow auditing and automation gap analysis. From here, explore Survey Manager for managing survey configurations and Email Verification for validating contact deliverability before triggering workflow actions.