FAQs

Do transactional emails need to be on an asynchronous path in my flow?

Yes. The Transactional Email action performs a callout to Campaign Monitor, and Salesforce requires any flow action that makes a callout to sit on an asynchronous path in a record-triggered flow. When you try to save a new version of a flow that has the action on an immediate path, Salesforce blocks it with the warning: "You must place this action in an asynchronous path. Add an asynchronous path in the Start element."

This applies even when the Direct option is switched off. With Direct off we queue the record and send it from a batch or queueable job rather than calling Campaign Monitor during your flow, but our action is still registered with Salesforce as a callout action, so the platform enforces the asynchronous path either way.

Existing flows that already have the action on an immediate path will keep running as they are. Salesforce only enforces the rule at save time, so the change bites the next time you edit one of those flows. We recommend moving them over proactively, rather than discovering it when you are mid-edit on something urgent.

We recommend asynchronous paths for all of our invocable actions in any case, since it keeps our processing clear of the record update that triggered the flow.

Triggering on a field change with an asynchronous path

Asynchronous paths do not give you the field change trigger options you get on the immediate path, but you do not lose that control. Put the check in the entry conditions on the Start element instead, using a formula with ISCHANGED:

ISCHANGED({!$Record.Status__c})

Entry conditions are evaluated before any path runs, so the flow only enters when that field actually changed, and the asynchronous path then carries the Transactional Email action. The flow is evaluated on every edit to the record, but it only fires when your criteria are true, which is much the same as how an Apex trigger behaves.

Note: if your flow needs the values from before the update, capture them in the immediate path and pass them across, as the asynchronous path re-queries the record.

Related Articles

Transactional Emails [Full Guide]

How do I troubleshoot a transactional email not being sent?

Why aren't my scheduled flows sending transactional emails?

Related articles
How to guides
Contact Us