How to Connect Contact Form 7 to Google Sheets
The complete 2026 tutorial for sending CF7 form data directly to Google Sheets - without Zapier, without GSheetConnector, and without per-submission fees.
TL;DR
Install SheetLink Forms, deploy a Google Apps Script webhook to your Sheet, paste the URL into the plugin settings, map your CF7 form tags (like [your-name] and [your-email]) to columns, and test. The entire process takes about 5 minutes. No Zapier, no OAuth tokens, no monthly fees.
Contact Form 7 is the most-installed WordPress form plugin - over 5 million active installs. But CF7 has no built-in way to send submissions to Google Sheets. Your options have traditionally been: manually copy-paste from email notifications, pay Zapier $30+/month at scale, or use GSheetConnector (which relies on OAuth tokens that expire and silently fail).
SheetLinkWP offers a direct alternative. It connects CF7 to Google Sheets through a lightweight Apps Script webhook - no middleware, no OAuth tokens stored in your database, and no per-submission fees. This guide walks through the complete setup.
What You Need
- A WordPress site with Contact Form 7 installed and at least one form created
- A Google account with access to Google Sheets
- SheetLink Forms plugin (free tier works, or any paid license)
Step-by-Step Setup
- 1
Create your destination Google Sheet
Open Google Sheets and create a new blank spreadsheet. Name it something descriptive like "CF7 Leads - March 2026". You don't need to add column headers - SheetLinkWP creates them automatically when the first submission arrives. If you prefer to set headers manually, add them in row 1 matching your CF7 field names: Name, Email, Phone, Message, etc.
- 2
Deploy the Apps Script webhook
In your Google Sheet, click Extensions > Apps Script. Delete any existing code in the editor. Paste the SheetLinkWP receiver script (provided in the SheetLink Forms plugin under SheetLink > Settings > Setup Guide). Click Deploy > New deployment. Under "Select type", choose "Web app". Set "Execute as" to yourself and "Who has access" to "Anyone". Click Deploy and authorize the permissions when prompted. Copy the web app URL - you'll need it in the next step.
- 3
Install and activate SheetLink Forms
If you haven't already, download SheetLink Forms from sheetlinkwp.com (or install the free version from WordPress.org). Go to Plugins > Add New > Upload Plugin, select the ZIP file, and click Install Now. Activate the plugin. You'll see a new "SheetLink" menu item in your WordPress admin sidebar.
- 4
Paste the webhook URL
Navigate to SheetLink > Settings in your WordPress admin. Paste the Apps Script web app URL you copied in Step 2 into the "Webhook URL" field. Click Save. SheetLink will test the connection and show a green checkmark if the webhook is reachable.
- 5
Map your CF7 form fields
Go to SheetLink > Field Mapping. Select "Contact Form 7" as your form plugin, then choose your specific form from the dropdown. SheetLinkWP will auto-detect your CF7 form tags. Map each tag to a Google Sheets column - for example, map "your-name" to column A, "your-email" to column B. CF7 uses tag names without brackets: [your-name] becomes "your-name" in the mapping. Special mail tags like [_date], [_time], and [_remote_ip] are also available.
- 6
Enable UTM and metadata capture (optional)
In the field mapping screen, toggle on "UTM Parameters" to automatically capture utm_source, utm_medium, utm_campaign, utm_term, and utm_content from the page URL. Toggle on "Click IDs" to capture GCLID (Google Ads), fbclid (Facebook), and msclkid (Microsoft Ads). These fields are appended as additional columns to every row.
- 7
Test the connection
Open your website's front end and submit a test entry through your CF7 form. Within 2-3 seconds, check your Google Sheet - you should see a new row with all the mapped data. If the row doesn't appear, check SheetLink > Delivery Log for error details. Common issues: the webhook URL was copied with trailing whitespace, or the Apps Script deployment needs re-authorization.
Troubleshooting
Submissions aren't appearing in Google Sheets
Check SheetLink > Delivery Log for error messages. The most common cause is a stale Apps Script deployment. Re-deploy the web app (create a new deployment, don't edit the existing one) and update the URL in SheetLink settings.
Some fields are missing or in the wrong columns
Open SheetLink > Field Mapping and verify each CF7 tag is mapped to the correct column. Remember: CF7 tags are case-sensitive. [Your-Name] and [your-name] are different tags.
UTM parameters are blank
UTM values are captured from the page URL at the time of submission. Test by adding ?utm_source=test&utm_medium=test to your form page URL before submitting. If still blank, ensure "UTM Parameters" is toggled on in field mapping.
CF7 to Google Sheets: SheetLinkWP vs Alternatives
| Feature | GSheetConnector | Zapier | SheetLinkWP |
|---|---|---|---|
| Auth method | OAuth 2.0 (tokens expire) | OAuth 2.0 via Zapier | Apps Script webhook (no tokens) |
| Monthly cost (500 subs) | Free / $49 yr Pro | $29.99+/mo | $0 (one-time $39) |
| Per-submission fee | No | Yes ($0.01-0.03/task) | No |
| Retry on failure | No built-in retry | Auto-retry | Built-in retry queue |
| UTM capture | No | Extra steps | Automatic |
| Conditional routing | No | Multi-path Zap | Built-in |
| Setup time | ~10 minutes | ~10 minutes | ~5 minutes |
| Data passes through | Google API | Zapier servers | Direct to Google (no middleware) |
Frequently Asked Questions
Does SheetLinkWP work with Contact Form 7?
Yes. SheetLinkWP supports Contact Form 7 natively, including all standard form tags, special mail tags, conditional fields, and file upload metadata.
Do I need to replace GSheetConnector?
If you're happy with GSheetConnector, you don't have to switch. The main advantages of SheetLinkWP are: no OAuth tokens (so no silent failures from expired tokens), built-in retry queue, UTM/click ID capture, and conditional routing - all features GSheetConnector lacks.
Can I send different CF7 forms to different Google Sheets?
Yes. SheetLinkWP's conditional routing lets you map each CF7 form to a different Sheet or tab. You can also route based on field values - for example, send leads from a pricing form to one Sheet and support requests to another.
Is CF7's free version sufficient, or do I need a premium add-on?
The free version of Contact Form 7 works perfectly with SheetLinkWP. No premium CF7 add-ons are required.
What happens if Google Sheets is temporarily down?
SheetLinkWP's retry queue caches the submission locally and retries with exponential backoff (30s, 60s, 2min, 5min, 15min). Submissions are preserved and retried automatically.
How much does SheetLinkWP cost for CF7 users?
The free tier supports 1 site with basic form-to-Sheets delivery. Paid licenses start at $39 (one-time, lifetime) for the Freelancer tier with all 7 form integrations, retry queue, UTM capture, and conditional routing.
Connect Contact Form 7 to Google Sheets in 5 Minutes
One plugin. No OAuth tokens. No per-submission fees. Works with CF7 and 6 other form builders.