Back to blog

Figma prototyping

How to Prototype in Figma: Build a Clickable Flow Worth Testing

Learn how to turn Figma frames into a focused clickable prototype, test real user journeys and expose missing decisions before development begins.

A set of Figma screens can look complete while the journey between them still lives mostly in people's heads. A useful prototype connects those screens into one task somebody else can attempt, including the awkward states that are easiest to miss before development.

01

Start with the question, not the animation

Before opening Figma's Prototype tab, decide what the prototype needs to teach you.

Imagine an internal CRM. The question might be: can a staff member create the right customer record and leave a clear next action for a colleague without needing separate notes or an email?

That question creates a sensible boundary. The prototype needs a customer list, a create form, validation, a saved record and a follow-up task. It does not yet need billing, reports, every permission or a working integration with the email platform.

Without that boundary, it is easy to keep drawing screens because each new screen feels like progress. The file grows, the connectors begin to resemble railway engineering, and the original uncertainty remains untouched.

Write the test question at the top of the Figma page. Under it, write what a successful attempt looks like. For this example, the user should be able to create one valid customer, understand why an incomplete form cannot continue and assign a dated task to another person.

02

Prepare the frames as a complete journey

A Figma prototype moves between frames, so begin by creating the smallest set that carries the task from start to finish.

Our main route needs a customer list with a clear way to add a record, a new customer form, an error state, a saved customer record, a follow-up task form and a final state showing the task, owner and due date.

Use realistic content. A field labelled Email address teaches more than Input 4. A customer called North Street Heating and a task called Confirm installation date make it easier for a reviewer to judge whether the screen supports real work.

Name the frames by journey and state, such as Create customer / Empty, Create customer / Error and Customer / Task saved. Clear names help while connecting the flow and make the file easier for another person to inspect later.

Keep repeated controls consistent. Buttons, fields, navigation and alerts should use components where practical. This reduces accidental differences between screens and makes later changes less tedious. A prototype should reveal product questions, not create a side quest to discover why the same button has three heights.

03

Set a starting point and create a flow

Select the first frame, open the Prototype tab and set it as the starting point. Figma will mark it as the beginning of a flow.

A file can contain more than one flow. That is useful when separate roles or tasks need testing, but each flow should have a clear job. Do not make the participant guess which of twelve starting points represents the scenario you asked them to complete.

Give the flow a useful name such as Create customer and assign follow-up. This name is visible when presenting and sharing, so it should describe the task rather than the design version.

For our example, the customer list is the starting point. The user sees an Add customer button and must decide whether that is the route they expect to take. We have now created a testable choice rather than merely showing them a form.

04

Connect each interaction deliberately

In Figma, an interaction starts with a trigger and performs an action. A click or tap may navigate to another frame, open an overlay, move back, scroll to an element or change a component state.

Select the Add customer button and drag its prototype connection to the empty form frame. Use an On click trigger and a Navigate to action. For an ordinary business application, a simple instant change or short dissolve is usually enough. The movement should make the journey easier to follow, not audition for a film trailer.

Connect the important controls deliberately. Save customer on the incomplete form should show the error state. Corrected details should continue to the saved record. Add follow-up should open the task form, while Assign task should reach the final customer state. Cancel and back controls should return to the place a user would reasonably expect.

Preview the flow after every few connections. Small checks catch a connector pointing to an old frame, a missing back route or a button that only works when the designer remembers where to click.

05

Use overlays and interactive components for repeated behaviour

Not every interaction needs another full screen.

An overlay works well for a confirmation, menu, date picker or short form that appears above the current context. For the CRM, the follow-up task form could open as an overlay from the customer record. The user can complete it without losing sight of the customer they are working on.

Interactive components are useful for repeated controls with states, such as tabs, toggles, menus and buttons. A button component might have default, hover, pressed and disabled variants. Connecting those variants once can make every instance behave consistently.

Use these features when they support the question you are testing. Do not build a detailed component system for a disposable prototype if three linked frames can answer the same question. Fidelity should follow uncertainty. The less certain the product idea is, the cheaper it should be to change.

06

Add variables only when state matters to the test

Figma variables can store values such as text, numbers, colours and true or false states. Prototype actions can change those values, and conditions can use them to choose what happens next.

