How to Connect Fluent Forms to Google Sheets

Connect Fluent Forms to Google Sheets with a direct plugin - no need for Fluent Forms Pro, no Zapier tasks, no monthly fees. Works with the free version.

Last updated: 2026-03-13 6 min read

TL;DR

Install SheetLink Forms, deploy a Google <a href="/docs/google-sheets-setup">Apps Script</a> webhook, connect it in settings, map your Fluent Forms fields, and test. Works with Fluent Forms free. The native Google Sheets integration requires Fluent Forms Pro ($59+/yr) - SheetLinkWP does it for a one-time $39.

Fluent Forms is a lightweight, high-performance WordPress form builder that has grown into one of the leading alternatives to Gravity Forms and WPForms. It's made by WPManageNinja (the same team behind FluentCRM and FluentSMTP), and its architecture favors speed: minimal database writes, asynchronous action processing, and a clean JSON-based submission payload.

The native Google Sheets integration is a Pro feature ($59/year single-site, more for multi-site). Free-tier users have no built-in Sheets delivery path. Zapier works but charges per task; custom webhooks via the Fluent Forms webhook integration (Pro) work but require DIY column mapping on the Google side.

SheetLinkWP gives every Fluent Forms user - free or Pro - direct Google Sheets delivery with field-level mapping, UTM capture, retry queue, and a one-time $39 price. It integrates via Fluent Forms' native API hooks, so it coexists cleanly with FluentCRM contact creation, FluentSMTP email delivery, and any other Fluent-ecosystem tool you're running. This guide covers the complete setup plus the Fluent Forms-specific patterns (input_name field keys, conversational forms, GeoIP data, FluentCRM integration).

Why Fluent Forms Users Need Sheets Delivery

Fluent Forms stores submissions in its own table (wp_fluentform_submissions) and shows them in a Fluent admin UI - reasonably well-designed but still inside WordPress. For most sites, the real question is not whether submissions are stored but who else needs to see them.

Sales and marketing teams rarely want WordPress admin accounts just to view leads. Executives don't want to open the WP admin for a weekly summary. A Google Sheet solves the access problem - share view or edit permissions with any email address, build Looker Studio dashboards, connect to Zapier on the Sheet side if you need downstream automation.

Fluent Forms' speed-first design makes it especially common on high-volume lead gen sites (landing pages, newsletter popups, quick-inquiry forms). Those are exactly the sites where a live-updating Sheet pays off fastest - you can watch conversions in real time instead of reloading the WordPress admin.

How SheetLinkWP Hooks Into Fluent Forms

Fluent Forms fires native action hooks after submission processing completes. SheetLinkWP subscribes to these hooks - the same ones FluentCRM uses to create contacts and FluentSMTP uses to send email:

  1. 1. Form submitted, validated: Fluent Forms runs validation (required fields, regex patterns, reCAPTCHA/hCaptcha/Turnstile, honeypot). Invalid submissions never reach SheetLinkWP.
  2. 2. Submission saved to wp_fluentform_submissions: Entry is committed to the database. A unique submission ID is assigned.
  3. 3. fluentform/submission_inserted fires: SheetLinkWP listens on this hook. Field data is passed as a key-value associative array using Fluent's input_name field keys.
  4. 4. Payment + GeoIP data resolved: For Pro forms with payment, payment_status and transaction_id are available. If Fluent's GeoIP module is enabled, ip_country and ip_city come along too.
  5. 5. Mapping applied: Each Fluent input_name key maps to a Sheet column. Unmapped fields are dropped; mapped-but-empty fields write empty cells.
  6. 6. Webhook POST with retry: JSON payload posted to Apps Script. On failure, retry queue with exponential backoff. All within Fluent's fast, non-blocking action processing pipeline.

What You Need

  • A WordPress site with Fluent Forms installed (free or Pro)
  • A Google account with access to Google Sheets
  • SheetLink Forms plugin (free tier or any paid license)

Step-by-Step Setup

Field mapping tip: Fluent Forms uses descriptive field names by default. SheetLinkWP reads these names directly, making field mapping straightforward. Payment fields from Fluent Forms Pro (Stripe, PayPal) are also captured.
  1. 1

    Create your Google Sheet

    Open Google Sheets, create a new spreadsheet, and name it.

  2. 2

    Deploy the Apps Script webhook

    In your Sheet, go to Extensions > Apps Script. Paste the SheetLinkWP receiver script, deploy as a Web app, and copy the URL.

  3. 3

    Install SheetLink Forms

    Download from sheetlinkwp.com or WordPress.org. Upload and activate.

  4. 4

    Connect and map fields

    Paste the webhook URL in SheetLink > Settings. Then go to Field Mapping, select "Fluent Forms", choose your form, and map fields to Sheet columns. Fluent Forms uses intuitive field names that SheetLinkWP auto-detects.

  5. 5

    Test the setup

    Submit a test entry through your Fluent Forms form and verify the row appears in Google Sheets.

