Connect ValueCore to Salesforce: Integration Setup Guide

1. Overview

Audience: Salesforce administrators and ValueCore administrators

Connect ValueCore to Salesforce so your reps can open a Visualizer from an Opportunity in one click, with Salesforce data already filled in, and save the results back to Salesforce. Your reps position themselves as true challengers with a quantified business case, and you get the data you need for win/loss analysis.

Typical workflow between Salesforce and ValueCore.

Data flow is the core of the integration. Loading data is useful when Salesforce already holds information that can fill a Visualizer's inputs. Saving data is useful when the Visualizer produces results that Salesforce doesn't have. A Salesforce mapping on the Visualizer Type defines which fields are transferred, in which direction, whether reps can opt out of a transfer, and whether a transfer runs automatically each time a Visualizer is saved.

Example mapping Direction
Account Name > Visualizer Name Load from Salesforce
Opportunity Name > Visualizer Description Load from Salesforce
Visualizer Total Incremental Revenue > Opportunity Total Incremental Revenue (custom field) Save to Salesforce

2. Before you start

You need a ValueCore Admin account, a Salesforce System Administrator account, and Owner access to the Visualizer Type you want to connect. Your Salesforce edition must include API access (Enterprise, Unlimited, Performance, or Developer). You should also know how Visualizer Types and Variable Types work in ValueCore.

ValueCore connects to Salesforce through an External Client App. Salesforce has replaced Connected Apps with External Client Apps, so this guide uses an External Client App for all new setups.

Setting Value
Recommended connection type Offline — server-to-server (integration user)
ValueCore page Manage Organization > Salesforce Instances
ValueCore certificate Download Certificate button on the Salesforce Instances page
Callback URL https://www.visualize-roi.com/vr/salesforce/oauthcallback

3. Choose a connection type

ValueCore offers two connection types. Use Offline unless you have a specific reason to need per-user Salesforce logins.


Offline — server-to-server (recommended) Online — each user logs in via Salesforce
How it authenticates One dedicated Salesforce integration user. ValueCore signs a short-lived token with a certificate (OAuth 2.0 JWT Bearer flow). Each rep authorizes ValueCore with their own Salesforce login (OAuth web server flow).
Rep experience No Salesforce login prompt in ValueCore. Each rep clicks Allow the first time they connect.
Access control You decide exactly what the integration user can read and write. Each rep's own Salesforce permissions apply.
Salesforce audit trail Records written by ValueCore show the integration user as Last Modified By. Records show the rep who made the change.

Sections 4 to 9 set up an Offline connection. Section 10 covers Online for existing apps only.

4. Create the integration user

Step 1: Create a dedicated Salesforce user

In Salesforce, open Setup > Users > Users and select New User. Use a dedicated account for ValueCore rather than a real person's account, so the integration keeps working when people leave. You can use any user license and profile. For least privilege, Salesforce offers the Salesforce Integration user license with the Minimum Access - API Only Integrations profile; a user set up this way is API-only and cannot sign in to the Salesforce UI. Give it a clear username, such as valuecore.integration@yourcompany.com.

In a sandbox, Salesforce adds the sandbox name to the end of every username, for example, valuecore.integration@yourcompany.com.uat. Use the sandbox username when you connect a sandbox.

Step 2: Grant the access ValueCore needs

Give the integration user the permissions below, through its profile or a permission set (new or existing). If you use the Minimum Access - API Only Integrations profile, add them with a permission set, because that profile grants no object access.

Permission Why
API Enabled (System Permissions) Required for any API connection
Read on each object ValueCore loads data from, standard or custom Loads Salesforce data into Visualizers
Read and Edit on each object ValueCore saves to, standard or custom Saves Visualizer results to Salesforce
Field-level access to every mapped field Required to load or save each mapped field

5. Download the ValueCore certificate

Step 3: Download the certificate

The Offline connection uses a certificate to prove that requests come from ValueCore. In ValueCore, open Manage Organization > Salesforce Instances and select Download Certificate in the top right. Save the .crt file; you'll upload it to Salesforce in Step 6.

The Download Certificate button on the Salesforce Instances page.

6. Create the External Client App

Step 4: Open the External Client App Manager

