SheetLink Forms vs Web3Forms
Web3Forms delivers form submissions to your email inbox; SheetLink Forms delivers them to your spreadsheet. Which one is right depends almost entirely on which of those two places your workflow lives in.
SheetLink Forms
SheetLink Forms is a hosted endpoint that turns form submissions into spreadsheet rows. Point any HTML form or fetch call at sheetlinkforms.com/f/your-token and accepted submissions append under the header row of a Google Sheet you pick (one-click OAuth, limited drive.file scope) or an Excel Online table. Delivery goes straight to the Google Sheets API or Microsoft Graph with retries at 5, 30, and 120 minutes and a delivery log. Screening is quarantine-first - honeypot, rate limits, origin allowlist, content heuristics with a strictness dial, optional Cloudflare Turnstile - and suspicious submissions wait for one-click review instead of disappearing. The optional embed captures UTMs and ad click IDs and attaches them to each row. Free during beta, invite required, no per-submission fees ever. See how it works or the live demo.
Web3Forms
Web3Forms describes itself as "a simple tool to set up Contact Forms for Static Websites": you create an access key, point your form at their API, and receive submissions "directly in your email inbox without any server or back-end code", per their documentation. The core service is free. A server-side spam check runs on all submissions, with a honeypot and hCaptcha available free and Google reCAPTCHA on the Pro plan, per their spam docs. The paid Pro plan adds file attachments, webhooks, an autoresponder, and a native Google Sheets integration (in beta) that connects over OAuth and appends submissions as rows, per their Google Sheets docs. For a free contact form on a static site, it is hard to beat.
Side by side
| SheetLink Forms | Web3Forms | |
|---|---|---|
| Spreadsheet delivery | The whole product: rows append into your chosen Google Sheet or Excel Online table via the official APIs, headers seed automatically on empty sheets, and field names map to columns case/punctuation insensitively. Excel Online (Microsoft 365 tables) is a first-class destination. | Available as a Pro-plan integration currently in beta: connect Google over OAuth, pick a spreadsheet, and submissions append as rows with auto-created headers, per their docs. Email remains the primary channel; no Excel destination is documented. |
| Spam handling | Layered and reviewable: honeypot, per-form/per-IP rate limits, origin allowlist and CORS, content heuristics with a loose/normal/strict dial, timing signal, optional Turnstile. Suspicious submissions are quarantined for one-click review - never silently dropped. | A server-side spam check on all submissions, plus a free honeypot and free hCaptcha support, with Google reCAPTCHA reserved for Pro, per their spam docs. Sensible options for a contact form. |
| Ad attribution and click IDs | The sl.js embed captures utm_* plus gclid, wbraid, gbraid, fbclid, and msclkid from the landing URL, persists them across pages, and writes them into the row with the lead. | Not a documented feature of the submission flow; as with most form backends, you would add hidden fields and populate them with your own script. |
| Pricing model | Free during beta (invite required). No per-submission fees, ever; the planned paid plan (~$15-19/month) is unmetered. | The core email-delivery service is free, with a paid Pro plan unlocking attachments, webhooks, the autoresponder, and the Sheets integration - see web3forms.com for current plans. |
| File uploads | Not supported yet - multipart posts are accepted but the file parts are dropped. Attachment-heavy forms should stay on Web3Forms Pro. | Web3Forms wins here. The Pro plan includes file attachments and an advanced file uploader, per their docs. |
| Platform webhooks | Dedicated inbound endpoints for Webflow and Framer (one webhook covers every form on a site, form name recorded), plus plain POST from anything else. | Outbound webhooks to your own systems are a Pro feature, per their docs; inbound, any static-site form can POST to their API. |
| Email notifications | None currently - and this is the sharpest contrast on the page. Rows land in your sheet; quarantine review happens in the dashboard. If you want submissions in your inbox, Web3Forms is the right shape and we are not. | Web3Forms wins here by design. Email delivery to your inbox is the product, with an autoresponder for submitters available on Pro. |
| Delivery and reliability | Asynchronous worker direct to the Sheets API / Microsoft Graph, retries at 5 min / 30 min / 2 h, a per-submission delivery log in the dashboard, and a formula-injection guard that escapes leading = + - @. | Submissions are delivered to your inbox; your mail provider becomes the archive and the search index. Simple, and for low-volume contact forms, entirely adequate. |
Choose Web3Forms when...
Pick Web3Forms for a free contact form on a static site where the inbox is the destination. It needs no backend, no account for basic use beyond an access key, and its free tier is genuinely generous. If you want attachments, an autoresponder, or webhooks, the Pro plan covers them - all things SheetLink Forms does not do today. For "someone filled in my contact form, email me about it", Web3Forms is the simpler and cheaper answer.
Choose SheetLink Forms when...
Pick SheetLink Forms when submissions are data, not just messages: lead lists, signups, registrations, anything you sort, filter, dedupe, or hand to a script. Rows land in the sheet or Excel table your process already runs on, each row carries its UTMs and ad click IDs, spam screening never silently eats a lead, and delivery has retries and a log rather than depending on email arriving. The live demo writes into a public sheet you can watch; invites are on the waitlist.
FAQ
Can I migrate from Web3Forms to SheetLink Forms?
Yes, and it is usually a one-line change. Point your form at your SheetLink endpoint:
<form action="https://sheetlinkforms.com/f/your-token" method="POST"> <input name="_slhp" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px"></form>
Keep your existing inputs exactly as they are. Field names that match your sheet's column headers map automatically - the matching is case and punctuation insensitive, so "Email", "email", and "E-mail" all land in the same column - and explicit per-field mapping is available for anything that does not line up. If you submit with fetch or XHR, change the URL in your request the same way. Full request and response details are in the developer docs. Note that your access-key hidden field is simply ignored by SheetLink - you can remove it.
Web3Forms has a Google Sheets integration too - what is different?
Primacy and destination. On Web3Forms, Sheets is a Pro integration currently in beta, layered on an email-first pipeline, per their docs. On SheetLink Forms the sheet is the system of record: direct API delivery with retries and a delivery log, automatic header mapping into an existing sheet's columns, Excel Online tables as an equal destination, and a formula-injection guard on every cell.
Does SheetLink Forms email me when a form is submitted?
No - not currently. The row appearing in your sheet is the notification, and quarantined items wait in the dashboard queue. Web3Forms is built around email delivery, so if inbox notifications are non-negotiable, it is the better fit today. (Inbound email-to-form, where forwarding a mail creates a row, is currently in setup on our side - that is a different feature from outbound notifications.)
Which is better for a static site?
Both are equally easy to wire up - a plain HTML form action, no backend. Choose by destination: inbox -> Web3Forms; spreadsheet -> SheetLink Forms. If you run paid traffic to the page, the attribution capture in our embed script (UTMs plus gclid/fbclid/msclkid on every row) is the feature that usually decides it.
Comparison facts reference Web3Forms's public documentation and pricing pages and were checked at publish time; tell us if something is out of date.