Skip to content
Clarisights Knowledge Center home
InboxAsk a human

Connecting Salesforce on Clarisights

This integration connects Salesforce CRM (Sales Cloud) to Clarisights so you can pull data from any tabular Salesforce report — Leads, Opportunities, Accounts, custom objects — into Clarisights and analyze pipeline, won revenue, and conversion velocity alongside your paid media spend.

Note: this is the Sales Cloud / CRM connector. Salesforce Marketing Cloud is a separate product and is not covered by this integration.

At a glance

AuthenticationOAuth 2.0 with refresh-token grant against your Salesforce org's my.salesforce.com custom domain. Sandbox vs production is selected by the domain you authenticate against
Permissions neededA Salesforce user with API Enabled, read access on the report folders / objects you want to import, and permission to grant the Clarisights connected app refresh-token access
Account discoveryOne Salesforce org = one Clarisights user. Add additional orgs by running the OAuth flow for each domain
Data freshnessDaily
Lookback window365 days (configurable per channel)
Backfill on connectLast 365 days, split into 30-day windows by default
TimezoneThe connecting Salesforce user's timezone (read from /services/oauth2/userinfo)
CurrencyPer-report — Salesforce currency-typed columns return the amount in the org's transactional currency, converted to your reporting currency by Clarisights
Levels supportedAccount · (per-report dimensions and metrics)
Limited rolloutNo

Prerequisites

  • A Salesforce org (Sales Cloud Enterprise edition or higher; API access is required)

  • The org's My Domain URL (e.g., https://yourcompany.my.salesforce.com for production, or https://yourcompany--sandboxname.sandbox.my.salesforce.com for a sandbox)

  • A Salesforce user with API Enabled permission and read access to the report folders and objects you want to import

  • The reports you want to import must already exist in Salesforce, must be Tabular (not Summary, Matrix, or Joined), and must be not deleted — Clarisights only lists tabular, undeleted reports

  • If your org has IP restrictions or a connected-app allowlist, ask your Salesforce admin to allow the Clarisights connected app

Steps to Connect

Step 1 — Find your Salesforce My Domain URL

In Salesforce, open Setup → Company Settings → My Domain. Copy your Current My Domain URL:

  • Production: https://yourcompany.my.salesforce.com

  • Sandbox: https://yourcompany--sandboxname.sandbox.my.salesforce.com

Choose carefully — the domain you authenticate against decides whether you connect to production or to a specific sandbox. There is no environment toggle in Clarisights; the domain determines the environment.

[TODO: Screenshot needed — Salesforce Setup → My Domain page showing the My Domain URL]

If you intend to connect production, double-check that the URL does not contain sandbox.my.salesforce.com. Connecting a sandbox by mistake will sync test data instead of real CRM data.

Step 2 — Start the connection in Clarisights

In Clarisights, go to Integrations → Salesforce and click Add Account. Enter your full Domain URL from Step 1. Clarisights validates that it ends with .salesforce.com or .force.com before opening the OAuth window.

[TODO: Screenshot needed — Clarisights "Connect a Salesforce User" form]

⚠ Common error: "A valid Salesforce domain URL must end with .salesforce.com or .force.com." → You pasted a non-Salesforce hostname (e.g., a Lightning experience link). Go back to Setup → My Domain and copy the Current My Domain URL exactly.

Step 3 — Sign in to Salesforce and authorize

A Salesforce login window opens at your domain. Sign in as the user that should drive the integration (its permissions determine which reports are visible to Clarisights). Salesforce will display the OAuth consent screen for the Clarisights connected app, requesting:

  • Access basic information (id, profile)

  • Access and manage your data (api) — used to query reports and SOQL

  • Perform requests on your behalf at any time (refresh_token) — needed so Clarisights can keep syncing without re-prompting

Click Allow.

⚠ Common error: "This app is blocked by your Salesforce admin." → Your org has the connected-app allowlist enabled. Ask your Salesforce admin to allow the Clarisights connected app, then retry.

⚠ Common error: "insufficient_access_or_readonly" or login refused → The Salesforce user does not have API Enabled. A Salesforce admin must add the API Enabled permission to the user's profile or permission set, then retry.

Step 4 — Confirm in Clarisights

After consent, the window closes and the user appears under Integrations → Salesforce. Clarisights stores the access token, refresh token, and instance URL, and reads the user's zoneinfo to set the channel timezone.

Step 5 — Configure the Salesforce channel

