Power Automate Desktop lets you automate any Windows application — even legacy systems with no API — using a visual recorder and drag-and-drop actions. This hands-on lesson walks you through installation, your first recording, and running a real desktop flow from scratch. No coding required.

Picture this: every morning, someone on your team opens a legacy inventory system, copies a list of low-stock items into a spreadsheet, and emails it to the purchasing team. It takes about 25 minutes. Nobody enjoys it. The system is too old for a proper API connection, and building a custom integration would cost far more than the problem is worth. This is exactly the kind of work that Power Automate Desktop was built to handle.
Power Automate Desktop (PAD) is Microsoft's Robotic Process Automation (RPA) tool — software that mimics human interaction with a computer by clicking buttons, typing text, reading values from screens, and navigating menus, all on your behalf. Unlike cloud-based Power Automate flows that connect APIs and services in the background, desktop flows run directly on a Windows machine and can automate anything a human can do with a mouse and keyboard. That means legacy apps, thick-client software, government portals with no API, and anything else that lives on the desktop.
By the end of this lesson, you'll have Power Automate Desktop installed and configured, understand how the designer works, have recorded a real desktop interaction, edited that recording to make it more robust, and successfully run your first desktop flow. You'll also understand how desktop flows fit into the broader Power Automate ecosystem.
What you'll learn:
Before starting, make sure you have:
Note
Power Automate Desktop itself is free to download and use for personal automation on Windows 10/11. However, running unattended flows (automation that runs without anyone logged in) and connecting desktop flows to cloud flows requires a Power Automate Premium license. We'll focus on attended automation in this lesson, which means you'll be present while the bot runs. If you want to understand the full licensing landscape, check out Understanding Power Automate Licensing: Choosing the Right Plan for Your Automation Needs.
Before we install anything, let's build a clear mental model of what RPA actually is and why it exists.
Traditional automation connects software systems through APIs — structured channels that let one application ask another for data or trigger an action. APIs are clean, reliable, and fast. But millions of business applications predate modern APIs, or simply never had them built. Think of a state tax portal from 2007, a supply chain system running on a 1990s database, or a homegrown access control tool that IT built in Visual Basic fifteen years ago. These systems aren't going away, and nobody is going to rebuild them just to add an API.
RPA solves this by working at the presentation layer — the same layer a human uses. Instead of calling an API, it reads text from the screen, finds the "Submit" button by its position or label, and clicks it. This is sometimes called "swivel-chair automation" because it eliminates the human who sits between two systems, swiveling back and forth copying data from one screen to the other.
Power Automate Desktop is Microsoft's RPA engine. It sits on your Windows machine, watches what you do, records those actions as a script, and can replay them later. The magic is in how well it identifies UI elements — buttons, text fields, dropdowns, checkboxes — across different applications. As you'll see, it uses a combination of element attributes (name, class, position, parent element) to find controls reliably, even when screen layouts shift slightly.
Key insight
RPA is not a replacement for proper integrations. If an API exists, use it. RPA shines specifically where no programmatic access is available, or where building a proper integration would cost more than the automation saves. Reach for it when a human is currently doing the bridging work.
Getting PAD installed is straightforward. Here's the process step by step.
Step 1: Download the installer.
Open a browser and navigate to flow.microsoft.com. Sign in with your Microsoft account. In the left navigation, look for "My flows" and then find "Desktop flows" in the submenu. Power Automate will recognize that you don't have PAD installed and prompt you to download it. Alternatively, you can search for "Power Automate Desktop download" and go directly to Microsoft's official download page.
Step 2: Run the installer.
Once downloaded, open the installer file (it will be named something like Setup.Microsoft.PowerAutomateDesktop.exe). The setup wizard will walk you through the installation. Accept the license terms and choose your installation path (the default is fine for most users). The installer will also set up the Power Automate Desktop browser extensions for Chrome, Firefox, and Edge — accept the option to install these, as you'll need them later to automate browser interactions.
Step 3: Launch PAD and sign in.
After installation completes, launch Power Automate Desktop from the Start menu. When prompted, sign in with the same Microsoft account you used on flow.microsoft.com. This links the desktop app to your cloud account, which matters when you eventually want to trigger desktop flows from cloud flows.
Step 4: Verify browser extensions. Open your preferred browser (Chrome or Edge works best) and navigate to the extensions manager. Confirm that the "Microsoft Power Automate" extension is installed and enabled. If it's not enabled, toggle it on. Without this extension, PAD can't see or interact with browser content.
Tip
If your organization uses managed devices, you may find the extension is blocked by group policy. Talk to your IT admin about whitelisting the Power Automate extension. This is a common friction point when deploying PAD in corporate environments.
When you launch PAD and create a new flow (click "New flow," give it a name, and hit Create), you'll land in the designer. This is where you'll spend most of your time. Take a few minutes to orient yourself before touching the recorder.
The Actions panel (left side) This is a searchable library of every action PAD can perform. Actions are grouped by category: System, File, Folder, Compression, UI Automation, Browser Automation, Excel, Database, Email, and dozens more. Think of actions like building blocks — each one does a single, specific thing, like "Launch Excel" or "Click UI element" or "Write to text file."
The Canvas / Workspace (center) This is where your flow lives. Actions appear here as numbered steps in sequence. When you record interactions, they appear here automatically. You can also drag actions from the left panel directly onto the canvas to add them manually.
The Variables panel (right side)
Every piece of data your flow works with lives as a variable. When an action produces output (say, reading text from a screen, or getting the result of a calculation), PAD stores it in a variable with a name like %TextRetrieved% or %ExcelData%. The variables panel shows you all currently defined variables and their values during a run. Understanding variables is essential — they're how you pass data from one step to the next. This concept connects directly to Working with Conditions, Loops, and Variables in Power Automate, which covers the logic layer in depth.
The Subflows panel (below the Variables panel) Complex flows are broken into subflows — named sections of steps you can call like functions. Every flow starts with a single subflow called "Main." As your flows grow, you'll organize them into subflows like "Login," "ExtractData," and "WriteToExcel." For now, you'll work only in Main.
The Toolbar (top) The toolbar has your primary controls: Run (plays the flow), Stop, Step Into (runs one action at a time, useful for debugging), and the Recorder button. The Run button is what you'll use most often.
The recorder is PAD's most powerful onboarding tool. It watches what you do on screen and converts your actions into a sequence of steps on the canvas. Let's use a realistic scenario: copying text from a Notepad file, transforming it, and saving it somewhere new.
For this exercise, we'll automate the following manual task:
This is simple enough to complete in under five minutes but realistic enough to demonstrate the key concepts.
Starting the recorder: In the PAD designer, click the "Recorder" button in the toolbar. A small floating recorder panel will appear on top of all your windows. This panel shows a Record button (red circle), a Pause button, and options for recording sensitivity. Leave the defaults and click the red Record button to begin.
Performing the actions:
Everything you do now will be captured. Open the Start menu and search for Notepad, then open it. Click inside the Notepad text area. Type the following: Daily Status Report - followed by today's date (e.g., Daily Status Report - 2025-01-15). Now press Ctrl+S to save. When the Save dialog appears, type DailyReport in the filename field and hit Save.
Stopping the recorder: Click the Pause or Done button on the recorder panel. PAD will display a preview of the actions it captured. Review the list and click "Done" to add these actions to your canvas.
When you look at the canvas after recording, you'll see something like this sequence:
1. Launch application: notepad.exe
2. Click UI element: Text area in Notepad
3. Send keys: 'Daily Status Report - 2025-01-15'
4. Send keys: Ctrl+S
5. Populate text field: 'DailyReport' (in Save dialog)
6. Click UI element: Save button (in Save dialog)
This is readable, but there's a problem: the date is hardcoded. If you run this flow tomorrow, it will still write "2025-01-15." We need to make the date dynamic.
Making the date dynamic:
Double-click on action 3 ("Send keys") to open its properties. You'll see the text field contains the literal string Daily Status Report - 2025-01-15. We need to replace the hardcoded date with a variable.
Before editing this action, add a new action at the top of the flow to get today's date. Click on the search box in the Actions panel and type "Get current date." You'll find an action called "Get current date and/or time" in the DateTime category. Drag it to position 1 in your flow (before the Launch application step). Double-click it to configure it. Set it to return just the current date (not time) and note the output variable name — PAD will suggest something like %CurrentDateTime%. Accept this and save.
Now go back and edit your "Send keys" action. Replace the hardcoded date with the variable:
Daily Status Report - %CurrentDateTime%
In PAD, variables are referenced by wrapping their name in percent signs: %VariableName%. When the flow runs, PAD substitutes the actual value at runtime. This is the same pattern used throughout the Power Automate ecosystem.
Warning
The recorder captures what you do, not what you mean. It often records absolute pixel coordinates for clicks rather than finding elements by their attributes. Always review recorded actions and update any coordinate-based clicks to use element selectors instead. Coordinate-based clicks break whenever the window moves or the screen resolution changes.
Improving element selectors:
When PAD records a click on a UI element, it builds a "selector" — a description of how to find that element on screen. Double-click any "Click UI element" action and look at the UI element field. You'll see a hierarchical selector like Window[Title="Notepad"] > Document > Edit. This tells PAD: find a window titled "Notepad," then inside it find the Document area, then the Edit control. This is far more reliable than using screen coordinates.
If a selector is fragile (for example, it includes a window title that changes), you can click the selector to open the UI element editor and adjust which attributes PAD uses to match the element.
With your flow on the canvas, hit the Run button (the play triangle in the toolbar). Watch what happens: PAD will take control of your machine, open Notepad, type today's date into the header text, and save the file. Your mouse cursor will move on its own and text will appear. This is normal — during an attended run, you should keep your hands off the keyboard and mouse.
After the run completes, look at the bottom of the designer. You'll see a run log showing each action, whether it succeeded or failed, and how long it took. Green checkmarks mean success; red X marks mean something went wrong.
Tip
Use the "Step Into" mode (the step icon in the toolbar) when you're debugging. This runs one action at a time and pauses, letting you inspect variable values in the Variables panel after each step. It's invaluable for tracking down exactly where a flow goes wrong.
Check your Desktop — you should find a file called DailyReport.txt with the content "Daily Status Report - [today's date]." If you got that far, congratulations: you've just run your first desktop flow.
Desktop flows like this one become really powerful when they're connected to cloud-based automation. For example, imagine extending this to automate extraction from legacy applications — that's covered in depth in Desktop Flows: Automate Legacy Applications with RPA in Power Automate, which is the natural next step in this learning path.
Power Automate Desktop doesn't exist in isolation. It's one piece of a larger automation platform. Cloud-based Power Automate flows handle integrations between cloud services — SharePoint, Outlook, Teams, Dynamics, and hundreds of connectors. Desktop flows handle what the cloud can't reach: the Windows desktop, local files, and applications with no API.
The two work together through a mechanism called a "machine connection." When PAD is installed and signed in on a Windows machine, that machine appears in your Power Automate cloud account. A cloud flow can then include a "Run a flow built with Power Automate Desktop" action, which triggers a desktop flow on a registered machine. The cloud flow can pass input values to the desktop flow and receive output values back.
For example: a cloud flow might trigger every morning at 8 AM (using a scheduled trigger like those described in Power Automate Triggers: When to Start a Flow), run a desktop flow that extracts data from a legacy system, receive that data back as output, then store it in SharePoint and send a summary email. The desktop flow does the RPA work; the cloud flow orchestrates the bigger process.
Key insight
Think of desktop flows as the hands of your automation. Cloud flows are the brain and nervous system — they decide when to run, what to do with results, and how to connect to cloud services. The two work best together.
Now that you understand the core mechanics, complete this exercise to reinforce everything you've learned.
Scenario: You receive a daily report filename in a specific format (report_YYYYMMDD.txt), and your job is to open File Explorer, create a new folder named with today's date (e.g., 2025-01-15), and then create a blank text file inside it called ready_to_import.txt.
Steps to follow:
yyyy/MM/dd and store it in %TodayDate%.C:\Reports\%TodayDate%. (Create the C:\Reports directory manually first if it doesn't exist.)C:\Reports\%TodayDate%\ready_to_import.txt. Set the text content to Awaiting import - %TodayDate%.This exercise practices: variable creation, using variables inside paths and text, and chaining multiple actions together. If you get stuck on the date format, double-click the "Get current date" action — there's a dropdown that lets you choose a custom format string.
The flow fails because Notepad (or another app) opened in a different position than during recording. This usually means recorded actions used screen coordinates instead of UI element selectors. Open each "Click" action and check whether it's using a UI element or an x/y position. Switch to UI element selectors wherever possible.
Variables show as empty during a run.
Check that the action producing the variable ran before the action consuming it. Flows execute top to bottom in sequence. Also check that you spelled the variable name correctly — %CurrentDateTime% and %currentdatetime% are the same (PAD is case-insensitive for variables), but %CurrentDate% is a completely different variable.
The browser recorder doesn't capture web content. This almost always means the browser extension isn't enabled. Go to your browser's extension settings and confirm the Microsoft Power Automate extension is toggled on. In Chrome, also make sure "Allow access to file URLs" is enabled for the extension if you're testing on local HTML files.
The Save dialog doesn't appear when running the flow.
If you already have a file named DailyReport.txt from a previous run, Notepad may show a "Replace?" confirmation dialog instead of the standard Save dialog. Add a "Delete file" action at the start of your flow to clean up from previous runs, or change the filename to include today's date to avoid conflicts.
Actions run too fast for the target application. Some older applications are slow to respond. If PAD clicks a button before the app has finished loading, the click misses. Add a "Wait" action between steps, or use "Wait for UI element" to pause until a specific element appears before proceeding.
Warning
Avoid running desktop flows while you're actively using your machine for other work. Since the flow controls your mouse and keyboard, it will interrupt whatever you're doing. Schedule unattended runs outside of work hours, or use a dedicated machine or virtual machine for production desktop flows.
You've covered a lot of ground in this lesson. You installed Power Automate Desktop and configured browser extensions. You learned what RPA is and why it exists — not as a replacement for proper integrations, but as a bridge where no API exists. You toured the PAD designer and understood what each panel does. You used the recorder to capture a desktop interaction, then improved it by making the date dynamic and understanding how element selectors work. And you ran a real desktop flow and interpreted the results.
The key ideas to carry forward:
From here, the natural next step is building more complex logic into your desktop flows — conditional branching, loops that process multiple items, and error handling when something goes wrong. The Working with Conditions, Loops, and Variables in Power Automate lesson covers this logic layer in detail. When you're ready to tackle legacy application automation specifically — things like green-screen terminals and thick-client ERP systems — Desktop Flows: Automate Legacy Applications with RPA in Power Automate goes deep on that topic.
If you want to understand how to trigger your desktop flows automatically from a scheduled cloud flow or a business event, Power Automate Triggers: When to Start a Flow explains the full trigger model. And once your flows are running in production, you'll want to know how to diagnose failures — Using Power Automate Run History and Flow Checker to Debug and Fix Failing Flows is the place to go.
The boring, repetitive work on your desktop doesn't have to stay manual. You now have the foundation to start changing that.
Power Automate Desktop & RPA