{"id":287417,"date":"2026-03-12T13:27:20","date_gmt":"2026-03-12T13:27:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sheetlink-forms\/"},"modified":"2026-03-15T20:57:01","modified_gmt":"2026-03-15T20:57:01","slug":"sheetlink-forms","status":"publish","type":"plugin","link":"https:\/\/en-au.wordpress.org\/plugins\/sheetlink-forms\/","author":23461852,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.6.3","stable_tag":"1.6.3","tested":"6.8.5","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"SheetLink Forms","header_author":"SheetLink Forms","header_description":"Send WordPress form submissions directly to Google Sheets. No Zapier. No monthly fees. Supports Elementor, CF7, Gravity Forms, WPForms, Fluent Forms, Formidable, and Ninja Forms.","assets_banners_color":"51839f","last_updated":"2026-03-15 20:57:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":226,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.6.2":{"tag":"1.6.2","author":"sheetlink","date":"2026-03-12 13:26:49"},"1.6.3":{"tag":"1.6.3","author":"sheetlink","date":"2026-03-15 20:57:01"}},"upgrade_notice":{"1.6.3":"<p>Corrected &quot;Tested up to&quot; to WordPress 6.8.<\/p>","1.6.2":"<p>Removed remaining client-side routing rules cap. All features fully unrestricted.<\/p>","1.6.1":"<p>Removed artificial cap on conditional routing rules. All features fully functional without restrictions.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3483297,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3483297,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3483297,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3483297,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.6.2","1.6.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Main settings page with sync rules","2":"Rule editor with field mapping","3":"Generated Google Apps Script","4":"Delivery log showing submission history"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1152,601,25296,1655,9471],"plugin_category":[42],"plugin_contributors":[257597],"plugin_business_model":[],"class_list":["post-287417","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form-7","plugin_tags-forms","plugin_tags-google-sheets","plugin_tags-gravity-forms","plugin_tags-spreadsheet","plugin_category-contact-forms","plugin_contributors-sheetlink","plugin_committers-sheetlink"],"banners":{"banner":"https:\/\/ps.w.org\/sheetlink-forms\/assets\/banner-772x250.png?rev=3483297","banner_2x":"https:\/\/ps.w.org\/sheetlink-forms\/assets\/banner-1544x500.png?rev=3483297","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sheetlink-forms\/assets\/icon-128x128.png?rev=3483297","icon_2x":"https:\/\/ps.w.org\/sheetlink-forms\/assets\/icon-256x256.png?rev=3483297","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>SheetLink Forms connects your WordPress forms directly to Google Sheets using a free Google Apps Script receiver. No middleware, no external service dependencies \u2014 data goes straight from your server to Google over HTTPS.<\/p>\n\n<p>Works on any WordPress site without registration or account creation.<\/p>\n\n<h4>Supported Form Plugins<\/h4>\n\n<ul>\n<li>Elementor Pro Forms<\/li>\n<li>Contact Form 7<\/li>\n<li>Gravity Forms<\/li>\n<li>WPForms<\/li>\n<li>Fluent Forms<\/li>\n<li>Formidable Forms<\/li>\n<li>Ninja Forms<\/li>\n<li>Forminator<\/li>\n<li>Everest Forms<\/li>\n<li>Beaver Builder<\/li>\n<li>Divi<\/li>\n<li>WS Form<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install SheetLink Forms<\/li>\n<li>Create a sync rule \u2014 pick your form plugin, map fields to spreadsheet columns<\/li>\n<li>Copy the generated Google Apps Script into your Google Sheet<\/li>\n<li>Deploy the script as a web app<\/li>\n<li>Every form submission automatically appears in your Google Sheet<\/li>\n<\/ol>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>All 12 form integrations<\/strong> \u2014 works with every major WordPress form builder<\/li>\n<li><strong>Unlimited sync rules<\/strong> \u2014 different forms to different sheets<\/li>\n<li><strong>Field mapping<\/strong> \u2014 choose exactly which fields go to which columns<\/li>\n<li><strong>Auto-timestamps<\/strong> \u2014 optional timestamp column on every submission<\/li>\n<li><strong>Delivery logs<\/strong> \u2014 see every submission with status and error details<\/li>\n<li><strong>Automatic retry queue<\/strong> \u2014 failed deliveries are retried up to 3 times<\/li>\n<li><strong>UTM &amp; marketing data capture<\/strong> \u2014 auto-append IP, page URL, UTM parameters<\/li>\n<li><strong>Conditional routing<\/strong> \u2014 route submissions to different sheets or tabs based on field values<\/li>\n<li><strong>Test button<\/strong> \u2014 send sample data to verify your setup<\/li>\n<li><strong>Script generator<\/strong> \u2014 generates the Google Apps Script for you, just copy &amp; paste<\/li>\n<li><strong>GDPR data export and deletion<\/strong> \u2014 integrates with WordPress privacy tools<\/li>\n<li><strong>Multisite central management<\/strong> \u2014 network admin overview of all subsites<\/li>\n<li><strong>Zero external dependencies<\/strong> \u2014 no SaaS, no tracking, no calls home. Pure PHP.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin sends form submission data to <strong>Google Apps Script<\/strong> endpoints that you deploy in your own Google account. This is the core functionality of the plugin \u2014 delivering WordPress form data to your Google Sheets.<\/p>\n\n<h4>Google Apps Script<\/h4>\n\n<ul>\n<li><strong>What it is:<\/strong> A user-deployed Google Apps Script web app that receives form data and writes it to your Google Sheet.<\/li>\n<li><strong>What data is sent:<\/strong> The form field values mapped by the user, plus optional enrichment data (timestamps, UTM parameters, IP address, page URL) if enabled by the site administrator.<\/li>\n<li><strong>When it is called:<\/strong> Each time a WordPress form submission matches a sync rule.<\/li>\n<li><strong>Where data goes:<\/strong> User-deployed Google Apps Script web app URLs hosted at <code>https:\/\/script.google.com\/<\/code> or <code>https:\/\/script.googleusercontent.com\/<\/code>. The plugin validates that all receiver URLs begin with these prefixes.<\/li>\n<li><strong>No account required:<\/strong> The plugin does not use Google API keys or OAuth. Users deploy a free Google Apps Script receiver in their own Google Sheet.<\/li>\n<li><strong>Google Apps Script documentation:<\/strong> <a href=\"https:\/\/developers.google.com\/apps-script\">https:\/\/developers.google.com\/apps-script<\/a><\/li>\n<li><strong>Google Terms of Service:<\/strong> <a href=\"https:\/\/policies.google.com\/terms\">https:\/\/policies.google.com\/terms<\/a><\/li>\n<li><strong>Google Privacy Policy:<\/strong> <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<p>No other external services are contacted by this plugin. All processing is performed locally on your WordPress server.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sheetlink-forms<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the Plugins menu<\/li>\n<li>Go to <strong>SheetLink<\/strong> in the admin menu<\/li>\n<li>Click <strong>+ Add Rule<\/strong> to create your first sync rule<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20to%20create%20an%20account%20or%20register%3F\"><h3>Do I need to create an account or register?<\/h3><\/dt>\n<dd><p>No. SheetLink Forms works immediately after installation. No account, no registration, no license key required.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20zapier%20account%3F\"><h3>Do I need a Zapier account?<\/h3><\/dt>\n<dd><p>No. SheetLink Forms sends data directly from WordPress to Google Sheets via a free Google Apps Script. No third-party services needed.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20call%20home%20or%20track%20anything%3F\"><h3>Does the plugin call home or track anything?<\/h3><\/dt>\n<dd><p>No. This plugin makes zero external calls to our servers. Data goes only from your WordPress site to Google Sheets.<\/p><\/dd>\n<dt id=\"which%20form%20plugins%20are%20supported%3F\"><h3>Which form plugins are supported?<\/h3><\/dt>\n<dd><p>Elementor Pro Forms, Contact Form 7, Gravity Forms, WPForms, Fluent Forms, Formidable Forms, Ninja Forms, Forminator, Everest Forms, Beaver Builder, Divi, and WS Form.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20the%20google%20sheet%3F\"><h3>How do I set up the Google Sheet?<\/h3><\/dt>\n<dd><p>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 &gt; Apps Script). Then deploy it as a web app.<\/p><\/dd>\n<dt id=\"can%20i%20send%20different%20forms%20to%20different%20sheets%3F\"><h3>Can I send different forms to different sheets?<\/h3><\/dt>\n<dd><p>Yes. Create multiple sync rules, each pointing to a different Google Apps Script URL (i.e., a different Google Sheet).<\/p><\/dd>\n<dt id=\"is%20my%20data%20secure%3F\"><h3>Is my data secure?<\/h3><\/dt>\n<dd><p>Data is sent directly from your WordPress server to Google's servers over HTTPS. No third-party servers see your data. The plugin only allows Google Apps Script URLs as receiver destinations.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20google%20sheet%20is%20unavailable%3F\"><h3>What happens if the Google Sheet is unavailable?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.3<\/h4>\n\n<ul>\n<li>Tested up to WordPress 6.8 (corrected from incorrect 6.9 tag)<\/li>\n<\/ul>\n\n<h4>1.6.2<\/h4>\n\n<ul>\n<li>Removed client-side routing rules cap in admin JavaScript (completing the server-side fix in 1.6.1)<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>Removed artificial cap on conditional routing rules (was limited to 10, now unlimited)<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>All 12 form integrations now included and fully functional (added Forminator, Everest, Beaver Builder, Divi, WS Form)<\/li>\n<li>Removed all premium feature gating \u2014 every feature in the plugin works without restrictions<\/li>\n<li>Fixed text domain to match plugin slug (sheetlink-forms)<\/li>\n<li>Replaced all inline JavaScript with properly enqueued scripts<\/li>\n<li>Fixed output escaping in admin UI and sync rule templates<\/li>\n<li>Updated External Services documentation with complete disclosure<\/li>\n<li>Renamed main plugin file to sheetlink-forms.php per WordPress.org naming convention<\/li>\n<li>Retry queue now processes for all users (previously required license activation)<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>WP.org compliance: replaced all inline JS\/CSS with wp_enqueue_script and wp_add_inline_style<\/li>\n<li>WP.org compliance: added External Services disclosure for Google Apps Script integration<\/li>\n<li>WP.org compliance: consistent \"SheetLink Forms\" branding across all headers and readme<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>WooCommerce bidirectional sync module<\/li>\n<li>AI Analytics with trend analysis and duplicate detection<\/li>\n<li>CRM Fan-Out connectors (HubSpot, Salesforce, Zoho)<\/li>\n<li>GDPR data export and deletion tools<\/li>\n<li>Multisite central management<\/li>\n<li>GCLID\/fbclid\/msclkid click ID enrichment<\/li>\n<li>Two-Way Sync echo suppression to prevent update loops<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Admin UI modernization with design tokens and CSS custom properties<\/li>\n<li>New component library: stat cards, badges, toggles, empty states<\/li>\n<li>Consistent card, table, and badge styling across all pages<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Free Single-Site Edition \u2014 all core features work without registration<\/li>\n<li>Added edition detection (Free \/ Agency)<\/li>\n<li>Removed license activation requirement for core delivery<\/li>\n<li>Renamed webhook labels to Receiver URL for clarity<\/li>\n<li>Updated admin UI with edition badge and upgrade page<\/li>\n<li>WP.org compliance: zero external calls in free edition<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Two-Way Sync admin UI with dedicated page and activity log<\/li>\n<li>White-label support for entitlement-based plans<\/li>\n<li>Multi-Node Fan-out Routing<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Support for 7 form plugins<\/li>\n<li>Field mapping with column assignment<\/li>\n<li>Google Apps Script generator<\/li>\n<li>Sync log with last 100 entries<\/li>\n<li>Test webhook button<\/li>\n<\/ul>","raw_excerpt":"Send WordPress form submissions directly to Google Sheets via a free Google Apps Script receiver. Works on any site without registration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/287417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=287417"}],"author":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sheetlink"}],"wp:attachment":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=287417"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=287417"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=287417"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=287417"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=287417"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=287417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}