Skip to main content

Connect Salesforce to Feedier

Julien Chil avatar
Written by Julien Chil
Updated this week


1) Trigger real-time & automated emails via Salesforce Outbound message.

This workflow is designed to send a feedback email from Feedier immediately after a certain trigger has been met on a Salesforce record.


a) Setup an email campaign on Feedier as a template for sending emails

Feedier → Survey → Share → Email Campaign.

First, you will need to setup an Email Campaign. This will work as a template for whenever emails are triggered. You can just add your email page, and complete the campaign.

Everything you need to know about Email Campaign in Feedier is available here.


b) Setup the outbound message

Salesforce's Setup App → Outbound Messages → New Outbound message

Setup the form as follows:




If you are using a custom object, you need to create a custom email field to be able to attach the email to the outbound message.


Add the Feedier Campaign ID from the template you just created.


We can find the Campaign ID in Surveys → Share → Email Campaign → Info


=> follow screenshot below ( Example : Campaign id = 823 )



You can find your API details on Feedier via:
Profile dropdown → Advanced settings

  • User to send as: Choose what you like, this has no relation with the connector

  • Case fields to send: Choose all data you want to attach to the feedback in Feedier.

ContactEmail is required.

  • Click Save


Important Note :

You can decide to attach and push all the attributes you want to have on the feedback from the beginning to the outbound message, then you will receive the feedback on feedier with all the attributes (meta data) you attached on the outbound message and no need for enrichment . (Select your meta data in the box Case Fields To Send)


c) Create the Workflow Rule

Salesforce Process Automation → Workflow Rules

  • You now need to trigger the outbound message.

  • Create a trigger with your own rules (file status = closed, for example).

  • Attach the outgoing message you have created


  • Create a trigger with your own rules (Case status = Escalated for example)

You can create the rule also in the Flow builder




d) Attach the outbound message to the workflow rule

Salesforce Setup App → Workflow Rules

  • Now, you need to attach the Outbound message to the workflow rule so when the rule is validated an outbound message will be sent to the Endpoint URL that we set up earlier.

  • Attach the outbound message you created in and you're all set.




Test the outbound message

Trigger the workflow rule created and you should see a push created on the Pushes page on Feedier.


If you decide to do the enrichment and do not send the metadata on the outbound message

Let’s go further to connect feedier to salesforce.


2) Install the Feedier Salesforce application

A Salesforce Administrator must install the Feedier package using this link: Install Feedier App
During installation, the administrator can select “All Users” or grant access only to specific users.
In your case, you need to grant access to the accounts used by Feedier in both the UAT and production environments.


In case the following error is appearing :




It means that the user trying to install the package is not an admin on Salesforce



2 - Create a Salesforce connection in Feedier



a) Scenario 1 - Deploy Salesforce Automatic Package

Recommended for first time with Salesforce set up



→ Follow the steps here to create you first workflows


b) Scenario 2 - Manual Salesforce Package



3) Enrich Feedback data with attributes from one or several Salesforce objects


This workflow is designed to update feedback on Feedier with key attributes from the respondant’s Salesforce record.


Before triggering the integration





After triggering the integration




a) Steps to establish the integration

Create a Autopilot automation

Feedier → Autopilot → Automation


Choose the Segment of Feedbacks you want to enrich from Salesforce Object



Connect the Segment to a Salesforce Sync Object Connection


→ Select the Salesforce Connection you just created

Salesforce SOQL

Attribute Name

The attribute name we receive in the feedback (for example, "sf_id") is used to match Salesforce records. This could be an Account ID, Custom ID, or Contact ID. For instance, if the feedback link looks like this: feedback.feedier.com/survey-url?sf_id=123, we will use "sf_id" as the attribute name and its value, 123, in the Salesforce query to find the correct record.


In short, this attribute ("sf_id") will be used in the "WHERE" part of the Salesforce query (SOQL)


b) How to Create Your SOQL

To effectively query data in Salesforce using SOQL (Salesforce Object Query Language), you can follow the steps below. SOQL allows you to retrieve data from Salesforce objects like Contact and Account. In this section, we will walk you through how to access the Salesforce Developer Console and create your own SOQL queries. You can also refer to Salesforce documentation for the structure: Salesforce Object Query Language (SOQL) | SOQL and SOSL Reference | Salesforce Developers


All the retrieved attributes will be added as metadata to the received feedback, with every column returned from the SOQL query attached as an attribute.


To start writing SOQL queries, you need to access the Salesforce Developer Console. Once open, navigate to the Query Editor to begin writing SOQL queries.


Example 1 : Retrieving Contact Data

Once in the Query Editor, you can run the following query to retrieve data related to a specific contact:


SELECT Id, FirstName, LastName, Email, Phone, AccountId FROM Contact WHERE Id = 'contact_id'


This query retrieves the contact’s ID, first name, last name, email, phone number, and associated account ID. Below is an example of the query and its results in the Developer Console:




Example 2: Retrieving Account Data

To retrieve details related to a specific account, use the following query:


SELECT Id, Name, Industry, BillingCity, BillingState, BillingCountry FROM Account WHERE Id = 'Account_id'


This query fetches the account's ID, name, industry, and billing address details (city, state, and country). Below is an example of this query and its output:





Example 3: Retrieving Contact and Account Data Based on Contact ID

Finally, you can query both Contact and its associated Account data using the following SOQL :


