Learn about Savio
- Getting Started
- How Savio Works
- Triaging Feedback
- Managing Users
- Closing the Loop
- Voting Boards
- Importing People, Companies, and Attributes
- Connecting Your Support Tool
- Chrome Extension
- Emailing Feedback
- Integration for Slack
- Creating Feedback Templates
- Tips for Triaging Effectively
- Managing Custom Attributes
- Saved Filters
- Hubspot Integration
- Importing Historical Data
- Using Savio's API
- Setting “Feedback From”
- Exporting Your Data
- Feature Request Details Page
- Setting Up Savio
- How To Be Successful with Savio
- The Four Problems Savio Solves
- Segment Integration
- Help Scout Integration
- Zendesk Integration
- Intercom Integration
- → Salesforce Integration
- Customizing Feature Request List Columns
- Customizing Feature Request and Feedback Attributes
- Moving Feedback
- Savio's Integrations and Their Features
- Daily Digest Email
- Running a Product Meeting
- Zapier Integration
- Voting on Behalf of (VOBO)
- Single Sign-On
- Configuring Voting Board Access
- Using Feedback Forms
- The My Feedback Page
- Using Tags
- Filtering Feedback and Feature Requests
- Jira Integration
- Shortcut Integration
- Using the Zendesk App
- Using Products and Product Areas
- Using Roadmaps
- Using Comments
How To Set Up Savio’s Salesforce Integration
Salesforce is an extremely powerful CRM. Savio’s integration with Salesforce allows you to pull in customer attributes from Salesforce so that you can slice and dice your feature requests by those attributes. It also lets you see any Contact or Account’s Feature Requests inside Savio. In this article, we’ll run through how to set the integration up.
We’ll cover:
- Why set up the Salesforce integration?
- Integration prerequisites
- How to set up the Salesforce integration to bring in contacts, accounts, and attributes
- How to track feature requests from Salesforce into Savio
- How to see customer Feature Requests inside of Salesforce
- How to Automate Sending Feedback from Salesforce to Savio
Why set up the Salesforce integration?
There are two primary reasons you would want to connect your Salesforce account with Savio.
- Your contacts, accounts, and their attributes live in Salesforce. Integrating with Savio lets you connect your customers and their information to the feedback and feature requests they give you. You can slice and dice your feature requests by those attributes to make better product decisions.
- The integration also lets you see all the feedback given by your contacts and accounts inside of Salesforce.
Integration prerequisites
To use the Salesforce-Savio integration, you’ll need some permissions on both ends.
- Savio account plan: You must be on a Savio plan that includes the Salesforce integration. If you’re not already, sign up for a free trial.
- Salesforce account plan: To use the Savio integration with Salesforce, you have to be on a Salesforce account that has access to the REST API. This comes built into Salesforce’s Enterprise and Unlimited plans. You can also use the Professional plan as long as you have purchased the “Web Services API” add-on.
- Salesforce user permissions: The individual user who sets up the Salesforce integration will also need permissions to link OAuth apps to their Salesforce account. To find out if you have the right Salesforce user permissions, do the following:
1. Log into Salesforce. Click the gear in the top right corner and choose “Setup”. In the left-hand menu, select the “Users” dropdown and click “Users”. Then find your name in the list of users and click on the profile associated with your account.
/f/84825/512x250/75ed469adb/savio-salesforce-1.png)
2. Scroll down to the “General User Permissions” section and check that “Manage Connected Apps” is checked. If it isn’t, you won’t be able to connect to the Savio integration. To get this permission, get in touch with your Salesforce system administrator.
/f/84825/512x246/d265042d68/savio-salesforce-2.png)
Read more about permissions in Salesforce support documentation: Manage OAuth-Enabled Connected Apps Access to Your Data
How to Set Up the Salesforce Integration for Selective Attribute Import
Savio's enhanced Salesforce integration provides the flexibility to selectively import only the attributes you need, making your data management more efficient and relevant. Follow these detailed steps to customize your attribute import:
1. Navigate to the “Integrations” page in Savio.
/f/84825/206x294/7934782b55/savio-salesforce-3.png)
2. Find and click the “Connect Salesforce” button.
/f/84825/512x129/16ac462f19/savio-salesforce-4.png)
3. Log into Salesforce and authorize access for Savio to complete the integration.
/f/84825/428x512/44eb3bbba1/savio-salesforce-5.png)
4. Access Settings for Attributes. Navigate to the 'Settings' section in your Savio dashboard. Look for 'People and Company Attributes.' This section will display all the attributes available for import from Salesforce. In the 'People and Company Attributes' section, you will see a comprehensive list of potential attributes from Salesforce.
/f/84825/1920x1080/a54e9463ed/selective-attributes.png)
5. Selective Attribute Import. Instead of importing all attributes by default, you can handpick the ones you need. For example, if you require the 'Annual Revenue' attribute, simply find it in the list, select it, and click 'Import'.
/f/84825/1920x1080/2b8d0c0f38/salesforces-attributes.png)
Tip: Be mindful of the attribute type. Numeric attributes (like ARR) are quantifiable and can be summed up across customers. In contrast, textual attributes (like 'Plan') are not numerically aggregable but provide valuable categorical data.
Note: You also have the option to rearrange the order of the attributes:
- Adjusting Order: This can be done within the same 'People and Company Attributes' section. The order you set will be reflected in various parts of the Savio interface, including feature request filters and the user info bar.
That’s it! When you set up the integration the first time, your contacts, accounts, and objects in Salesforce will be brought into Savio immediately. They’ll be called “People”, “Companies”, and “Attributes”, respectively. You’ll also get an email confirming the import.
/f/84825/512x237/f9627da4c2/savio-salesforce-7.png)
You’ll also see these new attributes on your “People and Company Attributes” page.
6. Viewing Imported Attributes. Once imported, these attributes will be automatically incorporated into relevant areas of Savio:
- In Filters: The selected attributes will be visible in the filters for easier segmentation and analysis.
- In User Info Bar: The attributes will also appear in the user info bar under each user profile, providing quick insights.
Related: Learn more about Attributes.
/f/84825/1138x608/44e436bba2/savio-salesforce-8.png)
If you want to slice and dice Feature Requests by one of your newly-imported attributes, you can show it in the Feature Request filters.
Related: Learn more about feature requests.
/f/84825/398x556/36e25919c4/savio-salesforce-9.png)
You can also choose to see your SFDC attributes on the user information bar within a piece of feedback.
/f/84825/957x458/e632fb89ba/savio-salesforce-10.png)
Note: Once you set up the integration, any changes you make to contacts, accounts, and objects in Salesforce will automatically be brought into Savio, but they may take up to 24 hours to appear.
How to track Feature Requests from Salesforce
You can use the Savio Chrome Extension to log feedback that’s kept in Salesforce into your Savio feedback vault. Here’s how to do it:
How to see customer Feature Requests inside of Salesforce
You can configure Salesforce to display your customer feature requests right inside your Salesforce account, like this:
For example, imagine Sally from Acme Corp sends you a Feature Request. You add it to Savio and assign it to her (Sally and Acme Corp were pulled in when you connected Savio to Salesforce).
/f/84825/512x126/2ec2cbd352/savio-salesforce-11.png)
With the setup we’re about to show you, you can see Sally’s Feature Request right in the Acme Corp Account inside Salesforce. You’ll find it in the “Details tab”, under “Product Feedback”:
/f/84825/512x281/b3508d0a8b/savio-salesforce-12.png)
/f/84825/512x146/45d5d37ae5/savio-salesforce-13.png)
The feedback and Feature Request will look like this:
/f/84825/512x149/87bc401e50/savio-salesforce-14.png)
Set up Salesforce to show feedback from Savio
In this section, we’ll show you how to set up that connection to see feedback from Savio in your Salesforce account.
1. Log into Salesforce and install the appropriate package. Click the appropriate links depending on which environment you’re installing Savio into.
-
Production environment: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t3h0000045qXY
-
Sandbox environment: http://test.salesforce.com/packaging/installPackage.apexp?p0=04t3h0000045qXY
2. Select “Install for All Users” and then click “Install”.
/f/84825/1888x1616/7e0e0d3f6d/savio-salesforce-15.png)
3. Select “Yes, grant access to these third-party web sites” and click “Continue”.
/f/84825/1468x862/50fbf9dfb1/savio-salesforce-16.png)
4. Grab your Savio API Key. You’ll find it in the “My Settings” page in Savio.
/f/84825/512x158/801ac604fa/savio-salesforce-17.png)
5. In Salesforce, navigate to the “Setup” page. Then select the “Custom Code” dropdown in the left-hand menu and click “Apex Classes”. Find “SavioAcountController” and click “Edit”.
6. Scroll down to the API key. Replace the text “CHANGE ME TO YOUR API KEY” with the API key you grabbed in step 2. Then click “Save”.
/f/84825/512x207/7dca717bce/savio-salesforce-19.png)
Update account layout to display feedback
We’ve just connected Savio and Salesforce so you can see feedback from Savio right from Salesforce. Now we’re going to update the account page layout so it’s easy to see your feedback right from an account page. Here’s how to do it:
1. Click the gear icon in the top right corner and click “Setup”. In the left-hand menu, select the “Objects and Fields” dropdown menu and then click “Object Manager”.
/f/84825/512x201/a6dfabcf04/savio-salesforce-20.png)
2. Click “Account”.
/f/84825/503x351/1662e2558e/savio-salesforce-21.png)
3. Click “Page Layouts”.
/f/84825/511x396/03c3cea772/savio-salesforce-22.png)
4. Click “Account Layout”.
/f/84825/512x234/1b43216f7c/savio-salesforce-23.png)
5. Click “Custom Links”. Then drag the “Product Feedback” box down to the “Custom Links” section.
/f/84825/512x302/cef6aa3888/savio-salesforce-24.png)
Now, when you open an account’s details, you’ll see “Product Feedback” included at the bottom.
/f/84825/512x149/81cbd09dd6/savio-salesforce-25.png)
Automating Sending Feedback from Salesforce to Savio
Automatically create feedback in Savio when Salesforce opportunities are updated—for example, when a deal is marked "Closed Lost" due to a missing product feature.
Overview
This guide shows you how to set up a Salesforce Flow that sends feedback to Savio via our API. The example below triggers when an opportunity is closed lost with product-related feedback, but you can customize the trigger conditions and fields to match your workflow.
What you'll set up:
-
Custom fields on Opportunity to capture feedback
-
An Apex class that calls the Savio API
-
A Flow that triggers the Apex class based on your conditions
Prerequisites
- Your Savio API token (find it at Settings → API Access)
- Salesforce admin access to create Apex classes and Flows
Step 1: Create Custom Opportunity Fields
In Salesforce Setup, go to Object Manager → Opportunity → Fields & Relationships and create:
Closed Lost Reason (Picklist)
- Field type: Picklist
- Values: Product, Price, Competitor, Timing, Other
Product Feedback (Long Text Area)
- Field type: Long Text Area
- Description: Captures detailed feedback when deals are lost
Tip: You may already have similar fields—feel free to use existing fields and adjust the Flow conditions accordingly.
Step 2: Add Remote Site Setting
Allow Salesforce to communicate with Savio's API:
- Go to Setup → Security → Remote Site Settings
-
Click New Remote Site
-
Enter:
- Remote Site Name:
Savio - Remote Site URL:
https://www.savio.io - Click Save
Step 3: Create the Apex Class
This Apex class sends feedback to Savio. It automatically looks up the Contact's email and the Account name from the Opportunity, so you only need to pass IDs from your Flow.
- Go to Setup → Custom Code → Apex Classes
-
Click New
-
Paste the code below
-
Replace
YOUR_SAVIO_API_TOKENwith your actual token - Click Save
public class SavioFeedbackAction {
@InvocableMethod(label='Send Feedback to Savio' description='Sends feedback to Savio via API' category='Savio')
public static void createFeedback(List<FeedbackRequest> requests) {
// Collect IDs for bulk queries (avoids SOQL in loops)
Set<Id> oppIds = new Set<Id>();
Set<Id> contactIds = new Set<Id>();
for (FeedbackRequest req : requests) {
if (String.isNotBlank(req.opportunityId)) {
oppIds.add(req.opportunityId);
}
if (String.isNotBlank(req.contactId)) {
contactIds.add(req.contactId);
}
}
// Query Opportunities with their Account names
Map<Id, Opportunity> opps = new Map<Id, Opportunity>([
SELECT Id, Account.Name FROM Opportunity WHERE Id IN :oppIds
]);
// Query Contacts with their emails
Map<Id, Contact> contacts = new Map<Id, Contact>([
SELECT Id, Email FROM Contact WHERE Id IN :contactIds
]);
// Process each request
for (FeedbackRequest req : requests) {
String personEmail = null;
String companyName = null;
// Get email: prefer contactEmail if provided, otherwise lookup from contactId
if (String.isNotBlank(req.contactEmail)) {
personEmail = req.contactEmail;
} else if (String.isNotBlank(req.contactId) && contacts.containsKey(req.contactId)) {
personEmail = contacts.get(req.contactId).Email;
}
// Get company name from the Opportunity's Account
if (String.isNotBlank(req.opportunityId) && opps.containsKey(req.opportunityId)) {
Opportunity opp = opps.get(req.opportunityId);
if (opp.Account != null) {
companyName = opp.Account.Name;
}
}
sendToSavio(req.opportunityId, req.problem, personEmail, companyName);
}
}
@future(callout=true)
private static void sendToSavio(String opportunityId, String problem, String personEmail, String companyName) {
HttpRequest req = new HttpRequest();
req.setEndpoint('https://www.savio.io/app/api/create-feedback/');
req.setMethod('POST');
req.setHeader('Content-Type', 'application/json');
// =====================================================
// CUSTOMIZE: Replace with your Savio API token
// Find your token at: Settings → API Access
// =====================================================
req.setHeader('Authorization', 'Token YOUR_SAVIO_API_TOKEN');
Map<String, Object> body = new Map<String, Object>{
'problem' => problem,
'opportunity_id' => opportunityId,
'opportunity_source' => 'salesforce'
};
// Include person email if available
if (String.isNotBlank(personEmail)) {
body.put('person_email', personEmail);
}
// Include company name (helps Savio match to existing companies)
if (String.isNotBlank(companyName)) {
body.put('company_name', companyName);
}
req.setBody(JSON.serialize(body));
Http http = new Http();
HttpResponse res = http.send(req);
}
public class FeedbackRequest {
@InvocableVariable(label='Opportunity ID' required=true)
public String opportunityId;
@InvocableVariable(label='Feedback Text' required=true)
public String problem;
@InvocableVariable(label='Contact ID' required=false)
public String contactId;
@InvocableVariable(label='Contact Email' required=false)
public String contactEmail;
}
}
How the Apex Class Works
- Contact ID or Email: Pass either the Contact ID (the class looks up the email) or the email directly. Contact ID is easier to get from Flows since
{!$Record.ContactId}is available on Opportunities. - Company Name: Automatically retrieved from the Opportunity's Account—you don't need to pass it.
- Null Contact: If no contact is provided, feedback is still created with the company name, allowing Savio to match it to an existing company.
Step 4: Set Default Workflow User
-
Go to Setup → Process Automation → Process Automation Settings
-
Set a Default Workflow User (required for Flows that run asynchronously)
- Click Save
Step 5: Create the Flow
The Flow defines when feedback is sent to Savio. The example below triggers on closed-lost opportunities, but you can adjust the conditions for your needs.
- Go to Setup → Process Automation → Flows
- Click New Flow
-
Select Record-Triggered Flow
-
Configure the trigger:
| Setting | Value |
|---------|-------|
| Object | Opportunity |
| Trigger the Flow When | A record is created or updated |
| Condition Requirements | All Conditions Are Met (AND) |
| Conditions | Stage Equals Closed Lost |
| | Closed_Lost_Reason__c Equals Product |
| | Product_Feedback__c Is Null False |
| When to Run the Flow | Only when a record is updated to meet the condition requirements |
| Optimize the Flow for | Actions and Related Records |
- Add an Action element:
- Click + Add Element → Action
- Search for Send Feedback to Savio
-
Set the input values:
- Opportunity ID:
{!$Record.Id} - Feedback Text:
{!$Record.Product_Feedback__c} - Contact ID:
{!$Record.ContactId}(the Apex class looks up the email)
- Opportunity ID:
-
Click Save, name it (e.g., "Send Lost Deal Feedback to Savio"), then click Activate
Note: You don't need to pass the company name—the Apex class automatically retrieves it from the Opportunity's Account.
Alternative Trigger Examples
Closed Won with feature requests:
- Stage = Closed Won
- Feature_Requests__c is not null
Any stage change:
- Remove stage conditions
- Add: PRIORVALUE(StageName) != StageName
From Cases instead of Opportunities:
- Create the Flow on the Case object
- Pass Case ID instead of Opportunity ID (Savio will store it as a reference)
Testing
- Create or update an Opportunity that matches your Flow conditions:
- Set Stage to "Closed Lost"
- Set Closed Lost Reason to "Product"
- Enter text in Product Feedback
-
Save
-
Wait a few moments (the API call runs asynchronously)
-
Check Savio—you should see new feedback with:
- The feedback text you entered
- A link to the Salesforce Opportunity
- The person's email (if provided)
- The company name from the Account
Other Use Cases
The same pattern—Apex class + Flow—can capture feedback from anywhere in Salesforce. Here are some ideas:
| Scenario | Trigger Object | When to Trigger | What to Send |
|----------|---------------|-----------------|--------------|
| Lost deal feedback | Opportunity | Stage = Closed Lost | Product Feedback field |
| Won deal feature requests | Opportunity | Stage = Closed Won | Requested Features field |
| Support ticket insights | Case | Status = Closed, Type = Feature Request | Case description |
| Churn feedback | Account or custom object | Status = Churned | Exit Interview notes |
| NPS follow-up | Survey Response (custom) | Score < 7 | Verbatim comments |
| Lead disqualification | Lead | Status = Disqualified, Reason = Product Gap | Notes field |
For each scenario, you'd:
-
Use the same Apex class (or clone it with a different name)
-
Create a new Flow with different trigger conditions
-
Map the appropriate fields to the Savio API
Tip: You can create multiple Flows that all call the same Apex class—just pass different field values for each use case.
Troubleshooting
Feedback not appearing in Savio:
- Check that the Flow is activated
- Verify the API token is correct (no extra spaces)
- Check Setup → Apex Jobs for any errors
- Confirm the Remote Site Setting is in place
Flow not triggering:
- Ensure the record meets all entry conditions
- Check that "When to Run" is set correctly for updates vs. creates
Get started
Log in and head to your integrations page to get your Savio account hooked up with Salesforce. If you don’t have a Savio account yet get set up with a free trial. Or, if you’re not yet on a plan that includes the Salesforce integration, you can upgrade here.
Last Updated: January 29th 2026/f/84825/512x270/9d3ba4a06c/savio-salesforce-18.png)