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
| Authentication | OAuth 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 needed | A 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 discovery | One Salesforce org = one Clarisights user. Add additional orgs by running the OAuth flow for each domain |
| Data freshness | Daily |
| Lookback window | 365 days (configurable per channel) |
| Backfill on connect | Last 365 days, split into 30-day windows by default |
| Timezone | The connecting Salesforce user's timezone (read from /services/oauth2/userinfo) |
| Currency | Per-report — Salesforce currency-typed columns return the amount in the org's transactional currency, converted to your reporting currency by Clarisights |
| Levels supported | Account · (per-report dimensions and metrics) |
| Limited rollout | No |
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.comfor production, orhttps://yourcompany--sandboxname.sandbox.my.salesforce.comfor 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.comSandbox:
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 SOQLPerform 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 dateThe 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 ( | 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 ( | Timestamp dimension; metric columns are exposed as |
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 | 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
tablesconfig 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_configin the channel: abasereport and one or morejoinswithkey/onfield 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