Skip to main content

03 The logic behind automations

Written by Marie Xhauflair

"Unlock content for Belgium" is easy. "Unlock content for Belgium and Netherlands, but only once they finish onboarding, unless they are already a manager" is where most people get stuck.

This lesson gives you the logic to handle both.


What you will be able to do after this

  • Explain the three building blocks of automation logic

  • Use "and" and "or" conditions to refine when actions happen

  • Apply condition groups for more advanced setups

  • Recognise common actions automations can trigger


The three building blocks

  1. Event type: what starts the automation

  2. Condition: the rules that must be true before the action happens

  3. Action: what the system does

👀 Together, they read as one sentence

When the event happens, if the conditions are met, then perform the action.


Event type

An event type tells the platform when to check whether an automation should run.

✏️ Tip

As a beginner, use Check periodically. When you enable it, the actions run right away for everyone who meets the conditions at that moment, including users who met them long before the automation existed. After that the platform checks every hour who newly meets the conditions. Notifications work differently and do not depend on this setting, more on that later.

💡 Each action runs once per user

A user who meets the conditions gets the notification, the reset or the group change once, not every hour. If the user later stops meeting the conditions and meets them again, the action does not run a second time. Unlock and Lock actions, smart groups and programme access are the exception, as you can read below.


Condition

Conditions are the rules that decide when the action fires.

  • "And": every condition must be true.
    Example: the user is in Group A and has completed Activity X.

  • "Or": only one condition needs to be true.
    Example: the learner is in Group A or Group B.


Condition groups, for anything more complex

Sometimes a single "and" or "or" is not enough. Condition groups let you combine both in one automation.

Think of a condition group as parentheses around a set of rules, grouped before they combine with anything else.

Example: (User is in Group A or Group B) and (has completed Activity X).


Actions

The action is what happens once the event and conditions line up. A few examples:

  • Assigning a new activity

  • Adding a learner to a group

  • Unlocking new content

Actions always run last.

Two kinds of actions

Unlock and Lock (for activities, journeys, widgets and programmes) and Add user to smart group describe a state. The platform keeps them in line with the conditions and withdraws them when a user no longer meets them, for example after leaving the group or when a time window ends. Progress is kept and comes back together with the access.

All other actions (notify, to-do, badge, certificate, complete, reset, add or remove from a group, suspend) run once per user and are never undone by the automation. Expire activity and Repeat feedback survey are the two exceptions, because they run at every hourly check.

💡 Good to know about Lock and Add user to group

Lock activity: a lock wins over every unlock, also for an activity the user already completed. The activity shows as locked until you disable the lock automation.

Add user to group: this action only adds. Users stay in the group when they stop meeting the conditions or when you disable the automation, so use a smart group if membership should follow the conditions.


Read any automation as a sentence

When [trigger] and if [condition(s)] then [action(s)].

Useful shorthand for translating any automation into plain language, even for someone without technical background.


Recap

  • Event types start it, conditions refine it, actions complete it

  • "And" needs every condition true, "or" needs just one

  • Condition groups combine both for advanced logic

  • Actions are the final result: assigning content, unlocking items, or moving learners between groups


Did this answer your question?