Description
SheetLink Forms sends your form submissions straight to Google Sheets or Excel. Every submission becomes a properly mapped row – no manual exports, no per-submission fees, no Zapier account.
Setup takes about three minutes: pick your form plugin, map fields to columns, and connect Google in one click. SheetLink creates the sheet, or you pick an existing one with Google’s file picker. Prefer not to connect an account? Paste the generated Apps Script into your own sheet instead.
Local-first. Submissions go from your server straight to Google, never through SheetLink’s servers. The one-click connection uses our sign-in broker only to link and renew your account; your form data never passes through it. No telemetry, no activation pings, no required account.
Supported form plugins
Contact Form 7, WPForms, Gravity Forms, Elementor Pro, Fluent Forms, Formidable Forms, Ninja Forms, Forminator, Everest Forms, Beaver Builder, Divi and WS Form – all from one admin screen.
Everything in this plugin is free and unlimited: every form integration, unlimited sync rules, field mapping, the retry queue, delivery logs, attribution capture, conditional routing, mirrors to Excel Online, Airtable and Notion, local analytics and a multisite overview. Additional features are available in SheetLink Pro, a separate plugin sold at sheetlinkwp.com, and two optional hosted services (the Lead Inbox client portal and AI Lead Scoring) work with this plugin. The Features section below lists all of it.
Features
Free
- All 12 form integrations, unlimited sync rules, field mapping
- One-click Google Sheets connect, using Google’s restrictive
drive.filescope, so SheetLink only ever sees sheets it creates or you pick - Mirroring to Excel Online, Airtable and Notion alongside your sheet
- Automatic retry queue, delivery logs and a test button
- UTM, GCLID, fbclid, msclkid, IP, page URL and referrer capture
- Conditional routing, smart mapping suggestions, guided setup wizard
- Local analytics, stored in your own database
- Export and deletion through the WordPress privacy tools
- Multisite network overview
SheetLink Pro (separate plugin)
A separate plugin sold and downloaded from sheetlinkwp.com/pricing – none of it is included in, or gated inside, this free plugin:
- Primary Destinations – make Excel Online, Airtable or Notion a rule’s only destination. Mirroring alongside Sheets is free in this plugin
- Multi-CRM Routing – HubSpot, Salesforce, Zoho, Pipedrive, Mailchimp, ActiveCampaign, Kit
- Two-Way Sync – edit a row in your sheet, the change arrives back in WordPress
- WooCommerce Sync – orders, refunds and customers in real time
- Extra Integrations – JetFormBuilder, Bricks Builder, MetForm, Kali Forms, HappyForms, plus MemberPress, LearnDash and Easy Digital Downloads events
- Agency tools – white-label admin, multisite dashboard, branded reports, role-based menus, network templates
Hosted services (optional, work with this free plugin)
- AI Lead Scoring – 0-100 scoring of captured leads through the SheetLink API, off by default, behind a consent checkbox
- Lead Inbox client portal – a hosted portal where your clients work their leads without a WordPress login
Both are documented in the External services section below.
External services
This plugin contacts the external services below. Google is core to the plugin’s function; every other service is optional and is never contacted until you enter its credentials and enable it. Each entry says what the service is for, what data is sent and when, with links to the provider’s terms and privacy policy. Token storage and privacy-notice guidance are in the FAQ.
Google Sheets API and Google Drive (one-click connection)
Google’s official Sheets and Drive APIs, used only after you click “Connect Google” and grant consent at Google’s own sign-in screen. Per matching submission, the form field values you mapped (plus optional enrichment such as timestamps, UTM parameters, IP address and page URL, if enabled) are written from your server to sheets.googleapis.com; creating a sheet and listing tabs use the same API, and the file picker uses www.googleapis.com/drive/v3/ and loads Google’s Picker script in wp-admin only. The scope is drive.file, so SheetLink can only ever see spreadsheets it creates or that you pick. Sign-in and periodic token renewal go through SheetLink’s broker at sheetlinkwp.com/api/sheetlinkwp/oauth/google/ so the Google client secret stays off your site; your form data never passes through the broker. Disconnecting clears the stored token and stops all calls.
Google Terms of Service | Google Privacy Policy
Google Apps Script (classic method)
A web app you deploy in your own Google Sheet receives the mapped field values (plus optional enrichment, as above) on each matching submission. Receiver URLs are validated to begin with https://script.google.com/ or https://script.googleusercontent.com/. This method uses no API keys and no OAuth – nothing but your own Google script is contacted.
Apps Script documentation | Google Terms of Service | Google Privacy Policy
SheetLink License Server (only if you activate a licence)
Contacted only if you activate a paid licence: once when you paste the key, every 12 hours to refresh the cached entitlements, and when you click “Re-check entitlements”. It sends your licence key (or purchase email as a fallback) and this site’s domain – never form submissions, user accounts or site content – to sheetlinkwp.com/api/sheetlinkwp/verify and /entitlements. Deactivating from the License page stops all calls; free features keep working with no further requests.
SheetLink Terms | SheetLink Privacy Policy
SheetLink AI Lead Scoring (optional, off by default)
A hosted service that returns a 0-100 score, a hot/warm/cold band and a one-sentence explanation per captured lead. It runs only when your licence includes it AND you have ticked “Score incoming leads with AI” in Lead Settings, on WP-Cron rather than during the submission. It sends the submitted field values with contact details removed first (exactly how is in the FAQ) plus this site’s activation token to sheetlinkwp.com/api/sheetlinkwp/lead-score. Unticking the box stops all requests immediately.
SheetLink Terms | SheetLink Privacy Policy
SheetLink AI Analytics extras (optional, off by default)
Three optional per-submission extras on the Analytics page – sentiment, summary and category – computed by the same hosted service. Called only when the specific extra AND AI consent in Lead Settings are both enabled. Sends the field values scrubbed exactly as for AI Lead Scoring, your own category list when the category extra is on, and the activation token to sheetlinkwp.com/api/sheetlinkwp/analytics. Everything else on the Analytics page is computed locally and sends nothing.
SheetLink Terms | SheetLink Privacy Policy
Microsoft Graph API (only when Excel Online is connected)
Microsoft’s OneDrive and Excel Online API. Used only after you click “Connect Excel”, grant consent at Microsoft’s sign-in page, pick a workbook and table, and enable Excel on a rule. Per submission, the field values you mapped are inserted into your chosen Excel table at graph.microsoft.com. Token refresh goes through SheetLink’s broker at sheetlinkwp.com/api/sheetlinkwp/oauth/microsoft/ so the Azure client secret stays off your site; form data never passes through the broker. Disconnecting stops all calls and clears the stored tokens.
Microsoft Services Agreement | Microsoft Privacy Statement
Airtable API (only when an Airtable destination or mirror is configured)
Creates a record in your Airtable table at api.airtable.com once per matching submission and on “Send Test” – but only after you enter an Airtable personal access token, base and table and enable Airtable on a rule. It sends the field values you mapped (or all captured fields if you set no mapping) with your token as the credential. Disabling the rule or clearing the stored token stops all requests.
Airtable Terms of Service | Airtable Privacy Policy
Notion API (only when a Notion destination or mirror is configured)
Creates a page in your Notion database at api.notion.com once per matching submission and on “Send Test”; it also reads the database schema when you open the settings page so your Notion properties can be offered for mapping. Requires a Notion internal integration token and database ID. It sends the field values you mapped (or all captured fields if you set no mapping) with your token as the credential. Disabling the rule or clearing the stored token stops all requests.
Notion Terms of Service | Notion Privacy Policy
Twilio API (only when SMS Alerts are configured)
Sends you an SMS or WhatsApp alert per matching submission (and on test sends) after you enter a Twilio Account SID, auth token, from-number and recipients, and enable alerts on a rule. It sends the alert body you composed – which by default contains the form values you put in the template – the sending and recipient phone numbers, and your Twilio credentials to api.twilio.com. Disabling alerts or clearing the credentials stops all requests.
Twilio Terms of Service | Twilio Privacy Policy
Meta (Facebook) Conversions API (only when Meta CAPI is configured)
Reports a form submission to your Meta advertising pixel as a server-side conversion event, after you enter a pixel ID and access token and enable it on a rule. It sends: the submitter’s email and phone number hashed with SHA-256 before leaving your server (never in plain text), the fbclid click ID if present, the submitter’s IP address and browser user-agent as-is (Meta uses these to match the event), the page URL, an event name, timestamp, currency and value, and your access token – to graph.facebook.com. Other form field values are not sent. This shares personal data with Meta for ad measurement; see the FAQ on privacy notices and consent before enabling it.
Meta Terms of Service | Meta Privacy Policy
SheetLink Lead Inbox cloud sync (only when the client portal is enabled)
When the hosted client-lead portal is switched on for a site, each captured lead is mirrored to sheetlinkwp.com/api/sheetlinkwp/leads – including the lead’s name, email address and phone number in plain text, all submitted field values, attribution data, capture time, status and value fields – so your client can view and work leads in a browser without a WordPress login. Unlike AI Lead Scoring this data is deliberately not scrubbed, because the portal exists so your client can contact the lead. It pushes when a lead is captured and when its status, owner or value changes. Switching the portal off stops all pushes; see the FAQ on privacy notices before enabling it.
SheetLink Terms | SheetLink Privacy Policy
Every other feature – smart mapping suggestions, local analytics charts, duplicate detection, conditional routing, ads conversion exports, the email digest, and the setup wizard – runs entirely on your own WordPress server and contacts nothing.
Screenshots





