Your first flow in 10 minutes

We will build a catalog page: it takes services from the CMS and draws them on the site. Along the way we cover the whole path you will later repeat for any page: create → assemble → save → publish.

You need access to the project admin and at least one content type with records. In the example it is the “Service” type (fields: name, price, description), but any of yours will do — a blog, products, staff.

Step 1. Create a flow

Open “Site” → the flows tab and hit “Create flow”.

An empty list: no flows yet

In the dialog, enter the Name — for example, “Service catalog”. The Slug — a short Latin name — is generated from the title (katalog-uslug); you can correct it manually. The Path is the page address on the site, for example /katalog-uslug.

The creation dialog

Hit “Create flow”. A row appears in the list with the “Draft” status — site visitors don’t see this flow yet.

Step 2. Look at the canvas

Click the row — the flow editor opens. The canvas has a single node so far, “Start” — the entry point every flow has. Everything else you will add yourself: action cards and the links between them.

A new flow on the canvas

Top right are the “Publish flow” and “Save draft” buttons. While you are assembling the diagram, use “Save draft”.

Step 3. Add the node that fetches data

Hit “Add node” → “Action”. A settings panel opens on the right. In the “Action type” field pick GraphQL, and in the “Query source” that appears — “Manual” (by default the node points to the query library, and we need a query of our own).

Fill in two fields:

  • Query — which records and which fields to take. In our example:

    query {
      services(limit: 50) {
        id
        title
        price
      }
    }
    

    (services is your content type’s address in the plural; a blog gets posts, products — products, and so on.)

  • Result key — the short name under which the data becomes available to the template. Enter catalog.

The GraphQL node settings panel

Step 4. Add the node that draws the page

Hit “Add node” → “Action” again — a new card appears, with the “Send email” action by default. In the settings panel on the right switch the “Action type” to “Page render” and specify the template — the file that turns the data into HTML (for example, katalog.liquid). Templates are edited in the “Files” tab (the “Site” section); they, like the flow, live with a draft — an edit reaches the site after publishing.

Connect the cards with a link: drag from the point under “Start” to the GraphQL card, then from GraphQL to “Page render”. If the cards landed crooked, the “Arrange cards top to bottom” button will straighten them into a tidy chain, and “Fit to screen” shows the whole diagram at once.

The result should be: Start → GraphQL → Page render.

The assembled catalog flow

Step 5. Save the draft and check the preview

Hit “Save draft”. Now hit “Preview” on the “Site” page (or open the address starting with preview- — it is in the hint). The preview shows the page the way visitors will see it — with your latest edits.

The catalog preview

Step 6. Publish

Happy with it? Return to the flow editor and hit “Publish flow”. Done: open https://your-address/katalog-uslug — the page is live.

The live site: the service catalog

Next time you won’t have to delete anything: edits to this flow go back into the draft, and the live page doesn’t change until you hit “Publish flow” again. This is described in the article “Draft, preview, and publish”.

If something didn’t work

Symptom What to check
The page returned an error instead of the catalog The type name in the query: it is plural (services, not service).
The cards are there but there is no data in them The data path in the template: the list sits under the result key and .data — for the key catalog that is catalog.data.services.
Edits aren’t visible on the live site Whether you hit “Publish flow” after the edits.
The preview has it, the site shows the old one The preview shows the draft, the site shows what is published. Publish the flow.

Next article: Action nodes: what each one does →