SheetLink Forms beta

Wix forms to Google Sheets

Drop a plain HTML form into a Wix code embed and every submission lands as a row in Google Sheets or Excel Online - no Zapier tasks, no metering.

Wix keeps form submissions inside Wix. The Wix Forms app files them into the site dashboard and contact list, which is fine if Wix is your system of record - and quietly frustrating if the system of record is a spreadsheet your team already lives in. The conventional bridge is an automation layer that meters submissions as tasks, which turns every lead into a line item.

SheetLink Forms takes the direct route: a plain HTML form on your Wix site posting to a permanent hosted endpoint, https://sheetlinkforms.com/f/YOUR_TOKEN. An asynchronous worker writes each submission straight to the Google Sheets API or Microsoft Graph - no middleman - with retries at 5 minutes, 30 minutes, and 2 hours, a per-submission delivery log, and a formula-injection guard that escapes leading =, +, -, and @ in cell values.

Spam is handled by quarantine, not deletion: suspicious submissions wait for one-click review, so a false positive costs seconds rather than a lead. The pipeline is described on how it works, and the live demo feeds a public sheet you can watch.

The best path for Wix

The best path for Wix is a plain HTML form added through Wix's code features, with its action pointing at your /f/ endpoint. To be plain about the requirement: Wix gates serious custom code behind its premium tiers - the site-level Custom Code panel requires a premium plan with a connected domain. The Embed HTML element (Add Elements -> Embed Code -> Embed HTML) is the practical carrier for the form itself; note that Wix renders it inside an iframe, which works fine for submissions but limits what sl.js can see of the surrounding page (more on that in the FAQ).

Endpoint behavior, field mapping, and the embed script are documented in the developer docs.

<form action="https://sheetlinkforms.com/f/YOUR_TOKEN" method="POST"> <input name="_slhp" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px"> <label>Name <input name="name" required></label> <label>Email <input name="email" type="email" required></label> <label>Message <textarea name="message"></textarea></label> <button type="submit">Send</button> </form> <script src="https://sheetlinkforms.com/sl.js" data-token="YOUR_TOKEN"></script>

1. Create the form in the SheetLink Forms dashboard

Create a form and connect its destination. Google Sheets connects with one-click OAuth on the drive.file scope, which limits access to sheets you pick in the Google picker or create in the product - the rest of your Drive stays invisible. Excel Online connects a Microsoft 365 account and appends rows into an Excel table you pick; the table's columns define the row shape. Empty Google Sheets get their header row seeded automatically.

2. Add an Embed HTML element in the Wix editor

  1. In the editor, open Add Elements.
  2. Choose Embed Code -> Embed HTML.
  3. Paste the form snippet, keeping the hidden _slhp honeypot input, and set the action to your endpoint URL.
  4. Drag the element's frame large enough that the whole form is visible - the embed renders inside an iframe with a fixed size.

3. Name your fields to match your columns

Each input's name becomes a field. Names matching your column headers map automatically, case- and punctuation-insensitive - Email, email, and E-mail all land in Email. When a name cannot match, set an explicit per-field mapping in the dashboard rather than fighting the markup.

4. Decide where sl.js should live

Inside the Embed HTML iframe, sl.js still gives you AJAX submit with inline success text, honeypot handling, and the timing signal. What it cannot do from inside an iframe is read the parent page's URL, so automatic UTM and click-ID capture is limited on this path. If ad attribution matters and your plan includes the site-level Custom Code panel (premium plan with a connected domain), place the form and sl.js there so the script sees the real page URL and persists attribution across pages.

5. Publish and test

Publish the site and submit a test. With sl.js in the embed, success text appears inline; a bare form follows a 303 redirect to the hosted thank-you page or your custom redirect URL. Confirm the row landed, then check the delivery log in the dashboard - and the quarantine view, where anything the heuristics flagged waits for one-click approval instead of being dropped.

FAQ

Which Wix plan do I need?

The Embed HTML element carries the form on most Wix sites, but Wix's site-level Custom Code features - the route you want for full attribution capture - require a premium plan with a connected domain. If you are on a free Wix site, treat the iframe embed as the available path and upgrade when attribution starts to matter.

Is it free on the SheetLink side?

Yes - free during the beta, invite required via the waitlist. No per-submission or per-task fees, ever. Planned post-beta pricing (planned, not final): a free tier around 50 submissions a month, paid around $15-19/mo, unmetered.

Will UTM parameters and ad click IDs be captured on Wix?

Honestly: it depends on where the form lives. sl.js captures utm_* and gclid/wbraid/gbraid/fbclid/msclkid from the page URL and persists them in localStorage - but inside Wix's Embed HTML iframe it cannot see the parent page's URL, so capture is limited there. Placing the form via the site-level Custom Code panel (premium plans) restores full attribution.

Does this replace the Wix Forms app?

For the forms you embed, yes - submissions go to your endpoint and your sheet, not to the Wix dashboard or contact list. Forms you leave on the Wix Forms app keep working as before. The two can coexist on one site.

How is spam handled?

The _slhp honeypot in the snippet is the only check that marks spam outright. Everything else - per-form and per-IP rate limits, an origin allowlist, content heuristics for link stuffing, disposable email domains, and empty payloads, plus optional Cloudflare Turnstile - routes suspicious submissions to quarantine for one-click review. Approve and the row delivers; nothing is silently dropped.

Also on: Squarespace · Carrd · Plain HTML

Request an invite See the live demo