Skip to main content

Prerequisites: Setting Up Data Connections

Before configuring the Account model, you need at least one data connection in FunnelStory. A data connection is a link between FunnelStory and an external system that holds your account data.

This page helps you decide which connection type to use and how to set it up.

Choosing Your Data Source

Most organizations store account data in one of three places:

CRM (Customer Relationship Management)

Use your CRM if it is the primary system of record for customer accounts. CRMs typically contain account names, owner assignments, deal/opportunity data, and lifecycle stages.

CRMConnection TypeQuery Format
SalesforceOAuthSOQL block queries
HubSpotOAuthHubSpot Search API (HS block queries)
AttioAPI KeyAttio API (AT block queries)

Best for: Organizations where the sales or CS team maintains account data directly in the CRM. Salesforce and HubSpot are the most common.

Data Warehouse

Use your warehouse if you have a curated analytics layer (dim tables, views) that consolidates data from multiple systems, or if your account data lives in a product database rather than a CRM.

Warehouse / DatabaseConnection TypeQuery Format
PostgreSQLHost + credentialsStandard SQL
MySQLHost + credentialsStandard SQL
MS SQL ServerHost + credentialsStandard SQL
SnowflakeAccount + credentialsStandard SQL (Snowflake dialect)
BigQueryService account (JSON key)Standard SQL (BigQuery dialect)
DatabricksHost + tokenStandard SQL (Spark SQL dialect)
RedshiftHost + credentialsStandard SQL (Redshift dialect)
Amazon AthenaAccess key + regionStandard SQL (Presto/Trino dialect)

Best for: Organizations with a data team that maintains clean, modeled data in a warehouse. Often produces the richest account models because you can join data from many systems in a single query.

Both (Hybrid)

Use a combination when no single source has everything. For example:

  • Salesforce for account metadata (name, owner, ARR, renewal date) + warehouse for product usage data (last login, feature adoption)
  • HubSpot for deal data + PostgreSQL for subscription/billing data

FunnelStory supports this through Data Joins, where your primary account query runs against one connection and is enriched with data from a second connection. See Advanced Configuration for details.

Other Supported Sources

SourceConnection TypeQuery Format
MongoDBConnection stringMQL block queries
GainsightAPIGS block queries
ElasticsearchHost + credentialsES block queries

Setting Up a Connection

Step 1: Navigate to Connections

Go to Configuration > Integrations in the left sidebar.

Step 2: Add a New Connection

Click Add Connection and select your data source type.

Step 3: Provide Credentials

Each connection type requires different credentials:

For CRMs (Salesforce, HubSpot):

  • Click Connect to initiate an OAuth flow
  • Authorize FunnelStory in the popup window
  • The connection is established once you return to FunnelStory

For Data Warehouses (Snowflake, BigQuery, Databricks):

  • Snowflake: Account identifier, warehouse name, database, schema, username, password (or key pair). The user needs USAGE grants on the warehouse, database, and schema, plus SELECT on relevant tables/views.
  • BigQuery: Upload a service account JSON key file. The service account needs BigQuery Data Viewer and BigQuery Job User roles on the relevant dataset.
  • Databricks: Server hostname, HTTP path, and personal access token.

For SQL Databases (PostgreSQL, MySQL, MS SQL):

  • Host, port, database name, username, password
  • Ensure FunnelStory's IP addresses are allowed through your firewall
  • For private networks, configure an SSH tunnel first

Step 4: Test the Connection

After entering credentials, click Test Connection. A successful test confirms FunnelStory can reach your data source and authenticate.

SSH Tunnels

If your database is in a private network (VPC, private subnet), you can set up an SSH tunnel so FunnelStory connects through a bastion/jump host:

  1. Go to Configuration > Integrations > SSH Tunnels
  2. Add a tunnel with the bastion host, port, and SSH key
  3. When creating the database connection, select the tunnel

Refresh Intervals

Once a connection is used by a model, FunnelStory periodically refreshes the data. You can choose:

  • Hourly (1h): For data that changes frequently (e.g., CRM deal stages, support tickets)
  • Daily (24h): For data that changes less often (e.g., account metadata, warehouse dim tables)

You set the refresh interval when configuring the Account model, not when creating the connection itself.

Decision Guide

Not sure which path to take? Here's a quick decision tree:

  1. Do you have a data warehouse with a curated account view/table?

    • Yes -> Use the warehouse. It's usually the cleanest source.
    • No -> Continue to step 2.
  2. Is your CRM (Salesforce or HubSpot) the system of record for accounts?

    • Yes -> Use the CRM directly.
    • No -> Continue to step 3.
  3. Is account data spread across multiple systems?

    • Yes -> Pick the richest source as primary, then use Data Joins for the rest.
    • No -> Use whatever database or system holds your account records.

Next Step

Once you have at least one data connection configured, proceed to Configuration Walkthrough to set up the Account model.