Skip to main content

Trigger Feedier Surveys email campaigns from Salesforce

Trigger Feedier email campaigns from Salesforce via Outbound Messages and Record-Triggered Flows. Includes payload mapping, duplicate-send protection, and common pitfalls.

Written by Julien Chil Hagopian

Feedier Surveys + Salesforce


This article covers one of the three Salesforce integration use cases: triggering a Feedier email campaign when a Salesforce record matches your conditions (e.g. a Case is closed, a Contact reaches a status). For feedback enrichment and pushing feedback back to Salesforce as FeedierFeedback__c, see Connect Salesforce to Feedier.


Who can access it?

Roles

Access

👑 Admins

Full access

🛠️ Editors

Full access

👀 Viewers

No access

🔒 Restricted viewers

No access

On the Salesforce side, you'll need Setup access and the Flow Builder permission.


How it works

Three pieces work together:

  1. A Feedier email campaign — the survey you want to send.

  2. A Salesforce Outbound Message pointing to a Feedier endpoint, carrying the Salesforce fields you want to forward as feedback attributes.

  3. A Record-Triggered Flow in Salesforce that decides when to fire the Outbound Message.

When the Flow's conditions match, Salesforce posts the selected fields to Feedier and a push is scheduled in the campaign you point to. One record → one email.


Prerequisite — Feedier email campaign

Create the email campaign in Feedier Surveys before configuring anything in Salesforce:

Step 1 — Create the Outbound Message in Salesforce

Salesforce Setup → Outbound Messages → New Outbound Message


Field

Value

🏷️ Name / Unique Name

Any label of your choice — has no impact on the integration.

📦 Object

The Salesforce object the Flow will run on (typically Contact, Case, Opportunity, or a custom object).

🚀 Endpoint URL — Production

(Salesforce prod or sandbox → Feedier production)

https://connector.feedier.com/salesforce/push?push_campaign_id={FeedierCampaignID}&api_key={FeedierPrivateAPIKey}&target_attribute={targetAttributeName}

📋 Fields to send

At minimum: the record Id and an Email field (Contact email or equivalent). Add any other field you want to forward as a feedback attribute — first name, account, business unit, language, custom fields (Product_Range__c, etc.).

Target respondant email detection

Feedier automatically extracts the contact's email if your sObject contains any of these three fields :

1. `Email`

2. `Email__c`

3. `ContactEmail`

If none of these are present — for example if your email field is a custom one like `CaseEmailOwner` — the email won't be picked up automatically, and you must tell Feedier where to find it using `target_attribute`.

Add &target_attribute={SalesforceFieldName} to the endpoint URL, using the raw Salesforce field name without the `sf` prefix. Example :

Feedier applies the same `sf` prefixing rule as always, so `CaseEmailOwner` will be matched against `sfCaseEmailOwner` in the incoming payload.

⚠️ The field must still be ticked in the Outbound Message's "Fields to send" list `target_attribute` in the endpoint url only tells Feedier where to look for the email, it doesn't forward a field that wasn't sent.

​Two common gotchas:

  • A field that isn't ticked in the Outbound Message field list does not arrive even if it exists on the record.

  • A field that is ticked but empty on the record arrives empty (and the attribute will be blank in Feedier)

Where to find the two placeholders

  • {FeedierCampaignID} → Feedier → Surveys → your survey → ShareEmail CampaignInfo.

  • {FeedierPrivateAPIKey} → Feedier → Advanced SettingsPublic Key.

  • {targetAttributeName} -> Salesforce -> Only needed if your Salesforce Object used to trigger the outbound message does NOT contain `Email`, `Email__c`, or `ContactEmail`. Takes the raw Salesforce field name (no `sf` prefix) of whichever field holds the contact's email, e.g. `CaseEmailOwner`.

How the fields arrive in Feedier

Salesforce automatically prefixes every field name with sf in the XML payload it sends:

  • IdsfId

  • ContactIdsfContactId

  • EmailsfEmail (or sfContactEmail depending on the source field)

  • Custom fields keep their __c suffix → sfProduct_Range__c

