Skip to main content

CRM visibility

CRM visibility keeps FunnelStory account access aligned with HubSpot and Salesforce when you wire those connections—instead of relying only on manual assignments. FunnelStory reads who can see which CRM accounts from your connected org, matches CRM users to workspace users by email, and applies the result for Account User, Manager, and other non-admin roles. Turn it on when your CRM already defines account access and you want the same boundaries in FunnelStory.

What you get

  • Account User and Manager roles see accounts that match resolved CRM visibility rules, plus any accounts they are already assigned (manual assignment, csm_email / AE fields, or Shared teams).
  • Admin and Super Admin keep full-workspace visibility—they are not scoped by CRM rows.
  • When both HubSpot and Salesforce have Sync Visibility enabled, effective access is the union of visibility from each connection plus existing assignments.
  • Admins can review inferred rules per connection in Admin Settings → CRM Visibility before you depend on them in production.

CRM visibility controls which accounts a user can see in the product. It does not replace your Account model; it layers on top of accounts that already exist in the workspace.

How access works for end users

For users who are not Admin or Super Admin, FunnelStory builds an account list from:

  1. Workspace assignments — manual assignment, role-based fields on the Account model (for example csm_email), and shared-team membership via team_id.
  2. Resolved CRM visibility — rows where the CRM user’s email matches a workspace user and the CRM account ID matches a FunnelStory account.
  3. Account hierarchy — child accounts under any account the user can already see.

Before you start

RequirementWhy
A HubSpot and/or Salesforce connection with OAuth completed and Sync Visibility enabledVisibility is read from CRM APIs during connection sync
An Account model that loads customer accounts into FunnelStoryVisibility only applies to accounts that exist in the workspace
CRM IDs on those accounts (hubspot_company_id and/or sfdc_account_id)FunnelStory must know which CRM record maps to each account
Workspace users whose email matches CRM usersPermissions resolve CRM user → email → FunnelStory user

Connect HubSpot or Salesforce

  1. Open Configuration → Connections.
  2. Add or open a HubSpot or Salesforce connection.
  3. Enable Sync Visibility on the connection form.

When Sync Visibility is on, connection syncs can refresh CRM visibility rows. HubSpot runs visibility on every normal Sync. Salesforce runs visibility during a normal Sync only when the connection’s last full sync was at least 2 days ago—another Sync sooner does not refresh visibility or other CRM objects (optional support-ticket sync may still run). Use Sync visibility in Admin when you need Salesforce visibility updated immediately. When Sync Visibility is off, object sync may still run where the connection allows it, but visibility is not updated from that connection.

  1. Complete OAuth so the connection shows as authorized.

Connection-specific setup (scopes, sandbox, and OAuth) is documented on the HubSpot and Salesforce pages.

Sync the data connection

  1. Return to Configuration → Connections.
  2. Open the HubSpot or Salesforce connection.
  3. Click Sync, or wait for the scheduled refresh.

For Salesforce, step 3 may not run visibility or CRM object sync if the connection already completed a full sync within the last 2 days—use Sync visibility below when you need an on-demand refresh.

With Sync Visibility enabled, an eligible sync run:

  • HubSpot — For each workspace account with a numeric hubspot_company_id, FunnelStory reads HubSpot resource permissions for VIEW on that company, maps permitted HubSpot users to email, then to workspace users.
  • Salesforce — For workspace accounts with sfdc_account_id, FunnelStory reads AccountShare rows (Read, Edit, or All access) and expands each share principal to Salesforce users—direct user grants, manual shares, role-based shares via the role hierarchy, and public groups (including nested groups). FunnelStory does not query org-wide defaults (OWD) directly; if Account visibility is public in Salesforce, inferred visibility may be sparse or empty because few or no AccountShare rows exist.

Visibility-only sync

To refresh visibility without a full CRM object sync, open Admin Settings → CRM Visibility, select the connection, and choose Sync visibility.

Use this after you fix account mappings or add workspace users without re-pulling all CRM objects.

Map CRM IDs on your Account model

Visibility sync looks up accounts already in FunnelStory and reads CRM identifiers from account properties. Your Account model query must populate the correct property for each CRM you use. See Field reference — CRM identifiers.

HubSpot: hubspot_company_id

ItemDetail
Property namehubspot_company_id
ValueHubSpot company record ID (numeric string, for example 28509999212)

FunnelStory only uses accounts where this property is set and the value is a numeric HubSpot company ID. Companies without a valid ID are skipped for HubSpot visibility.

Salesforce: sfdc_account_id

ItemDetail
Property namesfdc_account_id
ValueSalesforce Account Id (for example 001f600000TmwYtAAJ)

You still need the usual Account model mappings (at minimum account_id, and typically name, domain, created_at) so accounts refresh correctly. CRM visibility does not replace the Account model.

Refresh the Account model

Visibility reads CRM IDs from accounts already in the workspace, which come from your Account model refresh.

  1. Open Configuration → Data models.
  2. Open your Accounts model.
  3. Run Refresh, or wait for the scheduled refresh.

Confirm that accounts participating in CRM visibility have the expected hubspot_company_id and/or sfdc_account_id after refresh. Use Verification and troubleshooting if counts look wrong.

Review visibility rules

After sync, Admins and Super Admins inspect what FunnelStory inferred from CRM data at Admin Settings → CRM Visibility.

Select a HubSpot or Salesforce connection, filter by account or user if needed, and review the table.

What each row means

FieldMeaning
crm_typehubspot or salesforce
crm_account_idCRM record id (HubSpot company id or Salesforce account id)
crm_user_emailEmail of the CRM user granted access
account_idMatching FunnelStory account (when resolved)
user / user_idMatching workspace user (when resolved)
unresolved_reasonsWhy a row did not fully resolve (see below)
summaryCounts: total rows, resolved, unresolved users/accounts
last_syncLast connection sync timestamp

Common unresolved_reasons

ReasonMeaningWhat to do
user_not_foundCRM user email is not a workspace userInvite or create the user with the same email as in HubSpot/Salesforce. You can start an invite from an unresolved row in the CRM Visibility table.
account_not_foundCRM account id did not map to a FunnelStory accountCheck hubspot_company_id / sfdc_account_id on the Account model and run Refresh