Learn how to use the outbound Webhook action in the Workflow Builder. You'll find out how to automatically send contact data (and more) from HighLevel to external applications or services in real-time, enabling powerful custom integrations and extending your automation capabilities.
TABLE OF CONTENTS
What is a Workflow Action Webhook?
A Workflow Action Webhook is a powerful tool that acts as a messenger, sending information from HighLevel to other software applications automatically. Understand how this feature allows you to connect HighLevel with virtually any external system that can receive web requests, opening up endless possibilities for custom integrations.
An outbound webhook is an automated message sent from a HighLevel workflow to a specific destination URL. When a contact reaches the webhook step in your workflow, HighLevel gathers relevant data about that contact and the triggering event, packages it into a "payload," and sends it to the URL you provided. This allows you to trigger actions, sync data, or start processes in other applications outside of HighLevel.
Key Benefits of Using Outbound Webhooks
Webhooks can solve complex integration challenges and unlock more advanced automation strategies that are not possible with native integrations alone.
- Unlimited Integrations: Connect to thousands of third-party apps and services (like Zapier, Make, or custom-built tools) to trigger actions outside of HighLevel.
- Real-Time Data Sync: Instantly send data to external databases, spreadsheets, or analytics platforms as events happen in your workflows.
- Customized Automation: Trigger unique processes in other systems, such as sending direct mail, updating a proprietary CRM, or enrolling a user in an external course platform.
- Enhanced Reporting: Push workflow and contact data to business intelligence tools for advanced, customized reporting and dashboards.
- Ultimate Flexibility: Extend the power of HighLevel's automation by creating bespoke solutions tailored to your exact business needs.
How to Set Up and Configure a Webhook Action
Follow these instructions to ensure your webhook is set up correctly to send data to your desired destination.
1. Navigate to the Workflow Builder by going to the Automation tab in your location's main menu.
2. Either create a new workflow or select an existing one to edit.
3. Ensure your workflow has at least one trigger configured (e.g., "Contact Tag Added").
4. Click the plus icon (+) on the workflow canvas where you want to add the action. This will open the Actions panel on the right side of the screen.
5. In the 'Actions' panel search bar, type `webhook`.
6. Select the Webhook option from the list. This adds the step to your workflow and opens the 'Webhook' configuration panel.
Configuring the Webhook Details
Properly configuring your webhook is crucial for it to function correctly. This section breaks down each field in the Webhook configuration panel, explaining its purpose and how to fill it out to ensure your data is sent to the right place with the right information.
Once you add the Webhook action, the configuration panel will appear. Here's how to set it up:
- Action Name: Give your webhook a descriptive name that explains its purpose (e.g., "Send New Lead to Slack" or "Update External DB"). This helps you easily identify the step in your workflow later.
- Method: Select the HTTP method for the request. POST is the most common method for sending data and is selected by default.
- URL: Enter the unique URL of the external service that will receive the data. This is the most critical field; ensure it is copied and pasted correctly from the destination service.
Adding Custom Data
You can include additional custom information in your webhook payload.
1. Under the CUSTOM DATA section, click the + Add item button.
2. A new row with a Key and a Value field will appear.
3. Key: This is the label for the data field you are sending (e.g., `lead_source` or `product_interest`). This should be a simple text string without spaces.
4. Value: This is the data you want to send. You can use plain text or insert dynamic data using custom values (e.g., `{{contact.source}}` or `{{custom_fields.product_id}}`).
After filling in all the details, click the blue Save Action button at the bottom of the panel to save your configuration.
Understanding the Webhook Data (Payload)
The data sent by the webhook, known as the "payload," contains valuable information. Learn what data is included by default and how the workflow's trigger affects the information you receive, which is essential for correctly processing the data in your external system.
Standard Data
By default, every webhook sends a standard set of information about the contact involved in the workflow. This includes:
* Full Name, First Name, Last Name
* Email and Phone Number
* Address
* Tags
* All standard and custom fields associated with the contact
For a complete list of all standard fields included, click the **standard data** link in the configuration panel to view the official documentation.
Trigger-Dependent Data
The webhook payload can include additional data related to the specific trigger that initiated the workflow. This is a critical concept to understand.
- Example: If your workflow trigger is Appointment Booked, the webhook payload will also contain details about that specific appointment (e.g., start time, calendar ID, appointment status).
- Important: If the trigger is not related to a specific object (e.g., a "Contact Tag Added" trigger), data for other objects like appointments or opportunities will not be included in the payload. You must use the correct trigger to get the data you need.
Testing Your Webhook and Going Live
Before activating your workflow, it's critical to test the webhook to confirm it's sending data correctly. This section guides you through the testing process, how to review the results in the Execution Logs, and finally, how to publish your workflow.
You can use any of several free sites to test your webhook. https://webhook-test.com/ is a good one. Or just google for "free webhook test".
1. After saving your webhook action, click the Test Workflow button in the top-right corner of the builder.
2. The 'Run A Test For Contact' panel will open. Use the SELECT CONTACTS dropdown to choose a test contact from your system.
3. Click the blue Run Test button. This will execute the entire workflow for that contact, including firing the webhook action.
4. To verify that the test was successful, click on the Execution Logs tab.
5. Find the log entry for your test contact. You should see the Webhook action with a status of Executed. This confirms that HighLevel successfully sent the data to the URL you provided.
6. Once you have confirmed the webhook works as expected, click the Publish toggle in the top-right corner to set your workflow live and allow it to be triggered by real events.
Data Format Details
While the data for contacts as well as the sub-account (location) object will be available by default, other related objects such as appointments, tasks etc will ONLY be carried if the corresponding trigger is applied in the workflow.
For instance, date and time of appointments can only be retrieved if the workflow carries the reference of the appointment as an input trigger such as Appointment Booked. Similarly, Opportunity owner of various opportunities in the pipeline would only be available if the workflow has an Opportunity trigger such as Pipeline Changed.
{ // Contact standard fields first_name, last_name, full_name, email, phone, tags, address1, city, state, country, timezone, date_created, postal_code, company_name, website, date_of_birth, contact_source, full_address, contact_type, gclid, ... ... Contact Custom Fields ... // Location Data mostly present alawys with all webhooks, key field: location location: { name, address, city, state, country, postalCode, fullAddress, id } // Opportunity if applicable, added on root level opportunity_name, status, lead_value, opportunity_source, source, pipleline_stage, // name of pipeline stage pipeline_id, id, pipeline_name, // Campaign if applicable, field key: campaign campaign: { id, name }, // User if applicable, field key: user user: { firstName, lastName, email, phone, extension, address1, city, state, country, postalCode }, // Appointment if applicable, field key: calendar calendar: { id, // calendar id calendarName, // calendar.name, title, // appointment title selectedTimezone, // location timezone OR 'UTC' appointmentId, startTime: // startTime as per the selectedTimezone in format 'YYYY-MM-DDTHH:mm:ss' endTime: // endTime as per the selectedTimezone in format 'YYYY-MM-DDTHH:mm:ss' status, appoinmentStatus, address, notes, date_created, created_by, // user name if this is created by user created_by_user_id // user id if this is created by user created_by_meta: { // internal fields source, channel }, last_updated_by_meta: { // internal fields source, channel } }, // Two Step OrderForm if applicable, field key: order order: { ... // Dynamic data, please run the test in order to get example data }, // Invoice if applicable, field key: invoice invoice: { ... // Dynamic data, please run the test in order to get example data }, // Task if applicable, field key: task task: { title, body, dueDate: dueDate converted to UTC timezone with format 'YYYY-MM-DDTHH:mm:ss' } // Note if applicable, field key: note note: { body } // Message if applicable, field key: message message: { type, body, direction, status } // Workflow if applicable, field key: workflow workflow: { id, name } }
Frequently Asked Questions
Q: What is the difference between an outbound and an inbound webhook?
An outbound webhook (this action) sends data *from* HighLevel *to* an external service. An inbound webhook (a type of workflow trigger) receives data *from* an external service *into* HighLevel to start a workflow.
Q: How can I see the exact data that was sent in the webhook?
While the Execution Logs confirm the action was executed, they don't show the data payload itself. To see the data, you can use a free webhook testing tool like `webhook.site` by setting it as your URL during testing. Alternatively, you can check the incoming data logs of the receiving application.
Q: My webhook action shows an error in the Execution Logs. What should I do?
First, double-check that the URL in the webhook configuration is 100% correct and active. Second, ensure the receiving application is set up to accept POST requests and can handle the data format from HighLevel. Finally, check the error logs in your external application for more specific details about why the request failed.
Q: Can I send data for a specific opportunity or appointment without using that as a trigger?
No. The data payload is context-dependent. To get data for a specific object like an opportunity, the workflow must be triggered by an event related to that opportunity (e.g., "Pipeline Stage Changed"). A generic trigger like "Tag Added" will only send contact-level data.
Q: What are some popular tools to use with webhooks?
Webhooks are commonly used to send data to integration platforms like Zapier or Make (formerly Integromat), which can then connect to thousands of other apps. They are also used to send data to custom servers, Google Sheets (via a service like Zapier), or communication tools like Slack.
Q: Do I need to be a developer to use this feature?
Setting up the webhook action in HighLevel is straightforward and does not require coding. However, you will need to get a destination URL from the service you want to send data to. Understanding what that service expects to receive is helpful, but many services provide the URL and all necessary instructions for you.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article