In Salesforce, open Setup, type External Client App Manager in Quick Find, and select it. Select New External Client App.

The External Client App Manager in Salesforce Setup.

Step 5: Enter the basic information

Under Basic Information, enter ValueCore as the External Client App Name and your admin email as the Contact Email. The API Name fills in automatically. Set Distribution State to Local.


Step 6: Configure OAuth and the JWT Bearer flow

Under API (Enable OAuth Settings), select Enable OAuth. Under App Settings, enter the callback URL:

https://www.visualize-roi.com/vr/salesforce/oauthcallback

Under OAuth Scopes, add these three scopes:

  • Manage user data via APIs (api)
  • Manage user data via Web browsers (web)
  • Perform requests at any time (refresh_token, offline_access)

Under Flow Enablement, select Enable JWT Bearer Flow and upload the certificate from Step 3. Leave the other flows unselected and the Security settings at their defaults. Select Create.

App Settings with the callback URL and the three OAuth scopes.

JWT Bearer Flow enabled with the ValueCore certificate uploaded.

7. Set the app policies

Step 7: Pre-authorize the integration user

Open the Policies tab of the new app and select Edit, then:

  • Under OAuth Policies, set Permitted Users to Admin approved users are pre-authorized.
  • Under App Policies, add the integration user's profile under Select Profiles, or a permission set assigned to that user under Select Permission Sets.

Select Save.

Permitted Users set to Admin approved users are pre-authorized.

The integration user's profile selected under App Policies.

8. Copy the Consumer Key and Secret

Step 8: Copy the credentials

Open the Settings tab, expand OAuth Settings, and select Consumer Key and Secret. Salesforce may ask you to verify your identity with a code. Copy the Consumer Key and the Consumer Secret, and keep them out of email and chat.

The Consumer Key and Secret on the Settings tab.

A new External Client App can take up to 10 minutes to become active. If you connect too early, you'll see invalid_client_id; wait a few minutes and try again.

9. Connect ValueCore to Salesforce

Step 9: Create the Offline connection

In ValueCore, open Manage Organization > Salesforce Instances and select Connect to New Instance. Fill in the form:

  • Connection Type: Offline — server-to-server (integration user)
  • Consumer Key and Consumer Secret: the values from Step 8
  • Environment: Production, or Sandbox if you're connecting a sandbox
  • Integration User: the integration user's username from Step 1, including the sandbox suffix for a sandbox

Select Connect.

The Offline connection form in ValueCore.

Step 10: Test the connection

Your instance now appears as a tab on the Salesforce Instances page. Open it and select Test connection. A successful test confirms that ValueCore can authenticate as the integration user. Continue with section 11 to map fields.


10. Online connection for existing apps

Salesforce now requires PKCE on External Client Apps and Connected Apps created after July 9, and Salesforce Support will not disable it. ValueCore's Online connection doesn't support PKCE yet, so Online works only with an existing app where the PKCE setting can still be cleared. For all new setups, use the Offline connection in sections 4 to 9.

Online step 1: Configure the app

In your existing External Client App:

  • Select Enable OAuth and enter the callback URL https://www.visualize-roi.com/vr/salesforce/oauthcallback
  • Add the scopes Manage user data via APIs (api), Manage user data via Web browsers (web) and Perform requests at any time (refresh_token, offline_access).
  • Under Flow Enablement, select Enable Authorization Code and Credentials Flow.
  • Under Security, clear Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows.

If Salesforce doesn't let you clear the PKCE setting, stop and use the Offline connection.

Online step 2: Set who can authorize

On the Policies tab, set Permitted Users to All users may self-authorize, or pre-authorize the profiles or permission sets of the reps who will use ValueCore. Copy the Consumer Key and Secret from the Settings tab as in Step 8.

Online step 3: Connect ValueCore

In ValueCore, open Manage Organization > Salesforce Instances > Connect to New Instance and fill in the form:

  • Connection Type: Online — each user logs in via Salesforce (OAuth)
  • Consumer Key and Consumer Secret: the values from your External Client App
  • Environment: Production, or Sandbox if you're connecting a sandbox
  • Salesforce Login URL (optional): if your org uses My Domain, enter it, such as https://yourdomain.my.salesforce.com, to send users straight to your login page

