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