Skip to main content

Data Integrations

Sync community data with spreadsheets, CRM tools, and external services. These integrations work as action nodes in the Workflow Builder.


Overview

ServiceOperationsAuth Method
Google SheetsAppend row, update cells, update row, read rows, lookup row, clear rangeService Account or OAuth2
HubSpotUpsert contact, create deal, add/remove from listOAuth2 or Private App Token
MailchimpSubscribe/unsubscribe, add/remove tagAPI key
Kit (ConvertKit)Subscribe/unsubscribe, add/remove tagAPI key
WebhookCustom HTTP POST/PUT to any URLBearer token, API key, or custom headers

Google Sheets

Setup

Option 1: Service Account (recommended)

  1. Go to Google Cloud Console
  2. Create a project → Enable Google Sheets API
  3. Go to Credentials → Create Service Account
  4. Download the JSON key file
  5. Open your spreadsheet → click Share → add the service account email (e.g., my-bot@project.iam.gserviceaccount.com) as Editor

Option 2: OAuth2

  1. In Uni8, click Connect and sign in with your Google account
  2. Authorize access to Google Sheets

In Uni8:

  1. Go to Settings > Automations > Integrations > Google Sheets
  2. Upload the JSON key file (Service Account) or click Connect (OAuth2)
  3. Click Test Connection

Actions

Append Row

Add a new row to the bottom of a sheet. Best for logging events, registrations, or transactions.

Configuration:

FieldDescriptionExample
Spreadsheet IDThe ID from the sheet URL1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms
Sheet NameTab name within the spreadsheetSheet1
ColumnsValues for each column, one per lineSee 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:

FieldDescriptionExample
Spreadsheet IDSheet ID from URL1BxiMVs0XRA...
RangeCell range in A1 notationSheet1!B2:D2
ValuesNew values, one per lineSee 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:

FieldDescriptionExample
Spreadsheet IDSheet ID from URL1BxiMVs0XRA...
Sheet NameTab nameMembers
Lookup ColumnColumn to search in (A, B, C...)A
Lookup ValueValue to match{{ user.email }}
Update ColumnsColumn-value pairs to updateSee 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:

FieldDescriptionExample
Spreadsheet IDSheet ID from URL1BxiMVs0XRA...
RangeCell range to readSheet1!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:

FieldDescriptionExample
Spreadsheet IDSheet ID from URL1BxiMVs0XRA...
Sheet NameTab nameMembers
Lookup ColumnColumn to searchB
Lookup ValueValue to find{{ user.email }}

Clear Range

Remove all values from a cell range without deleting the cells.

Configuration:

FieldDescriptionExample
Spreadsheet IDSheet ID from URL1BxiMVs0XRA...
RangeCell range to clearSheet1!A2:Z1000

Common Use Cases

Use CaseActionExample
Log new membersAppend RowName, email, join date, tier
Track event attendanceAppend RowName, event title, check-in time
Update member statusUpdate RowFind by email, update tier column
Export payment recordsAppend RowAmount, date, product, buyer
Monthly report dashboardUpdate CellsUpdate summary cells with totals

HubSpot CRM

Setup

OAuth2 (recommended):

  1. In Uni8, click Connect and authorize with HubSpot

Private App Token:

  1. Go to HubSpot Developers
  2. Create a Private App with scopes: crm.objects.contacts.write, crm.objects.deals.write, crm.lists.write
  3. 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
FieldMaps 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

  1. Go to Mailchimp Account Settings > API Keys
  2. Generate a new API key
  3. 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.


Kit (ConvertKit)

Setup

  1. Go to Kit Settings > Developer and copy your API key
  2. In Uni8, paste the API key

Actions

  • Subscribe — Add a subscriber (upsert by email)
  • Unsubscribe — Remove a subscriber
  • Add tag — Tag a subscriber
  • Remove tag — Remove a tag

Supports custom fields.


Webhook (Custom)

Send data to any external URL when a workflow runs. Ideal for connecting services that don't have a built-in integration.

Setup

No credential needed — configure per action in the workflow.

Configuration

FieldDescription
URLHTTPS endpoint to receive data
MethodPOST or PUT
HeadersCustom headers (e.g., Authorization, Content-Type)
Body TemplateJSON body with {{ }} expressions
Retry Count0–5 retries with exponential backoff

Example Body Template

{
"event": "membership_purchased",
"member": {
"name": "{{ user.name }}",
"email": "{{ user.email }}"
},
"tier": "{{ triggerPayload.membershipTier }}",
"amount": "{{ triggerPayload.amount }}"
}

Security Features

  • HTTPS only — HTTP URLs are blocked
  • HMAC-SHA256 signing — Each tenant gets a unique signing secret. The signature is sent in X-Webhook-Signature header for payload verification
  • SSRF protection — Internal/private IP addresses are blocked
  • Timeout — 10-second timeout per attempt
  • Retry — Exponential backoff (1s, 2s, 4s, 8s, 16s) up to 5 retries

Payload Enrichment

Webhook payloads are automatically enriched with context based on the trigger:

  • User data — Name, email, profile fields
  • Event data — Event title, date, location (for event triggers)
  • Course data — Course title, completion status (for course triggers)
  • Payment data — Amount, currency, transaction ID (for payment triggers)

Ask AI Assistant