Fluent Forms Input Name & Submission Meta Reference

Fluent Forms identifies fields by input_name - a key you can set explicitly in each field's advanced settings. Default input_names are sensible (email, first_name, etc.) but customization is recommended for production forms. Submission-level metadata is always available:

input_name / meta Source Notes
names.first_name Name field Fluent's name field splits into first, middle, last. Use names.first_name, names.middle_name, names.last_name.
email Email field Default input_name for email fields. Validated by Fluent Forms before submission.
phone Phone field Default input_name. Fluent's international phone field also provides phone.country_code if enabled.
message Textarea field Default. Max length configurable per field.
address.address_line_1 Address field Address subfields: .address_line_1, .address_line_2, .city, .state, .zip, .country.
your_custom_key Any standard field Override the default input_name in each field's advanced settings. Sluggy lowercase_with_underscores recommended.
select Dropdown field Writes selected option value. Multi-select joins with commas.
checkbox Checkbox group Multi-checked values comma-joined. Enable per-option columns in SheetLink settings for boolean-style reporting.
upload File upload Fluent Pro feature. Writes file URL. Multi-file uploads JSON-array-serialized.
rating Star rating field Writes numeric rating value (1-5 or 1-10).
payment_item Payment field Fluent Pro. Amount field for Stripe/PayPal integration. Pair with payment_status and transaction_id meta.
submission_id Submission meta Unique Fluent Forms submission ID. Use as Sheet primary key.
form_id Submission meta Numeric form ID - handy for multi-form Sheets filtering.
created_at Submission meta Timestamp in site timezone.
ip Submission meta Submitter IP.
ip_country Submission meta (GeoIP) Fluent's GeoIP module must be enabled. Writes ISO country code.
ip_city Submission meta (GeoIP) City detected from IP. Useful for geographic segmentation without asking the user.
browser Submission meta Browser name parsed from user agent.
device Submission meta Desktop / Mobile / Tablet classification.
referer Submission meta HTTP referer - the page the visitor came from.
payment_status Submission meta paid, pending, failed, refunded. For Fluent Pro payment forms.
transaction_id Submission meta Payment gateway transaction reference (Stripe ch_..., PayPal transaction ID).

Real-World Use Cases

High-volume landing page lead capture with GeoIP

A B2C lead gen landing page collects email + first name. Fluent Forms' lightweight rendering keeps page speed fast, and SheetLinkWP writes every submission to a shared Sheet with country/city from Fluent's GeoIP. Sales ops filter the Sheet by country for regional assignment - no user-side country picker required.

Field mapping: email, names.first_name, ip_country, ip_city, created_at, referer. UTM columns from SheetLinkWP's automatic capture. Total: ~10 columns.

Conversational forms for long-form intake

Fluent Forms' conversational style presents one field at a time, chat-style. Completion rates on 20-field application forms jump dramatically. SheetLinkWP writes the complete conversation to a single Sheet row once finished - no partials unless you enable partial capture.

Field mapping: All fields + created_at, device, browser. Enable "Capture partials" only if you want to route abandoned conversations to a nurture tab.

FluentCRM + Google Sheets dual-sink

Your marketing stack uses FluentCRM for email automation. Every lead goes into FluentCRM for nurture, and also needs to land in a Google Sheet so the sales team can work it without FluentCRM access. FluentCRM's action runs on the same hook as SheetLinkWP - no conflict, both fire for every submission.

Field mapping: All lead fields + submission_id as primary key. FluentCRM handles tags and email sequences; the Sheet is the sales-accessible view.

Payment receipt mirror for Fluent Pro + Stripe

A Fluent Forms Pro donation or event form takes Stripe payments. Finance needs a running spreadsheet of transactions. SheetLinkWP runs after Fluent's Stripe processing, so payment_status and transaction_id are populated at write time.

Field mapping: Donor info + payment_item, payment_status, transaction_id, created_at. Conditional routing: failed payments to a separate tab for follow-up.

Advanced Tips

Set explicit input_names in every field

Fluent auto-generates input_names like input_text_1 if you don't set one. They're fragile. In each field's Advanced tab, set readable input_names (work_email, annual_revenue) so SheetLinkWP mappings survive form edits and duplications.

