In this guide we build a flow that opens a web page, reads its main headline and sends it to your bell. It's four nodes and takes about 10 minutes. Along the way you'll learn everything you need for bigger flows: creating a flow, adding and connecting nodes, mapping a value with an expression, and reading the result of a test run.
What you build: Manual → Open URL → Extract → Notify
The website: https://example.com, a simple public page with one headline (h1).
Step 1: Create the flow
- In the left sidebar, open Studio › Flows.
- Press New flow (top right).
- In Name, type
My first flow. - Press Create.
The editor opens on an empty canvas with a big Add first step button.
The flow saves as you edit, for everyone who has it open. There's no Save button to remember.
Step 2: Add a trigger
A trigger decides when a flow starts. For now, we start it by hand.
- Press Add first step. The node picker opens.
- Type
manualin the search box. - Pick Manual ("Starts when you press Run").
A Manual card appears on the canvas. Its id is manual. Later nodes use ids like this to read each other's data.
Step 3: Open the page
- Hover the Manual card and press the + next to its output dot on the right. (Or select the card and press Tab.)
- Search
open urland pick Open URL. It's added already connected after Manual. - The node's details open. If they don't, double-click the card.
- In URL, type
https://example.com. - Leave Wait until on Content ready. That's enough for most pages.
- Close the details (
Escor ✕).
The card's id is open. Its output holds the page's url, title and HTTP status.
Step 4: Read the headline
- Press + on the Open URL card's Next dot.
- Search
extractand pick Extract ("Reads text, attributes or lists"). - Set Mode to Text.
- In Element, type
h1. That's the selector for the page's main heading. Guide 2, , shows how to find selectors on any site. - Leave Timeout (ms) at
10000. The node waits up to 10 seconds for the element to show.
Extract has two output dots: Next (it found the element) and Not found. Its output is { "value": "<the text>" }.
Step 5: Send it to your bell
- Press + on the Extract card's Next dot.
- Search
notifyand pick Notify. - Leave Send to on mooflair (bell).
- In Title, type
Headline of the day. - In Message, type
{{. The value picker opens with the data of every earlier node. - Pick Extract › value. The field now reads
{{ nodes.extract.output.value }}. - Leave Level on info.
Other ways to put in a value:
- Press the { } button in the field's corner, or type a word like
value: the list offers{{ nodes.extract.output.value }}. - After a run, drag
valuefrom the Input column on the left onto the field.
Your canvas now reads, left to right: Manual → Open URL → Extract → Notify. Press Tidy up in the canvas controls (bottom left) to line them up.
Step 6: Test it
- Press Test run (the flask icon, top right), or press
⌘Enter. - Watch the canvas: each card gets a ring (pulsing while it runs, green when done) and a clock with how long it took. The lines turn green and show how many items went through.
- The Logs window opens at the bottom. You'll see lines like
Opened https://example.com. - When it ends, the summary card shows something like
4 done. - Open the bell at the top. Your notification Headline of the day says
Example Domain.
Step 7: Read the result
Double-click Extract to open its details:
| Column | What you see |
|---|---|
| Input (left) | What came in: the output of Open URL (url, title, status) |
| Parameters (middle) | The fields you filled in |
| Output (right) | What it gave: { "value": "Example Domain" } |
Switch the Output view between Schema, Table and JSON. Under each field with an expression, a live preview shows what it gives with the data from this run.
Want to watch the browser? Open the Preview window (bottom area) during a run. It shows the real Chrome the flow drives.
When something goes wrong
| You see | What it means | What to do |
|---|---|---|
| ⚠ on a card, and the run won't start | A required field is empty | Open the node and fill the field marked required |
| Extract goes out through Not found | The selector matched nothing within the timeout | Check the selector (), or raise Timeout (ms) |
| A red ring on Open URL | The page didn't load (wrong address, site down) | Open the node, check URL, and read the error in Logs |
| The run shows Needs you | A step is set to ask you when it fails | Look at the Preview, fix it on the page, then press Retry |
After a fix, press Retry from failed. It starts from the node that failed and reuses what already worked.
Try this next
- Send it somewhere else: in Notify, set Send to to discord or slack and paste a webhook URL.
- Read a link instead of text: set Extract's Mode to Attribute, Element to
a, Attribute tohref. - Save a picture of the page: add a Screenshot node after Open URL.
Next: on any website.
FAQ
Why does the Message field show {{ nodes.extract.output.value }}?
That's an expression. When the flow runs, Mooflair puts in the value that the node with id extract gave. nodes.<id>.output reads any earlier node, and item reads the node right before. See .
What is a node's id?
A node's id is its name in expressions. It comes from the node type: Open URL is open, Extract is extract. A second node of the same type gets a number, like extract2. The value picker always writes the right id, so you don't need to remember them.
Do I need to publish before I can run it?
No. Test run and Run in the editor run your draft. You only publish when a trigger, like a schedule, should run the flow by itself (guide 6).
How do I run just one node?
Right-click it and pick Run this step. It uses the earlier nodes' output from the last run. Run from here runs from that node to the end.