Ready to Try GoHighLevel?
Get the all-in-one platform for CRM, automations, funnels & websites — built for agencies.
Start your free trial and explore every feature.
How to Embed GoHighLevel Forms on Your Website
To embed a GoHighLevel form, open the form, click Integrate in the top right, pick your layout, then click Copy Embed Code. Paste that code into your website where you want the form to appear. Every submission lands in your GoHighLevel contacts.
That is the short version. But there is one rule that catches almost everyone, and it is worth knowing before you start.

The rule that trips people up
Your embed code is static. Once it is on your website, it does not update itself.
That means if you go back into GoHighLevel and change the layout, the trigger, or the deactivation settings, your website keeps showing the old behaviour. HighLevel confirms this in their own documentation. You have to generate a fresh embed code and replace the old one on your site.
This is the reason so many people say their form “stopped working” after they edited it. Nothing broke. The page is simply still running the old code.
So make your settings choices first, then copy the code once, rather than copying early and tweaking later.
Set up your custom fields first
Before you build anything, go to Settings and create the custom fields you need. Budget, service type, how they heard about you, whatever your business collects.
Do this first because adding fields later means going back and rebuilding parts of the form. Ten minutes now saves an hour later.
Keep the form itself short. Ask for what you need to start a conversation, usually a name, an email, and one qualifying question. Everything else can wait until you are talking to the person.
Where to find the embed code

From your dashboard, go to Sites, then Forms. This takes you to the form builder area.
Pick an existing form from the list, or click Add Form to build a new one.
Once your form is ready, click the Integrate tab in the top right corner. Choose your form type, then click Copy Embed Code.
There is also a Copy Form Link button next to it. That gives you a plain URL instead. Use the link for emails, text messages and social posts. Use the embed code when you want the form to live on your own page.
Do not retype the code by hand. It contains a long form ID, and one wrong character stops the whole thing working.
The four layout types
GoHighLevel gives you four ways for the form to appear. Pick one before you copy anything.
| Layout | How it behaves | Best for |
|---|---|---|
| Inline | Sits in the page as normal content and does not interrupt the visitor | Contact pages, landing pages, application forms |
| Popup | Opens in a window over the page and must be closed before reading on | Strong offers and lead magnets |
| Polite Slide In | Slides in from the left or right and can be minimised | Gentle prompts that do not block the page |
| Sticky Sidebar | Stays pinned to the left or right as the visitor scrolls, and can be minimised or opened | Always available booking or quote requests |
Inline is the right choice for most websites. It is the least annoying, it works everywhere, and it causes the fewest problems.
The other three are worth using when you have a specific reason. A slide in on a blog post. A sticky sidebar on a services page. Just do not stack several of them on one page.
Controlling when the form appears
If you pick anything other than inline, you also get to control the timing. There are three parts to this.
Triggers decide when the form shows up. You can show it after the visitor scrolls a set percentage of the page, show it after a set number of seconds, or always show it.
Activation decides when the form starts working at all. You can activate it only after someone has visited the page a certain number of times, or keep it always active.
Deactivation decides when the form stops showing. You can stop after it has been displayed a set number of times, stop once the visitor submits their details, or never stop.
The most useful combination for most businesses is a scroll trigger with deactivation once a lead is collected. The form only appears to people who are actually reading, and it stops bothering anyone who already filled it in.
A short delay beats an instant popup almost every time. Firing at three seconds interrupts someone who has not read a word yet.
Setting the height for popups and slide ins
Popup, Polite Slide In and Sticky Sidebar layouts have a Modal height setting. This stops the form from feeling oversized or spilling over the page.
The default is 500 pixels. You can enter any whole number from 1 upwards.
Inline layouts do not have this field, so if you cannot find it, check which layout you selected.
Set the height in the Integrate panel before you copy the code, not after.
Adding the code to your website

The idea is the same everywhere. Find a place that accepts raw HTML or custom code, paste, save, publish.
On WordPress, edit the page, click the plus icon, scroll to the Custom HTML block, and paste your code inside. Save and refresh to check it.
On Squarespace, go to Settings, then Advanced, then Code Injection. Paste into the Header or Footer section if you want the form available across the whole site. Note that Squarespace does not support embedding forms on checkout pages.
On Wix, click the plus button, choose Embed, then Embed a Widget. Select the Code option, paste your code, and click Update.
On Shopify, go to Online Store, then Themes. Click the three dots next to your active theme and choose Edit Code. Open the theme.liquid file and paste the code inside the head or footer section, depending on where you want it.
On Duda, open the editor, go to Widgets, drag an HTML Widget onto the page, and paste the code inside.
Whatever platform you use, save and publish afterwards. Then clear your cache. If you run a caching plugin such as WP Rocket or LiteSpeed, or a service like Cloudflare, your visitors may still be seeing the old page.
Styling the form
Your website CSS cannot reach inside the form. The form loads in a separate frame, so your site styles simply do not apply to it.
All styling happens inside the GoHighLevel form builder. Set your fonts, colours, button style and spacing there before you embed.
Do this properly. A form that looks like it belongs on your page gets more submissions than one that looks bolted on from somewhere else.
Test it like a real visitor
Open your live page in a private browser window. A normal window shows you your own cached copy, which hides most problems.
Fill in every field, including the optional ones, and submit.
Then open Contacts in GoHighLevel and check the record. Confirm every field has data in it, not just the name and email. A field that quietly saves nothing looks identical to one that works.
Check your notification email arrived. Check the thank you message or redirect fired. Then repeat the whole test on a phone, because forms behave differently on narrow screens.
Use a fresh email address for each test. If you test three times with the same address, GoHighLevel is likely to match those submissions to the same existing contact rather than create three new ones. That looks like a broken form when it is not.
If the form does not appear
Work through these in order.
Check the code copied correctly and nothing was cut off during the paste. This is the first thing HighLevel support suggests, and it is right more often than you would expect.
Check the code landed in the correct place on the page. Some editors strip out parts of the code for security. If yours did, use a code injection or custom scripts area instead of a normal text block.
Clear every cache you have, including your host and Cloudflare, then check again in a private window.
Check whether you changed the form settings after copying the code. If you did, go back to Integrate, copy the fresh code, and replace the old one.
If the form appears for you but not for one particular person, ask them to try a different browser. Ad blockers and privacy extensions block embedded frames on some setups.
A quick launch checklist
- Custom fields created before the form was built
- Layout, trigger and deactivation settings chosen before copying the code
- Embed code copied, not retyped
- Code pasted into a block that allows raw HTML
- Cache cleared everywhere after publishing
- Test submission saved with every field filled in
- Notification email received
- Checked on a phone as well as a desktop
Final thoughts
Embedding a GoHighLevel form takes five minutes. Keeping it working takes a little more care.
Build your fields first. Choose your settings before you copy anything. Style the form inside GoHighLevel, not on your site. Test with a real submission in a private window on a real phone.
And remember the static code rule. Every time you change the form settings, copy the new code and replace the old one. That single habit prevents most of the trouble people run into.
Ready to Get Your GoHighLevel System Built?
We'll build your entire GHL setup for $499 and give you a free professional website.
Contact Us Now