GeoIP capture adds real value, but it's opt-in

Fluent's GeoIP detection uses MaxMind's free database. Enable it in Fluent Forms > Settings > GeoIP. Once on, ip_country and ip_city become available as meta fields in SheetLinkWP mapping. For B2C forms this is huge - no user-side country picker, instant geographic segmentation.

FluentCRM coexists without conflict

If you run FluentCRM for email automation, don't disable its integration to make room for SheetLinkWP. Both subscribe to the same submission hook and fire independently. FluentCRM creates the contact and starts sequences; SheetLinkWP writes the Sheet row. Most Fluent ecosystem sites run both.

Conversational forms need no extra setup

When you enable Conversational mode on a Fluent form, it still fires the same submission action. SheetLinkWP works identically - no separate mapping, no separate hook. Completion rates go up; your Sheet rows still land the same way.

Fluent's webhook integration vs SheetLinkWP

Fluent Pro includes a generic Webhook integration. It works, but you have to build the Apps Script receiver, manage field-level JSON mapping, and handle retries yourself. SheetLinkWP does all of that plus field-mapping UI, retry queue, and delivery logging. For Sheets specifically, it's a massive time-save.

Troubleshooting

Submissions go to Fluent Forms entries but not to Google Sheets

Check SheetLink > Delivery Log for errors. Verify the webhook URL is correct and the Apps Script deployment is active.

Conversational form submissions aren't captured

Fluent Forms conversational forms submit through the same backend action as standard forms. SheetLinkWP should capture them. If not, check that the form is correctly selected in Field Mapping.

GeoIP fields are empty even though the module is enabled

Fluent's GeoIP module needs to populate the submission record before SheetLinkWP reads it. If you enabled GeoIP after some submissions landed, those historical rows won't backfill. Test with a new submission - country/city should appear in the new row.

Custom input_names show as input_text_N in the mapping UI

Fluent caches form schema for performance. After changing input_names, open and re-save the form in the Fluent editor. SheetLinkWP will pick up the new keys on next page load.

Stripe payment_status always shows pending

Stripe confirmation is asynchronous - Fluent fires <code>submission_inserted</code> immediately after submission, before Stripe returns final status. Enable "Wait for payment" in SheetLink > Settings > Fluent Forms to add a short delay (200-500ms) that lets Stripe resolve before the row is written.

Fluent Forms to Google Sheets: Comparison

FeatureFluent Forms ProZapierSheetLinkWP
Price $59+/yr (Pro)$29.99+/mo$39 one-time
Works with Free tier NoYesYes
Per-submission fee NoYesNo
UTM capture NoExtra stepsAutomatic
Retry on failure No infoAuto-retryBuilt-in queue
Works with other plugins NoYes (per-Zap)Yes (12 plugins)

Frequently Asked Questions

Does SheetLinkWP work with the free version of Fluent Forms?

Yes. Both the free and Pro versions of Fluent Forms are supported.

Why would I use SheetLinkWP instead of Fluent Forms Pro's built-in integration?

SheetLinkWP adds UTM capture, click ID tracking, conditional routing, and a retry queue - features not included in Fluent Forms Pro's native integration. Plus, if you use multiple form plugins across sites, one SheetLinkWP license covers all 12 core form plugins (17 with the Integrations Bundle add-on).

Does it work with Fluent Forms conversational forms?

Yes. Conversational forms use the same submission pipeline, so SheetLinkWP captures them identically to standard forms.

Can I capture Fluent's GeoIP data in the Sheet?

Yes - if you've enabled the GeoIP module in Fluent Forms > Settings. Once on, ip_country and ip_city become available as submission meta fields you can map to columns. No user-side country picker needed.

Will this work alongside FluentCRM?

Yes. FluentCRM and SheetLinkWP both listen on Fluent's submission hook and fire independently. Most teams run both - FluentCRM for email automation, SheetLinkWP for sheet-based reporting and team access.

Does it capture payment fields from Fluent Pro?

Yes. Payment fields (amount, status, transaction ID) from Stripe, PayPal, or Razorpay integrations are available as submission meta and can be mapped to Sheet columns.

How does it compare to Fluent Pro's built-in webhook integration?

Fluent Pro's webhook posts raw JSON to a URL you provide. SheetLinkWP adds a Google Sheets receiver, field-mapping UI, retry queue, UTM capture, and delivery logging - everything you'd have to build yourself with the generic webhook.

Related How-To Guides

Connect Fluent Forms to Google Sheets - Free Version Supported

No Pro license needed. Direct connection with UTM capture, retry queue, and more.