This guide walks you through moving your CRM Revenue Insights for Shared Content connection over to Spekit's new managed-package-based connector
Who needs to be involved
Time required: about 10-20 minutes.
| Task | Who does it |
|---|---|
| Disconnect and reconnect in Spekit | A Spekit admin |
| Install the managed package in Salesforce | A Salesforce user with the Download AppExchange Packages permission (typically a Salesforce Administrator) |
| Authorize the connection | The Salesforce user whose credentials will run the integration — this may be a dedicated integration style user rather than an admin but either works |
What the package contains
The Spekit package is deliberately minimal. It installs two components and nothing else:
- Revenue Insights API Connection — an External Client Application
- Revenue_Insights_API_Connection_oauth — its OAuth settings
There are no custom objects, no custom fields, no Apex, no Visualforce pages, no tabs, and no remote site settings. The package exists purely to register Spekit's OAuth client in your org. It does not read or write any data on its own — all data access happens through the Salesforce user who authorizes the connection in Step 3.
Before you begin
- Decide which Salesforce user will run the integration. Many customers use a dedicated integration style user rather than a named administrator. Either works. This user's permissions determine what the connector can see. Also, please note an API only user will not be able to login and accept the OAuth request so the Salesforce user being used for this must be able to access the UI.
-
Confirm the Salesforce user's data access. The integration user needs:
- The API Enabled system permission.
-
Read access, including field-level security, on:
- Account
- Opportunity
- Contact
- Lead
- User
- OpportunityContactRole
- The package does not grant any of this. Object and field access comes entirely from that user's profile and permission sets, which you control.
- Your previously synced data is retained. Disconnecting does not delete it. However, your field mappings will be reset, so plan to review them after reconnecting (Step 4). If you have custom mappings, note them before you disconnect.
Step 1 — Review and Capture Current Field Mappings
- In Spekit, go to the Connect page: https://app.spekit.co/app/accounts
- Find the CRM Revenue Insights for Shared Content tile.
- Click Field mappings
- Click into each section and record your current mappings. Taking a screenshot of each is recommended as you'll need to use this in Step 5 to setup your mappings again.
Step 2 — Disconnect the existing connection in Spekit
- On the Connect page again (https://app.spekit.co/app/accounts), find the CRM Revenue Insights for Shared Content tile.
- Click Disconnect.
Step 3 — Install the Spekit managed package in Salesforce
This step must be performed by a Salesforce user with the Download AppExchange Packages permission.
- Log in to Salesforce as that user.
-
Open the install link:
-
Production Salesforce: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tTN000000CYcDYAW
⚠️ Important: Log in to the correct org before opening the link, or log in when prompted. Installing into the wrong org is the most common mistake here.
-
Production Salesforce: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tTN000000CYcDYAW
- Optionally click View Components to review exactly what's being installed.
- Choose a security setting. Install for Admins Only is fine — see the note below if you're using a non-admin integration user.
- Click Install.
- Because the package contains no code or custom objects, installation should be rather quick. Verify it under Setup → Installed Packages.
About the "Install for Admins Only" option
Salesforce's install security setting controls which profiles are granted access to a package's components — custom objects, fields, Apex classes, Visualforce pages, and tabs. This package contains none of those.
As a result, the choice has no practical effect on this package, and "Install for Admins Only" will not block a non-admin integration user from connecting. Access to an External Client Application is governed by the app's own policies in your org, not by the package install setting.
Spekit recommends Install for Admins Only as the least-privilege default.
External Client App policies
After installation, the app appears in Setup → External Client App Manager (not under Manage Connected Apps — External Client Apps are a separate, newer Salesforce framework).
The app ships with Permitted Users set to All users may self-authorize. This means your integration user can complete the OAuth approval in Step 3 without any pre-assignment. Nothing further is required.
If you prefer to lock this down, you can change Permitted Users to Admin approved users are pre-authorized on the app's Policies tab. If you do, you must then explicitly assign your integration user's profile or permission set to the app under App policies. If you skip that assignment, the OAuth approval in Step 3 will fail with an error such as OAUTH_APP_BLOCKED or "This app is blocked".
⚠️ Note: These policies live in your Salesforce org and are never overwritten by Spekit package upgrades, so any hardening you choose to apply here persists.
Step 4 — Reconnect in Spekit
- Return to the Spekit Connect page: https://app.spekit.co/app/accounts
- On the CRM Revenue Insights for Shared Content tile, click Connect.
-
You'll be redirected to Salesforce. Log in as the Salesforce user you want the integration to run as — the integration user you identified in "Before you begin", not necessarily the admin who installed the package.
⚠️ Important: If you're already logged in to Salesforce as a different user in that browser, log out first or use a private/incognito window. Salesforce will otherwise silently authorize the wrong user, and the connector will inherit that user's permissions.
- Review the requested permissions in the OAuth request and click Allow.
- You'll be returned to Spekit and the tile will show as connected.
Step 5 — Review field mappings
- After the connection has been completed, a Salesforce field mapping screen will automatically appear.
- Verify these mappings rather than assuming your previous configuration carried over by comparing the current default mappings to the ones captured in Step 1 above
- Once you've confirmed the mappings in all of the sections are correct, you can close this window.
⚠️ Note: If a Salesforce field you expect is missing from the mapping dropdown, it's almost always because the integration user can't see it. Check object permissions and field-level security for that user.
Step 6 — Run the first sync
- Click Sync Salesforce data. This triggers the first sync on the new connection.
- All Done!
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
"This app is blocked" or OAUTH_APP_BLOCKED during Step 3 |
Permitted Users was changed to "Admin approved users are pre-authorized" without assigning the integration user | In External Client App Manager → Policies → App policies, assign the user's profile or permission set |
| OAuth fails with an API access error | The integration user is missing the API Enabled permission | Grant API Enabled via the user's profile or a permission set in Salesforce |
INSUFFICIENT_ACCESS or missing data after connecting |
The integration user lacks Read access to the required objects | Grant Read on the required objects via profile or permission set |
| Expected fields missing from the mapping dropdown | Field-level security is hiding them from the integration user | Grant field-level Read access for that user |
| Connected as the wrong Salesforce user | Browser was already logged in to another Salesforce session | Disconnect in Spekit, log out of Salesforce, and repeat Step 3 onward |
| Package install link returns an error | Wrong environment (production link used for a sandbox) | Use the matching link from Step 2.2 |