Data Integrations
Sync community data with spreadsheets, CRM tools, and external services. These integrations work as action nodes in the Workflow Builder.
Overview
| Service | Operations | Auth Method |
|---|---|---|
| Google Sheets | Append row, update cells, update row, read rows, lookup row, clear range | Service Account or OAuth2 |
| HubSpot | Upsert contact, create deal, add/remove from list | OAuth2 or Private App Token |
| Mailchimp | Subscribe/unsubscribe, add/remove tag | API key |
| Kit (ConvertKit) | Subscribe/unsubscribe, add/remove tag | API key |
| Webhook | Custom HTTP POST/PUT to any URL | Bearer token, API key, or custom headers |
Google Sheets
Setup
Option 1: Service Account (recommended)
- Go to Google Cloud Console
- Create a project → Enable Google Sheets API
- Go to Credentials → Create Service Account
- Download the JSON key file
- Open your spreadsheet → click Share → add the service account email (e.g.,
my-bot@project.iam.gserviceaccount.com) as Editor
Option 2: OAuth2
- In Uni8, click Connect and sign in with your Google account
- Authorize access to Google Sheets
In Uni8:
- Go to Settings > Automations > Integrations > Google Sheets
- Upload the JSON key file (Service Account) or click Connect (OAuth2)
- Click Test Connection
Actions
Append Row
Add a new row to the bottom of a sheet. Best for logging events, registrations, or transactions.
Configuration:
| Field | Description | Example |
|---|---|---|
| Spreadsheet ID | The ID from the sheet URL | 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms |
| Sheet Name | Tab name within the spreadsheet | Sheet1 |
| Columns | Values for each column, one per line | See below |
Column values — Enter one value per line. Each line maps to a column (A, B, C, ...):
{{ user.name }}
{{ user.email }}
{{ triggerPayload.membershipTier }}
{{ triggerPayload.amount }}
This produces a row: | John Doe | john@example.com | Pro | 500000 |
Supports up to 50 columns per row.
Update Cells
Modify a specific cell range. Best for updating dashboards, status fields, or summary tables.
Configuration:
| Field | Description | Example |
|---|---|---|
| Spreadsheet ID | Sheet ID from URL | 1BxiMVs0XRA... |
| Range | Cell range in A1 notation | Sheet1!B2:D2 |
| Values | New values, one per line | See below |
Example — Update a member's status:
- Range:
Members!C5:E5 - Values:
Active
2025-01-15
Pro Tier
Update Row
Find a row by matching a column value, then update specific cells in that row.
Configuration:
| Field | Description | Example |
|---|---|---|
| Spreadsheet ID | Sheet ID from URL | 1BxiMVs0XRA... |
| Sheet Name | Tab name | Members |
| Lookup Column | Column to search in (A, B, C...) | A |
| Lookup Value | Value to match | {{ user.email }} |
| Update Columns | Column-value pairs to update | See below |
Example — Update member tier when membership changes:
- Lookup Column:
A(email column) - Lookup Value:
{{ user.email }} - Update: Column C =
{{ triggerPayload.newTier }}, Column D ={{ triggerPayload.date }}
Read Rows
Read data from a range. Useful for checking existing data before writing.
Configuration:
| Field | Description | Example |
|---|---|---|
| Spreadsheet ID | Sheet ID from URL | 1BxiMVs0XRA... |
| Range | Cell range to read | Sheet1!A1:D100 |
Returns row data that can be used in subsequent workflow nodes.
Lookup Row
Search for a specific row by matching a value in a column. Returns the first matching row.
Configuration:
| Field | Description | Example |
|---|---|---|
| Spreadsheet ID | Sheet ID from URL | 1BxiMVs0XRA... |
| Sheet Name | Tab name | Members |
| Lookup Column | Column to search | B |
| Lookup Value | Value to find | {{ user.email }} |
Clear Range
Remove all values from a cell range without deleting the cells.
Configuration:
| Field | Description | Example |
|---|---|---|
| Spreadsheet ID | Sheet ID from URL | 1BxiMVs0XRA... |
| Range | Cell range to clear | Sheet1!A2:Z1000 |
Common Use Cases
| Use Case | Action | Example |
|---|---|---|
| Log new members | Append Row | Name, email, join date, tier |
| Track event attendance | Append Row | Name, event title, check-in time |
| Update member status | Update Row | Find by email, update tier column |
| Export payment records | Append Row | Amount, date, product, buyer |
| Monthly report dashboard | Update Cells | Update summary cells with totals |
HubSpot CRM
Setup
OAuth2 (recommended):
- In Uni8, click Connect and authorize with HubSpot
Private App Token:
- Go to HubSpot Developers
- Create a Private App with scopes:
crm.objects.contacts.write,crm.objects.deals.write,crm.lists.write - Copy the access token
Actions
Upsert Contact
- Create or update a contact by email address
- Map community profile fields to HubSpot contact properties
- Supports custom properties
| Field | Maps To |
|---|---|
{{ user.email }} | Email (lookup key) |
{{ user.name }} | First/Last name |
{{ triggerPayload.membershipTier }} | Custom property |
Create Deal
- Create a deal in a specific pipeline and stage
- Attach to an existing contact
- Set deal amount, name, and close date
Add/Remove from List
- Add or remove a contact from a static list
- Useful for segmenting members by tier, event attendance, or course completion
Mailchimp
Setup
- Go to Mailchimp Account Settings > API Keys
- Generate a new API key
- In Uni8, paste the key — datacenter is detected automatically from the key suffix
Actions
- Subscribe — Add or update a member in an audience (upsert by email)
- Unsubscribe — Remove a member from an audience
- Add tag — Apply a tag to a subscriber for segmentation
- Remove tag — Remove a tag from a subscriber
Supports custom merge fields for additional profile data.