SELECT Id, FirstName, LastName, Email, Phone, Account.Name, Account.Website FROM Contact WHERE Id = 'contact_id'


This query retrieves the contact’s details along with the associated account’s name and website. Below is an example of how this query looks and its result:




c) Final Step: Dynamic Configuration of SOQL Queries

In the final step of integrating your SOQL queries into the dynamic environment, you will replace the hardcoded ID values used for testing in the Query Editor with a dynamic configuration. This allows the SOQL query to take a parameter from the attribute name you set in the integration field, ensuring it matches the correct Salesforce object ID.


For example, the static query tested in the editor:


SELECT Id, FirstName, LastName, Email, Phone, AccountId  FROM Contact  WHERE Id = '001J7000007VpctIAC'



should be replaced in the SOQL field by :


SELECT Id, FirstName, LastName, Email, Phone, AccountId  FROM Contact  WHERE Id = '{attribute_value}'


In this dynamic query, the placeholder {attribute_value} will automatically be replaced by the value of the attribute name you define in the integration.


If you set sf_id in the Attribute Name field, the query executed will become:


SELECT Id, FirstName, LastName, Email, Phone, AccountId  FROM Contact  WHERE Id = 'sf_id'


This should be your final configuration :



Now you just need to click save and authenticate with your Salesforce account.



c) How to test the integration ?

In order to test the integration, you need to go to the surveys, choose a survey that matches the segment you created, and simulate the reception of feedback with a Salesforce ID.




Take the link and then manually add the attribute (the name of the attribute you pass in the URL should match the one you put in the attribute name field in your integration). So, if the URL is: https://feedback.feedier.pre-prod.alkalab.com/DXoT9Z, you need to enter in your browser: https://feedback.feedier.pre-prod.alkalab.com/DXoT9Z?sf_id=001J7000007VpctIAC.


Complete the survey, and you should receive feedback with one attribute, which is sf_id.


Wait 5 minutes, and the integration should be triggered, and you should see all the attributes you included in your SOQL.


Important Notes :

  1. Feedier will only read the first record from the query. So you can order if several records might be matched.

  2. The query must contain "{attribute_value}" as this attribute value will always change and be replaced automatically. It can be an ID or a value for a LIKE query/matching.


4) Connect to Salesforce to update a ‘Salesforce Object’ from feedback data

This workflow is designed to update a record on Salesforce with question answers from the respondant’s feedback from Feedier.


a) Create a Custom Object

Salesforce Setup App → Object Manager → Create → Custom Object


  • Setup a custom object called FeedierFeedback




Add the label as FeedierFeedback, Object Name should populate automatically.




Note: The object name must be FeedierFeedback (the API will call FeedierFeedback__c).



b) Add the Field and Relationships to FeedierFeedback object

Now go to Fields and Relationships for the FeedierFeedback object, and start adding the following custom fields. You must add all of the following:

Salesforce Label

Data Type

Explanation

Created By

Lookup(User)

Mandatory field on Salesforce, will display the user that setup the connector

FeedierFeedbackId

Text(80)

Feedback ID in Feedier

FeedierCreatedAt

Date

The date Feedback was created

FeedierFeedbackName


Text(80)

The Name of the object

FeedierSurveyName


Text (100)

Survey name in Feedier

FeedierFeedbackLink

Text (255)

The link to the feedback responses on Feedier

FeedierNPSScore

Number(18, 0)

The answer value to NPS question

FeedierSatisfactionRatio

Number(18, 0)

Satisfaction Ratio of the feedback

FeedierPushCreatedAt

Date

The push schedule creation time (if any)

FeedierPushStatus__c

Text (255)

The push status

LastModifiedById

Lookup(User)

Mandatory field on Salesforce

OwnerId

Lookup(User,Group)

Mandatory field on Salesforce

eg. Case

eg. Lookup(Case)

Relationship lookup:
The attribute from Feedier that connects to Salesforce




Any field that is wrong or missing will result in a crash of the process and the feedback will be not sent to Salesforce.



c) Add a lookup relationship value

FeedierFeedback → Field & Relationships → New → Lookup relationship → [select custom field to link]


You’ll need to add a Lookup Relationship in the table in order to link this new object FeedierFeedback to an existing salesforce custom field eg. contact_id or case_id.
This is needed so the connector knows what record to update.


d) Add a FeedierItem object

Similar to step 1 and 2, create a new Salesforce object FeedierItem__c and add the following fields:

Salesforce Label

Data Type

Explanation

CreatedById

Lookup(User)

Mandatory field on Salesforce, will display the user that setup the connector

Name

Text (80)

Mandatory field on Salesforce

FeedierItemFullName

Text (255)

The question name

FeedierItemFeedbackObjectId

Lookup(FeedierFeedback)

The related FeedierFeedback that was created in the integration.

FeedierItemFeedbackId


Text(80)

Feedback ID in Feedier

FeedierItemSurveyName


Text (255)

Survey name in Feedier

FeedierItemType

Text (255)

The type of response, for most use cases this will show as ‘question’

FeedierItemValue

Long Text Area(131072)

The answer value

FeedierItemCreatedAt

Date/Time

The answer creation time

LastModifiedById

Lookup(User)

Mandatory field on Salesforce

OwnerId

Lookup(User,Group)

Mandatory field on Salesforce




Example of how this may look in your Salesforce


Any field that is wrong or missing will result in a crash of the process and the feedback will be not sent to Salesforce.

Did this answer your question?