Salesforce
Send Bellwork district tables to Salesforce as accounts, contacts or leads, and campaigns
Bellwork sends a district table to Salesforce, now or on a schedule. Each district becomes an Account, its people become Contacts or Leads, its answers go into Account fields, and the table's people can go on a campaign. You choose which of the table's columns go to which Salesforce fields.
Nothing a rep made in Salesforce is deleted. Bellwork updates the records it matched and never clears a field.
Connect
- In Bellwork, open Settings, then Integrations, and click Connect Salesforce on the Salesforce card.
- Sign in to Salesforce and allow Bellwork access. You come back to Bellwork, and the card shows your org's name.
Bellwork writes as the Salesforce user who connected. That user needs:
| Permission | Why |
|---|---|
| API Enabled | Bellwork uses Salesforce's API. Enterprise, Unlimited, Performance and Developer editions have it; Professional only with the API add-on. |
| Customize Application | So Bellwork can make its NCES ID field and the fields you send columns to. Without it, an admin makes the fields (below). |
| Marketing User (on the user record) | Only when a table's list is on: a campaign can only be made by a Marketing User. |
To reconnect, for example after the user's password or permissions change, click Reconnect on the card. Your synced tables and fields stay as they are.
Connect with your own Salesforce app
If the card offers Use your own Salesforce app, or your security team wants the sign-in to go through an app your org owns, a Salesforce admin makes a small app in your org, once, and pastes its keys into Bellwork. It takes about ten minutes. Everything after the sign-in works the same either way.
In Salesforce (as an admin):
-
Setup, search External Client App Manager, click New External Client App.
-
Basic Information: name it Bellwork, add a contact email, and leave Distribution State at Local.
-
API (Enable OAuth Settings): tick Enable OAuth, then:
- Callback URL: the URL Bellwork shows in the Use your own Salesforce app window (copy it from there).
- OAuth Scopes: add Manage user data via APIs (api) and Perform requests at any time (refresh_token, offline_access).
- Require secret for Web Server Flow: on.
- Require Proof Key for Code Exchange (PKCE): on.
-
Create. Then on the app's Policies tab, Edit:
- Permitted Users: All users can self-authorize.
- Refresh Token Policy: Refresh token is valid until revoked if your org offers it. Many orgs now offer only expiring tokens; then pick Expire refresh token if not used for specific time with the longest period offered. A scheduled sync keeps the token in use; if Bellwork goes unused longer than that, the card asks you to reconnect.
- IP Relaxation: Relax IP restrictions. Bellwork's servers don't have fixed IP addresses.
Save.
-
On the Settings tab, OAuth Settings, click Consumer Key and Secret, confirm your identity, and copy both.
Salesforce can take up to ten minutes to accept a new app.
In Bellwork:
- Settings, Integrations, the Salesforce card: Use your own Salesforce app.
- Paste the Consumer Key and Consumer Secret. Turn on This is a sandbox if you are connecting a sandbox.
- Continue to Salesforce, sign in as the user Bellwork should write as, and allow access.
Bellwork keeps the key and secret encrypted with the connection, and uses them only to sign in to your org. If an admin later regenerates the secret, the card says the connection needs reconnecting: click Paste a new app key and paste the new one. If Bellwork's own app later becomes available to you, Switch to Bellwork's app on the card moves the connection over; nothing you synced changes.
Sync a table
Open a district table and click Sync to Salesforce in its toolbar. The sync sheet lists the district facts and the table's columns. For each one, tick it and choose where it goes: a new field Bellwork makes, or one of your existing Account fields. Then choose whether to add the people to a campaign, and how often to repeat. Save and sync sends it now, in the background: the toolbar button says Syncing and the sheet counts the districts sent, and a message tells you when it's done. You can close the sheet meanwhile.
A table that hasn't changed since its last sync sends nothing, so a daily schedule only spends API calls on what changed.
How districts become Accounts
Bellwork looks for the district's Account first, and makes one only when there is none:
- By website. Your Account's website is read however it was typed, so
https://www.katyisd.org/matches the districtkatyisd.org. A subdomain or a lookalike never matches. When several districts share one website, only the largest matches by it. - By NCES ID. Each district's NCES ID is stamped on its Account once matched, so later syncs find it by that even if the website changes.
A new Account is created with the district's name and website. With Bellwork's NCES ID field, it is created by its NCES ID, so the same district is never made twice.
How people become Contacts or Leads
People come from the table's person columns and the Superintendent, when ticked.
- Contacts (the default): each person becomes a Contact on the district's Account. Someone already in Salesforce with the same email is used, not copied. A person without an email is recognized next time by a Bellwork ID field on the Contact.
- Leads: each person becomes a Lead with the district's name as its Company and a Lead Source ("Bellwork" by default), so Bellwork-sourced pipeline can be reported on. Someone who is already a Contact stays a Contact, and a Lead converted since Bellwork made it is followed to its Contact.
Match Bellwork to your Salesforce
Every org sets Salesforce up its own way. Click Settings on the Salesforce card to choose, from what your org has:
| Setting | What it does |
|---|---|
| People go in as | Contacts on each Account, or Leads. |
| Lead Source | The Lead Source every new Lead gets. Your Lead Source picklist must have the value. |
| Run lead assignment rules | On: your assignment rules choose each new Lead's owner, as for a Lead made by hand. |
| Values every new Contact or Lead gets | Up to five fixed values, for example a lead type, a Lead Status or a team. Set only on people Bellwork makes. |
| Account record type, Contact or Lead record type | The record type of what Bellwork makes. Existing records keep theirs. |
| Owner | Who owns what Bellwork makes. Default: whoever connected. |
| Website field | Where your Accounts keep their website or domain. Default: Website. |
| NCES ID field | A field your Accounts already carry NCES IDs in. Default: Bellwork makes Bellwork NCES ID. |
| Create accounts for districts that don't match | Off: Bellwork only updates Accounts you already have, and lists the districts that matched none. |
| The table's list | A new campaign per table, or one existing campaign for every table, and the members' status. |
Changing a setting sends every synced row again on its next sync.
Fields
- New fields. Bellwork makes each one on Account, named after its column, and opens it to the connecting user's profile. A list answer (for example the platforms a district uses) becomes a multi-select picklist, and Bellwork adds new values to it.
- Your own fields. Any writable Account field of a fitting type can be chosen in the sheet. Text fields take anything; number, date, checkbox and phone fields take their own kind.
- People in a field. The Superintendent can go to a Lookup(Contact) field you made, for example "Superintendent". Other person columns go to text.
- What Bellwork makes.
Bellwork_NCES_ID__con Account (Text(20), External ID, unique) andBellwork_Contact_ID__con Contact or Lead (Text(64), External ID). Without Customize Application, an admin can make these two with exactly those names.
A value that doesn't fit its field, for example text in a number field, is left out of that one district and listed in the sheet. The rest of the district still goes.
Seeing the new fields. Salesforce doesn't add new fields to page layouts, so Bellwork's fields don't show on an Account's page at first. An admin adds them once: Setup, Object Manager, Account, Page Layouts, drag the fields on, Save. Or show them as columns in an Accounts list view (the gear icon, Select Fields to Display).
Campaigns
With the list option on, the people sent go on a campaign, named Bellwork: your table's name unless you chose one campaign in Settings. Each person is added once, so someone a rep takes off the campaign stays off. Making a campaign needs Marketing User ticked on the connected Salesforce user; without it the districts and people still go, and the sync says the campaign was left out.
API use and limits
Salesforce counts API calls against your org's daily allowance. A changed district costs about 5 to 10 calls, more with many people; an unchanged one costs none. When the allowance runs out, the sync waits and tries again every 5 minutes for an hour, then stops and says why. Duplicate rules set to Alert let Bellwork save; a rule set to Block makes Bellwork use the person it matched instead, or leave them out with a note.
Disconnect
Click Disconnect on the card. Every table stops syncing, and Bellwork forgets which Salesforce records it matched. Nothing in Salesforce changes.