Menu → Workflows + Salesforce
The Feedier × Salesforce integration covers three independent use cases — you can activate one, two, or all three:
Enrich feedbacks with Salesforce data (Contact, Account, Case, custom objects…).
Push feedback data to Salesforce as
FeedierFeedback__c/FeedierItem__crecords, linked to a Contact, Account or Case.Trigger surveys from Salesforce via outbound messages (covered in a dedicated article).
Who can access ?
Roles | Access |
👑 Admins | Full access |
🛠️ Editors | Full access |
👀 Viewers | No access |
🔒 Restricted Viewers | No access |
Prerequisites
1. Install the Feedier package in Salesforce
A Salesforce Administrator must install the Feedier package: Install Feedier App.
Access to grant : All Users (recommended) or Specific users.
Environments : install on both UAT and Production. Object IDs differ between sandboxes — testing in UAT only will not catch integration mismatches at go-live.
💡 If you see the error below at install:
The user trying to install the package is not a Salesforce Administrator. Ask your Salesforce admin to perform the install.
2. Create the Salesforce connection in Feedier
Feedier → Workflows → Salesforce → New connection
Authenticate with OAuth2 using a Salesforce administrator account. When creating the connection you have two options:
Option | What it does |
🔄 Deploy Salesforce Automatic Package (recommended) | Feedier creates everything needed to push feedback data back to Salesforce:
Feedier also verifies that |
🔧 Manual Salesforce Package | For when your Salesforce admin prefers to create the custom objects, fields and relationships manually (e.g. strict change-management policy). |
🔄 Use case 1 — Enrich feedbacks with Salesforce data
Pull data from any Salesforce object (Contact, Account, Case, custom objects) onto a Feedier feedback, using a SOQL query and a key attribute already present on the feedback.
Before enrichment — feedback only has the key (e.g. sf_contact_id):
After enrichment — Salesforce data is now attached as feedback attributes:
1. Create an Autopilot automation
Feedier → Autopilot → Automation
Choose the Segment of feedbacks you want to enrich:
Connect the segment to a Salesforce Sync Object connection:
💡 The attribute is the key Feedier uses to find the record in Salesforce. It is typically an Account ID, Contact ID, Case ID, or any custom ID. Pick the attribute in Feedier that holds the value matching the Salesforce record.
→ Its value is then injected into the SOQL query as {your_attribute}.
⚠️ Prefer a stable ID over email. Matching on email is fragile: if the same email exists across multiple accounts (inactive contacts, multi-country setup, duplicates), Salesforce returns the first match — not necessarily the right one. Always use contact_id / account_id when available, or send all needed attributes from your outbound message.
2. Write the SOQL query
Salesforce → Developer Console → Query Editor
SOQL (Salesforce Object Query Language) selects the Salesforce fields you want pulled into Feedier. Full reference: SOQL & SOSL Reference.
Use case | SOQL query | Developer Console |
Retrieve Contact data | SELECT Id, FirstName, LastName, Email, Phone, AccountId | |
Retrieve Account data | SELECT Id, Name, Industry, BillingCity, BillingState, BillingCountry | |
Retrieve Contact + parent Account (one query) | SELECT Id, FirstName, LastName, Email, Phone, | |
Retrieve Case + custom child object | SELECT Id, Subject, Status, | For child relationships, the suffix is |
💡 Inject the Feedier attribute as a placeholder in the WHERE clause using {attribute_name}. Example with {salesforce_id}:
⚠️ Query valid in SF but invalid in Feedier? Common cause: the child relationship name. __c is the object suffix; __r is the relationship suffix used inside a subquery (often plural). Validate the query in the Salesforce Developer Console first, then paste exactly the same string in Feedier.
3. Test the enrichment
Import (or create) a feedback in Feedier that carries the key attribute (e.g.
contact_id = 003J7000007...).Make sure the feedback matches the segment used in your Autopilot automation.
🎊 Within ~5 minutes, Salesforce data appears as attributes on the feedback.
💡 Quick test via survey link. Append the key as a URL parameter on your survey link and answer it yourself:
https://feedback.yourdomain.com/XXXXXX?salesforce_id=001J7000007VpctIAC
The attribute is attached to the new feedback, Autopilot fires, and enrichment runs end-to-end.
📤 Use case 2 — Push feedback data back to Salesforce
Feedier creates a FeedierFeedback__c record (and one FeedierItem__c per question/answer) inside Salesforce, linked to a Contact, Account, Case or any standard/custom object via a Lookup field.
Option A — Automatic package (recommended)
If you toggled Deploy Salesforce Automatic Package when creating the connection, both objects, fields and the permission set already exist. Skip directly to Configure the push in Autopilot below.
Option B — Manual package
Only follow this section if you opted out of the automatic package. Any missing or misnamed field will silently break the push.
B.1 Create the FeedierFeedback custom object
Salesforce Setup → Object Manager → Create → Custom Object
Label it FeedierFeedback — the API Object Name must be FeedierFeedback (Salesforce will internally call it FeedierFeedback__c).
B.2 Add fields to FeedierFeedback
Salesforce Label | Data Type | Purpose |
| Lookup(User) | Mandatory. The user that set up the connector. |
| Text(80) | Feedback ID in Feedier. |
| Date | Feedback creation date. |
| Text(80) | Object display name. |
| Text(100) | Survey name in Feedier. |
| Text(255) | Direct link to the feedback in Feedier. |
| Number(18, 0) | NPS answer value. |
| Number(18, 0) | Feedier-computed satisfaction ratio. |
| Date | Push schedule creation time (if any). |
| Text(255) | Push status. |
| Lookup(User) | Mandatory Salesforce field. |
| Lookup(User, Group) | Mandatory Salesforce field. |
B.3 Add the Lookup relationship
FeedierFeedback → Fields & Relationships → New → Lookup Relationship → [select the parent: Contact, Account, Case…]
This Lookup tells Salesforce which parent record (Contact, Account, Case, etc.) the FeedierFeedback should be attached to. Without it, the connector has no parent to point at.
B.4 Create the FeedierItem custom object
Same procedure as B.1, with object name FeedierItem (API: FeedierItem__c) and the following fields:
Salesforce Label | Data Type | Purpose |
| Text(255) | Question name. |
| Lookup(FeedierFeedback) | The parent FeedierFeedback record. |
| Text(80) | Feedback ID in Feedier. |
| Text(255) | Survey name in Feedier. |
| Text(255) | Type of response (usually question). |
| Long Text Area(131072) | Answer value. |
| Date/Time | Answer creation time. |
Configure the push in Autopilot
In Feedier, create (or open) a Segment of feedbacks to push.
Create an Autopilot automation on that segment.
Add a Salesforce → Create Object action.
Choose the Salesforce Relationship Object (the parent: Contact, Account, Case…).
Choose the Feedier attribute that holds the Salesforce ID of that parent record (e.g.
sfidfor Contact,sfaccountidfor Account).Save, then Publish.
Test by answering a survey sent to your own email — within a few minutes the FeedierFeedback record should appear on the parent record in Salesforce.
Full walkthrough:
⚙️ Advanced patterns
Attach a feedback to both a Contact and an Account
Some setups require the feedback to be visible from both the Contact record and the parent Account record. To do this:
On
FeedierFeedback__c, create two Lookup fields — one to Contact, one to Account. Both must be nullable.Create two Autopilot automations on the same segment:
Automation #1: key =
contact_id→ uses the Contact lookup.Automation #2: key =
account_id→ uses the Account lookup.
Each feedback then yields two
FeedierFeedbackrecords — one attached to the Contact, one to the Account. Roll-up summaries on the Account can then aggregate scores across all related feedbacks.
UAT vs Production parity
Salesforce record IDs differ between sandbox and production. Before go-live:
Confirm the
FeedierFeedback__cobject and Lookup field IDs/API names match across UAT and Prod.Verify your Autopilot key attribute holds the production SF IDs (not the sandbox ones).
Run a small live test against a real Production contact before opening the floodgates.
🛟 Troubleshooting
Symptom | Likely cause / fix |
Connection stuck "active" but no objects/schema created. | Background tasks bricked. Wait 15–30 min; if still stuck, delete and recreate the connection. Contact Support if it persists. |
SOQL is valid in Salesforce Developer Console but Feedier says "invalid query". | Almost always a relationship-name issue on a custom object: use |
Feedbacks and their related attributes are not pushed to Salesforce. | Check that the key attribute (e.g. |
An attribute used for SF mapping disappeared from the "Create Object" dropdown. | The attribute was marked as hidden at team level. Hidden attributes are filtered out of the mapping picker. Un-hide it, or use an alternative non-hidden attribute as the SF key. |
Duplicate | Often caused by a custom Salesforce Flow ("Before record is saved" on FeedierFeedback) that writes back an ID into the feedback. Disable the flow temporarily; if the duplication stops, move the flow to "After record is saved" or rework its logic. Note: Feedier never sets the SF Object ID itself — it always comes from a Salesforce-side flow. |
Same email matches the wrong Salesforce contact. | Email is not a unique key in Salesforce. Switch the match key to |
Integration broke after migrating to a new Salesforce org / OCE. | SOQL queries that hard-code IDs or reference org-specific custom fields will need updating. Re-validate every SOQL query and every Lookup relationship in the new org before reactivating Autopilot. |
Need more help? Reach out via the in-app chat or your Feedier CSM — please include the connection name, the Autopilot automation ID, and a sample feedback ID when describing the issue.















