GoHighLevel Form Submission Not Creating Contacts? 7 Causes and Fixes
A lead fills in your form and no new contact appears. Work out whether the form never submitted, was blocked, merged into an existing contact, or sits on a site HighLevel cannot read, then fix it step by step.
Part of the guide: GoHighLevel problems: find the fix by symptom
Key takeaways
- With Allow Duplicate Contact off, a submission whose email or phone matches an existing contact updates that contact instead of creating a new one. That looks like a form that created nothing, and it also means the Contact Created trigger does not fire for it.
- HighLevel's own forms create a contact record automatically when a new lead submits. Forms built on another site are a different path: HighLevel's External Tracking script reads only forms that exist as real HTML form elements on the page, and it does not support iframe-based forms or popup widgets without real inputs.
- Embed codes are static. HighLevel says changes to a form's layout, triggers or deactivation settings only reach your site after you copy a new embed code and replace the old one, and a deactivation rule such as Deactivate Once Lead Is Collected can stop a form from showing.
- Only contact custom fields appear in forms and contact workflows. A field created as an opportunity field cannot be switched, so a form field that never lands on the contact usually needs to be recreated as a contact field.
- The Submissions tab separates the two failure types. A submission listed there but no contact points to matching or mapping. No submission at all points to a form that is not loading, is blocked, or is not submitting.
A GoHighLevel form submission not creating contacts is the same complaint in two very different forms: either nothing was submitted at all, or something was submitted and HighLevel matched it to a record that already existed, so no new contact appeared. The fix for each is different, and one click tells you which you have.
HighLevel’s own help center says a new lead who completes a HighLevel form or survey has a contact record created automatically. So when that does not happen, one of seven things is usually in the way, ranked below by how often HighLevel’s documentation points to them and how often builders report them. HighLevel publishes no failure statistics, so the order is a judgment. Everything here was checked against HighLevel’s help center on October 12, 2026, and menu names can change between releases.
If the contact is created but the follow-up never starts, that is a different problem. See the workflow not triggering guide. If the follow-up starts too many times, see the duplicate messages guide.
Did the form submit at all? Check the Submissions tab first.
Go to Sites, then Forms, open the form, and click the Submissions tab. HighLevel’s contact form guide tells you to submit a test entry and review the response there. The result splits the problem in two.
- Your test is listed, but no new contact appeared. The form works. Go to causes 1, 5 and 6: duplicate matching, the trigger, or field mapping.
- Your test is not listed. The form never reached HighLevel. Go to causes 2, 3 and 4: validation or CAPTCHA, embed and loading, or an outside-site form that is not connected.
Run this with a brand-new email address and a phone number you control, so you can tell a fresh contact from an updated one.
Is the submission matching an existing contact instead of creating a new one?
Yes, if Allow Duplicate Contact is off and the email or phone is already in your account. HighLevel’s Contact Deduplication Preferences article says that when it is disabled, matching email or phone details update an existing contact instead of creating a new one. When it is enabled, new records are allowed even if the email or phone already exists.
This is the most common reason a form “creates nothing”, especially when you test with your own email, which is already a contact. It also has a side effect that confuses builders: HighLevel’s Contact Created trigger article says that if a resubmission merges into an existing contact, the Contact Created workflow will not trigger again. The form worked. The contact was updated. The welcome workflow stayed quiet, because nothing new was created.
Fix it:
- Go to Contacts, then Smart Lists, and search the exact email and phone from your test. If a contact appears, the submission updated it.
- Go to Settings, then Business Profile, and scroll to the Contact Deduplication Preferences panel.
- Decide on purpose. For one record per person, leave Allow Duplicate Contact off and test with new details every time. For separate records for the same email or phone, such as different departments, turn it on, and merge later where needed.
- Check Find Existing Contacts Based On. HighLevel offers Email (the default) or Phone as the primary match, and an optional second preference. If your form collects only a phone number, matching on email will not help.
- If you want a workflow to run on resubmissions, trigger it with Form Submitted rather than Contact Created, because Form Submitted does not depend on a new record being created.
The same setting governs Zapier, Facebook and Instagram sources. If duplicates appear from those, see the Facebook lead ads sync guide. For context on what the setting does not touch, HighLevel says CSV imports always merge on email or phone.
Are required fields, validation or CAPTCHA stopping the submission?
Possibly. If the form cannot be submitted, no contact is created, and nothing reaches the Submissions tab. Three things can stop a real visitor.
Required fields. HighLevel’s contact form guide tells builders to mark important fields as required. A required field that visitors cannot see or cannot complete will block the submit button, so check each one on both desktop and mobile.
Email and phone validation. HighLevel’s article on securing forms recommends enabling email and phone validation to block temporary, invalid or fake details. That also means a real person who types a typo, or uses a disposable address, can be blocked.
CAPTCHA. The same article recommends a CAPTCHA to stop fake contacts, and says to add one under Forms, Custom Fields, Captcha. HighLevel’s changelog describes reCAPTCHA v3 for forms, surveys and quizzes as invisible background analysis that shows a visual challenge only when activity looks suspicious. A visitor who is challenged and abandons the challenge does not submit. HighLevel also says its forms already include built-in protections based on signals such as IP address and geography.
Fix it:
- Submit the form yourself on a phone and on a laptop, with every required field filled and a real email and phone.
- Retry with a different, valid email address. If that works and the first did not, validation blocked the first.
- Open the form and review each required field and any conditional logic. HighLevel’s Conditional Logic can show or hide fields and can disqualify leads based on answers, so confirm a rule is not hiding or rejecting normal answers.
- If you added a CAPTCHA, test with it on, and note whether a challenge appears. If real leads report a challenge they cannot pass, review the setup rather than removing protection, because HighLevel says the protection also prevents fake contacts and unwanted SMS and email costs.
HighLevel’s pages do not say whether a submission with neither an email nor a phone creates a contact. Test your own form rather than assuming.
Is the embedded form actually loading on your site?
If visitors cannot see the form, no one can submit it. HighLevel’s Embedding Options article makes four points that explain most “form not showing” reports.
- Embed codes are static. Changes to a form’s layout, triggers or deactivation settings reach your site only after you copy a new embed code and replace the old one.
- Deactivation rules can hide the form. Options include Deactivate After Showing a set number of times and Deactivate Once Lead Is Collected. A form set to deactivate after a lead is collected will not show for that visitor again, which looks like a failure when you test twice from the same browser.
- Trigger options control when the form appears. Show on Scrolling [X]%, Show After [X] Seconds or Always Show. A popup set to appear after a delay or a scroll depth will seem absent on a quick test.
- Layout types differ. Sticky Sidebar, Polite Slide-In, Popup and Inline behave differently, and non-inline layouts have a modal height setting with a default of 500 px.
Fix it:
- Open the form and click Integrate, then Embed Code.
- Choose Inline for the simplest test. Copy a fresh embed code.
- Paste it into your site’s HTML where the form should appear, and replace any old copy.
- Set the trigger to Always Show and deactivation to Never Deactivate while testing.
- Test in a private browser window so previous visits and activation counts do not affect it.
- If the form still does not render, check whether your website platform allows custom code and scripts on that page type. HighLevel says the embed code works on compatible external website platforms.
Is it a non-HighLevel form that is not connected?
If the form lives on WordPress, Wix, Webflow or another site and is not a HighLevel form, nothing creates a contact until you connect it. HighLevel’s External Tracking feature does this without Zapier or webhooks, and it has clear limits.
HighLevel says External Tracking automatically detects supported DOM-based forms, including WordPress forms (Gravity Forms, WPForms, Contact Form 7) and custom HTML forms, and then creates or updates contacts. The requirements are a valid form HTML element, fields with name attributes, visible fields in the DOM, and an email field where contact creation or matching is needed. HighLevel lists as not supported: iframe-based forms, popup widgets without real form elements, and third-party scripts that do not expose inputs.
Fix it:
- Go to Settings, then External Tracking, and click Copy Script.
- Install the script on every page that has the form. HighLevel says it works on WordPress, Shopify, Wix, Webflow or any custom HTML site. Do not edit the tracking ID.
- Check that your form meets the requirements above, especially that it is not inside an iframe.
- Submit a test entry and look for the contact in Contacts, Smart Lists.
- If your form tool cannot be read by the script, replace it with a HighLevel form embedded on that page, or connect it by webhook or Zapier. The Zapier versus native integrations guide covers the trade-offs.
This is not the same as a HighLevel form embedded on your site, which is itself an iframe-style embed but is a native form and creates contacts through HighLevel directly. The limit above applies to third-party forms read by the External Tracking script.
Is the Form Submitted trigger watching the wrong form?
If contacts exist but the workflow does not start, yes, this is likely. HighLevel’s Form Submitted trigger article says you add the trigger, name it and set a Form Is filter that names the form that starts the workflow, then test and publish. A trigger tied to one form does nothing for another, and accounts often hold several forms with similar names.
Fix it:
- Go to Automation, then Workflows, and open the workflow.
- Open the trigger and check the Form Is filter. Match it to the exact form on your live page, not a copy or an old version.
- Confirm the workflow is published, not Draft.
- Submit a test and check Execution Logs in the top menu inside the workflow.
- If the workflow still does not start, work through the workflow not triggering guide.
For forms on outside sites read by External Tracking, HighLevel lists its own trigger filters: domain, page path, external form name and UTM parameters. Use those instead of the HighLevel form picker.
Are custom fields failing to map to the contact?
If the contact is created but answers are missing, the field is probably not a contact custom field, or is not linked to the form element. HighLevel’s custom fields article says contact custom fields are attached to the person and can be used in forms, surveys, contact workflows and Smart Lists, while opportunity custom fields appear only in the opportunity record. It adds that only contact fields appear in forms and contact workflows, and that a field created as one type cannot be changed to the other.
For outside-site forms, HighLevel says External Tracking matches fields by name, label and existing custom fields, and stores unmapped fields for later use. So a label that differs from your custom field name may land in storage rather than on the contact.
Fix it:
- Go to Settings, then Custom Fields, and select the object. Check that each field you expect is a contact field.
- If it was created as an opportunity field, recreate it as a contact field. Conversion is not possible.
- Open the form and confirm each field is linked to the correct contact field, not a look-alike with a similar name.
- Submit a fresh test, open the contact, and compare each value.
- If you use custom values or merge fields in follow-up messages, see the custom values guide.
Which symptom points to which cause?
| Symptom | Likely cause | Fastest check | Fix |
|---|---|---|---|
| Test shows in Submissions, no new contact | Matched an existing contact (duplicates off) | Search the email and phone in Smart Lists | Test with new details, or change Contact Deduplication Preferences |
| Welcome workflow silent on a repeat lead | Contact Created does not fire for merged contacts | Contact already existed | Trigger with Form Submitted instead |
| Nothing in Submissions, form will not send | Required field, validation or CAPTCHA blocking | Submit with a different valid email, on mobile too | Review required fields, validation, CAPTCHA, conditional logic |
| Form not visible on your page | Old embed code, deactivation rule or trigger delay | Compare embed code date; check Integrate options | Copy fresh code, set Always Show and Never Deactivate to test |
| WordPress, Wix or Webflow form creates nothing | External Tracking missing or form unsupported | Is the form an iframe? Is the script installed? | Install the script, or embed a HighLevel form |
| Contact exists, workflow never starts | Wrong form in the Form Is filter, or workflow in Draft | Trigger filter and publish toggle | Fix the filter, publish, check Execution Logs |
| Contact exists, some answers missing | Field is not a contact custom field, or not linked | Settings, Custom Fields, object type | Recreate as a contact field and relink |
| Zapier or ad source creates two cards | Allow Duplicate Contact on | Search by phone in Smart Lists | Turn it off and merge duplicates |
How do you confirm the fix worked?
Run one clean test and read three places.
- Submit the live form, on the live page, with a new email address and a phone number you control, from a private browser window.
- In Sites, Forms, Submissions, confirm the entry is listed with the values you typed.
- In Contacts, Smart Lists, confirm exactly one new contact exists, and open it to check every field, tag and source value.
- In Automation, open the workflow and check Execution Logs for that contact. You should see one run.
Then repeat the submission with the same email to confirm the behavior you chose. With Allow Duplicate Contact off, no second contact should appear and the existing one should update. With it on, a second record should appear.
When should you call a HighLevel expert?
Call one when the form has more than one place it can fail and you cannot isolate which, for example several forms across three sites, a mix of HighLevel and outside forms, Zapier in the middle, and a duplicate setting nobody remembers changing. Another sign is leads you know came in that never became contacts, with no record in Submissions.
The question then is whether to patch or rebuild the intake. The fix or rebuild guide helps you decide, and the free GoHighLevel account health check scores lead capture, response speed, workflows and compliance in 15 points. If you want someone to trace every form to its contact and trigger, aibrevo offers a GoHighLevel audit and fix service. aibrevo works with its partner company autoesta, whose team delivers GoHighLevel builds; aibrevo’s CRM team scopes the project with you.
Sources
All checked October 12, 2026.
- HighLevel Support, Contact Deduplication Preferences (Allow Duplicate Contact, matching fields, menu path).
- HighLevel Support, How to create a contact form (automatic contact creation, Submissions tab, conditional logic, CAPTCHA and validation).
- HighLevel Support, How to make my form submissions secure from spammers (CAPTCHA path, email and phone validation, built-in protections).
- HighLevel Changelog, Secure form, survey and quiz submissions with reCAPTCHA v3.
- HighLevel Support, How to use embedding options for forms (static embed codes, triggers, deactivation).
- HighLevel Support, Capture external form submissions automatically (External Tracking, supported and unsupported forms).
- HighLevel Support, Form Submitted workflow trigger (Form Is filter).
- HighLevel Support, Contact Created workflow trigger (merged contacts, bulk imports).
- HighLevel Support, How to create and use custom fields (contact versus opportunity fields).