When you are creating a Variable, you are given the option to choose what kind of access the Variable has to other areas of Salesforce.
- Private – only accessible to set and reference from within your Flow.
- Input – gives you access to pass values into the variable pre-Flow. These methods are typically through a Flow’s URL (remember back to our Button URL post), through a Flow embedded in a Visualforce Page, or through a Process Builder triggered Flow.
- Output – gives you access to pass values at the end of your Flow to another source. These sources are Sub Flows (yes, you can have Flowception) and Visualforce controllers (commonly used to help re-direct the finished Flow to a newly created record).
The Million Dollar Question – what does this mean to you?
Unless you’re building a really complicated Flow with tons of variables or related Flows, it doesn’t mean too much. In most cases putting the variable’s settings as Input/Output will stop any potential head-aches you might get. Especially if I was starting out learning Flows, I wouldn’t worry too much about it. You’re really not going to break anything by simply putting everything into that bucket – doing this is like spring cleaning – you’re simply going to be cleaning up the ‘list’ you can choose variables from.