Installation
From your WordPress admin (recommended)
- In your WordPress admin, go to Plugins Add New.
- Search for “SheetLink Forms”.
- Click Install Now, then Activate.
- The setup wizard opens automatically and walks you through connecting your first form to Google Sheets in about three minutes.
Manual upload
- Download the
sheetlink-forms.zipfile. - In WordPress, go to Plugins Add New Upload Plugin and upload the zip, or extract it into
/wp-content/plugins/sheetlink-forms/. - Activate the plugin from the Plugins menu.
- The setup wizard opens automatically. If you dismissed it, visit SheetLink in the admin menu and click + Add Rule to configure your first sync rule manually.
What you’ll need
- A WordPress form plugin (Elementor Pro, Contact Form 7, Gravity Forms, WPForms, Fluent Forms, Formidable, Ninja Forms, Forminator, Everest Forms, Beaver Builder, Divi, or WS Form)
- A Google account with access to Google Sheets
- About three minutes
FAQ
-
How do I send Contact Form 7 submissions to Google Sheets?
-
Install SheetLink Forms, create a sync rule, choose your Contact Form 7 form, connect Google, and map the form fields to spreadsheet columns. New submissions are added as rows automatically. Step-by-step guide: Connect Contact Form 7 to Google Sheets.
-
Can I connect WPForms Lite to Google Sheets for free?
-
Yes. Both WPForms Lite and WPForms Pro are supported, and the free SheetLink plugin sends unlimited WPForms submissions to Google Sheets. Step-by-step guide: Connect WPForms to Google Sheets.
-
How do I connect Elementor Forms to Google Sheets?
-
Create a sync rule, select your Elementor Pro form, connect or pick a Google Sheet, and map each Elementor field to a column. Step-by-step guide: Connect Elementor Forms to Google Sheets.
-
Does SheetLink support Gravity Forms to Google Sheets?
-
Yes. Gravity Forms entries go to Google Sheets in real time, with custom field mapping, delivery logs, and automatic retries. Step-by-step guide: Connect Gravity Forms to Google Sheets.
-
Can WordPress forms send entries to Excel Online?
-
Yes. SheetLink mirrors submissions into an Excel Online workbook on Microsoft 365 or OneDrive for free, alongside your Google Sheet. Making Excel a rule’s only destination is a feature of the separate SheetLink Pro plugin. Note that Microsoft’s Excel API supports business accounts only – personal Outlook.com OneDrive is not supported by Microsoft for this. Step-by-step guide: WordPress forms to Microsoft 365.
-
Do I need to create an account or register?
-
No. SheetLink Forms works immediately after installation. No account, no registration, no license key required.
-
Do I have to paste an Apps Script into my sheet?
-
Not anymore. Connect your Google account in one click and SheetLink writes rows through Google’s official Sheets API – it can create the sheet for you, or you pick an existing one with Google’s own file picker. The classic Apps Script method remains fully supported for users who prefer a zero-account, script-only setup; both are free.
-
Do I need a Zapier account?
-
No. SheetLink Forms sends data directly from WordPress to Google Sheets – through your one-click connected Google account or via a free Google Apps Script. No third-party services needed.
-
Does the plugin call home or track anything?
-
No telemetry, no analytics beacons, no activation pings. On a default install, form submissions go only to the Google destination you configured – never through SheetLink’s servers. If you use the one-click Google or Microsoft connection, the sign-in handshake and periodic token renewal go through SheetLink’s OAuth broker at sheetlinkwp.com; your form data never does.
Several optional features, each off until you configure it, do send submission data elsewhere: the Excel Online, Airtable and Notion destinations send it to Microsoft, Airtable and Notion respectively; SMS Alerts sends your alert text to Twilio; Meta Conversions API sends a hashed conversion event to Meta; and three optional hosted features route data through SheetLink’s own servers – AI Lead Scoring, AI Analytics extras, and the Lead Inbox client portal. See the “External services” section below, which documents every one of them individually.
-
What does AI Lead Scoring remove from a lead before sending it?
-
Names and phone numbers are replaced with the placeholder “provided”, email addresses are reduced to their domain, and any email address or phone number typed into a free-text answer is redacted in place. Free-text answers are otherwise sent as written, since that is what the rating is based on. The form identifier, the source form plugin name, the site URL and WordPress user account data are never sent.
-
How are my Google and Microsoft tokens stored?
-
Refresh tokens are encrypted with AES-256-GCM (key derived from your site’s
wp_salt( 'auth' )via HKDF) before being written to your own database, and are cleared the moment you disconnect. Access tokens are short-lived (about an hour). Nothing is stored on SheetLink’s servers beyond what the OAuth broker needs to complete the handshake. -
Do I need to update my privacy notice when I enable these features?
-
If your forms collect personal data: with the one-click Google or Excel connection, list
googleapis.comorgraph.microsoft.com(andsheetlinkwp.comfor the sign-in broker) as processors. With AI Lead Scoring, AI Analytics extras or the Lead Inbox portal, listsheetlinkwp.comas a processor – the portal transfers lead contact details in plain text, so satisfy yourself that you have a lawful basis first. Meta Conversions API shares an IP address and hashed contact details with Meta for ad measurement, which in the EU/UK and similar jurisdictions normally requires disclosure and consent – list Meta as a recipient and obtain consent where your local law requires it before enabling it. -
Which form plugins are supported?
-
Elementor Pro Forms, Contact Form 7, Gravity Forms, WPForms, Fluent Forms, Formidable Forms, Ninja Forms, Forminator, Everest Forms, Beaver Builder, Divi, and WS Form.
-
How do I set up the Google Sheet?
-
SheetLink Forms generates the Google Apps Script for you. Click “Get Script” on any rule, copy the code, and paste it into your Google Sheet’s Apps Script editor (Extensions > Apps Script). Then deploy it as a web app.
-
Can I send different forms to different sheets?
-
Yes. Create multiple sync rules, each pointing to a different Google Sheet (a different connected sheet, or a different Apps Script URL with the classic method).
-
Is my data secure?
-
Form submission data is sent directly from your WordPress server to Google over HTTPS: to
sheets.googleapis.com(Google’s official Sheets API) when you use the one-click connection, or to the Google Apps Script URL you configure with the classic method (onlyscript.google.comandscript.googleusercontent.comURLs are allowed as receivers). It never passes through SheetLink’s servers. If – and only if – you enable the optional Lead Scoring add-on on the Analytics page, a copy of each submission is also sent over HTTPS tohttps://sheetlinkwp.com/api/sheetlinkwp/lead-score. Every other feature of the plugin runs locally on your WordPress server. -
The submission is logged as failed and automatically retried up to 3 times (every 15 minutes). You can also retry manually from the Retry Queue page.
-
Is SheetLink a free Zapier alternative?
-
Yes. Zapier’s base plan starts around $20/month and charges per task. SheetLink delivers unlimited form submissions from your WordPress site directly to Google Sheets at no cost – no per-task fees, no subscription, no registration. You own the entire pipeline.
-
Does SheetLink work with WPForms?
-
Yes. WPForms is fully supported in the free core, both Pro and Lite. Every submission is mapped to your chosen Google Sheet with the fields you select.
-
Does SheetLink work with Elementor Pro forms?
-
Yes. Elementor Pro Forms are fully supported in the free core. Create a sync rule, map fields, connect Google in one click (or paste the generated Apps Script) – done.
-
Does SheetLink work with Fluent Forms?
-
Yes. Fluent Forms is fully supported in the free core, along with 11 other form plugins (Contact Form 7, WPForms, Gravity Forms, Elementor Pro, Formidable, Ninja Forms, Forminator, Everest Forms, Beaver Builder, Divi, WS Form).
-
Can I send WooCommerce orders to Google Sheets?
-
Yes, with the WooCommerce Sync add-on. It pushes orders (created, completed, refunded), customers, and product catalogue changes (price, SKU, stock, status) to Google Sheets in real time. This is a premium feature; the free core covers form submissions.
-
How is SheetLink different from GSheetConnector and other single-form plugins?
-
Most CF7-to-Sheets or form-to-Sheets plugins handle one form type. SheetLink supports 12 form plugins from a single admin interface, includes an automatic retry queue that recovers failed deliveries, captures UTM and click-ID parameters for marketing attribution, runs local analytics on your own WordPress database, and ships a guided setup wizard that takes new installs from zero to a working Google Sheet in about three minutes.
-
Does SheetLink work with WordPress Multisite?
-
Yes. The free core includes a network-admin overview of all subsites. Multisite-wide central management and the Agency Dashboard are available in the Agency Plus tier.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“SheetLink Forms for Google Sheets and Excel” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “SheetLink Forms for Google Sheets and Excel” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.17.0
- Changed: every paid feature has moved into SheetLink Pro, a separate plugin downloaded from sheetlinkwp.com. This plugin now contains no locked or licence-gated functionality, in line with the WordPress.org plugin guidelines. Advanced Routing, White-Label, Branded Reports, Agency Dashboard, Role Access, WooCommerce Sync, Extra Integrations, Multi-CRM Routing, Two-Way Sync and Bulk Site Management all live in SheetLink Pro now. If you have a licence and used any of these, install SheetLink Pro and everything comes back exactly as it was – same settings, same licence key, nothing to reconfigure. A notice with a download link appears in your admin after updating.
- Changed: choosing Excel Online, Airtable or Notion as a rule’s ONLY destination is now offered by SheetLink Pro. The free mirrors to all three destinations are unchanged, and any existing rule already set up that way keeps delivering.
- Changed: the Features page now lists this plugin’s own (all free) features; SheetLink Pro adds its cards to the same page when installed.
- Changed: readme rewritten – every external service the plugin can contact is now documented individually under “External services”, with what is sent, when, and links to each provider’s terms and privacy policy.
- Fixed: a number of request values (credentials, field mappings, phone numbers, template and recipient fields) are now sanitized at the moment they are read, not only when used. Partial form-abandonment payloads and network templates are sanitized recursively after decoding.
- Changed: changelog entries older than 1.16.0 moved to changelog.txt, bundled with the plugin.
- Tested up to WordPress 7.1.
1.16.1
- Changed: the plugin’s display name is now “SheetLink Forms for Google Sheets and Excel” in both the readme and the plugin header, so the two match and the name leads with the plugin’s own brand rather than a trademark.
- Changed: the readme description has been shortened. It was long enough to be trimmed when the directory parsed it, which meant part of it was never displayed.
- Changed: changelog entries older than 1.14.8 moved to changelog.txt, bundled with the plugin. No functional change.
- Fixed: five places where a value was printed into admin HTML or a digest email without escaping, including the white-label name and accent colour.
- Fixed: failed deliveries to Meta CAPI, Twilio SMS and Excel wrote the provider’s error message or response body to the PHP error log on every failure, in production. Those can carry the request URL and its credentials, or the submitted lead’s own details. Now logged only under WP_DEBUG, and only the status – matching what the Airtable and Notion destinations already did.
1.16.0
- Added: the Lead Inbox now actually fills up. The Leads, Lead Settings and Lead Reports screens arrived in 1.15.0, and nothing ever appeared in them, because SheetLink never announced a submission for them to record. Every submission now becomes a lead – including submissions that match no sync rule at all, and ones whose delivery fails, which are exactly the enquiries that used to vanish without trace. Existing leads are unaffected; capture starts from this update.
- Added: AI Lead Scoring, working end to end. Each new lead is rated 0-100 with a hot / warm / cold band and a one-line explanation of the rating, shown in the Leads list, on the lead itself, and in the CSV export. You can sort the list by score. Off until you switch it on in Lead Settings, and it only ever scores leads captured after you do – it will not work through your back catalogue or spend your monthly allowance on old enquiries.
- Added: contact details are removed before anything is sent for scoring. Names and phone numbers are replaced with a placeholder, email addresses are reduced to their domain (so “works at a company” survives but the person does not), and an email address or phone number typed into a message is redacted in place. The rating quality is unaffected – scoring reads intent, not identity.
- Added: a Setup item in the SheetLink menu, so the setup guide is always one click away. Activating the plugin already takes you straight into it, but that only happens once – and it is skipped entirely if you activate several plugins together, install over WP-CLI, or switch SheetLink off and back on. Anyone who missed that first-run screen previously had no way back to it.
- Added: delivery outcomes now attach to the lead, including recovery. A delivery that failed and then succeeded on a later retry used to read as “failed” on that lead forever, even though the row was sitting in your sheet. The lead now shows it recovered, and its history says when.
- Changed: AI scoring is switched on in Lead Settings. It was previously only offered on the Analytics page, which does not exist unless you have separately enabled the free Local Analytics feature – so a customer whose plan included scoring had no way to reach the switch. The Analytics page now shows whether AI consent is on and links to it.
- Changed: scoring and the AI extras use your existing licence, not a second token. The “API Token” field on the Analytics page is gone. It asked you to paste in a value SheetLink already had, and leaving it blank silently disabled features you were paying for.
- Fixed: uninstalling left settings behind in your database. Sixteen options survived a full uninstall, including a stored Google Sheets two-way state, every Lead Inbox setting, and cached diagnostics. Deleting the plugin now removes them. Your captured leads are still kept on purpose – removing a plugin should not delete the enquiries you collected, so the three lead tables are only dropped if you explicitly ask for that.
- Fixed: hidden
_sheetlink_idcolumn groundwork for linking a spreadsheet row back to its lead. It is only sent to sheets whose Apps Script is current, so nothing appears in your existing sheets and no redeploy is required; if you do update your script it arrives hidden.
