Skip to content
MintGuides

Build

Automations

When a record is created, changed, deleted or reaches a date: notify people, send an email, call a webhook, update or create a record.

Open Automations
On this page

What an automation is

Build → Automations, inside a project. For roles with Build.

An automation reads like a sentence: when a Deal is changed and its Status is Won, notify Gus, update its Client and add a Task. It runs on its own every time a record of that page is saved — in the panel, through your public API or your site’s checkout — so nobody has to remember to do it.

It runs after the record is saved, in the background. The save never waits for it and never fails because of it; if an action can’t be done, the run is marked failed and Runs says why. If the record mustn’t save without the other change — taking stock off a product, marking an invoice paid — use a Linked Relationship instead.

Each automation has its own on/off switch on the list, and shows how its last run went.

When it runs

A page, and whether its records are created, changed or deleted — or reach a date (below).

  • Created — a new record, from the form, an import, the API or another automation.
  • Changed — tick fields under it to run only when one of them changes (Status), not on every edit.
  • Deleted — the record is gone, but its last values can still be used (an email saying which order was cancelled).

When a date is reached

Run on a date of each record — or so long before or after it: a membership’s renewal, a discount’s end, a task’s due date.

Tick reaches a date under When, pick the date field, and how long before or after it (0 is on the date itself): 1 day before a Membership’s Renews on. It runs on its own — not together with created, changed or deleted; make a second automation for those.

  • Each record runs once for its date. MINT checks every minute, so it runs within a minute of the time.
  • Saving a record moves its run to its new date. Clearing the date, or deleting the record, drops it.
  • A date that has already passed when the record is saved doesn’t run — nothing runs for the past.
  • The conditions under Only if are checked when it runs, on the record as it is then: an automation that expires active memberships leaves one that was paused meanwhile alone.
  • Switched off, its waiting runs are dropped; switched on again, every record whose date is still ahead gets one. A new automation does the same for the records already there.
  • A date without a time counts from the start of that day. Its runs show in Runs like any other, with the event “reaches a date”.

Only if

Conditions on the record, as it was saved.

Add conditions to run only sometimes — Status is Won, Amount is more than 1000. All of them must hold, or switch to any one. Without conditions it runs every time.

What it does

Up to ten actions, in order. If one fails, the rest don’t run.

ActionWhat it does
Notify peopleA notification in the panel for the people you pick in the project, or whoever made the change. It opens the record.
Send an emailThrough your organization’s own email server (Organization → Email). To people in the project, the address in a field — the record’s own Email, or one of a record it links to (a bill’s Customer → Email) — or up to 10 addresses you type. It goes out in the project’s email design, or one you pick (Email → How your emails look). Attach PDFs adds up to 3 of the page’s published PDF templates, printed for the record — a bill’s invoice to its customer. (A template that’s removed or back to draft stops the email, and Runs says why.)
Call a webhookPOSTs the record as JSON to your server, signed with the automation’s secret in x-mint-signature — checked the same way as project webhooks.
Update a recordSets fields on this record, or on the record it links to (a Deal’s Client) — to a value, a copy of one of its fields, or empty.
Update the records that pick this oneSets fields on every record of another page that picks this one — all the Products in a Category, a Client’s Projects. Choose the page, the field that picks this record, and (optionally) conditions on those records: only the ones where Status is Open. Each one is saved like an edit, so its calculated fields follow, and a run writes up to 5,000 of them in batches.
Create a recordAdds a record to another page — a Task for every won Deal. “This Deal itself” links the new record back.
Changes made by an automation show in History as “Automation “Won deal” updated …”, and can start other automations in turn.

Updating the records that pick this one

Hand a change down: when a Category’s tax changes, its Products follow.

  • Records on — the page whose records point at this one (it lists only the pages that have such a field).
  • That pick this record in — the field that points here, when the page has more than one.
  • Only where — optional conditions on those records, checked before each is changed.
  • Set — the fields to change, to a value or a copy of a field of this record. Calculated fields can’t be set, but they are worked out again.

