Invocable methods used with Flow allow you to launch something in an admin friendly format that uses the massive power of Apex. For example, you have an intake screen that collects answers to a few questions, then you use Apex to loop through many related records dispersing those answers in places hard to reach from Flow.
Creating an invocable method in a nutshell: First you write an apex class with @invocable method (label and description) and whatever code you want the apex to do (easy, right?) Then make your Flow including your input and output variables. Then add an Apex action in Flow to send/receive those variables.
Here are some things I learned about sending data between Flow and Apex.
Record Collection Variable
List containing 1 sObject record
Record (single) variable
List of Lists of sObject
Record Collection Variable
This is NOT an exhaustive list at all. I didn’t try sending a record variable (not just the ID from Flow), but I assume that will work. There are also generic sObjects that are pretty special, but I didn’t try.
“Here is the use case: sending a family of a deceased relative one letter with all the names of people who have donated in memoriam. So, one letter to the family for many people who gave. Client is a large hospice so this is happening weekly. Open to different options — apps? exports & merge? other? Thanks!”
Broad use case: Use the new Collection Sort feature in Flow to find a specific number of records that meet your criteria, and sort them with one or more criteria (criterion?)
Example use cases: I want my top 3 open opps to have a giant dollar sign image on them or I want to automatically nudge/shame the five users who logged in least last month or I want to focus a campaign on my most active volunteers in the summer.
Our specific case: I want to look at a contact record in Nonprofit Success Pack and see immediately that they are one of my top ten donors.
This post is building on the work of the super-smarty Narender Singh aka ForcePanda aka @Nads_P07. With Spring ’21 rich text emails, you can now send tables with lists of child objects.
I followed his tutorial and built two Flow’s specifically using Nonprofit Success Pack (NPSP) objects. The first one is a list of payments and the second is a list of completed volunteer activities. I’ll blog about the second one later. Also on the to-do list is to make one that lists all the gifts received in memory or in tribute to someone else.
In my Unsubscribe Link app, (yes, that again) the Flow sends out an email from the user running the Flow, which in that case is a Site Guest User. And the email comes from “[Insert Company Name] Site Guest User” which is weird and confusing. I’ve finally googled to learn the secrets of some fields in the Flow “Send Email” Action. And it’s pretty basic and very much a “why didn’t I google this before” moment.
In Flow’s “Send Email” Action, plug in an organization wide email addresses into “Sender Address” and type “OrgWideEmailAddress” in as Sender Type and bob’s your uncle. Want more of an explanation? Keep reading!
Are you reading Samantha Shain’s blog The Data Are Alright yet? I LOVE how she talks through all the ups and downs of building her first flow – which is a really complicated one, by the way! She shares her thought processes, her research and her frustrations, pride and other feelings so openly. So if you see an increase in feelings shared here, you know who inspired me!
In Sam’s post, she mentions a few things that she had trouble figuring out. She uses a custom button or link with a URL to pass a record id to a Flow. As she guessed, there is a more elegant way to do it. So elegant even Lady Whistledown would approve.
CORRECTION: Sam tweeted “I got it from a Quick Action eventually on my own (I wish I had this resource then), but what I really needed was to pass in a *group* of ids from a list view… which afaik is not possible without code.”
JULY 30, 2021 UPDATE: This version is now outdated! Please go here for the latest.
Unsubscribe Link 2.2 (OUTDATED)
Allow Recipients to Unsubscribe From All Email Sent via Salesforce
When the recipient clicks to unsubscribe, a flow will look for all contacts and leads who have this email in the Email field and mark them “Email Opt Out.” The email address owner will receive one confirmation email immediately. A custom object tracks when someone unsubscribes to allow you to report on it.
See How It Works
UPDATE: 1/28/21 I realized how to send the confirmation email from someone other than “Site Guest User.” More in this post.