Skip to main content

Connect Salesforce to Feedier

Enrich Feedier feedbacks with Salesforce data, push feedback data back to Salesforce, and trigger surveys from Salesforce outbound messages.

Written by Julien Chil Hagopian

Menu Workflows + Salesforce

The Feedier × Salesforce integration covers three independent use cases — you can activate one, two, or all three:

  1. Enrich feedbacks with Salesforce data (Contact, Account, Case, custom objects…).

  2. Push feedback data to Salesforce as FeedierFeedback__c / FeedierItem__c records, linked to a Contact, Account or Case.

  3. 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:

  • FeedierFeedback__c — custom object storing the feedback

  • FeedierItem__c — custom object storing each question/answer (feedback attributes)

  • Permission Set Feedier_Integration — grants the API user CRUD on both objects

Feedier also verifies that Feedier_Integration has all required permissions.

🔧 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
FROM Contact
WHERE Id = '{contact_id}'

Retrieve Account data

SELECT Id, Name, Industry, BillingCity, BillingState, BillingCountry
FROM Account
WHERE Id = '{account_id}'

Retrieve Contact + parent Account (one query)

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

Retrieve Case + custom child object

SELECT Id, Subject, Status,
       (SELECT Id, Custom_Field__c FROM Case_Extensions__r)
FROM Case
WHERE Id = '{case_id}'

For child relationships, the suffix is __r (relationship), not __c. The relationship name is also often plural (e.g. case_extensions__r, not case_extension__r). Verify it in Salesforce Object Manager → Fields & Relationships.

💡 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

  1. Import (or create) a feedback in Feedier that carries the key attribute (e.g. contact_id = 003J7000007...).

  2. Make sure the feedback matches the segment used in your Autopilot automation.

  3. 🎊 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

Created By

Lookup(User)

Mandatory. The user that set up the connector.

FeedierFeedbackId

Text(80)

Feedback ID in Feedier.

FeedierCreatedAt

Date

Feedback creation date.

FeedierFeedbackName

Text(80)

Object display name.

FeedierSurveyName

Text(100)

Survey name in Feedier.

FeedierFeedbackLink

Text(255)

Direct link to the feedback in Feedier.

FeedierNPSScore

Number(18, 0)

NPS answer value.

FeedierSatisfactionRatio

Number(18, 0)

Feedier-computed satisfaction ratio.

FeedierPushCreatedAt

Date

Push schedule creation time (if any).

FeedierPushStatus__c

Text(255)

Push status.

LastModifiedById

Lookup(User)

Mandatory Salesforce field.

OwnerId

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

FeedierItemFullName

Text(255)

Question name.

FeedierItemFeedbackObjectId

Lookup(FeedierFeedback)

The parent FeedierFeedback record.

FeedierItemFeedbackId

Text(80)

Feedback ID in Feedier.

FeedierItemSurveyName

Text(255)

Survey name in Feedier.

FeedierItemType

Text(255)

Type of response (usually question).

FeedierItemValue

Long Text Area(131072)

Answer value.

FeedierItemCreatedAt

Date/Time

Answer creation time.

Configure the push in Autopilot

  1. In Feedier, create (or open) a Segment of feedbacks to push.

  2. Create an Autopilot automation on that segment.

  3. Add a Salesforce → Create Object action.

  4. Choose the Salesforce Relationship Object (the parent: Contact, Account, Case…).

  5. Choose the Feedier attribute that holds the Salesforce ID of that parent record (e.g. sfid for Contact, sfaccountid for Account).

  6. 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 FeedierFeedback records — 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__c object 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 __r (often plural) inside subqueries, not __c. Verify the exact relationship name in Object Manager → Fields & Relationships → child relationship name.

Feedbacks and their related attributes are not pushed to Salesforce.

Check that the key attribute (e.g. sfid, sf_contact_id) is present and non-empty on the feedback. Without it, the connector has no record to attach to and the push is silently skipped — this is the expected behaviour, not a bug.

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 FeedierFeedback records on Salesforce, or a Salesforce error blocking the push.

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 contact_id (or send all needed attributes directly from the outbound message), instead of relying on Feedier-side post-hoc email matching.

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.

Did this answer your question?