Skip to main content

Documentation Index

Fetch the complete documentation index at: https://help.statisfy.com/llms.txt

Use this file to discover all available pages before exploring further.

Salesforce Integration

Salesforce is one of two primary CRMs Statisfy supports (alongside HubSpot). The integration syncs accounts, contacts, opportunities, custom objects, and support cases into Statisfy on a configurable schedule, and the self-serve settings wizard lets admins control exactly what gets synced and how.

Overview

The Salesforce integration provides:
  • Bi-directional sync of accounts (companies), contacts (people), and opportunities. See Salesforce Bi-Directional Sync for the upstream side.
  • Custom object support — bring any number of additional Salesforce objects into Statisfy as related records.
  • Owner field mapping — map any user lookup field to Statisfy’s owner types (Account Owner, CSM, TAM, etc.).
  • ARR & Renewal date sources — point Statisfy at the right Salesforce fields, or compute them from a custom object aggregation.
  • Support cases — pull Salesforce Cases as Statisfy support activities with sentiment and conversation tracking.
  • Self-serve configuration — admins manage everything above from Integrations → Salesforce → Settings, with live SOQL preview, field pickers sourced from the tenant’s actual Salesforce schema, and per-version history.

Prerequisites

  • Admin access to both Salesforce and Statisfy.
  • The Statisfy managed package installed in your Salesforce org. If you’re connecting for the first time, follow Salesforce Integration Steps.

Connection

  1. Navigate to Integrations → Admin Apps → Salesforce → Connect in Statisfy.
  2. Sign in to Salesforce on the OAuth screen and approve the permissions.
  3. The Salesforce app appears as Connected in Statisfy.
  4. Open Integrations → Salesforce → Settings to configure what gets synced.
For a step-by-step first-time install, see Salesforce Integration Steps.

The settings wizard

The wizard has six accordion sections. Open each section, configure, and click Save Configuration. Saved versions are kept in history; admins can roll back via the Show JSON footer if needed.

Account Filtering

Define which Salesforce accounts sync to Statisfy and what type each account is. Two modes:
  • Single filter — sync all matching accounts as Customer. Provide one SOQL WHERE clause (e.g. Type = 'Customer').
  • Typed filters — different SOQL clauses for Customer, Prospect, and Partner. Accounts are classified by which filter they match first.
The wizard validates SOQL syntax client-side and (when Validate SOQL with Salesforce API is enabled) round-trips each filter through Salesforce’s REST API on save to confirm it’s valid against your live schema.

Owner Mapping

Map Salesforce user lookup fields to Statisfy owner types. Common mappings:
Salesforce FieldStatisfy Owner Type
OwnerIdAccount Owner
CSM__cCSM
TAM__cTAM
Onboarding_Manager__cOnboarding Manager
Pick fields from the dropdown — sourced from your live Salesforce Account schema, with reference fields filtered to lookups pointing at User.

ARR & Renewal

Set how Statisfy computes each account’s ARR and renewal date. Three modes per metric:
  • None — don’t sync this metric.
  • Direct field — point at a Salesforce field on the Account (e.g. AnnualRevenue for ARR, Contract_End_Date__c for renewal).
  • Custom field aggregation — compute the metric from a child object (e.g. sum Amount across closed-won Opportunities, or take the latest Contract_End_Date__c across active Contracts).
For custom field aggregation, configure:
  • Object — the Salesforce object to aggregate (Opportunity, Contract, etc.).
  • Field — the value field to aggregate.
  • Aggregationsum, max, or latest.
  • Filter — optional SOQL WHERE to scope the aggregation (e.g. IsClosed = true AND IsWon = true).
The wizard provides a Preview aggregation action that runs the aggregation against 5 sample accounts so you can validate the configuration without saving.

Custom Objects

Add any number of Salesforce custom objects to sync as related records on Statisfy accounts. For each:
KnobWhat it does
Object nameThe custom object API name (e.g. Account_Health__c).
Display nameHuman label shown in the Statisfy UI.
Entity typeAccount or Contact — what the object relates to.
Matching fieldThe lookup field on the custom object that points back to Account/Contact.
Filter (optional)SOQL WHERE to scope which records are synced.
Whitelisted fieldsOptional. When set, only these fields are pulled.

Support Cases

Toggle on to pull Salesforce Cases as Statisfy support activities, with sentiment analysis and conversation threading.
KnobWhat it does
Case filterSOQL WHERE clause to scope which cases are pulled (e.g. Status != 'Closed' AND CreatedDate = LAST_N_DAYS:90).
Last N daysCap the lookback window.
Conversation sourceCaseComment (default) or EmailMessage — which child object to thread.
Whitelisted fieldsOptional. Restrict which Case fields are stored.
The wizard has a Preview action that returns 5 sample cases matching the filter so you can validate before saving.

Advanced

Field-level allowlists and exclusions for power users:
KnobPurpose
Account whitelisted fieldsOnly sync these fields from the Account object.
Opportunity whitelisted fieldsOnly sync these fields from Opportunity.
Contact additional fieldsMap extra Contact fields into Statisfy custom fields.
Contact exclude fieldsDrop these Contact fields from the sync.
Most tenants leave Advanced untouched. Use it to trim payload size on large orgs or to bring in non-standard fields without a custom object.

Job status & manual runs

The wizard’s Sync Job card at the top of the page shows the latest bootstrap / periodic Salesforce job with its status (Running / Completed / Failed) and timestamps. Click Run Sync Job to fire a job on demand without waiting for the scheduler.

Configuration history

Every save creates a new version in integration_config. The wizard header badge shows the current source: Database (vN) when the admin has saved at least once, Default (Code) when running the code-side fallback, and Not Configured when neither is set. To roll back: contact support@statisfy.com — version history is preserved and can be activated by support.

Bi-directional sync

For pushing Statisfy fields back to Salesforce (e.g. computed health scores, AI-generated risk flags, owner re-assignments), see the dedicated Salesforce Bi-Directional Sync Guide.

Troubleshooting

The filter you entered doesn’t compile against your tenant’s Salesforce schema. Check field API names (case-sensitive), unbalanced parens, or referencing fields that don’t exist on the target object. The wizard’s preview action runs the same query and returns specific error text from Salesforce.
Open the Account in Statisfy and check Source:
  • If sourced from a direct field, verify the Salesforce Account row has the expected value in the configured field.
  • If sourced from a custom field aggregation, run Preview aggregation in the wizard against the same account to confirm the aggregation logic is correct.
  • Confirm the custom object is added in the wizard’s Custom Objects section and saved.
  • Verify the matching field on the custom object actually contains a reference to the Account ID for the records you expect.
  • Check the optional filter — too restrictive a SOQL WHERE will silently exclude records.
  • Run the bootstrap job (Run Sync Job button) — newly added custom objects only ingest on the next pull cycle.
  • Confirm the Support Cases section is enabled.
  • Check the Case filter — if it includes a date range, cases outside the range won’t sync.
  • Verify the Statisfy package has read access to Case, CaseComment, and EmailMessage in your Salesforce org.
Check the job’s sync_message in the audit table — completed-with-zero-rows is reported there. Common causes: account filter too narrow, package not installed in the right org, or the connected user lacks read permission on the object.

Support

Need help? Contact support@statisfy.com or reach out to your Customer Success Manager.