Select Connect, then select Allow on the Salesforce Allow Access page.

The Online connection form in ValueCore.

11. Map fields

Step 11: Create a ValueCore ID field

On the object your reps launch ValueCore from, typically Opportunity, open Object Manager > Fields & Relationships > New and create a Text field named ValueCore ID (any API name works, for example VC_ID__c; you'll enter it when you generate the button code in Step 15). ValueCore stores the Visualizer ID in this field, so the Salesforce button reopens the same Visualizer instead of creating a new one. You'll map it in Step 14. With an Offline connection, give the integration user Edit access to this field.

Step 12: Create a mapping

Open the Visualizer Type (the version in Development) and under Integrations select Salesforce. On the Salesforce Mappings page, select Create New Salesforce Mapping, enter a name, select the Salesforce instance from section 9, and select Create. Leave the other mapping settings, such as Auto Save and Create Record, at their defaults. Mappings can only be edited in the Development version, so push it to Production when you finish mapping; the button code in Step 15 comes from the Production version.

Step 13: Choose the primary object

Select the Primary Object, typically Opportunity. Under that object, select Map Item to start mapping.

Step 14: Map each field

For each field:

  • Choose the ValueCore field: a system field, such as Visualizer Name or Visualizer ID, or a model variable from the Visualizer Inputs or Visualizer Outputs tab.
  • Choose the Salesforce field.
  • Set Load by Default to Yes to load the Salesforce value into the Visualizer.
  • Set Save by Default to Yes to save the Visualizer value back to Salesforce.
  • Leave the other settings at their defaults and select Create.

Always map the Visualizer ID system field to the ValueCore ID field from Step 11, so the Salesforce button reopens the same Visualizer. With an Offline connection, the integration user must have access to every field you map; if a field won't load or save, check the integration user's access from Step 2.


12. Create the Salesforce button

Step 15: Generate the button code

In ValueCore, open Visualizer Types and select the Visualizer Type. Under Versions, expand the version in Production. The button code comes from the Production version, so push any Development changes to Production first. Under Integrations, select Salesforce, then select Generate Salesforce Button Code and fill in the fields below.

Field What to enter
SSO Configuration Your organization's SSO configuration. Leave it unselected for a non-SSO link.
User Interface The interface the button opens, such as Value Collaborator (Google Sheets) or Discovery Wizard (Google Sheets).
Visualizer ID Salesforce Field API The API name of the ValueCore ID field from Step 11, such as VC_ID__c.
Test Object ID (optional) A real Salesforce record ID, used to test the URL.

Copy the Generated Salesforce Button URL and select Done.

The Generate Salesforce Button Code window.

Step 16: Add the button in Salesforce

In Salesforce, open Setup > Object Manager, select the object your reps work from (typically Opportunity), open Buttons, Links, and Actions, and select New Button or Link. Then:

  • Enter a label and name.
  • Choose the display type: button or link.
  • Set Behavior to Display in new window.
  • Set Content Source to URL.
  • Paste the URL from Step 15.

Save, then add the button to the object's page layout so reps can see it.

13. Troubleshooting

What you see What to do
invalid_client_id or client identifier invalid Wait up to 10 minutes for a new app to activate. Re-copy the Consumer Key, and check that Environment matches the org where the app lives.
User hasn't approved this consumer (Offline) Set Permitted Users to Admin approved users are pre-authorized and add the integration user's profile or permission set under App Policies, as in Step 7.
invalid_grant or user not found (Offline) Enter the exact, active integration username. For a sandbox, include the sandbox suffix.
Certificate or signature error (Offline) Download the certificate again from the Salesforce Instances page and re-upload it to the External Client App.
Can't clear the PKCE setting (Online) Salesforce enforces PKCE on apps created after July 9. Use the Offline connection.
A mapped field won't load or save (Offline) Add object and field-level access to the integration user's profile or permission set.

14. Get help

Contact support@valuecore.ai with the connection type you're using, the step that failed, the exact error, and the time it occurred. Include a screenshot with credentials hidden. Never send your Consumer Secret, passwords or tokens.

Screenshots show Salesforce Lightning Setup and the ValueCore web app. Menu labels can vary by Salesforce release. 

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us