A record that already holds the new values isn’t touched, so it leaves nothing in History. The run says “Updated 23 Products that pick this one”. Try it on a record first: it counts what would change.

System automations

Installed by your store; on or off is yours, the rest isn’t.

An online store comes with automations that keep its taxes and prices in step — a Category’s tax going to its Products, a Product taking its Category’s tax, a tax rate’s change repricing what uses it. They are listed under System automations with a System tag. You can switch each on or off and see what it did in Runs; you can’t edit or delete one. If you need something different, switch it off and make an automation of your own.

Filling in the record

Any text — a title, a subject, a value to set — can carry the record’s fields.

Write a field’s key in double braces, or pick it from Insert a field: {{title}} was won becomes “Big order was won”. A linked record shows by its name, a date by its day.

A linked record’s other details work too: {{member.email}} or {{member.phone}} on a Task that picks a Member gives that member’s email or phone. Insert a field lists them right under the link, as Member › Name, Member › Email and so on (the click menu in an email has a search box). If a field picks several records, their details are joined with commas. One level only — a member’s company’s address can’t be reached this way.

AlsoBecomes
{{link}}The record’s address in the panel
{{page}}The page’s name — Deal
{{project}}The project’s name
{{actor}}Who saved the record
{{event}}created, changed or deleted
{{today}}Today’s date

A name that isn’t a field is refused when you save, under the box it’s in.

Writing, seeing and resending emails

The email’s message is plain text with a little formatting, and every email an automation sends is kept so you can see it.

Writing. Click anywhere in the message: the cursor goes where you clicked and a small menu opens there — Insert a field puts one in at the cursor (or over the words you selected), and B, I and the list button make the selected words bold, italic or a bulleted list. Right-click opens the same menu; ⌘B / Ctrl+B and ⌘I / Ctrl+I work without it, and typing closes it. The subject’s Insert a field also puts the field where the cursor is. The AI connected to your project can write and change automations for you too — see Connect AI.

You writeThe email shows
**thank you**thank you
*really*really
- One cakeA bulleted line — lines starting with “- ” in a row make one list
[Unsubscribe](https://example.com/unsubscribe?code={{code}})A link: the words in square brackets, going to the address in round ones — the address may hold fields
A blank lineA new paragraph

Preview, under the message, shows how it reads, with each field as a grey chip. A value from the record is never treated as formatting — a name with a * in it stays as it is.

Seeing them. Open a run in Runs: the emails it sent are listed under it, each with whether it went. The eye opens the email as it went out — to whom, the subject, the files it carried, the message in your email design (or as plain text), and why it failed if it did. Project → Email’s What was sent has the same eye.

Resending. A failed email has Resend, there and in the eye’s window. It sends the same subject, message and files again through the project’s email account as it is now — fix the address’s mailbox or connect an account first, then resend. The new attempt is listed as “A resend”; the failed one shows Resent (or Resend failed, and you can try again). An email that went can’t be resent, and resends count toward the 300 a day.

When one of several addresses fails, the others still get theirs; the run is marked failed and the next actions don’t run. An email with no account to go through is listed as failed too, so it can be resent once one is connected.

Trying one on a record

The flask button on the list.

Pick a record and see what each action would do: who’d be notified or emailed, what would be updated or added — and whether the conditions hold for it. Nothing is sent, changed or added.

Runs

The Runs tab: every run in the last 30 days.

Each run says which automation ran on which record, who saved it, and each action’s result. A failed run shows why — “Set up your email first”, “your server answered 500”. Filter by automation or result. A run that sent emails lists them, with the eye and Resend (see emails).

Limits and loops

So one mistake can’t run away.

  • An automation’s change can start another automation — three deep at most. The fourth is skipped, and Runs says so.
  • The same automation never runs twice on the same record in one chain.
  • A project runs up to 500 automations an hour and sends up to 300 automation emails a day.
  • Webhooks can’t call addresses inside private networks.