HomeAdd a widgetSquarespace
Add a contact form to Squarespace
Build the form in Sorraia, paste one line into Squarespace, and every submission lands in your dashboard — styled to match the site, with no plugin and no form-handling code to maintain.
Free plan, no card. Paid plans start at $19 a month.
Why do it this way on Squarespace
The trap on Squarespace is the Code Block’s Type menu. A form is a script, so the intuitive choice is “JavaScript” — and that is the one setting that prints your snippet on the page as visible text instead of running it, while locking the Display Source checkbox on so you cannot undo it. Set Type to HTML and everything works. Once it does, the form renders inline in your page rather than in a frame, so it inherits your section width the way a native block would.
See it working
This is a real Sorraia form — our own contact form, embedded here the same way you would embed yours. Send it something if you like; it reaches us.
How to add a contact form to Squarespace
A widget that sits in the page flow goes in a Code Block on that page. The block menu labels it “Code”; everyone, Squarespace’s own docs included, calls it a Code Block.
The tiers are now Basic, Core, Plus and Advanced — previously Personal, Business, Commerce Basic and Commerce Advanced. Code Blocks exist on every plan, but Squarespace treats JavaScript inside one as a premium feature available on Core and above, and gates Code Injection the same way. There is no way to run a third-party widget on Basic. The 14-day trial does include the premium custom-code features, so you can test the widget before you buy — trial sites simply are not indexed by search engines. Downgrading later does not delete your code, but it does stop working; Squarespace does not document whether the block goes inert or starts printing the snippet as text, so check the live site after any plan change.
In Sorraia, add the website and verify it — a DNS TXT record, or a meta tag in your homepage’s <head>. Verification is what lets you attach a widget to that site, so it comes before there is anything to paste.
Save the form and the Copy Embed Code popup appears; you can also open the Install wizard from the form’s row on the Forms page, which walks you through pasting it and re-checks the page for you.
Check the plan first. JavaScript in a Code Block needs Core, Plus or Advanced (or a legacy Business / Commerce plan). On Basic it will not run.
Edit the page, hover the section, click Add block or the + icon, and choose Code.
Click the pencil icon on the block and set the Type menu to HTML — not JavaScript. This is the step people get wrong: Squarespace prints a JavaScript-typed block on the page as visible text rather than running it.
Paste the Sorraia snippet, script tags included, and leave Display Source unchecked. Save.
Open the live site in a private window to check. While you are logged in, Squarespace disables embedded scripts and shows a “this block contains embedded scripts” notice where the widget should be.
Then the Type menu is on the wrong option. Squarespace force-locks Display Source on for the CSS, JavaScript and Plain Text types, which is exactly the trap — the intuitive choice for a script is “JavaScript”, and it is the one that will not run. Set Type to HTML and the checkbox becomes editable.
What you get
Build the form in Sorraia, paste one line into Squarespace, and every submission lands in your dashboard — styled to match the site, with no plugin and no form-handling code to maintain.
Submissions live in your dashboard
Every submission is stored and searchable, filtered by site and date, with no cap on how many you can take — submissions are uncapped on every plan including Free. CSV export is a paid feature, and the export honours whatever filters the list is showing, so what you download is what you were looking at.
It points out which fields hold health data
While you build the form, Sorraia reads your field LABELS and flags the unambiguous ones — date of birth, MRN, insurance or member ID, diagnosis, medication, vitals — and offers to mark them as PHI. It is deliberately conservative and stays quiet on plain name, email and phone fields, because a tool that flags everything gets tuned out. Two things it is not: it reads labels in the builder, never submitted answers, and a marked field only routes into separate encrypted storage once HIPAA is switched on for that site under a signed BAA. Marking is a storage decision, not a compliance certificate — and we are not the ones who get to certify that anyway.
Workflows fire on submit
A submission can send email, post to Slack, hit a webhook, or run a multi-step workflow with conditions. Each run is logged with its result, so a failed delivery is visible rather than silent.
It inherits your brand kit
A new form is seeded from the site’s brand kit at creation, so the first version already looks like your site instead of like a generic form. Restyle it later in the builder and the change reaches live pages without you touching the embed again.
More detail in the Help Center: Forms · Embedding on your website
Things worth knowing about Squarespace
- Squarespace disables embedded scripts while you are logged in and editing, replacing the block with a notice. A working widget therefore looks dead to the site owner. Verify in a private window or via Preview in Safe Mode.
- The Code Injection panel moved out of Settings → Advanced into Website → Pages → Custom Code. Older tutorials will send you scrolling through a Settings menu that no longer has it.
- Use a Code Block only for a widget that should occupy space in the layout. A block containing a script that draws nothing in place still takes up vertical room and leaves a visible gap, most noticeably in Fluid Engine sections.
- Footer is the safer of the two Code Injection fields for a launcher, because the page already exists when the script runs. Header is not inherently slower — an async or defer tag there does not block first paint — but a synchronous snippet in Header will delay it.
Questions
Where do the submissions go?
Into your Sorraia dashboard, immediately. You can search and filter them, see which site each came from, and route them onward with a workflow — email, Slack, or a webhook. CSV export of the current view is available on paid plans. Nothing is posted to a third-party form service in between, and there is no cap on how many submissions you can receive, on any plan.
Can I change the form after I have embedded it?
Yes, and you never re-paste the snippet. The embed loads the current version of the form each time, so editing fields, wording or styling in the builder updates every page it is on. That is the point of a script tag over a copy-pasted HTML form.
Which Squarespace plan do I need to add a widget?
Core or higher. Code Blocks appear on every plan, but Squarespace only allows JavaScript inside one on Core, Plus and Advanced (and on the legacy Business and Commerce plans), and Code Injection has the same gate. On Basic the block accepts plain HTML, Markdown and CSS but will not run a script. Squarespace’s 14-day trial does include the premium custom-code features, so you can test the widget before you buy — trial sites just are not indexed by search engines.
I pasted the code and the block says “embedded scripts are disabled”. Is it broken?
No — that is Squarespace protecting you from your own scripts while you edit. Visitors see the widget; you do not, because you are logged in. Open the live URL in a private or incognito window and it will be there.
My code prints on the page as text instead of running. What happened?
The Code Block’s Type menu is set to JavaScript. Squarespace renders the CSS, JavaScript and Plain Text types as visible source by default, and force-locks the Display Source checkbox on for them — which is why you cannot untick it. Set Type to HTML, keep the script tags around the snippet, and untick Display Source.
Add a contact form to Squarespace
Build it in Sorraia, paste one line into your Squarespace site, and change it later without touching the embed again.