# Introduction to Sheet Monkey

How to send data to Google Sheets with just a little HTML

Sheet Monkey was designed to make it as simple as possible to send data from your website into a Google Sheet without any backend code and minimal configuration.&#x20;

{% hint style="info" %}
All these guides require that you have a [free Sheet Monkey account. ](https://sheetmonkey.io)If you haven't registered your account, please do that before continuing.
{% endhint %}

### Start with a form action

Every Sheet Monkey forms starts with a unique url (or a form **action**)  where you can post your data. This url is available with every form you create in the [Sheet Monkey dashboard.](https://dashboard.sheetmonkey.io) This form action is your connection to the Google Sheet.

![An example form action](/files/-MDSq0Ye1yN0Vyc7X1YK)

Once you have your form action then you can follow three rules to send your data into the linked Google Sheet.&#x20;

### Three rules of Sheet Monkey

#### 1. Field names match column headers

When building your HTML form the input names must match a column name in the linked Google Sheet.

```markup
<input type="text" name="Column 1" />
<!-- In this example, anything submitted with this field 
    will be inserted beneath "Column 1" in the linked sheet -->
```

<div align="left"><img src="/files/-MDSjYlROGMVKOjALSu0" alt=""></div>

#### 2. Data is added at the bottom the spreadsheet

Each time the form is submitted, Sheet Monkey will append that submission to the bottom of the form as a new row.

![](/files/-MDSkTrPypqtMpbDWJAY)

#### 3. Unrecognized fields are automatically added as columns

When you submit a field with a name that Sheet Monkey doesn't recognize, it will automatically add it to the end of the spreadsheet.

```markup
<input type="text" name="Column 1" />

<!-- Here's a field that doesn't exist in the spreadsheet -->
<input type="text" name="New Column" />
```

![](/files/-MDSmE_pPwpLxT7TxQvD)

With this method, you can link your forms to a blank sheet and Sheet Monkey will automatically build the header fields for you the first time you submit the form.

### Next steps

Sheet Monkey was designed to give you as much control over appearance and validation as you want. Because of this all of our HTML is *merely a suggestion.* You can design your forms as creatively as you want and Sheet Monkey will accept the data and organize it in a sheet for you.

The best way to get familiar with how to use Sheet Monkey is to [create a free account and build your first form.](https://sheetmonkey.io)&#x20;


# Sending data to Google Sheets using HTML

A simple guide to building a HTML form and sending the data to Google Sheets with Sheet Monkey

*All these guides require that you have a* [*free Sheet Monkey account.* ](https://sheetmonkey.io)*If you haven't registered your account, please do that before continuing.*

### Picking a Google Sheet

![](/files/-MDSrUFdU7mZmqHKyR6N)

Because Sheet Monkey automatically builds the columns, it may be easiest to start with a blank sheet if you already have a form and just want to connect it to a sheet. But if you're looking for something to help you get started, you can pick one of our templates. Sheet Monkey will automatically save the sheet with some initial columns in your Google Drive.

### The form action is the link to your Google Sheet

Once you create a form, Sheet Monkey will provide a form url or "form action" where you can start posting data. This unique action is all you need to post data into the Google Sheet.&#x20;

![](/files/-MDSuIWBhgo-kuu7Mf_f)

{% hint style="info" %}
Because form actions function like a one-way write key to your Google Sheet, we recommend that you only post them on your site when you're ready for data to start coming into the sheet. If you need to disable saving data into your sheet, you must delete the form in Sheet Monkey.
{% endhint %}

### Mapping the form fields to your sheet columns

Always follow the [Three Rules of Sheet Monkey when building your HTML form](https://docs.sheetmonkey.io/#three-rules-of-sheet-monkey) and mapping the form fields to the columns. If you picked one of our templates, Sheet Monkey provides some starter HTML for your form. Feel free to modify this HTML as much as you want.

![](/files/-MDStv8To9kQ0deuLJqq)

Here's an example mailing list form that Sheet Monkey built:

```markup
<form action="https://api.sheetmonkey.io/form/vB1pUYCBvUqnSarEvAgsd6" method="post">
  <label>Your Name: <input type="text" name="Name" required /></label>
  <label>Your Email: <input type="email" name="Email" required /></label>
  <input type="hidden" name="Created" value="x-sheetmonkey-current-date-time" />
  <input type="submit" value="Sign Up" />
</form>
```

Once you submit this form, the data will appear in the linked sheet like this:

![Example submission for the above form](/files/-MDStLjoadOZM4kVT4DN)

### Special form fields

Sheet Monkey has a few[ "special fields"](https://docs.sheetmonkey.io/guides/special-fields) that make saving certain common types of data easier.

#### Saving a current date and time:&#x20;

Create a hidden field with a value of `x-sheetmonkey-current-date-time` and Sheet Monkey will automatically convert that value to a date and time in your Google Sheet.

```markup
<input type="hidden" name="Created" value="x-sheetmonkey-current-date-time" />
```

#### Saving a current date:&#x20;

Create a hidden field with a value of `x-sheetmonkey-current-date` and Sheet Monkey will automatically convert that value to a date in your Google Sheet.

### Redirecting after the form is submitted

Once a visitor to your website has successfully submitted a form, you often want to redirect them to  another location. Sheet Monkey allows you to do this with the `x-sheetmonkey-redirect` field. Put any URL into this field and the user will be automatically redirected to that URL after submitting your form.

```markup
<input 
    type="hidden" 
    name="x-sheetmonkey-redirect" 
    value="https://my-site.com/signup-success.html" 
/>
```

{% hint style="info" %}
This special reserved field will not be added to your spreadsheet as a column.
{% endhint %}

### Limiting what websites can submit to your form

Sheet Monkey allows you to limit the domains that can submit to your form with the "Domains" field. If you want to allow submissions from all locations leave this field blank or enter the `*` wildcard character.


# Sending data to Google Sheets with vanilla Javascript

A simple guide to sending your data to Google Sheets using vanilla Javascript

### Picking a Google Sheet

![](/files/-MDSrUFdU7mZmqHKyR6N)

Because Sheet Monkey automatically builds the columns, it may be easiest to start with a blank sheet if you already have a form and just want to connect it to a sheet. But if you're looking for something to help you get started, you can pick one of our templates. Sheet Monkey will automatically save the sheet with some initial columns in your Google Drive.

### The form action is the link to your Google Sheet

Once you create a form, Sheet Monkey will provide a form url or "form action" where you can start posting data. This unique action is all you need to post data into the Google Sheet.

![](/files/-MDSxtbhSrETiJCIz-sa)

### Mapping the object keys to your sheet columns

Sheet Monkey will automatically match property names to Google Sheet columns. In the example of a mailing list, submitting the following object...

```javascript
const data = {
    Email: 'steve.ballmer@microsoft.com',
    Name: 'Steve B.',
    Created: 'x-sheetmonkey-current-date-time'
};
```

...will create the following entry in the linked Google Sheet:

![](/files/-MDSzD13KKiGlfPf5PbO)

### Posting your data

Sheet Monkey accepts textual data in `application/json` or `mutipart/form-data` encoding. You can pick either one of these when posting with Javascript.

Here's an example of how you can post data using JSON encoding.

```javascript
const data = {
    Email: 'steve.ballmer@microsoft.com',
    Name: 'Steve B.',
    Created: 'x-sheetmonkey-current-date-time'
};

fetch('https://api.sheetmonkey.io/forms/vB1pUYCBvUqnSarEvAgsd6', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(data),
}).then((result) => {
  // Handle the result
});

```

### Responses

#### Error Status Codes:

* `401` Indicates that the domain is blocked from submitting to this form.
* `404` Indicates that the form could not be found.
* `500` Indicates that an unexpected error occurred or the system may be down.

**Success status codes:**

* `200` Indicates that the form was successfully submitted and the data should be added to the sheet.


# Submitting Webflow forms to Google Sheets

How to send your Webflow form to Google Sheets

Integrating [Webflow](https://webflow.com) forms with Google Sheets only takes a minute to set up with a free Sheet Monkey account. This guide shows you how.

{% hint style="info" %}
*All these guides require that you have a* [*free Sheet Monkey account.* ](https://sheetmonkey.io)*If you haven't registered your account, please do that before continuing.*
{% endhint %}

### 1. Create your Sheet Monkey form

Start by logging into the [Sheet Monkey dashboard](https://dashboard.sheetmonkey.io) and create a form. If you don't know what form to start with, we recommend picking the "Blank Form" template and Sheet Monkey will automatically fill out the data once you start submitting data.

![](/files/-MHNLBHyFtiB6rr09sYv)

Once you've created your form, copy the "Form Action" URL to your clipboard.

![](/files/-MHNLVNXM80z6LgKc64X)

Optionally, you can set up a redirect for when the form is successfully submitted.&#x20;

![](/files/-MHNLpmUE2-UafA2cQSg)

### 2. Configure your WebFlow form

In WebFlow, drag a form block onto your page and add the fields that you want.

![](/files/-MHNMOoH3fUB-SGPGhNm)

Then in the Form Block Settings, update the **Action** field so it has your Sheet Monkey **Form Action** value:

&#x20;

![](/files/-MHNMxzZWWcA6AYtbp5t)

**Important:** You also need to make sure that **Method** is set to "POST"

### 3. Test your form

Preview your webflow site and try submitting the form. Open your Google Sheet and confirm that the values are appearing in the sheet after you submit.

![](/files/-MHSCLHzqc3b-IzVpR00)

## Video walkthrough

Here's a video walkthrough on how to do this.

{% embed url="<https://www.youtube.com/watch?v=SRXJSarsvz4>" %}


# Submitting Carrd forms to Google Sheets

How to send your Carrd forms to Google Sheets

Integrating [Carrd](https://carrd.co) forms with Google Sheets only takes a minute to set up with a free Sheet Monkey account. This guide shows you how.

{% hint style="info" %}
*All these guides require that you have a* [*free Sheet Monkey account.* ](https://sheetmonkey.io)*If you haven't registered your account, please do that before continuing.*
{% endhint %}

### 1. Create your Sheet Monkey form

Start by logging into the [Sheet Monkey dashboard](https://dashboard.sheetmonkey.io) and create a form. If you don't know what form to start with, we recommend picking the "Blank Form" template and Sheet Monkey will automatically fill out the data once you start submitting data.

![](/files/-MHSCq3DN9mJwnFBiFA7)

Once you've created your form, copy the "Form Action" URL to your clipboard.

![](/files/-MHNLVNXM80z6LgKc64X)

Optionally, you can set up a redirect for when the form is successfully submitted.&#x20;

![](/files/-MHNLpmUE2-UafA2cQSg)

### 2. Configure your Carrd form

Open your Carrd site and add a Form to the page.

![](/files/-MHSDM9sFPw40EVwiw2J)

When you configure the form, you need to select the follow values:

**Type:**

* Custom
* Send to URL...

**URL:**

* Enter your Sheet Monkey **Form Action** URL.

**Method:**

* POST

![](/files/-MHSDdbwOSDU27xL83al)

The select "Done".

Add whatever fields you want to your form using the "Fields" tab in Carrd:

![](/files/-MHSEL0Df4uSYBhI83Nw)

{% hint style="warning" %}
Note: Sheet Monkey supports all field types except "File". Any files submitted will be discarded.
{% endhint %}

### 3. Test your form

Publish your Carrd site and try submitting the form. Open your Google Sheet and confirm that the values are appearing in the sheet after you submit.

![](/files/-MHSCLHzqc3b-IzVpR00)


# Special Fields

Sheet Monkey recognizes special fields to make certain tasks easier

Sheet Monkey has "special fields" that make saving certain common types of data easier.

* [x-sheetmonkey-current-date-time](#saving-a-current-date-and-time)
* [x-sheetmonkey-current-date](#saving-a-current-date)
* [x-sheetmonkey-redirect](#redirecting-after-the-form-is-submitted)
* [x-sheetmonkey-ip-address](#capturing-the-client-ip-address-from-your-form-submission)
* [x-sheetmonkey-insert-data-top](#inserting-data-at-the-top-of-your-sheet)
* [x-sheetmonkey-insert-worksheet](#inserting-data-into-a-specific-worksheet)

#### Saving a current date and time:&#x20;

Create a hidden field with a value of `x-sheetmonkey-current-date-time` and Sheet Monkey will automatically convert that value to a date and time in your Google Sheet.

```markup
<input type="hidden" name="Created" value="x-sheetmonkey-current-date-time" />
```

#### Saving a current date:&#x20;

Create a hidden field with a value of `x-sheetmonkey-current-date` and Sheet Monkey will automatically convert that value to a date in your Google Sheet.

#### Setting the Timezone

All of the times are saved at 0 UTC time. If you want to save dates and times in your own timezone, you'll need to set the timezone in your Sheet Monkey dashboard, under settings.

![Click on the drop down menu and select "Settings" ](/files/-MOxpp8WQBoWj1IVu4PB)

### Redirecting after the form is submitted

Once a visitor to your website has successfully submitted a form, you often want to redirect them to  another location. Sheet Monkey allows you to do this with the `x-sheetmonkey-redirect` field. Put any URL into this field and the user will be automatically redirected to that URL after submitting your form.

```markup
<input 
    type="hidden" 
    name="x-sheetmonkey-redirect" 
    value="https://my-site.com/signup-success.html" 
/>
```

{% hint style="info" %}
This special reserved field will not be added to your spreadsheet as a column.
{% endhint %}

### Capturing the client IP address from your form submission

You can capture the client IP address from form submissions by adding a hidden field with the value `x-sheetmonkey-ip-address` to your form. This can be useful for geocoding user locations or preventing spam.

```html
<input
    type="hidden"
    name="IP address"
    value="x-sheetmonkey-ip-address"
/>
```

Sheet Monkey will automatically convert this value to the IP address of the client who submitted the form.

### Inserting data at the top of your sheet

In certain situations you may want to add data to the top of your sheet rather than the bottom, especially in cases where you have a very large sheet. Sheet Monkey allows you to do this with the `x-sheetmonkey-insert-data-top` form field. Add a hidden field to your form with this name and Sheet Monkey will insert the data at the top of your sheet rather than the bottom.

```html
<input
    type="hidden"
    name="x-sheetmonkey-insert-data-top"
    value="1"
/>
```

{% hint style="info" %}
This special reserved field will **not** be added to your spreadsheet as a column.
{% endhint %}

{% hint style="warning" %}
This field only works for Google Sheets. Notion is not supported.
{% endhint %}

### Inserting data into a specific worksheet

In certain situations you may want to add data to another worksheet, instead of the default sheet. Sheet Monkey allows you to do this with the `x-sheetmonkey-insert-worksheet` form field. Add a hidden field to your form with this name and the value of the Worksheet that you want to insert into and Sheet Monkey will insert the data at that worksheet.

<figure><img src="/files/kfeQhYg7WQ8RrKtPcbgo" alt=""><figcaption></figcaption></figure>

```html
<input 
    type="hidden"
    name="x-sheetmonkey-insert-worksheet"
    value="Sheet2"
/>
```

{% hint style="danger" %}
If you put in a name of a worksheet that does not exist on the linked sheet, your submission will not be inserted.
{% endhint %}

{% hint style="info" %}
This field only works for Google Sheets. Notion is not supported.
{% endhint %}


# File uploads

How to upload files to Google Sheets and Notion with Sheet Monkey

Sheet Monkey allows you to upload files using native form fields. This can be great for certain use cases when you need more than text from your form.

### Getting Started <a href="#headerlink-0" id="headerlink-0"></a>

First, in the [Sheet Monkey dashboard](https://dashboard.sheetmonkey.io), you need to enable file uploads for the forms that you want to accept files on. Do this by toggling File Upload to on.

![](/files/-MihOiyTZYVBrze7-b-s)

In the form tag, you must add an `enctype=multipart/form-data` attribute. Then add an `<input type='file' name='My File'/>` tag to your form. There's a number of options you can add to this tag to customize it. For example, if you only want to accept PNG and JPEG images, we can add `accept="image/png, image/jpeg"`. You can [learn more about all the available options for the file input tag here](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file).

### Downloading your files

When a user uploads a file using one of your form's file input fields, it behaves like any other Sheet Monkey field, except the files are converted into download links:

![An example of how a file upload appears in a Google Sheet](/files/-MihPcSPIVnxDU_i_57q)

### Uploading Large Files with Files.js

File uploads are limited to 6MB. If you need to upload larger files you need to use the **Sheet Monkey Files.js** library.

Simply, insert this JS code in the page with your form.

```html
<script src="https://sheetmonkey.io/lib/files.min.js" type="text/javascript"></script>
```

This code will automatically intercept submission events on any form with an `api.sheetmonkey.io` action, upload the files and then submit the form when the uploads are complete.\
\
This code will also disable form submit buttons while uploads are processing to prevent double submit events.

**Example form**

```html
<form action="https://api.sheetmonkey.io/form/..." enctype="multipart/form-data" method="post">
  <label>Example Field: <input type="text" name="Example Header" required /></label>
  <label>Example File: <input type="file" name="Example File" required /></label>
  <input type="hidden" name="Created" value="x-sheetmonkey-current-date-time" />
  <input type="submit" value="Submit" />
</form>
<script src="https://sheetmonkey.io/lib/files.min.js" type="text/javascript"></script>
```

#### Files.js events

If you want to track the progress and state of uploads you can listen to upload events emitted from the file.js library like so:

```
<script type="text/javascript">
  window.addEventListener('message', (event) => {
    const {name, file, percent, errorCode} = event.data;
    if(name === 'sheetmonkey-upload-start') {
       console.log('upload file started', file);
    }
    if(name === 'sheetmonkey-upload-progress') {
       console.log('upload file progress', percent, file);
    };
    if(name === 'sheetmonkey-upload-error') {
       console.log('upload file failed with code', file, errorCode);
    };
    if(name === 'sheetmonkey-upload-complete') {
       console.log('upload file comeplete', file);
    };
  });
</script>
```

Events have the following json properties:

* **name:  string.** The name of the event. The event names are:&#x20;
  * `sheetmonkey-upload-start`
  * `sheetmonkey-upload-progress`
  * `sheetmonkey-upload-error`
  * `sheetmonkey-upload-complete`
* **file: string.** The name of the file being uploaded.
* **percent. number.** The progress of the file upload. Only sent on `sheetmonkey-upload-progress` events.
* **errorCode. number.** The error code if the file upload filed. Only sent on `sheetmonkey-upload-error` events.

### Showing upload progress

If your form needs to upload larger files, it might be a good idea to show upload progress.\
\
If you're using the files.js library, you can add the following element anywhere into your HTML and Sheet Monkey will update the progress.

```html
<progress id="sheetmonkey-upload-progress" max="100"></progress>
```

You can style this element however you'd like and you can place it anywhere on the page.

### Limitations

* File Uploads requires an unlimited account.
* Uploads are limited to 100MB.
* Users may have issues with larger files on slower connections.

Please contact support with any issues you encounter.


# Spam Protection

Enabling spam protection for your form

Sheet Monkey allows you to filter out spam from submissions to your form. This is best used when you have a public form that isn't behind any sort of login or authentication.

#### Enabling Spam Protection for a Form in the dashboard

Login to the [Sheet Monkey dashboard](https://dashboard.sheetmonkey.io) and select the form that where you want to enable Spam Protection. When you've selected the form, toggle the Spam Protection switch to "On".

![](/files/heGAPszwpo7mFF6EOdY4)

#### Enabling Spam Protection for a Form in the builder

To enable Spam Protection in the Sheet Monkey Chrome Extension, select the form settings and locate the config for Spam Protection. Make sure the box is checked.

![](/files/lHy0IY0Q1z1l83W7qPWF)

#### If you still get spam or something gets incorrectly flagged as spam

Sheet Monkey uses the [Akismet](https://akismet.com/) api for filtering spam out of your form submissions. Sometimes spam still gets through. Even more rarely, something that is not actually spam will get filtered. If you absolutely need to make sure that every form submission makes it to your form, don't turn on the spam filter.

We don't turn on the spam filter by default for this reason. It's best to wait and see if it spam is a problem before enabling it.


# Notifications

How to get notified when someone submits a form

### Email Notifications

You can get an email notification when someone submits one of your forms. The email will be sent to the Google email that you registered with.&#x20;

To enable email notifications for a form, [login to your Sheet Monkey dashboard](https://dashboard.sheetmonkey.io) and select the form that you want to send you a notification. Scroll to the notifications section and select the "Email" option.&#x20;

![](/files/-MT8aISAW47hOLbO_jaI)

In the window that appears, you can add up to 5 emails to receive notifications when the form is submitted.

![](/files/-MT8b_FCuDc34EKIlA0q)

{% hint style="info" %}
Any email that you add other than your own will need to be validated. The email will be sent a link to approve notifications as soon as you add them.
{% endhint %}

Once the notifications have been approved every email on the list will be notified when someone submits to the form.&#x20;

{% embed url="<https://www.youtube.com/watch?v=KrVtIE5vyuI&feature=youtu.be>" %}
Video guide to email notifications
{% endembed %}

### Autoresponder emails

Send an automatic response to the person who submitted the form. To get started, click on the "Autoresponse" button in your form.

{% hint style="info" %}
Autoresponder emails use [Handlebars syntax](https://handlebarsjs.com/guide/) to merge form variables with the email text. Handlebars is simple to learn and should be easy for anyone to pick up quickly.
{% endhint %}

<div align="left"><figure><img src="/files/1hsyuB9Ayd1VdYnB8lG7" alt=""><figcaption></figcaption></figure></div>

The autoresponse requires you to complete all fields for you to enable this feature. You will need to specify the following:

**From:**

* **Email.** Must be a valid email address.
* **Name.** The display name.

These will appear in the "From" display name and in the "Reply-To" field in the submitter's inbox. Note: You cannot use Handlebars expressions in the "From" fields.

**To:**

* **Email:** The email to send the autoresponse to. You can use Handlebars to merge this field with submitted form variables. For example: `{{Email}}` or `{{Name}}<{{Email}}>` would both be valid if the form had input fields with those names.
* **Subject:** The email subject. You can use Handlebars expressions here too.
* **Message:** The body of the email to send. You can use Handlebars expressions here too.

#### Formatting

You can format your message using html markup. For example:

```html
<strong>Hello, {{Name}}</strong>!
```

Other formatting options are allowed. Generally try to keep your HTML simple as we do filter all messages to prevent scripting attacks.

#### Helpers

We've added a few helpers to our system to make composing messages easier.\
\
`{{All_Answers}}`

If you want to just include all submitted answers in the message, you can use this single variable and Sheet Monkey will automatically insert all the submitted answers in a list.\
\
`{{split}}`

This helper function allows you to split strings. It's useful for situations when maybe you collect the full name in a single form field but want to respond to the submitter with their first name. Here's an example of how you could do that with the **split** helper:

```html
<input type="text" name="Name" /> 
```

```
Hi, {{split Name 0}}
```

If a user submits "John Smith" in the "Name" field, the auto responder will render it as: "Hi, John".

If you wanted to address him by his last name instead you could use the autoresponder this way:

```
Hi, Mr. {{split Name 1}}
```

And the autoresponder will render it as: "Hi Mr. Smith".

#### Autoresponder example email

Here's an example of the Sheet Monkey welcome email built with our autoresponder.

<div align="left"><figure><img src="/files/g37gsZddFPwF5xUHI3Jn" alt=""><figcaption></figcaption></figure></div>

The text of the autoresponder is:

```
Hey {{split Name 0}}!

Welcome to Sheet Monkey!

I made Sheet Monkey to help people do more with their forms by connecting them to Google Sheets. I hope you find it useful. Here's just a few things to help you get oriented:

1. Our guide for connecting your forms to Sheet Monkey can be found here: https://docs.sheetmonkey.io
2. If you want to follow the developer on Twitter, you can find him here: https://twitter.com/LeviNunnink
3. If you have any questions or ideas on how to make Sheet Monkey better, just reply to this email.

Have fun!

Levi,
Designer & Developer of Sheet Monkey
https://sheetmonkey.io

```


# Advanced workflows

Triggering events after data is stored in your sheet.

Google Sheets are an awesome way to trigger a number of workflows. In many situations, it's easy enough to export your data out the sheet and import it into another system manually. But you can also use the following services to automate actions with the data that you store in Google Sheets.

## Google Integrations

### Data Studio

Google Data Studio allows you to build powerful dashboards and visualizations of your data. You can connect Data Studio to your Google Sheets by following this guide:&#x20;

Connect to Google Sheets: <https://support.google.com/datastudio/answer/6370353?hl=en>

### Big Query

If you have lots of data in your sheets and you need to analyze it using SQL syntax, Big Query is a great choice. And it's simple to connect the two services. This blog article shows how:

<https://cloud.google.com/blog/products/g-suite/connecting-bigquery-and-google-sheets-to-help-with-hefty-data-analysis>

## Third Party Integrations

### Zapier

Zapier has an excellent user experience, powerful workflow tools, and currently 80+ integrations for Google Sheets.

<https://zapier.com/apps/google-sheets/integrations>

### Integromat

Integromat is another workflow solution that provides all sorts of actions for Google Sheets.

<https://www.integromat.com/en/templates/google-sheets>

### Automate.io

With a simple interface and loads of integrations, Automate.io is another great solution for sending the data your store in sheets, to all sorts different services.

<https://automate.io/integration/google-sheets>

## Anything else?

Did we miss one of your favorite integrations? Do you have a cool hack related to Google Sheets? [R2each out to ](https://sheetmonkey.io/support.html)us and we'll update this page.

###


# Form Builder

How to use Sheet Monkey's Form Builder for Google Sheets

{% hint style="info" %}
Sheet Monkey's free form builder requires that you have the Chrome Extension installed. If you haven't already installed the Chrome Extension, [please start there.](https://chrome.google.com/webstore/detail/sheet-monkey-form-builder/dnohamccnpiapcadmokckehgebdednko)
{% endhint %}

### Building your first form

Open a spreadsheet and click on the Form Builder icon in your toolbar:

![](/files/PXcJPA3Bvtx2JGMFzexH)

The form builder will automatically appear over the sheet

![](/files/25dHHdKJakGGt4qJasNG)

### Adjusting the form settings

To change the form behavior, click on the title of the form in the builder

![](/files/E2mNY9Lxif3Y86kQMjWj)

In the form settings you can add a logo and header image to the form, change the title & description, configure behaviors for after the form is submitted, and change other parts of the form behavior.&#x20;

### Adding fields to a form

The form builder has 15 pre-configured field types for you to build your forms.

![](/files/tFCHaug43xXy2xwjCEVy)

#### **Basic Field Types**

These are highly configurable fields that should allow you to accept any form of input from your users.

* **Single Line Text:** A single-line text input field.
* **Paragraph.** A text area for larger amounts of textual input.
* **Number.** A field that only allows numbers to be entered.
* **Multi Choice.** A configurable list of choices that only allows one item to be selected.
* **Dropdown.** A drop down menu with a configurable list of choices.
* **Checkbox.** A list of choices that allows for multiple items to be selected.
* **Section Break.** A visual break in the form that allows you to add additional instructions.
* **Hidden.** A hidden field that allows you to attach hidden values to the form.

#### Advanced or "Evolved" field types

These are pre-configured fields for common types of data.

* **Name:** A first and last name field group.
* **Address:** Address input fields with support for international addresses.
* **Email:** A text field that only allows valid email addresses.
* **Phone:** A text field that only allows valid phone numbers.
* **Date:** A text field that only allows valid dates or dates with time to be entered. On most browsers this will render with a date picker component.
* **URL:** A text field that only allows valid urls.
* **File Upload:** A field that allows visitors to upload and attach files to your sheet. Learn more about [File Uploads with Sheet Monkey.](/guides/file-uploads)

All fields can be configured with additional instructions for visitors.

### Previewing a form

To see how a form looks and test how the data will appear in your sheet, click the preview button in the builder UI.

![](/files/GGiesEoBu1rcwcDdgnxR)

In the preview mode you can submit the form and see how the data appears in the linked sheet.

![Sheet Monkey's Form Builder in action](/files/XwNC4SYyaKX1lb7YDxXs)

### Sharing a form

The form builder allows you to embed forms directly in a website or share forms directly via a URL. To share your form, first click share in the top-right hand of the screen.

![](/files/94p6GpUPQtdgKHCIawDK)

This will open the sharing window for the form builder:

![](/files/MbWHPXTRdjMOOrX0vBCC)

#### Embedding forms with an iFrame

If you don't want to change any of the form styles, embedding a form via an iFrame is the best choice for sharing. Configure the embed code and then copy the snippet and paste it into your site.

#### Embedding forms with HTML

If you want to change how the form appears and override styles using CSS, then you embed a form using the HTML snippet. ***Note:** If you chose this method, you will need to recopy this snippet into your HTML each time you change the form.*

#### Sharing forms with a link

You can share any form by copying the sharing link. All Sheet Monkey forms are designed to look great on desktop and mobile platforms and automatically preview on social media and messaging apps.

![](/files/Ir3KcpNICorPlf5oKHoy)![](/files/6xbs6QwzqRWT92NPJy8K)![](/files/buPGxR90CpO04MLRI5Vq)

### Example forms

Here's a few example forms that were created using the form builder. These are just a few ways you can use the Form Builder to start collecting information in Google Sheets.

* [Event RSVP](https://share.sheetmonkey.io/f/8kZrxbV3NRXJYRfgUwRkf1)
* [Customer Support Contact Form](https://share.sheetmonkey.io/f/iXDTD34LVjg7X8NxrPvvrF)
* [Mailing List Signup](https://share.sheetmonkey.io/f/aW1iGWTcBYSjvsb4C5XHVE)
* [Customer Survey](https://share.sheetmonkey.io/f/dMFX2Gh7WXEDjtfYPMvo7N)
* [Job Application](https://share.sheetmonkey.io/f/sMsF4YpfLd41KEBLq5iiJX)


# Embedding forms in Webflow

How to embed a form into Webflow in three steps

{% hint style="info" %}
Sheet Monkey's free form builder requires that you have the Chrome Extension installed. If you haven't already installed the Chrome Extension, [please start there](https://sheetmonkey.io/form-builder).
{% endhint %}

You can embed any form that you build with Sheet Monkey’s Form Builder by just copying and pasting our embed code into WebFlow. Let’s break that down into step by step:

### 1. Select the form you want to embed

Open the form that you want to embed by activating the extension. Once the form is open, select the “Share” link. [(Learn more about sharing forms.)](https://docs.sheetmonkey.io/guides/form-builder#sharing-a-form)

![](/files/IRo3NdmPGEoKWV4LK1uI)

### 2. Copy the embed code

You can embed your form as an iFrame or HTML. The right method of embedding a form depends on your requirements:

![](/files/8u3dU5tAhANCYzUjkXNk)

* **Choose an iFrame** if you don’t want to change the styles of the form you built or customize the HTML markup.&#x20;
* **Choose HTML** if you want to modify the markup of the form and override the default styles. *Note: If you chose this method, you will need to recopy this snippet into your HTML each time you change the form.*

Once you’ve configured your embed code, click “Copy” and open your Webflow editor.

### 3. Add an Embed element to your page in Webflow

Login to your [Webflow account](https://webflow.com/dashboard/login) . Then open the designer for the selected Webflow project and open the page where you want to embed the form.

Once you’re on the the correct page, click the add icon and find the Embed Component.

![](/files/jMDYFE0xBanwSDd3OXxM)

Paste the embed code that you received from the Form Builder into the box that appears and then click “Save & Close”

![](/files/6Ian5rzb0O6TwUFD8Idd)

Your form should immediately appear in the editor. You can preview it and move it around like any other Webflow component.

![](/files/NYd8BZD59LKrcUEFgB1M)

Note that the embedded forms are also fully responsive for mobile devices and dark and light modes.

### Video of the steps

Prefer visuals? Here's a video of the steps to embed a form in Webflow.

{% embed url="<https://www.youtube.com/watch?v=i6fQBumY59E>" %}

### Any questions?

If you're still having trouble, please [get in touch with us](https://sheetmonkey.io/contct.html) and we'd be happy to help.


# Mailing Lists

How to build a mailing list database with Sheet Monkey

![](/files/-MDS75UTwPqc4Wldl0tO)

{% hint style="info" %}
*All these guides require that you have a* [*free Sheet Monkey account.* ](https://sheetmonkey.io)*If you haven't registered your account, please do that before continuing.*
{% endhint %}

When you need a mailing list database for your website or blog quick and don't want to get locked into any one third party system, Sheet Monkey is a great choice. Building a mailing list database with Sheet Monkey only requires a spreadsheet and HTML and we've even made those for you to get you started.&#x20;

Download Sheet: <https://docs.google.com/spreadsheets/d/1WruW8D_85fKZzAy7bVeIBo9A0-eWKN3gRBhN8UH_QVA/edit?usp=sharing>

<div align="left"><img src="/files/-MDVuMR3caRs1Yauc1j-" alt=""></div>

Sample HTML:

```markup
<form action="<your-form-action>" method="post">
  <label>Your Name: <input type="text" name="Name" required /></label>
  <label>Your Email: <input type="email" name="Email" required /></label>
  <input type="hidden" name="Created" value="x-sheetmonkey-current-date-time" />
  <input type="submit" value="Sign Up" />
</form>
```

{% hint style="info" %}
Remember: This HTML and this sheet are only suggestions to help get you started. Modify them as much as you want.
{% endhint %}


# Opt-In Forms

How to build an opt-in database with Sheet Monkey

![](/files/-MDT7x_iri9veUBVj_kE)

{% hint style="info" %}
*All these guides require that you have a* [*free Sheet Monkey account.* ](https://sheetmonkey.io)*If you haven't registered your account, please do that before continuing.*
{% endhint %}

If you've got a website for your new product or service and you want to gather sign ups before you have a backend, Sheet Monkey is a great choice. Building an opt-in database with Sheet Monkey only requires a spreadsheet and HTML and we've even made those for you to get you started.&#x20;

Download Sheet: <https://docs.google.com/spreadsheets/d/1WruW8D_85fKZzAy7bVeIBo9A0-eWKN3gRBhN8UH_QVA/edit?usp=sharing>

<div align="left"><img src="/files/-MDVuJyADSUSioslQy2r" alt=""></div>

Sample HTML:

```markup
<form action="<your-form-action>" method="post">
  <label>Your Name: <input type="text" name="Name" required /></label>
  <label>Your Email: <input type="email" name="Email" required /></label>
  <input type="hidden" name="Created" value="x-sheetmonkey-current-date-time" />
  <input type="submit" value="Sign Up" />
</form>
```

{% hint style="info" %}
Remember: This HTML and this sheet are only suggestions to help get you started. Modify them as much as you want.
{% endhint %}


# Surveys

How to create a survey database with only HTML and a Google Sheet

![](/files/-MDT6sEYfpjy7CGezzUH)

{% hint style="info" %}
*All these guides require that you have a* [*free Sheet Monkey account.* ](https://sheetmonkey.io)*If you haven't registered your account, please do that before continuing.*
{% endhint %}

When you need to put a simple survey on your site but don't want to use a third party tool, Sheet Monkey is great choice. Building a survey with Sheet Monkey only requires a spreadsheet and HTML and we've even made those for you to get you started.&#x20;

Download Sheet: <https://docs.google.com/spreadsheets/d/1BAswxgIfTAJVz4oEANH-QdnBC4xRdjYSCCpFvkZjklE/edit?usp=sharing>

<div align="left"><img src="/files/-MDVuB7E8cnhh3qRyu2a" alt=""></div>

Sample HTML:

```markup
<form  action="<your-form-action>" method="post">
  <label>Your Name: <input type="text" name="Name" required /></label>
  <label>Your Email: <input type="email" name="Email" required /></label>
  <label>Favorite Color: <select name="Response 1"><option>Red</option><option>Green</option><option>Blue</option></select></label>
  <label>Do you like Ice Cream?: <input type="radio" name="Response 2" value="Yes" /> Yes <input type="radio" name="Response 2" value="No" /> No</label>
  <label>Any other comments: <textarea name="Response 3" placeholder="Leave your thoughts here"></textarea></label>
  <input type="hidden" name="Created" value="x-sheetmonkey-current-date-time" />
  <input type="submit" value="Save Response" />
</form>
```

{% hint style="info" %}
Remember: This HTML and this sheet are only suggestions to help get you started. Modify them as much as you want.
{% endhint %}


# Customer Support

A simple customer support tool with Google Sheets

![](/files/-MDT9jm4ZJfKi6GgUsZP)

{% hint style="info" %}
*All these guides require that you have a* [*free Sheet Monkey account.* ](https://sheetmonkey.io)*If you haven't registered your account, please do that before continuing.*
{% endhint %}

A Google Sheet is a great choice for keeping track of customer support issues. Building a customer support system with Sheet Monkey only requires a spreadsheet and HTML and we've even made those for you to get you started.&#x20;

Download Sheet: [https://docs.google.com/spreadsheets/d/1BAswxgIfTAJVz4oEANH-QdnBC4xRdjYSCCpFvkZjklE/edit?usp=sharing](https://docs.google.com/spreadsheets/d/1opVurOLCcrjc1MesngYT5TMXIR_QlvfQRNjiEOoVrPo/edit?usp=sharing)

<div align="left"><img src="/files/-MDVu-Mmv_4BYpQ_7QZw" alt=""></div>

Sample HTML:

```markup
<form  action="<your-form-action>" method="post">
  <label>Your Email: <input type="email" name="Email" required /></label>
  <label>Describe your problem: <textarea name="Problem" placeholder="As much detail as possible" required ></textarea></label>
  <input type="hidden" name="Status" value="new" />
  <input type="hidden" name="Created" value="x-sheetmonkey-current-date-time" />
  <input type="submit" value="Submit Ticket" />
</form>


```

{% hint style="info" %}
Remember: This HTML and this sheet are only suggestions to help get you started. Modify them as much as you want.
{% endhint %}


# What permissions are required to use Sheet Monkey

When you sign up to Sheet Monkey, you are asked to accept the following authorizations:

<figure><img src="/files/LNAcbylAQezjYdS4bjXn" alt=""><figcaption></figcaption></figure>

| Scope                                                                                     | How we use it                                                                                                                                                                                                    |
| ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| See, edit, create, and delete only the specific Google Drive files you use with this app. | <p></p><p>This scope is required to perform the following actions:</p><p></p><ul><li>Creating Sheet Monkey templates in your Google Drive.</li><li>Saving data in existing sheets that you select.<br></li></ul> |
| <p></p><p>See, edit, create, and delete your spreadsheets in Google Drive</p>             | <p></p><p>This scope is required to perform the following actions:</p><p></p><ul><li>Saving data into the spreadsheets that you've linked to your Sheet Monkey forms.<br></li></ul>                              |

### Does the Sheet Monkey server list my files?

No.&#x20;

Sheet Monkey only reads your files in the client browser using the [Google Picker API.](https://developers.google.com/picker/docs) At no point do we browse files in your drive using our backend servers using the Google Drive API.

### Does the Sheet Monkey server read my spreadsheets?

The Sheet Monkey server will read the first row of spreadsheets that you have linked to a form to get the headers for the columns. It does not read any other part of the spreadsheet.&#x20;

It does not read any spreadsheets that you have not linked to a form.

### Does Sheet Monkey update my files?

The Sheet Monkey server will update spreadsheets that you have linked to a form by adding rows and columns as the form is submitted.

Sheet Monkey will never update a spreadsheet that you have not linked to a form.

### Does Sheet Monkey delete my files?

No.

Sheet Monkey will never delete a file in your drive. Even if you delete the form, it will not delete the sheet you have linked to it.

### What data is stored by Sheet Monkey?

* **User information:** We store Google **user profile information** to link your forms to your Google account. We do not store passwords.
* **Tokens:** We cache a **temporary access token** generated by Google. These tokens automatically expire and are automatically deleted from our cache as soon as they expire. We also securely store a **refresh token** to generate new access tokens as needed.
* **Spreadsheet information:** We only store the **ids of the spreadsheet** that you chose when you link it to a form. We do not permanently store any other information or data that is inside a linked spreadsheet or any data that is added to a spreadsheet using Sheet Monkey. Sheet Monkey may temporarily store submitted data for a period not exceeding six months.


# Privacy Policy

Thank you for choosing to be part of our community at Smmall Inc ("Smmall", "Company", "we", "us", or "our"). We are committed to protecting your personal information and your right to privacy. If you have any questions or concerns about our policy, or our practices with regards to your personal information, please contact us at <levi@smmall.site>.

When you visit our websites, and use our services, you trust us with your personal information. We take your privacy very seriously. In this privacy notice, we describe our privacy policy. We seek to explain to you in the clearest way possible what information we collect, how we use it and what rights you have in relation to it. We hope you take some time to read through it carefully, as it is important. If there are any terms in this privacy policy that you do not agree with, please discontinue use of our Sites and our services.

This privacy policy applies to all information collected through our websites, and/or any related services, sales, marketing or events (we refer to them collectively in this privacy policy as the "Sites").

Our Sites include:

* [Sheet Monkey](https://sheetmonkey.io)
* [Wunderbucket](https://wunderbucket.io)

Please read this privacy policy carefully as it will help you make informed decisions about sharing your personal information with us.

### The Basics

* You own your data. That is a first principle of our services.
* We don’t ask you for personal information unless we truly need it.
* We don’t share your personal information with anyone except to comply with the law, develop our products, or protect our rights.
* We don’t store personal information on our servers unless required for the on-going operation of one of our services.
* In our product, we aim to make it as simple as possible for you to control what’s visible to the public, seen by search engines, kept private, and permanently deleted.&#x20;

**Website Visitors.** Like most website operators, Smmall collects non-personally-identifying information of the sort that web browsers and servers typically make available, such as the browser type, language preference, referring site, and the date and time of each visitor request. Smmall's purpose in collecting non-personally identifying information is to better understand how Smmall's visitors use its website. From time to time, Smmall may release non-personally-identifying information in the aggregate, e.g., by publishing a report on trends in the usage of its website.&#x20;

Smmall also collects potentially personally-identifying information like Internet Protocol (IP) addresses. Smmall does not use such information to identify its visitors, however, and does not disclose such information, other than under the same circumstances that it uses and discloses personally-identifying information, as described below.

**Gathering of Personally-Identifying Information.** Certain visitors to Smmall's websites choose to interact with Smmall in ways that require Smmall to gather personally-identifying information. The amount and type of information that Smmall gathers depends on the nature of the interaction. Those who engage in transactions with Smmall are asked to provide additional information, including as necessary the personal and financial information required to process those transactions. In each case, Smmall collects such information only insofar as is necessary or appropriate to fulfill the purpose of the visitor’s interaction with Smmall. Smmall does not disclose personally-identifying information other than as described below. And visitors can always refuse to supply personally-identifying information, with the caveat that it may prevent them from engaging in certain website-related activities.\
&#x20;

**Aggregated Statistics.** Smmall may collect statistics about the behavior of visitors to its websites. For instance, Smmall may monitor the most popular blogs on the WordPress.com site or use spam screened by the Akismet service to help identify spam. Smmall may display this information publicly or provide it to others. However, Smmall does not disclose personally-identifying information other than as described below.\
&#x20;

**Protection of Certain Personally-Identifying Information.** Smmall discloses potentially personally-identifying and personally-identifying information only to those of its employees, contractors and affiliated organizations that (i) need to know that information in order to process it on Smmall's behalf or to provide services available at Smmall's website, and (ii) that have agreed not to disclose it to others. Some of those employees, contractors and affiliated organizations may be located outside of your home country; by using Smmall's websites, you consent to the transfer of such information to them. Smmall will not rent or sell potentially personally-identifying and personally-identifying information to anyone. Other than to its employees, contractors and affiliated organizations, as described above, Smmall discloses potentially personally-identifying and personally-identifying information only when required to do so by law, or when Smmall believes in good faith that disclosure is reasonably necessary to protect the property or rights of Smmall, third parties or the public at large. If you are a registered user of Smmall websites and have supplied your email address, Smmall may occasionally send you an email. We primarily use our various product blogs to communicate this type of information, so we expect to keep this type of email and/or messaging to a minimum. If you send us a request (for example via a support email or via one of our feedback mechanisms), we reserve the right to publish it in order to help us clarify or respond to your request or to help us support other users. Smmall takes all measures reasonably necessary to protect against the unauthorized access, use, alteration or destruction of potentially personally-identifying and personally-identifying information.\
&#x20;

**Cookies.** A cookie is a string of information that a website stores on a visitor’s computer, and that the visitor’s browser provides to the website each time the visitor returns. Smmall uses cookies to help Smmall identify and track visitors, their usage of Smmall website, and their website access preferences. Visitors who do not wish to have cookies placed on their computers should set their browsers to refuse cookies before using Smmall's websites, with the drawback that certain features of Smmall's websites may not function properly without the aid of cookies.\
&#x20;&#x20;

**Privacy Policy Changes.** Although most changes are likely to be minor, Smmall may change its Privacy Policy from time to time, and in Smmall's sole discretion. Smmall encourages visitors to frequently check this page for any changes to its Privacy Policy. Your continued use of this site after any change in this Privacy Policy will constitute your acceptance of such change.<br>


# Terms & Conditions

## The Basics

* Don't do illegal things with the service. This results in a ban.
* Sheet Monkey users are subject to the [Google Drive Terms of Service](https://www.google.com/drive/terms-of-service/).
* Don't abuse the service by subjecting it to traffic and behavior that it was not designed to handle. If we detect misuse, we'll do our best to reach out to you and ask you to stop. But this is not guaranteed and we reserve the right to ban without warning.
* While we do our best to block malicious use, you are responsible for protecting your account and forms.
* You own your data. If you want to delete your account and all associated data, just ask us and we will remove it entirely from our systems within four weeks.

## The Details

The following terms and conditions govern all use of the sheetmonkey.io website and all content, services and products available at or through the website. The Website is offered subject to your acceptance without modification of all of the terms and conditions contained herein and all other operating rules, policies (including, without limitation, Sheet Monkey’s Privacy Policy) and procedures that may be published from time to time on this Site by Smmall Inc. (collectively, the “Agreement”).

Please read this Agreement carefully before accessing or using the Website. By accessing or using any part of the web site, you agree to become bound by the terms and conditions of this agreement. If you do not agree to all the terms and conditions of this agreement, then you may not access the Website or use any services. If these terms and conditions are considered an offer by Smmall Inc., acceptance is expressly limited to these terms. The Website is available only to individuals who are at least 13 years old.

**Your Sheet Monkey Account and Site.**

&#x20;If you create an account on the Website, you are responsible for maintaining the security of your account, and you are fully responsible for all activities that occur under the account and any other actions taken in connection with the account. You must immediately notify Sheet Monkey of any unauthorized uses of your account or any other breaches of security. Smmall Inc. will not be liable for any acts or omissions by You, including any damages of any kind incurred as a result of such acts or omissions.

**Intellectual Property.**&#x20;

This Agreement does not transfer from Smmall to you any Smmall or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with Smmall. Sheet Monkey, Wunderbucket, and all other trademarks, service marks, graphics and logos used in connection with Smmall, or the Website are trademarks or registered trademarks of Smmall or Smmall's licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any Smmall or third-party trademarks.

**Changes**.&#x20;

Smmall reserves the right, at its sole discretion, to modify or replace any part of this Agreement. It is your responsibility to check this Agreement periodically for changes. Your continued use of or access to the Website following the posting of any changes to this Agreement constitutes acceptance of those changes. Smmall may also, in the future, offer new services and/or features through the Website (including, the release of new tools and resources). Such new features and/or services shall be subject to the terms and conditions of this Agreement.

**Termination**.&#x20;

Smmall may terminate your access to all or any part of the Website at any time, with or without cause, with or without notice, effective immediately. If you wish to terminate this Agreement or your Sheet Monkey account (if you have one), you may simply discontinue using the Website. All provisions of this Agreement which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.&#x20;

**Disclaimer of Warranties.**&#x20;

The Website is provided “as is”. Smmall and its suppliers and licensors hereby disclaim all warranties of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose and non-infringement. Neither Smmall nor its suppliers and licensors, makes any warranty that the Website will be error free or that access thereto will be continuous or uninterrupted. You understand that you download from, or otherwise obtain content or services through, the Website at your own discretion and risk.

**Limitation of Liability.**&#x20;

In no event will Smmall, or its suppliers or licensors, be liable with respect to any subject matter of this agreement under any contract, negligence, strict liability or other legal or equitable theory for: (i) any special, incidental or consequential damages; (ii) the cost of procurement or substitute products or services; (iii) for interruption of use or loss or corruption of data; or (iv) for any amounts that exceed the fees paid by you to Smmall under this agreement during the twelve (12) month period prior to the cause of action. Smmall shall have no liability for any failure or delay due to matters beyond their reasonable control. The foregoing shall not apply to the extent prohibited by applicable law.

**General Representation and Warranty**.&#x20;

You represent and warrant that (i) your use of the Website will be in strict accordance with the Sheet Monkey Privacy Policy, with this Agreement and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the United States or the country in which you reside) and (ii) your use of the Website will not infringe or misappropriate the intellectual property rights of any third party.

**Indemnification**.&#x20;

You agree to indemnify and hold harmless Smmall, its contractors, and its licensors, and their respective directors, officers, employees and agents from and against any and all claims and expenses, including attorneys’ fees, arising out of your use of the Website, including but not limited to your violation of this Agreement.

**Miscellaneous**.&#x20;

This Agreement constitutes the entire agreement between Smmall and you concerning the subject matter hereof, and they may only be modified by a written amendment signed by an authorized executive of Smmall, or by the posting by Smmall of a revised version. Except to the extent applicable law, if any, provides otherwise, this Agreement, any access to or use of the Website will be governed by the laws of the state of California, U.S.A., excluding its conflict of law provisions, and the proper venue for any disputes arising out of or relating to any of the same will be the state and federal courts located in San Francisco County, California. Except for claims for injunctive or equitable relief or claims regarding intellectual property rights (which may be brought in any competent court without the posting of a bond), any dispute arising under this Agreement shall be finally settled in accordance with the Comprehensive Arbitration Rules of the Judicial Arbitration and Mediation Service, Inc. (“JAMS”) by three arbitrators appointed in accordance with such Rules. The arbitration shall take place in San Francisco, California, in the English language and the arbitral decision may be enforced in any court. The prevailing party in any action or proceeding to enforce this Agreement shall be entitled to costs and attorneys’ fees. If any part of this Agreement is held invalid or unenforceable, that part will be construed to reflect the parties’ original intent, and the remaining portions will remain in full force and effect. A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach thereof. You may assign your rights under this Agreement to any party that consents to, and agrees to be bound by, its terms and conditions; Smmall may assign its rights under this Agreement without condition. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and permitted assigns.<br>