Salesforce reports vary widely by org, so the channel itself is configured by your CSM after the user is connected. Configuration is captured under salesforce_options on a Pod channel and tells Clarisights:

  • Which Salesforce tables / reports to query (one or more Tabular reports referenced by ID, or a join of multiple reports)

  • For each table, which date_fields to filter on (e.g., CreatedDate, CloseDate) and which metric columns to aggregate by date

  • The dimensions to expose

  • A header_map renaming Salesforce column names to Clarisights-friendly column names

  • Optional split_duration override (defaults to 30 days; the system halves and retries if Salesforce's 100k row report limit is hit)

Once the configuration is in place, Clarisights starts pulling data on the next scheduled run.

Verify the connection

  • Go to Integrations → Salesforce. The connected user should appear with the correct timezone.

  • First data appears within 24 hours of the next scheduled sync after the channel is configured.

  • Quick start: open a new report, add the Salesforce channel as the data source, group by the dimensions configured in the channel (e.g., Lead Source, Opportunity Stage), and add the metrics configured by date field (e.g., Amount by CloseDate) to validate.

Data available

Hierarchy

Salesforce CRM data is organized by org and by report. The hierarchy depends on the reports you choose to import:

Native level (Salesforce)

Clarisights level

Org / instance (instance_url)

Account (named after the channel; e.g., "Salesforce Default Channel")

Report (Salesforce Tabular report)

Source-level table within the channel

Report rows (per Salesforce object: Lead / Opportunity / Account / Contact / custom object)

Per-row records exposed via the configured dimensions and metrics

Date field on the report (CreatedDate, CloseDate, etc.)

Timestamp dimension; metric columns are exposed as {metric}_by_{date_field}

Dimensions

Dimensions are determined by the columns selected in your Salesforce report and listed in the channel's dimensions config. Common dimensions include:

Dimension

Description

Account

The Clarisights channel name (e.g., "Salesforce Default Channel")

Timestamp

Date derived from the report's date field (Datetime values are converted to the user's timezone before being truncated to date)

Lead Source / Campaign Source

Standard Salesforce attribution dimensions

Opportunity Stage

Stage of the opportunity (Prospecting, Qualification, Closed Won, etc.)

Owner

Record owner (resolved to the lookup label, not the ID)

Industry / Account Type

Standard Account dimensions

Custom object fields

Any field you select in the underlying Salesforce report

Metrics

Metrics come from the metrics array under each date_field in the channel config. Each metric is exposed as {metric}_by_{date_field} so you can have, e.g., Amount_by_CreatedDate and Amount_by_CloseDate in the same report.

Metric (per {date_field})

Description

Amount

Opportunity amount (in org currency, auto-converted)

Lead Count / Opportunity Count

Count of records in the report

Won (boolean / int)

Boolean / string columns are normalized to 1 ("true") or 0 — useful for win-rate calculations

Custom numeric fields

Currency, percent, double, and calculated columns are pulled as floats; other numeric types as strings until cast

Limitations & known constraints

  • Tabular reports only: Clarisights queries reports via SELECT … FROM Report WHERE format='Tabular'. Summary, Matrix, and Joined reports are not supported — they aren't listed and can't be configured.

  • 100,000-row Salesforce limit: Salesforce caps each report run at 100,000 rows. When this limit is hit, Clarisights automatically halves the date split (default 30 days) and retries; if the split reaches 0 the job aborts. Narrow your reports or filter to a smaller date range to stay within the limit.

  • Sandbox vs production: there is no environment toggle. The integration connects to whichever environment your My Domain URL points at. To switch environments, disconnect the existing user and re-connect with the other domain.

  • One refresh token per org: re-running the OAuth flow against the same domain re-uses or refreshes the existing user record. To connect multiple orgs, run OAuth once per domain.

  • Lookup fields return the lookup label, not the ID. If you need the ID, expose it as a separate column in the source report.

  • Currency-typed columns are pulled as their amount value (not the formatted string). Multi-currency orgs return amounts in the record's transactional currency.

  • Daily refresh only: this integration runs once per day; intra-day Salesforce changes appear on the next sync.

Operating notes

  • Refresh schedule: daily. Lookback default is 365 days, split into 30-day windows.

  • Token refresh: access tokens are short-lived. Clarisights refreshes them automatically at the start of every run using the stored refresh token (HTTP Basic auth against /services/oauth2/token). If the refresh token is revoked, the integration starts failing with auth errors and you'll need to re-authenticate.

  • Adding new reports: ask your CSM to update the channel's tables config with the new report ID, the date fields to filter on, the metrics to aggregate, and any dimensions to expose.

  • Joining reports: when you need a joined view (e.g., Opportunities + Accounts), define a join_config in the channel: a base report and one or more joins with key / on field pairs. Clarisights will run each report and outer-join the results in Polars.

  • Currency conversion: Salesforce-org currency amounts are converted to your reporting currency by Clarisights at query time.

  • Credential rotation: if a Salesforce admin revokes the connected-app authorization, re-run the OAuth flow under Integrations → Salesforce → Add Account with the same domain. Existing channel configuration is preserved.

Need help?

When contacting support from the in-app messenger, please include:

  • The integration name and Salesforce user (Integrations → Salesforce)

  • Whether you're connecting production or a sandbox, and the My Domain URL you used

  • The exact error message or screenshot

  • If a report fails: the report ID, date range, and the date field you're filtering on

  • When the issue started