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.

Last updated: 2026-03-13 8 min read

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

Field mapping tip: CF7 uses form tags like [your-name], [your-email], [your-subject]. In SheetLinkWP's field mapping, use the tag name without brackets. Special mail tags are also supported: _date (submission date), _time (submission time), _remote_ip (visitor IP), _serial_number (auto-increment ID), _post_title, and _post_url.
  1. 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. 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. 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. 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. 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. 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. 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

FeatureGSheetConnectorZapierSheetLinkWP
Auth method OAuth 2.0 (tokens expire)OAuth 2.0 via ZapierApps Script webhook (no tokens)
Monthly cost (500 subs) Free / $49 yr Pro$29.99+/mo$0 (one-time $39)
Per-submission fee NoYes ($0.01-0.03/task)No
Retry on failure No built-in retryAuto-retryBuilt-in retry queue
UTM capture NoExtra stepsAutomatic
Conditional routing NoMulti-path ZapBuilt-in
Setup time ~10 minutes~10 minutes~5 minutes
Data passes through Google APIZapier serversDirect 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.