Fahad Hussain CRM & Automation Specialist

Integrations

How to Connect WPForms to GoHighLevel Using Webhooks

WordPress website form sending lead data through a webhook into a GoHighLevel CRM workflow on a laptop screen

Quick Answer: To connect WPForms to GoHighLevel using webhooks, build your form, enable the Webhooks addon under Settings » Webhooks, and paste in the webhook URL from a GoHighLevel Inbound Webhook trigger. Set the method to POST and the format to JSON, map your name, email, and phone fields, then send a test submission so GoHighLevel can learn the payload.

Key Takeaways

  • WPForms sends the form data; a GoHighLevel workflow with an Inbound Webhook trigger receives it.
  • The WPForms Webhooks addon needs an Elite license. GoHighLevel’s Inbound Webhook gives 100 free executions per sub-account.
  • GoHighLevel accepts JSON only, and field keys must be single words in camelCase or snake_case, with no spaces.
  • Send a real test submission and select it as the mapping reference before publishing, or your fields will not map.

Your WordPress website already collects leads through WPForms, but they sit in your dashboard until someone copies them into GoHighLevel by hand. With webhooks, every submission lands in your CRM within seconds, ready for automated follow-up.

What Do You Need Before You Connect WPForms to GoHighLevel?

You need WPForms installed on your WordPress site, an active GoHighLevel sub-account, and admin access to both accounts. The Webhooks addon requires an Elite license, so check your license level before you start, and make sure your form collects a name, email, and phone.

Get these three things ready before you start:

  1. WPForms with the Webhooks addon. Included with an Elite license; install it from WPForms » Addons.
  2. A form with the fields you need. At minimum, name, email, and phone. GoHighLevel needs an email or a phone number to create or update a contact.
  3. A plan for what happens after the lead arrives. Decide now whether the workflow should create the contact, add a tag, or send a confirmation text.

No Elite license? You can still connect the tools through Zapier or Make, as I covered in my guide to connecting Typeform to GoHighLevel using Make.

How Do You Create the Inbound Webhook Trigger in GoHighLevel?

Start on the GoHighLevel side, because WPForms needs the webhook URL that GoHighLevel generates for your workflow. The Inbound Webhook trigger is what listens for form submissions and starts the workflow, so create it first and copy the URL before anything else.

  1. In GoHighLevel, open Automations, then Workflows, and create a new workflow. Name it clearly, such as “Website Form – WPForms Leads”.
  2. Add the Inbound Webhook trigger. It is a premium trigger, so it must be enabled for your agency and sub-account first.
  3. Copy the webhook URL GoHighLevel shows you. Keep this tab open; you will paste this URL into WPForms next.
  4. Do not save the trigger yet. GoHighLevel first needs to see a real request before it knows what your data looks like, so mapping comes after your first test.

Each sub-account gets 100 free executions, then $0.01 per execution unless your agency has a Workflow Pro plan.

How Do You Set Up the Webhook in WPForms?

With the GoHighLevel webhook URL copied, switch to WordPress and set up the sending side of the connection. The whole setup takes about five minutes once your form exists, and every setting lives under Settings, then Webhooks, so you will not need any code.

  1. Open your form in the WPForms builder and go to Settings » Webhooks.
  2. Toggle Enable Webhooks on. Name the connection “GoHighLevel Leads” with the pencil icon.
  3. Paste the GoHighLevel webhook URL into the Request URL field. Check for extra spaces.
  4. Set the Request Method to POST.
  5. Set the Request Format to JSON. GoHighLevel only accepts JSON, so the FORM format will not work here.
  6. Leave the Secret field blank. GoHighLevel’s trigger does not check a signature.
  7. Save the form. The webhook is configured, but the fields still need mapping.

One security point: the Inbound Webhook trigger checks nothing about who calls it, so never post the URL publicly. If it leaks, delete the trigger and create a new one.

How Do You Map Your Form Fields to GoHighLevel?

Mapping tells GoHighLevel which form data goes into which contact field, so the workflow knows what to do with each value. Keys must be single words in camelCase or snake_case, with no spaces, or GoHighLevel will not read them correctly.