For example, a boolean variable called customerValid could decide whether Save customer shows the error state or continues to the saved record. Another variable could hold the selected task owner so the final screen reflects the participant's choice.

This can reduce the number of duplicate frames and make a prototype feel more realistic. It also adds logic that somebody must understand and maintain.

Use variables when the state change is part of the question. If you need to learn whether people understand the difference between Save draft and Submit for review, changing a status variable may be valuable. If the prototype only needs to show one fixed route during a short discussion, linked frames are usually clearer.

A prototype is allowed to be simple. It is not production code wearing a colourful coat.

07

Test the awkward routes, not only the happy path

The polished route from empty form to successful task is useful, but it is rarely where the expensive questions hide.

Add enough states to explore the moments most likely to confuse the user or change the build. What happens when a required email address is missing, the address already belongs to another customer, the user cannot assign work to a restricted team, no search result matches or task creation fails after the customer has saved?

You do not need to model every failure. Choose the exceptions that affect the journey, data or responsibility. A useful prototype makes hidden business rules visible while they are still cheap to discuss.

Long names, realistic notes and empty lists matter too. A card that looks tidy with Acme Ltd may collapse when a genuine company name takes two lines. A dashboard full of perfect data says nothing about the first day a new customer has no activity.

08

Let somebody else control the prototype

Presentation mode lets another person click through the flow. Share the prototype link with the correct viewing permission and test it in a private browser window before a session. That catches the slightly embarrassing version of user research where the user cannot open the thing being tested.

Give the participant a task, not a tour. Ask them to create a customer called North Street Heating, then assign Priya a task to confirm the installation date by Friday.

Let them control the prototype. Avoid pointing at the next button, explaining the layout or finishing their sentence when they hesitate. A guided demonstration can show the idea, but it cannot tell you whether the journey explains itself.

Record what happened rather than debating a redesign during the session. Note where the participant paused, clicked somewhere unexpected, misunderstood a label or expected information that was missing. Several people struggling at the same point is stronger evidence than one person's preferred colour.

09

Prepare the handoff without pretending the prototype is the specification

Once the flow has been tested, update the prototype and record the decisions it produced. Developers need more than dimensions and colours. They need to understand the rules that connect the states.

For the CRM, record which fields are required, how duplicate customers should be handled, who can assign work to whom, what happens after a partial failure, whether a cancelled form keeps a draft and what confirmation the user should receive. Include the expected behaviour on smaller screens and with a keyboard.

Also mark what the prototype simulates. It does not prove that customer data can be migrated, that the API is available, that permissions are secure or that the final interface meets accessibility requirements. Those need technical investigation, production design and testing.

If the main uncertainty concerns real data, browser behaviour, a third-party integration or performance, a small coded prototype may be the better next step. Figma is strongest when the question is about flow, information, interaction and shared understanding.

10

Build the smallest prototype that can change the decision

The CRM prototype began as several screens that looked plausible. Connecting them forced the team to decide where the journey starts, what happens when information is wrong, who owns the next task and how a user knows the work is complete.

That is the real value of prototyping in Figma. The trigger, action, destination and animation controls are straightforward. The judgement lies in choosing which journey deserves attention and which uncertainty the prototype must reduce.

Start with one question. Build one complete route. Include the awkward state most likely to change the decision. Then put the mouse in somebody else's hand and watch what happens.

If the prototype creates better questions, it is working.

Useful questions

Figma prototype checklist

  • Write down the decision or uncertainty the prototype must address.
  • Choose one complete user task with a clear beginning and outcome.
  • Create only the frames and states needed to test that task.
  • Use realistic content, including an error, empty or permission state.
  • Set and name one obvious starting point for each flow.
  • Connect triggers and actions with restrained transitions.
  • Use overlays, components and variables only when they improve the test.
  • Preview every route, including cancel and back behaviour.
  • Test the sharing link and let participants control the prototype themselves.
  • Record decisions, unresolved technical questions and simulated behaviour before handoff.
Daniel Mills

Written by Daniel Mills

Business understanding and hands-on software delivery.

I help owners and teams improve the software they rely on, replace fragile processes and turn new ideas into practical systems people can actually use.