The two-minute check
- 1
Copy the address out of your browser bar
Open the page with the missing form and copy the whole address from the bar at the top of the browser, exactly as it appears — including
https://and includingwww.if it is there. - 2
Open the plugin page in your console
Go to Settings → Website plugin and look at the list of addresses on your key.
- 3
Compare them character by character
The address you copied has to be on that list, spelled the same way. Not a version of it, not the domain it belongs to — the same address. If it is missing, add it and reload the page. The fix takes effect immediately and you do not touch your website again.
The plugin page may have already worked it out.
If the address was already on the list, spelled exactly as you copied it, and nothing is in that panel, carry on down this page.
It is almost always the address
A browser treats these as four different places. It is not being pedantic; addresses are how the whole system decides what is allowed where, and there is no rule that says these belong together:
Four different addresses
https://acme-lawns.com https://www.acme-lawns.com http://acme-lawns.com http://www.acme-lawns.com
Most sites answer on two of those and redirect the other two. Whichever ones a visitor can end up on need to be on your list. Adding one on the plugin page offers you its companion for exactly this reason — take the offer.
The same thing catches people out in three other shapes:
- A staging or preview address. Webflow sites also answer at
.webflow.io, Shopify stores at.myshopify.com, Squarespace trials at.squarespace.com. Testing there means registering there. - A second domain. A company that owns both a
.comand a.net, or a separate landing-page domain, needs each one listed. - A page opened from your desktop. A file opened directly rather than served by a web server has no address for us to check against anything, so the form will not appear. Put the page on a server, even a local one, and register the address it answers on.
Everything else, in order
- You see a “Request a proposal” button instead of the form. That is the fallback, and it is deliberate: the frame did not load, so rather than leave a hole in your page the loader puts a working button there instead. Nobody is stranded while you fix it. The cause is nearly always the address; the section above is the fix.
- Nothing appears at all, not even a button. The button lives in the snippet itself as plain HTML, so if even that is missing the snippet is not on the page. Look at the page’s source and search it for
hoacrew. If it is not there, your website builder removed the code when you saved — some builders and some WordPress logins strip script tags, and some strip the whole block. Ask whoever administers the site, or use the hosted link instead. - The key has been turned off. A revoked key stops working everywhere on the next request, by design. Check the plugin page: if there is no live key, issue one and repaste the snippet, because a new key is a new string.
- The key in the page is not the key on the plugin page. A snippet pasted from an older note, or a key truncated by a builder’s text box, both look fine and both fail. Copy it again from the console rather than from anywhere else.
- Your site has a security policy. If something on your site sets a Content-Security-Policy, it has to allow our address in both its script and its frame lists. Your platform’s guide has the two lines, and the browser console names which one is missing.
- A builder that runs code inside its own frame. Wix is the one this affects. Its embed box puts your code on a Wix address rather than yours, so the address being checked is not the one you registered. The Wix guide has the working route.
- The form is there but cut off at the bottom. The form measures itself and asks for the height it needs, which works everywhere except inside a builder that locks its embed to a fixed height. Drag the embed box taller.
- An ad blocker or a privacy extension. Try the page in a private window with extensions off. If it appears there, the extension is blocking the frame for you and not for your visitors — worth knowing before you change anything else.
Reading the browser console
Right-click the page, choose Inspect, and open the Console tab. Three messages there are worth recognizing, and each names its own fix:
[HOAcrew] A data-hoacrew-proposal-form element has no data-key attribute— the div is on the page but the key is missing from it. Repaste the snippet from your console; the key is part of it.- A message about
frame-ancestors— the browser refused to display our form on this address. That is the address list, and the two-minute check at the top of this page is the fix. - A message about
script-srcorframe-srcnaming your own site — your site’s own security policy is blocking us. Your platform’s guide has the two lines to add.
If the console is empty and the page source contains the snippet, the frame is loading and the problem is height rather than display — scroll, or look at whether the container around it has a fixed size.
A test that sent but did not arrive
The form said it went through and the console shows nothing. Look under Filtered as spam on the plugin page first.
A submission completed in under 4 seconds is filed there, and a test typed by somebody who already knows what every box says is the fastest submission the form will ever see. That is the check doing its job rather than a fault. One press moves it back, and nothing was ever discarded — a request that trips a check is still written, still yours, and still answerable.
Test like a stranger.