Integrations · Salesforce

Customer feedback, weighted by Salesforce ARR.

Connect Salesforce and Crumb pulls your Account records and their annual revenue into its accounts, so the inbox shows the revenue behind every request. The sync runs one way, from Salesforce to Crumb, and only reads.

How it works

  1. Connect your org. An admin signs in to Salesforce from Settings → Integrations and approves Crumb through Salesforce's OAuth flow.
  2. Accounts come across. The first sync runs immediately. Crumb queries the ID, name, and AnnualRevenue of every named Account, then links each one to the Crumb account with the same name or creates a new one. Accounts without AnnualRevenue come in at $0.
  3. AnnualRevenue becomes ARR. The standard AnnualRevenue field is stored as the account's ARR, unless you've set that account's ARR by hand in Crumb.
  4. Requests carry the dollars. Widget feedback lands on the account whose name your app passes in, so each request shows its ARR, and initiatives add it up across accounts.
  5. Refresh when you need to. Sync now pulls again on demand, and the CRM sync job refreshes every connected workspace whenever it runs. On self-host, you schedule that job with a cron.

What syncs

WhatDirectionWhen
Account nameSalesforce → CrumbEvery sync
AnnualRevenue, as ARRSalesforce → CrumbEvery sync, unless set by hand in Crumb
Account IDSalesforce → CrumbStored to keep the link on later syncs
Opportunities, contacts, custom fieldsNot syncedCrumb queries the Account object only
Feedback, accounts, ARRNot synced backNothing is written to Salesforce

If your team tracks ARR somewhere other than AnnualRevenue, such as a custom field or rolled-up opportunity amounts, Crumb won't see it today. You can set ARR by hand on any account in Crumb, and the sync will respect it. ARR is capped at $21M per account.

When Salesforce expires the access token, Crumb refreshes it on the next sync. If the refresh fails, the integration shows as disconnected in Settings until an admin reconnects, instead of quietly failing on every sync.

Setup

Crumb Cloud: connect Salesforce in one click from Settings → Integrations, on the Team plan and up. The integrations page shows the connected instance, how many accounts synced, and when.

Self-hosted: create a Connected App with the api and refresh_token OAuth scopes and a callback URL of /api/integrations/salesforce/callback on your Crumb domain, then set SALESFORCE_CLIENT_ID and SALESFORCE_CLIENT_SECRET. To connect a sandbox, also set SALESFORCE_LOGIN_URL to https://test.salesforce.com. For scheduled refreshes, call POST /api/v1/internal/crm-sync from a cron with your sweep secret.

Using HubSpot instead?

The HubSpot integration works the same way, reading companies and their annual revenue.

Frequently asked questions

Does Crumb use opportunities to calculate ARR?

No. Crumb reads the AnnualRevenue field on Account records and nothing else. Opportunities, contacts, and custom fields aren't queried.

Does Crumb write to Salesforce?

No. The connection requests Salesforce's standard api and refresh_token scopes, but Crumb only runs a read query against Account. Nothing is written back.

Can I connect a Salesforce sandbox?

On self-host, yes: set SALESFORCE_LOGIN_URL to https://test.salesforce.com before connecting. The login host is a deployment-wide setting, not a per-workspace choice.

What happens to ARR I've set by hand?

It stays. Setting an account's ARR in Crumb marks it as manual, and later syncs refresh the name and link but leave that number alone.

How often does Crumb sync with Salesforce?

When you connect, whenever an admin or PM presses Sync now, and whenever the CRM sync job runs. On self-host, you schedule that job with a cron; the README suggests every six hours.

Triage by the revenue in Salesforce.

Free and open source to self-host. One click to start on Crumb Cloud.