Check which plan you are on
You need your key first.
The Code block itself is on every Squarespace plan. What is not is the ability to run JavaScript or an iframe inside one — Squarespace lists that as Core, Plus, Advanced, and the legacy Business, Commerce Basic and Commerce Advanced plans. Our snippet is a script and a frame, so that is the line that matters.
The symptom is not a missing block.
Squarespace renamed its tiers, so a site bought recently is on Basic, Core, Plus or Advanced and an older one is on Personal, Business or Commerce. Basic and Personal are the two that cannot run the snippet. Your plan is under Billing in Squarespace settings, and their own page on code blocks states the rule if you want to check it against the source.
If you are on one of those two, skip to A button, on any plan below. It puts the same form in front of the same visitor, opened as a full page rather than sitting inside yours, and it takes two minutes with no code at all.
Paste it into a Code block
This is the code. Replace hoac_embed_your_key_here with the key from your console. That is the only edit it needs.
The snippet
<div data-hoacrew-proposal-form data-key="hoac_embed_your_key_here"><a href="https://hoacrew.com/embed/w/hoac_embed_your_key_here">Request a proposal</a></div> <script src="https://hoacrew.com/embed/v1.js" async></script>
Two lines: the place the form goes, and the script that puts it there. The link inside the first line is a plain one to your hosted form, and it is what a visitor gets if the script never arrives — a browser with scripting off, a corporate proxy, a blocker. The loader clears it the moment it runs, so nobody sees both. That wording is yours: change Request a proposal to whatever you would rather it said and nothing else is affected.
- 1
Open the page and press Edit
In Pages, click the page you want the form on, then press Edit.
- 2
Add a Code block where you want the form
Hover where the form should go until the insert point appears, click it, and search the block list for Code.
- 3
Replace the sample content
A new Code block arrives with a line of sample content in it. Select all of it, delete it, and paste the snippet in its place. Leave the mode set to HTML, and leave Display Source unticked — ticking it shows your visitors the code instead of the form.
- 4
Save, then open the live page
Press Save. The editor shows a grey placeholder where the block is, because Squarespace does not run embedded code inside the editor. That is expected. Open your site in a normal browser tab to see the form.
Register both spellings of your address.
acme-lawns.com and www.acme-lawns.com are two different places. If your site answers on both, list both on the plugin page. The same goes for http:// against https://. This is the reason behind almost every form that never appears.How to tell it worked
- Open the live page in a normal tab, signed out of Squarespace if you can.
- The form is there with your company’s name on it. Send yourself a test, taking more than a few seconds over it — a submission completed unusually fast is filed as suspected spam rather than landing in the main list.
- Check Settings → Website plugin in your HOAcrew console. Your test is in the list.
Squarespace trial and built-in addresses
oak-hollow-lawns.squarespace.com. That is a different address from your real domain, so if you want to test before launch, add it to the plugin page too — and remove it once you are live.If your site has a security policy
Most websites have no Content-Security-Policy and this section does not apply to them. If yours has one — a security plugin added it, your host sets it, or whoever built the site wrote one — it needs to allow two things from us:
The two allowances
script-src https://hoacrew.com frame-src https://hoacrew.com
The first lets the loader script run. The second lets the form’s frame render. Allow the first and forget the second and you get a blank space where the form should be, with a line in the browser’s developer console naming frame-src. Nothing else is needed: the form loads no fonts, no analytics and no other company’s code, so there is no third allowance hiding behind these two.
Squarespace does not give you a place to write one, so on a standard Squarespace site this section does not apply. It matters only if your domain sits behind something you added yourself — a Cloudflare rule, for instance — that adds headers on the way out.
A button, on any plan
Every key also has a plain web address that opens the same form as a full page. Put it behind any button, in an email signature, on a Google Business profile, or on a page you cannot add code to.
Your hosted form
https://hoacrew.com/embed/w/hoac_embed_your_key_here
It is the same form, sending to the same place, and requests from it arrive in your console exactly like the ones from the embedded version.
- Edit the page, add a Button block where you want it.
- Set the button text to something plain, such as Request a proposal.
- For the link, choose External and paste your hosted form address.
- Tick Open in new window so the visitor keeps your page, then Save.
What goes in the link box
https://hoacrew.com/embed/w/hoac_embed_your_key_here
The same form, somewhere else
WordPress
Block editor, Classic editor, Elementor and Divi.
Wix
Wix runs pasted code on its own address, so this one is different.
Webflow
Custom code needs a paid plan. Register the webflow.io address too.
Shopify
Theme Customizer, no code editor needed.
A plain HTML site
Two lines, wherever you want the form. A complete worked example.
React or Next.js
A script tag written in JSX never runs — use the component instead.