In the WPForms webhook settings, under Request Body, add one row per field:

  • firstName → your form’s First Name field
  • lastName → your form’s Last Name field
  • email → your form’s Email field
  • phone → your form’s Phone field
  • message → your form’s Message or Comments field
  • source → a fixed value such as “website-contact-form”

Only mapped fields are sent, so keep the payload small: send the fields your follow-up actually uses.

Back in GoHighLevel, after a test submission, click Test Trigger and pick that request as your mapping reference. Then add a Create/Update Contact action and map each incoming value to the matching contact field. GoHighLevel needs an email or a phone number to find or create the contact.

How Do You Test the Connection Before Going Live?

Never trust a webhook setup until a real submission has traveled the whole path, from the form on your website to a contact in GoHighLevel. Testing takes about five minutes, catches almost every mistake, and gives GoHighLevel the sample data it needs.

  1. Submit the live form yourself with your own test email and phone, using a recognizable name such as “Test Lead”.
  2. Check the entry in WPForms » Entries.
  3. In GoHighLevel, open the workflow trigger and click Test Trigger. Select your test request as the mapping reference and save.
  4. Confirm the contact was created in GoHighLevel with the right details.
  5. Submit a second test and confirm the follow-up runs.
  6. Publish the workflow. A workflow in draft mode will not run, and neither will its webhook trigger.

If nothing arrives, check the Request URL, the JSON format, and whether the workflow is published.

What Does a Working Setup Look Like in Practice?

A small dental clinic in Dallas gets most of its new patients from a “Request an Appointment” form on its website. Before the webhook, the front desk checked WPForms entries twice a day and typed each patient into GoHighLevel by hand, so afternoon submissions waited until the next morning.

Now the form sends every submission straight to GoHighLevel. The workflow creates the contact, tags it “website-appointment”, and sends an automatic text within a minute: “Thanks for reaching out! We will call you within one business hour.”

What Mistakes Should You Avoid When Connecting WPForms to GoHighLevel?

Most webhook setups fail on small, avoidable details, and the same few mistakes show up again and again. Run through this list before you publish and check each one, because fixing one now beats debugging a live form that drops leads.

  • Using spaces in field keys. GoHighLevel only accepts single-word keys in camelCase or snake_case, so “first name” breaks the mapping while “firstName” works.
  • Choosing the FORM format instead of JSON. GoHighLevel accepts JSON only.
  • Skipping the mapping reference. Until you send a test and select it, the workflow cannot see your fields.
  • Leaving the workflow in draft. An unpublished workflow never runs, even when the webhook receives data.
  • Forgetting the email or phone field. Without one of them, GoHighLevel cannot create or find the contact.

Frequently Asked Questions

Do I need a paid WPForms plan to use webhooks?

Yes, it needs the WPForms Elite license. Without it, use Zapier or Make as a middleman.

Is the GoHighLevel Inbound Webhook trigger free?

Partly. Each sub-account gets 100 free executions, then $0.01 each unless the agency has a Workflow Pro plan.

Can WPForms send data to GoHighLevel without Zapier or Make?

Yes, the Webhooks addon sends submissions directly to a GoHighLevel Inbound Webhook trigger.

What happens if the webhook fails?

The entry still saves in WordPress, so the lead is not lost. Check the webhook URL, the JSON format, and whether the workflow is published, then resubmit a test.

Can I send different forms to different GoHighLevel workflows?

Yes. Create one trigger per workflow, then add a webhook connection in each form with that workflow’s URL.

Does the webhook work with conditional logic?

Yes. Enable conditional logic in the webhook settings to fire it only when a condition is met, such as when the visitor selects a specific service.

Connecting WPForms to GoHighLevel with webhooks is a one-afternoon setup: leads reach your CRM in seconds, follow-up starts automatically, and nothing waits for someone to copy and paste. Once leads are flowing in, my guide to lead follow-up automation in GoHighLevel shows how to follow up automatically.

If you want help connecting your website forms, CRM, and follow-up into one system, book a free consultation and I will map out the setup for your business. You can also see the tools I work with on my GoHighLevel portfolio page.

Sources: WPForms: Webhooks Addon documentation; GoHighLevel Help: How to use the Inbound Webhook Workflow Premium Trigger. Author: Muhammad Fahad Hussain, CRM & Automation Specialist.

Next_Step

Need a system like these?

Tell me what you want to automate and I will map out the workflow with you.