Steps, required fields and gates

Configure every aspect of this stream: steps, documentation, required fields, validation rules, and access. This is where you define the process your records follow.

Adding a step

  1. 1

    Click "Add Step" at the top-right of the settings page.

  2. 2

    Enter a name and optional description for the step.

  3. 3

    The step is added at the end of the sequence.

Adding a notes field

  1. 1

    In the Fields panel, type a name for the field (e.g. "Site notes", "Call summary").

  2. 2

    Choose Notes (multi-line, with formatting) from the type dropdown, then click Add.

  3. 3

    Assign it to a step like any other field, and tick "required" if a record should not be able to leave that step until somebody has written the note.

  4. 4

    Use it for anything that needs more than one line: what happened on site, what the customer said, why an exception was made. A plain text field is one line and will hide the rest.

  5. 5

    On the record, the field is a resizable box with buttons for bold, *italic* and bullets, a Preview to check how it reads, and an Improve with AI button (1 token).

  6. 6

    In the records table a notes field is flattened to a single line and shortened, so the table stays readable. The full text is on the record, and CSV exports contain all of it.

Setting up automations

  1. 1

    Scroll to the Automations section and click "Add automation".

  2. 2

    Choose the step that triggers it ("When entering …") and what to do: Create a task or Send an email.

  3. 3

    For a task: set a title (you can use {{field_name}} to insert record values), who it's assigned to (the record's assignee, whoever triggered the move, or nobody), and an optional "due in N days".

  4. 4

    For an email: pick which field holds the recipient's address, and write a subject and body (both support placeholders). Each email sent burns 1 token.

  5. 5

    Placeholders. Click any chip under the form to insert one. Besides your own field names, there are five built-ins: {{record_link}} (a link that opens the record), {{reference}} (the record's reference number, or its id if the stream has none), {{record_id}}, {{step}} (the step just entered) and {{stream}}. Anything else, for example a field name with a typo, renders as empty text - so the app warns you about unrecognised placeholders as you type and again when you save. Use {{record_link}} rather than typing a link to a record yourself: it always points at the right place, whereas a hand-typed address can be wrong in ways nothing can detect. If you do include any link, a warning asks you to check it is a valid URL.

  6. 6

    Trigger the automation on the step AFTER the one where the fields get filled in. A record arrives at a step before anyone types into that step's fields, so a placeholder pointing at a field on the trigger step is always blank. If it is the recipient field, the email is not sent at all. The form warns you about both cases before you save; if it happens anyway, the record's Email tab shows a failed message explaining why. (This is the same reason a "notify me on submission" email must not sit on the first step: a record is created empty, so every placeholder comes out blank.)

  7. 7

    Save. The automation runs whenever a record enters that step - when a new record is created into it, by a manual advance, via the Inbound API, or when a quote acceptance or full invoice payment auto-advances it. CSV imports do not fire automations. Toggle it Active/Off, edit it (pencil icon - change the trigger step, action, recipient or wording in place), or delete it any time.

  8. 8

    Note that automations fire on every entry, including when a record is moved backwards and forwards again - each run sends another email and burns another token.

Reordering steps

  1. 1

    Each step card has up/down arrow buttons on the left side, next to the step number.

  2. 2

    Click the up arrow to move a step earlier in the sequence, or the down arrow to move it later.

  3. 3

    The first step's up arrow and the last step's down arrow are disabled.

  4. 4

    Changes take effect immediately - no separate save is needed.

Writing step documentation

  1. 1

    Click the Documentation icon on any step row to open the editor.

  2. 2

    Use the rich text editor to write instructions for this step.

  3. 3

    Explain what needs to happen before a record can leave this step.

  4. 4

    Save when done. The AI chatbot will use this documentation to answer process questions.

Suggesting documentation with AI

  1. 1

    While the documentation editor is open, click the "Suggest with AI" button (purple sparkles icon, next to Save) in the editor header.

  2. 2

    A loading spinner shows while Gemini drafts the content. The AI sees the step name, description, and all fields assigned to the step (with required/optional flags).

  3. 3

    The draft replaces the editor content with a structured outline: Purpose, Tasks (numbered with bullet sub-points referencing the field names), Gate to advance, and Notes.

  4. 4

    If the editor already has content, a confirmation prompt appears before the replacement happens.

  5. 5

    The new content auto-saves as soon as it's inserted - no need to click Save afterwards.

  6. 6

    Use Ctrl/Cmd+Z to undo the suggestion if you don't like it.

  7. 7

    If Gemini is busy ("high demand"), the request retries automatically up to 3 times before giving up. If all retries fail, an inline error message tells you to try again in a moment.

  8. 8

    The AI never invents specific names, dollar amounts, or dates - it refers to roles generically (e.g. "the project lead") so you can edit in your own specifics.

Setting required fields

  1. 1

    Click the Fields icon on a step to set which fields must be filled before a record can advance.

  2. 2

    Toggle fields on or off in the required fields panel.

  3. 3

    If a required field is empty when a user tries to move a record forward, the transition is blocked and the AI chatbot explains why.

Setting a step time target (SLA)

  1. 1

    Click the pencil icon on a step to open the step editor.

  2. 2

    In "Target days at this step" (under the description), enter how many days a record should spend at this step before it's considered overdue, e.g. 7 for a step that should clear within a week. Leave it blank for no target.

  3. 3

    Save. The step card shows a "target Nd" badge when a target is set.

  4. 4

    Records that sit at the step longer than the target are flagged as overdue: a red chip appears on the record's page ("Nd here · target Md"), and the Lake's Analytics tab shows a "Past step target" count, turns the step's funnel bar red when its average exceeds the target, and badges overdue records in the most-stuck table.

  5. 5

    Owners and admins also receive a weekly digest email (Monday morning) listing records past their targets and records idle 90+ days. It's only sent when there's something to flag, and each person can turn it off with the email notifications preference on My Account (/account).

Overdue reminders (who gets told a record is late)

  1. 1

    As well as the weekly digest, Streams sends a per-record reminder the morning after a record goes past its step's target days. Where the digest is a management overview, this is the nudge to the person who can actually move the job on.

  2. 2

    It goes to the record's assigned user. If the record has nobody assigned, it goes to the organisation's owners and admins instead, worded so they know they are getting it because it is unassigned. That way a late record is never simply unwatched.

  3. 3

    Someone with several late records gets one email listing them all, not one email each.

  4. 4

    Each record triggers one reminder per step, not one a day. Once a reminder has gone out, that record stays quiet until it moves to a different step, at which point the next step's target starts the clock again. Nobody gets nagged daily.

  5. 5

    Anyone who has turned off email notifications on My Account (/account) is skipped.

  6. 6

    "Overdue" means exactly what it means everywhere else in the app: days at the current step exceed that step's target days. It is not the record's total age. A step with no target can never make a record overdue, so leaving targets blank turns reminders off for that step.

  7. 7

    Reminders need nothing configured beyond a step target. Set "Target days at this step" and reminders follow.

Adding stream fields

  1. 1

    Scroll to the "Stream Fields" section at the top of the settings page.

  2. 2

    Click "Add Field" and choose a field type (text, number, date, dropdown, etc.).

  3. 3

    Give the field a name. It becomes available across all steps in this stream.

  4. 4

    Fields can be marked as required at specific steps.

Using a User field (pick someone in your organisation)

  1. 1

    Add a field with the type User (someone in your organisation). On a record it shows as a dropdown of everyone in your organisation rather than a text box, so nobody has to type a name and spell it three different ways.

  2. 2

    Use it for things like "reviewed by", "assigned technician" or "approved by". It is separate from the record's own Assigned to setting in the Details card: a record has exactly one assignee, but it can have as many User fields as your process needs.

  3. 3

    The list stays current on its own. Add someone to your organisation and they appear in every User field immediately; you never edit an options list the way you do for a dropdown.

  4. 4

    If the person you picked is later removed from the organisation, the record keeps showing who it was rather than silently blanking, and you can pick someone else whenever you like.

  5. 5

    An automation's recipient field can point at a User field, which is the easy way to email whoever is named on the record ("email the reviewer when this reaches step 3"). Streams looks up that person's real email address when it sends.

  6. 6

    On import, put the person's email address or their exact name in the CSV column. Rows naming someone who is not in your organisation are reported as errors rather than imported with a bad value.

  7. 7

    Exports, the records list, the Lake and {{field}} placeholders all show the person's name, never an internal ID.

Using a Contact field (pick someone from your Contacts)

  1. 1

    A contact field reads from your Contacts: one stream in the organisation marked with "Use this stream for Contacts". If you have not set one up, you do not need to do anything first - the Fields panel warns you as you pick the type, and saving the field creates a Contacts stream and marks it as yours for you. To choose the stream yourself instead, use the Contacts template on /streams, or switch the toggle on for a stream of customers you already have.

  2. 2

    In this stream's Fields panel, add a field with the type Contact (someone in your Contacts). Name it for the role it plays on the record - "Customer", "Site contact", "Referred by".

  3. 3

    On a record it shows as a search box, not a text box. Type a few letters, pick the person, and this record now points at that contact.

  4. 4

    Because it is a link and not a copy, correcting a contact's phone number or email on the contact record fixes it for every record that names them from then on. You fix it once.

  5. 5

    A record can have as many contact fields as the process needs, and each contact's own page lists every record that names them.

  6. 6

    An automation's email recipient can point at a contact field: Streams reads the email address off the contact when it sends, so "email the customer" needs no duplicate address field on this stream. SMS still needs a phone field on the record; a contact's number is not used for SMS yet.

  7. 7

    On import, put the contact's exact name or their email address in the CSV column. Rows naming somebody who is not in Contacts are reported as errors rather than imported pointing at nothing.

  8. 8

    Exports, the records list, the Lake and {{field}} placeholders all show the contact's name, never an internal ID.

Making this stream your Contacts

  1. 1

    Switch on "Use this stream for Contacts". Its records become the people and companies that Contact fields on every other stream can point at.

  2. 2

    There is only ever one Contacts stream per organisation. If another stream holds it, the toggle names that stream and turning this on moves it here. Contact fields already filled in keep pointing at the records they already name.

  3. 3

    With it on, choose "Which field is the contact's name" - usually Name. That is the text other records show when they name a contact.

  4. 4

    Changing that setting affects contacts picked from then on. Records saved earlier keep the name they were given until that field is saved again, the same way a renamed user behaves.

  5. 5

    Contacts are ordinary records, so member access, required fields, step documentation and exports all work here exactly as they do anywhere else.

Requiring a plugin before a record can move on

  1. 1

    Open a step for editing and tick the plugin you want (Email, SMS, WhatsApp, OCR, Quotes or Invoicing). A "required to advance" box appears next to it.

  2. 2

    Tick that box and records cannot leave this step until the plugin has actually been used on them. Use it to stop a job being marked done before the customer was told, or before the invoice went out.

  3. 3

    Quotes and Invoicing then offer a choice of what counts as done, because "sent" and "settled" are different promises:

Renaming a stream field

  1. 1

    In the Stream Fields section, click the field name (e.g. titel).

  2. 2

    An inline editor appears - type the new name (lowercase letters, numbers, underscores; spaces are converted to underscores).

  3. 3

    Press Enter or click Save. The rename cascades automatically: every record's metadata, the JSONB snapshot, step field assignments, and any {{token}} placeholders inside email/SMS templates on this stream's steps are all updated in one transaction. The change is recorded in the audit log.

  4. 4

    Press Esc or click Cancel to abandon the edit.

  5. 5

    You cannot rename a field to a name that already exists on this stream.

Importing fields from another stream

  1. 1

    In the Stream Fields section, click "Use fields from another stream".

  2. 2

    Select the source stream from the dropdown.

  3. 3

    Fields already present in this stream are greyed out. Check the fields you want to import.

  4. 4

    Click Import. The selected fields are copied to this stream with their type and options.

Setting up record references (Job #)

  1. 1

    Record references are on by default for every stream; new records are auto-numbered using the first 3 letters of the stream name as the prefix (e.g. a "Billing" stream issues BIL0001, BIL0002, …). You only need this section to customise or turn it off.

  2. 2

    Scroll to the Record reference section on the settings page. The Enable record references for this stream box is ticked by default; untick it to turn references off (records then show their plain ID).

  3. 3

    Set the Label (the column header, e.g. "Job #", "Quote #", "SO #"), the Prefix (defaults to the 3-letter stream code; change it to anything, e.g. J or BILL-), the Starting number (e.g. 1 or 10000), and the Number padding (how many digits to zero-pad to, e.g. 4 → 0001).

  4. 4

    A live Preview shows the next couple of references that will be issued (e.g. J0001, J0002).

  5. 5

    Click Save reference settings. From then on, every new record in this stream is given the next number automatically, shown in the records table and on the record's header.

  6. 6

    Existing records keep their previous identifier; changing the starting number only affects records created afterwards, and the counter never goes backwards (so references are never reused).

Allowing linked copies into this stream

  1. 1

    The Linked copies card controls whether records from other streams can be copied INTO this stream using the "Copy & link" mode of Move to stream.

  2. 2

    It is on by default. When on, a record in another stream can be copied here; the original stays in its stream for history and a new linked record starts in this stream with the same field values.

  3. 3

    Both records show their connection in the Details card ("Copied from" on the copy, "Linked records" on the source).

  4. 4

    Turn the toggle off if records should only ever be created directly in this stream; the Copy & link option then disappears for this stream (records can still be plainly moved here).

Making this a sub-stream (claims, variations, defects)

  1. 1

    Use a sub-stream when records here are raised against a record in another stream rather than standing on their own: progress claims against a build, variations against a contract, defects against a handover.

  2. 2

    Reach for it when the number varies per job. A fixed row of steps can only model a fixed schedule, so one build with three claims and another with seven do not fit. Sub-records have no fixed count.

  3. 3

    In the Sub-stream card, pick the parent stream. Choose "Not a sub-stream" to undo it at any time.

  4. 4

    From then on, every record in the parent stream shows a panel listing what has been raised against it, with a New button to raise another. Each one is a full record here, so it follows these steps, these required fields and these gates: submitted, assessed, approved, paid.

  5. 5

    The parent stays live. It can still be edited and advanced through its own steps however many claims are against it. That is the difference from Copy & link, which freezes the record it copies from.

  6. 6

    The panel needs no extra setup. Its columns are this stream's records-table columns (the cog at the end of the records table header), and its totals are this stream's dashboard field summaries set to Sum (the cog on the dashboard). Set the Amount field to Sum here and the parent panel shows the total claimed against each job.

  7. 7

    Archived sub-records drop out of the panel and out of the total. A withdrawn claim should not quietly count towards a contract.

  8. 8

    One level deep. A stream that is already a sub-stream cannot be picked as a parent, and a stream that already has sub-streams cannot become one.

  9. 9

    A record with live sub-records against it cannot be moved to another stream. Archive them first if it genuinely has to move.

Restricting members to their own records

  1. 1

    The Members see only their own records card controls record visibility for member-role users in this stream. It is off by default.

  2. 2

    Turn it on when each location or team has its own login and shouldn't see the others' records - for example, one login per store, where each store submits maintenance requests and only sees its own.

  3. 3

    When on, members with access to this stream only see records they created: in the stream's table, dashboard counts and search, the master Records list, the Lake's Ask and Analytics, the Timeline, and direct record links. Owners and admins always see every record.

  4. 4

    Pair it with an automation ("Send an email") on the step submitters advance INTO, so an admin is alerted whenever any member submits a new record.

  5. 5

    Records created before this feature have no recorded creator, so members won't see them while the toggle is on. New records always record their creator.

Controlling which steps members can use (Member access)

  1. 1

    Open the step in the editor (pencil icon) and find the Member access setting. Every step offers three choices, and "Members can work on this step" is the default, so nothing changes until you pick another.

  2. 2

    Members can work on this step - they can fill in its fields, start a record there, and move records on. Use it for the step where your team logs requests.

  3. 3

    Members can view but not change it - they can open a record sitting there and read what your admins entered, so they can follow progress, but they cannot edit *that step*, move the record on, reassign it, or archive it. The step shows a "members view only" badge in the step list, and members see a blue banner explaining the record is with their administrators. Note this restricts the step, not the record: a member can still go back to an earlier step they *are* allowed to work on and correct it, which is how a wrong entry gets fixed without an admin. The record stays where it is when they do.

  4. 4

    Members cannot see this step - the step disappears from their progress tracker and their step browser completely, its name is never shown, and its field values are never rendered. Use it for stages holding information they shouldn't see, such as costs, contractor rates or internal notes. The step shows a "hidden from members" badge.

  5. 5

    The typical setup is one editable step at the front, view-only steps behind it, and any sensitive stage hidden: a store or team fills in and submits the request, then follows its progress while head office does the triaging, scheduling and closing.

  6. 6

    Members are also stopped from picking a restricted step when creating a record, so they cannot start halfway down the stream and skip the earlier steps' required fields.

  7. 7

    When a record is sitting on a hidden step, members still see it in their lists and can open it, but no step is marked as current and the page says it is at "a stage handled by your administrators" instead of naming the step. They are never left wondering where their request went.

  8. 8

    Leaving a later step editable hands control back at that point - handy for a final "confirm the work is finished" step the submitter completes themselves.

  9. 9

    "Members can work on this step" covers step work only: filling in fields, starting a record and advancing it. Re-assigning a record, archiving it and moving it to another stream stay owner/admin actions at every step, so the Details card that holds those controls is not shown to member logins on any record.

  10. 10

    Owners and admins are never affected by any of these settings.

Auto-filling a field with the person's name (special fields)

  1. 1

    In the Fields panel, find a text field and click the small auto-fill label next to its type badge.

  2. 2

    It switches to an "auto: creator's name" badge. From then on, every new record in this stream has that field filled in with the display name of whoever created it.

  3. 3

    Use it for fields like "Reported by" or "Requested by", so the person submitting doesn't have to type their own name.

  4. 4

    The value is written the moment the record is created, which means an automation email on that step can include it (for example {{reported_by}} in the alert to head office).

  5. 5

    It stays editable. If several people share one login, e.g. one login per store, the name filled in is the login's name, so whoever submits can replace it with their own.

  6. 6

    Click the badge again to turn it off. Existing records keep whatever value they already have.

  7. 7

    Change someone's display name on /settings/users if the auto-filled name isn't the one you want to see.

Deleting or editing a step

  1. 1

    Click the pencil icon on a step to rename or edit its description.

  2. 2

    Click the trash icon to delete a step. You cannot delete a step that has records currently on it.

  3. 3

    Move any records off the step first, then delete.

Improving step name + description with AI

  1. 1

    While editing a step, click the "Improve with AI" button in the top-right of the Name field.

  2. 2

    Within a second or two, a purple suggestion card appears below the Description field with a cleaned-up name and a polished one-sentence description.

  3. 3

    Click Accept to overwrite the form fields with the AI's version, or Discard to dismiss the suggestion without changing anything.

  4. 4

    The button is disabled when both the name and description are empty - type something first.

  5. 5

    The AI follows a fixed style: Title Case 2-5 word name, single-sentence description, no invented specifics (tools, time windows, stakeholders) that you didn't already imply.

What people ask about this

  • How do I add required fields to a step?
  • What should I write in step documentation?
  • How do I reorder steps?
  • Why is the delete button disabled on a step?
  • How does the AI use my step documentation?
  • How do I copy fields from another stream?
  • How do I add a contact field?
  • How do I make this stream my Contacts stream?
  • How do I rename a field?
  • What does "Improve with AI" do on a step?
  • How do I get AI to draft documentation for a step?
  • What does "Suggest with AI" do on step documentation?
  • How do I give records a Job number?
  • How do I set up record references?
  • What does the Linked copies toggle do?
  • How do I stop records being copied into this stream?
  • How do I track progress claims against a job?
  • How do I handle a variable number of payments per contract?
  • What is a sub-stream and when should I use one?
  • How do I show a total of everything claimed against a record?
  • Can a sub-stream have sub-streams of its own?
  • How do I stop members seeing each other's records?
  • How do I set up a login per store or location?
  • Can an automation email an admin when a record is submitted?
  • How do I put a link to the record in an automation email?
  • Why is a field blank in my automation email?
  • Why did my automation email not send?
  • Can I edit an automation instead of deleting it?

Inside the app there is an assistant that answers these from your own written process, not just from ours.

Other guides

All guides

Start with the free plan

Two users, 500 records and every feature switched on. No credit card, and your data stays in Australia.

Get started free