<commit_before># Using Zapier to integrate to other systems

In the following we're going to write form submissions to Google Sheets using [Zapier](https://zapier.com/). While this might seem a little pointless, it'll demonstrate how Zapier and Form Editor can work together to provide integration with a [wide range](https://zapier.com/zapbook/) of systems. We'll use Google Sheets here because it is one of the integration points that's available in the free version of Zapier.

When this tutorial is complete, we'll have a Google Sheet that contains contact information (first and last names + email address) for each form submission that's made.

*Note: If you've already read the [Azure Logic Apps](LogicApps.md) tutorial, a lot of this might feel a bit like deja-vu.*

## Before you start

Make sure you have Form Editor (version 1.2.1.0 or above) installed and set up. See the [quick start tutorial](QuickStart.md) or the [installation documentation](../Docs/install.md) for details. 

You'll also need accounts for Zapier and Google.

## Zapier and Zaps

In Zapier you create *Zaps* to connect systems. In it's most rudimentary form, a Zap is made up by:

* A trigger that invokes the Zap. 
* One or more actions that interact with various systems. 

### Form data vs. Zapier

With the built-in [web service integration](../Docs/install_web_service.md), Form Editor can send the form data to an external web service whenever a form is submitted. We'll use this to connect our form to Zapier. 

Zapier needs to know the data format up front to make the data available throughout a Zap. This means we need to assume that the form fields we want to work with in our Zap will be part of our form layout - in this case the contact information for our Google Sheet.

When Form Editor passes the form data to Zapier, all the submitted values are wrapped in an object aptly named `submittedValues` ([read more](../Docs/install_web_service.md#the-data-format)). This object is perfect for our Zapier integration, because Zapier can create variables directly from it. With the expected contact information form fields, the `submittedValues` will contain at least the following data:

```json
{
  "submittedValues": {
    "_First_name": "Some",
    "_Last_name": "One",
    "_Email": "<EMAIL>",
  }
}
```

*Note: `umbracoContentName`, `formData` and other fields are left out for brevity as we don't need them.*

*Note: The "form safe" names are used in the `submittedValues` object. If you're in doubt what that might be for a specific form field, you can always find it by inspecting the form field name in the rendered form.*

## Step 1: The Google Sheet
<commit_msg>Update Zapier.md<commit_after># Using Zapier to integrate to other systems

In the following we're going to write form submissions to Google Sheets using [Zapier](https://zapier.com/). While this might seem a little pointless, it'll demonstrate how Zapier and Form Editor can work together to provide integration with a [wide range](https://zapier.com/zapbook/) of systems. We'll use Google Sheets here because it is one of the integration points that's available in the free version of Zapier.

When this tutorial is complete, we'll have a Google Sheet that contains contact information (first and last names + email address) for each form submission that's made.

*Note: If you've already read the [Azure Logic Apps](LogicApp.md) tutorial, a lot of this might feel a bit like deja-vu.*

## Before you start

Make sure you have Form Editor (version 1.2.1.0 or above) installed and set up. See the [quick start tutorial](QuickStart.md) or the [installation documentation](../Docs/install.md) for details. 

You'll also need accounts for Zapier and Google.

## Zapier and Zaps

In Zapier you create *Zaps* to connect systems. In its most rudimentary form, a Zap is made up by:

* A trigger that invokes the Zap. 
* One or more actions that interact with various systems. 

### Form data vs. Zapier

With the built-in [web service integration](../Docs/install_web_service.md), Form Editor can send the form data to an external web service whenever a form is submitted. We'll use this to connect our form to Zapier. 

Zapier needs to know the data format up front to make the data available throughout a Zap. This means we need to assume that the form fields we want to use within our Zap will be part of our form layout - in this case the contact information for our Google Sheet.

When Form Editor passes the form data to a web service, all the submitted values are wrapped in an object aptly named `submittedValues` ([read more](../Docs/install_web_service.md#the-data-format)). This object is perfect for our Zapier integration, because Zapier can create variables directly from it. With the expected contact information form fields, the `submittedValues` will contain at least the following data:

```json
{
  "submittedValues": {
    "_First_name": "Some",
    "_Last_name": "One",
    "_Email": "<EMAIL>",
  }
}
```

*Note: `umbracoContentName`, `formData` and other fields are left out for brevity as we don't need them.*

*Note: The "form safe" names are used in the `submittedValues` object. If you're in doubt what that might be for a specific form field, you can always find it by inspecting the form field name in the rendered form.*

## Step 1: The Google Sheet

{'fraction_non_alphanumeric': 0.07078651685393259, 'fraction_numerical': 0.0018726591760299626, 'mean_word_length': 4.277667984189724, 'pattern_counts': {'":': 8, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3993777', 'n_tokens_mistral': 1474, 'n_tokens_neox': 1410, 'n_words': 800}