A variable set with Set Variable, Run Equation on Variable, or read back later with {{variableName}} in any text field, can be scoped two ways.
Global vs. user scope
Global variables are shared across every user talking to your bot, a running total, a shared setting. User variables are scoped to whoever's currently in the conversation, each user gets their own independent value, useful for anything personal: their name, a preference, where they are in a multi-step process.
Building a conversation with Wait for User Input
Most blocks run instantly and move on, but Wait for User Input pauses the flow entirely until that same user sends their next message, storing it in a variable you name, then continues from there. Chain a few of these together (ask a question, wait, ask the next one) to build a real, multi-step conversation, like collecting someone's order details one field at a time. It takes the Timeout path if they don't reply in time, wire that to a friendly reminder or a graceful exit rather than leaving it unwired.
A worked example
A support flow might: send a message asking for an order number, Wait for User Input into orderNumber, use Send API Request to look it up, then reply with the result, all inside one flow triggered by a command like /order.
Tip: Use Condition to branch on what a user typed after a Wait for User Input block, comparing {{variableName}} against expected answers is how you turn a free-text reply into real branching logic.