=== Integration with Google Sheets for Contact Form 7 ===
Contributors: alexagr
Donate link: https://paypal.me/alexagr
Tags: Contact Form 7, Google Sheets, Google, Sheets
Requires at least: 3.6
Tested up to: 6.4.2
Stable tag: 1.3
License: GPLv3 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html

Send your Contact Forms 7 submissions directly to your Google Sheets spreadsheet.

== Description ==

This plugin provides integration between [Contact Form 7](https://wordpress.org/plugins/contact-form-7/) and [Google Sheets](https://www.google.com/sheets/).
It adds new processor to Contact Form 7 that enables sending of submitted forms to Google Sheets.  

= Connecting the Plugin to Google Sheets =

After installing the plugin you must go to it's **Settings** screen and create application credentials needed to establish connection with Google Sheets. All instructions are provided in the **Settings** screen. 

After successfully creating application credentials and uploading them (i.e. completing steps 1 and 2), you will see *Client ID* and *Client Email* that represent your instance of "Google Sheets for Contact Form 7" plugin. You will need to share your sheets with *Client Email* (as *Editor* role) to grant "Google Sheets for Contact Form 7" plugin permissions to edit them.

= Using the Plugin =

After successfully connecting the plugin to Google Sheets, do the following to configure your Contact Form 7 to send data to Google Sheets on form submission.

*In Google Sheets*  

* Create a new Google Sheet
* Switch to the tab where you want to capture the data
* Determine *Sheet ID* and *Tab ID* from the sheet's URL that looks as follows: https://docs.google.com/spreadsheets/d/*sheet-id*/edit#gid=*tab-id*

  For example, for URL https://docs.google.com/spreadsheets/d/142XLjqRCpr7iWldfARhSS_GiFoy4l5RqZfSD6RHXM64/edit#gid=0 *Sheet ID* is "142XLjqRCpr7iWldfARhSS_GiFoy4l5RqZfSD6RHXM64" and *Tab ID* is "0"

* Enter "datetime" in the the first column if you want to capture time and date of submission
* There is no need to enter names for other columns - they will be automatically added upon form submission
* Share the sheet with *Client Email* that represents your instance of "Google Sheets for Contact Form 7" plugin - as *Editor* role

*In Contact Form 7*  

* Open your contact form
* Switch to **Google Sheets** tab
* Configure *Sheet ID* and *Tab ID* and click *Save*
* Submit a test form and verify that the data shows up in your Google Sheet

= Automatic Header Generation = 

The plugin verifies spreadsheet header on each new form submission and adds new fields to it if needed. Note that it never deletes fields from the header - as this would also delete some submission data - though you can do it manually. You may also manually reorder columns as you wish.

= Capturing Submission Metadata =

In addition to the *datetime* and regular form fields, you may also capture Contact Form 7 [special mail-tags](https://contactform7.com/special-mail-tags). In order to do so, add *manually* corresponding headers to your spreadsheet. Remove square brackets and first underscore from the tag name, and replace remaining underscores with dashes. For example, add *remote-ip* header to capture *[_remote_ip]* mail-tag.

= Integration with "Contact Form 7 Database Addon - CFDB7" = 

If you use [Contact Form 7 Database Addon - CFDB7](https://wordpress.org/plugins/contact-form-cfdb7/) to save your submissions, you will also be able to resend already submitted forms to Google Sheets. This may be useful if something went wrong during initial form submission and/or someone deleted data in Google Sheets by mistake. In order to do so, in CFDB7 plugin, choose your form, open specific submission and click *Send to Google Sheets* button.

= Acknowledgements =

Initial version of this plugin was inspired by [CF7 Google Sheets Connector](https://wordpress.org/plugins/cf7-google-sheets-connector/) plugin.

However it's implementation is quite different:

* it uses service principle for authentication with Google Sheets
* it has completely different and much more reliable sheets update logic
* it implements automatic header generation, to ensure that no submission data is lost
* it supports capturing submission meta-data
* it provides integration with CFDB7 plugin for forms re-submission

== Screenshots ==

1. Connecting plugin to Google Sheets
2. Configuring Google Sheets processor in Contact Form 7
3. Integration with "Contact Form 7 Database Addon - CFDB7" plugin

== Installation ==

1. Upload "cf7-google-sheets" to the "/wp-content/plugins/" directory
2. Activate the plugin through the **Plugins** screen in WordPress  

== Frequently Asked Questions ==

= Why isn't the data sent to spreadsheet? Contact Form 7 Submit is just Spinning. =

Sometimes it can take a while of spinning before it goes through. But if the entries never show up in your Google Sheet use the following checklist:

* Check that plugin can access your sheet by entering it's *Sheet ID* in **Settings** screen and clicking *Test*
* In Google Sheets processor configuration screen for your form:
  * Check that you entered correct *Sheet ID* and *Tab ID* (obtained from the sheet's URL - and NOT the Sheet/Tab Name)
* Check *View Log* in plugin **Settings** screen for detailed error trace 

== Changelog ==

= 1.3 =
* Refactor and clean-up the code for publishing to wordpress.org

= 1.2 =
* Refactor credentials upload for compliance with "Plugin Check"
  * After upgrade, please re-upload credentials.json in Settings screen

= 1.1 =
* Add integration with "Contact Form 7 Database Addon - CFDB7"
* Fix uploaded file name

= 1.0 =
* Initial version

