A user flow picks one concrete task — "sign up," say — and diagrams every screen from start to finish along with every branch point (success/failure, logged in or not) as boxes, arrows, and decision diamonds. The content of the diagram is the path between screens, not the detailed design of any one of them.
If information architecture is the map of a site's entire content hierarchy, a user flow is one specific path a person actually walks across that map. The same IA can produce several different user flows depending on the task — a logged-in user's checkout looks different from a guest's.
Draw it before development starts and it quickly exposes where the team silently disagreed about what comes after a given screen. Error states and edge branches (wrong password, out of stock) are the easiest thing to leave out — and exactly the part that gets forgotten most often in the real build.
When to use
Use it before development starts, whenever the team needs to agree on the exact path — and every exception branch — between screens.