One Simple Salesforce Flow Hack That Will Change Your Workflow Forever!
What if I told you that the Flow you’ve been building could secretly hold the key to a much bigger impact in the automation world? A world where you don’t rebuild logic over and over… where one Flow powers multiple flows.
Sounds dramatic, right? But once you learn this trick, it will be an invaluable addition to your flow arsenal that will superpower your workflows going forward.
Use case: Create a follow-up task due in seven days for the proposal step when the stage is updated to proposal (do the same on create), if there is no existing open task already with the same subject.Let’s start by building this use case. Then we will get to the hack part.
Step 1. Build the Original Record-Triggered Flow
We’ll start with something simple: a record-triggered Flow on Opportunity that creates a Task when the Opportunity hits a certain stage. Check whether there is an open task already with the same subject related to the opportunity, before creating another one. If there is an open task already, skip the create.
- Trigger: Opportunity → when Stage = “Proposal/Quote”
- Action: Create Task → Assigned to Opportunity Owner
- Due date: 7 days from the current date
- WhatId (Related to Id) set as the triggering Opportunity
Straightforward.
But here’s the catch: this logic lives in a record-triggered flow. What if I wanted to leverage the task creation logic for multiple record-triggered flows (including scheduled paths), schedule-triggered flows and possibly for screen flows, as well. In addition, could I leverage the same flow for other object records in addition to opportunities? Good food for thought.
Step 2. Save As an Autolaunched Flow
Here’s where the hack begins.
From the Flow Builder menu, click Save As → choose A New Flow → Autolaunched (No Trigger).
Now we have the same logic, but free from the record trigger.
Step 3. Replace $Record With Input Variables
The Autolaunched Flow still references $Record from the Opportunity. That won’t work anymore. Time to swap those out. The references are listed under Errors. The flow cannot be saved until these Errors are fixed.
Create Input Variables for everything your logic needs; e.g., recordId (WhatId), OwnerUserIdVar, DelayInDaysVar.
- Update your Create Task, Get Task elements and the Due Date formula to reference those input variables instead of the $Record.
Boom. Your Flow is now a Subflow – it can take in data from anywhere and run its magic.
Step 4. Refactor the Original Record-Triggered Flow
Time to circle back to the original record-triggered Flow.
Open the Flow, Save As a New Version.
Delete all the elements. (Yes, all. Feels risky, but trust me.)
Add a Subflow element.
Select your new Autolaunched Flow.
Map the input variables to $Record fields, and provide the delay in days parameter value.
Now, instead of directly creating the Task, your record-triggered Flow just hands $Record data to the Subflow – which does the real work.
Here is how the debug runs works.
Why This Hack Changes Everything
This one move unlocks a whole new way of thinking about Flows:
Reusability – Logic built once, used anywhere.
Maintainability – Update the Subflow, and every Flow that calls it stays consistent.
Scalability – Build a library of Subflows and assemble them like Lego pieces.
- Testing Ease – Some flow types are hard to test. Your autolaunched subflow takes in all the necessary parameters in the debug mode, and rolls back or commits the changes based on your preference.
Suddenly, your automation isn’t a patchwork of disconnected Flows – it’s a modular, scalable system.
The Secret’s Out
I call this the “Save As Subflow” hack. It’s hiding in plain sight, but most builders never use it. Once you do, your workflow will never be the same.
Remember, you can make your subflow logic as flexible as you want. You can add input variables for subject and description. This would make your task creation even more flexible so that it can be used for other objects like Case and Custom objects.
Try it today – and the next time you find yourself rebuilding logic, remember: you don’t have to. Just save it, strip $Record, add input variables, and let your Subflows do the heavy lifting.
Explore related content:
Automate Permissions in Salesforce with User Access Policies
When Your DMLs Have Criteria Conditions Other Than Id
Display Product and Price Book Entry Fields in the Same Flow Data Table
How to Use a Salesforce Action Button to Validate Lookup Fields in Screen Flows
#Hack #HowTo #RecordTriggered #Salesforce #SalesforceAdmins #SalesforceDevelopers #SalesforceTutorials #Subflow






