SheetLink Forms beta

Framer forms to Google Sheets

Set your Framer Form component's submission destination to a webhook and every submission becomes a row in Google Sheets or Excel Online. No code, no Zapier.

Framer's Form component makes collecting submissions easy and makes doing something useful with them somebody else's problem. An email notification is not a database. When the next step is sorting leads, deduplicating signups, or handing a list to a client, the working system is a spreadsheet - and the usual bridge to one is a Zapier plan that charges per task.

SheetLink Forms is a hosted endpoint with a native Framer webhook. You set the Form component's submission destination to a webhook URL, Framer's server calls it on every submission, and an asynchronous worker writes the row straight to the Google Sheets API or Microsoft Graph - no middleman. Delivery retries automatically at 5 minutes, 30 minutes, and 2 hours if a destination hiccups, and a delivery log in the dashboard shows the status of every submission.

Spam handling follows one rule: suspicious submissions are quarantined for one-click review, never silently dropped. A false positive costs seconds, not a lead. See the full pipeline on how it works, or submit the live demo form and watch the row land in a public sheet.

The best path for Framer

The best path for Framer is the native webhook. Every Framer Form component lets you choose where submissions go: select the form, open its submission settings, choose Webhook as the destination, and paste your SheetLink Forms URL. Because Framer's server sends the webhook, nothing changes in your design, no script is embedded, and it works wherever the site is published.

The destination is set per Form component, so different forms can feed different sheets - one token per form, each with its own destination, strictness dial, and delivery log. Endpoint behavior, payload details, and field mapping rules are in the developer docs.

https://sheetlinkforms.com/w/framer/YOUR_TOKEN

1. Create the form in the SheetLink Forms dashboard

Create a form and connect its destination. Google Sheets connects with one-click OAuth using the drive.file scope - SheetLink Forms can only see sheets you pick in the Google picker or create in the product, never the rest of your Drive. Excel Online connects a Microsoft 365 account and appends rows into an Excel table you choose; the table's columns define the row shape. Empty Google Sheets get a header row seeded automatically.

2. Copy your Framer webhook URL

Copy the Framer-specific webhook URL from the form's setup panel. It has the shape https://sheetlinkforms.com/w/framer/YOUR_TOKEN - the /w/framer/ path understands the payload Framer's webhook destination sends, as opposed to the generic /f/ endpoint used by plain HTML forms.

3. Set the Form component's destination to Webhook

  1. Select the Form component on your canvas.
  2. In the properties panel, open the form's submission settings.
  3. Choose Webhook as the destination.
  4. Paste your SheetLink Forms URL.

Repeat per form if you have several - each Form component carries its own destination, so a contact form and a waitlist form can feed separate sheets.

4. Name your inputs to match your columns

Each input's name becomes a field in the row. Names that match your column headers map automatically, case- and punctuation-insensitive: Email, email, and E-mail all match an Email column. If a Framer field name cannot match a column you want, define an explicit per-field mapping in the dashboard.

5. Publish and test

Publish the site and submit the form once. The row should appear in your sheet within seconds; Framer shows its own success state as usual, since the webhook only changes where the data goes. Then open the delivery log in the dashboard to confirm delivery - every submission is accounted for there, including retries if your sheet was briefly unreachable. Check the quarantine view too: anything the heuristics flagged waits there for one-click approval instead of vanishing. One last detail worth knowing: values that start with =, +, -, or @ are escaped before they reach a cell, so a hostile submission cannot smuggle a live formula into your spreadsheet.

FAQ

Is this free to use with Framer?

Yes - SheetLink Forms is free during the beta, invite required via the waitlist. There are 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.

Does this change how my Framer form looks or behaves?

No. The webhook is purely a destination. Your form's design, validation, and success state stay exactly as you built them in Framer - the only difference is that each submission also becomes a row in your sheet.

Can different forms on my Framer site go to different sheets?

Yes. The webhook destination is set per Form component, so create one SheetLink form per Framer form and give each its own URL. Each SheetLink form has its own destination sheet, spam strictness dial, and delivery log.

What happens to spam submissions?

Webhook submissions run through content heuristics (link stuffing, disposable email domains, empty payloads) plus per-form and per-IP rate limits, with a strictness dial per form. Suspicious submissions are quarantined for one-click review - approve and they deliver. Nothing is silently dropped.

Can I capture UTM parameters and ad click IDs from Framer?

The webhook path records the form's fields as Framer sends them. Automatic capture of utm_* plus gclid, wbraid, gbraid, fbclid, and msclkid - persisted across pages in localStorage - belongs to the sl.js embed used with plain HTML forms. If ad attribution is central to the form, use an embedded HTML form posting to your /f/ endpoint with sl.js loaded; both paths are documented in the docs.

Also on: Webflow · Carrd · React

Request an invite See the live demo