# Google Sheets connection setup

{% hint style="warning" %}
Google requires using **https\://** as the scheme of Authorized redirect URI for Production apps.

Also, redirect URI **must** contain a top private domain and should end with a public [top-level domain](https://github.com/google/guava/wiki/InternetDomainNameExplained#public-suffixes-and-private-domains) (such as .com or .org). The only exception is *localhost* (for testing the connection locally).

If your UI Bakery instance is using a custom [domain name](https://docs.uibakery.io/on-premise/networking-and-security/setting-up-a-domain-name) — please ensure to [put it](https://docs.uibakery.io/on-premise/install-and-update/updating-environment-variables) in the `UI_BAKERY_APP_SERVER_NAME` variable.

If you don't have a private domain yet (e.g. just deployed your instance on AWS) but want to test the Google Sheets connection — you can use 3rd-party service [nip.io](https://nip.io/) for testing purposes. Just replace dots with dashes and append ".nip.io" to your static IP address like `192-168-1-250.nip.io`
{% endhint %}

1. Create a new [Google Cloud Console](https://console.cloud.google.com/) project or choose an existing one
2. Configure the [OAuth Consent Screen](https://console.cloud.google.com/apis/credentials/consent) with User Type = **External** and Publishing Status = **Production**
3. Go to the [**API & Services**](https://console.cloud.google.com/apis/dashboard) section
4. Click **ENABLE APIS AND SERVICES** and enable [Google Sheets API](https://console.cloud.google.com/apis/library/sheets.googleapis.com)
5. Click on [**Create credentials**](https://console.cloud.google.com/apis/credentials/wizard?api=sheets.googleapis.com) and choose **User Data**
6. Select **Web Application** in the OAuth Client ID section
7. Add Authorized redirect URI with value `https://YOUR_DOMAIN_OR_LOCALHOST/gsheet-oauth-callback` (make sure to put the same domain as in the `UI_BAKERY_APP_SERVER_NAME` variable)
8. Click **Create**
9. [Put credentials](https://docs.uibakery.io/on-premise/install-and-update/updating-environment-variables) in `UI_BAKERY_GSHEET_CLIENT_ID` and `UI_BAKERY_GSHEET_CLIENT_SECRET` variables
10. Restart your UI Bakery instance with `docker compose up -d`