Each of these becomes a feedback attribute in Feedier with that exact name.

Step 2 — Build the Record-Triggered Flow

Salesforce Setup → Process Automation → Flows → New Flow → Record-Triggered Flow


⚠️ Workflow Rules are deprecated by Salesforce. Use Flow Builder (Record-Triggered Flow).

  1. Define the trigger

    Pick the object that should fire the survey and choose "A record is created or updated". Add your entry conditions — for example Case.Status = Closed or Contact.Survey_Eligible__c = true. See trigger rule examples below.

  2. Attach the Outbound Message

    Add an action of type Outbound Message (under "Actions and Related Records") and select the Outbound Message you created in Step 1. Save and Activate the Flow.

Industry example (in Feedier context make sure to use the endpoints mentioned above) :

Step 3 — Test & verify

Trigger the rule on a test record (e.g. close a test Case). Then check, in Feedier:

  • Outbound Messages page — the parsed payload appears with status push_created, or skipped_due_to_recently_contacted_same_campaign if a duplicate was prevented by the safety net.

  • Pushes page — the push is scheduled and the email will be sent.

🎊 You should see a push created in the Pushes page within seconds.

Duplicate-send protection

Salesforce's Outbound Message system is built for reliability — if the response from Feedier isn't acknowledged exactly as expected, Salesforce retries the call every 2 hours for up to 24 hours. In addition, when several records are updated in the same Salesforce transaction (e.g. a bulk import), Salesforce groups them into a single Outbound Message call. Both behaviors can produce extra calls.

Feedier ships with two layers of protection:

Layer

Behavior

🛡️ Default 24h dedupe
(built-in, no configuration)

Same target + same push campaign within 24 hours → the second push is automatically skipped. The Outbound Message is still logged with status skipped_due_to_recently_contacted_same_campaign.

⚙️ Custom over-solicitation window
(optional, per endpoint URL)

Add &over_solicitation=true&survey_id={SurveyID}&interval_days={N} to the endpoint URL to set a stronger, survey-wide interval (e.g. 100 days between any two emails on a given survey, across all campaigns of that survey).

Example endpoint URL with custom over-solicitation:

https://connector.feedier.com/salesforce/push?push_campaign_id={FeedierCampaignID}&api_key={FeedierPrivateAPIKey}&target_attribute={targetAttributeName}

Symptom

Likely cause & fix

No Outbound Message arrives in Feedier

The Flow conditions are not matched on Salesforce side, or the message failed delivery. Check Setup → Monitor → Outbound Messages in Salesforce — failed deliveries stay in the queue for 24h with the error.

Push created in Feedier but missing an attribute

Either the field isn't ticked in the Outbound Message's "Fields to send" list, or the field is empty on the Salesforce record. Check both — the connector forwards what Salesforce sends, nothing more.

Multilanguage support

You can control the language the survey is displayed in by adding &locale={languageCode} to the endpoint URL.

For example, to display the survey in French, add locale=fr; in Spanish, locale=es, at the end of the link, along with the API key and push campaign ID:

https://connector.feedier.com/salesforce/push?push_campaign_id={FeedierCampaignID}&api_key={FeedierPrivateAPIKey}&locale={languageCode}

⚠️ The survey must already be translated into that language on Feedier for this to work — locale only selects which existing translation to display, it doesn't translate the survey on the fly.


Examples of trigger rules

Rules live on the Salesforce side (in the Flow's entry conditions), not in Feedier:

  • CRM event — after a case is closed, after a purchase or order, after a support interaction, after onboarding is completed.

  • Segmentation — country, language, business unit, account type, subscription plan, product range.

  • Contact status — active client only, communication consent granted, not opted out.

  • Frequency — combine with Feedier's over-solicitation parameter for a survey-wide cap (e.g. one survey per contact every 90 days).


Useful Salesforce references:

Did this answer your question?