The moves
In the portal: the atoms and sequences are built under Settings, then Sequences and Atoms. Several of these moves also need something outside that screen: a schedule and a condition on the journey action that delivers the card, and one setting on a surface. Each move says which.
What this page is for
The rest of the documentation tells you what each part does. This page tells you what to build with them.
There are ten of them. Each one is a way of getting somebody to do something rather than read about it, and each one is a named construct from the behaviour-change or clinical literature. The construct's own name comes first and our plain name sits beside it, so any move on this page is a term you can take to a clinician, or search, and find the literature it came from. The sources are named at the foot of the page.
| The construct | Our name for it | What it does |
|---|---|---|
| Implementation intentions | the if-then plan | They write what they will do and when, then meet it at the moment |
| Coping planning | the barrier plan | They name what will get in the way, and decide now what they will do about it |
| Tailoring | the read-back | Their own words become the next screen |
| Importance and confidence rulers | the ruler and the follow-up | Rate it, then say what would move it one point |
| Self-monitoring of behaviour | the daily record | A very short entry, most days, that they can see accumulate |
| Graded tasks | the ramp | Next week's level is agreed in advance and held to |
| Relapse prevention | after a miss | Something did not happen, so a different card goes out |
| Problem solving | the narrowing | They list many ideas, rank them, then plan one |
| Goal specificity | the goal check | A goal is not accepted until it is specific |
| Acceptance | sitting with it | They stay with a feeling instead of fixing it |
The first two belong together. An if-then plan says when and where you will do the thing. A coping plan says what you will do when something stops you. In the trial that separated them, only the pair changed behaviour, so build them as one pass rather than picking one.
Both are if-then sentences, and Gollwitzer's own work splits them by what the plan is for: starting something, protecting something already under way, or letting go of something that is failing. The if-then plan starts. The barrier plan protects. Knowing which one you are writing tells you when to deliver it, because a plan that starts something belongs at the cue and a plan that protects something belongs at the obstacle.
Each move produces a card. Where that card lands is the delivery's surface, which every move here assumes you have already chosen. See Anatomy of a surface.
Implementation intentions: the if-then plan
What it does. A participant writes the situation that trips them up and what they will do instead. Later, at that moment, the app shows them their own sentence.
If after work, then I'll walk at lunchtime instead. That's your plan. Nothing to fill in.
Why it is first on this page. Telling somebody they should walk more rarely changes what they do. Getting them to write down where and when they will walk, before the week starts, does. The evidence for it is large and well replicated. What it does not do on its own is carry somebody past the thing that stops them, which is why the next move on this page is the one that does.
How to build it.
| Atom | Type | Why this type |
|---|---|---|
| The trigger | single_select | You branch on this answer to choose which timed card they get, so it has to be one of a known set |
| The response | text | Their words, not yours |
| The plan | content | Quotes both back with autofill |
Set the schedule before you write the card. A plan shown once at enrolment gets read
and forgotten. The same plan brought back on the day and at the hour they chose is what
changes what they do. Set the delivery to weekly, write out the days, and write the hour they
chose into times.
Know what each half does. days decides which days the card is due. times sets when the
reminder fires. The card itself sits on their feed for the whole of a due day, so times
is what gets them to it at the right moment rather than a lock on the card.
Nothing reads an answer into a schedule. Give each option its own arrow out of the node,
and give each branch its own delivery with that option's hour written into times. See
Schedules and
Common patterns.
What breaks it. Making the trigger a free-text box. It reads better and it cannot be scheduled against, so the card arrives at a time nobody chose.
The card that brings the plan back on a later day needs different tokens, as the example above shows. See Autofill for the three ranges and when each one resolves.
Coping planning: the barrier plan
What it does. After somebody has made a plan, it asks what will get in the way, and has them decide now what they will do when it does.
When it hurts, what will you do instead?pre-filled, and they can change it Do the ten minute version rather than skipping it
If it hurts, then I'll do the ten minute version. If I'm short of time, then I'll walk to the shops instead. That is your plan. Nothing to fill in.
Why it is here, right after the if-then plan. It is the same construct family and the protecting half of it, in Gollwitzer's terms, rather than a separate idea.
In one cardiac rehabilitation study (Sniehotta and colleagues, 2006, N=211), people were assigned to action planning, action planning plus coping planning, or a control condition. The combined group reported more exercise at two months, and the action-planning-only group did not differ from control. That is one study with a self-reported outcome, and a null result in one arm is not evidence that the arm does nothing. Read it as a good reason to build the pair, not as a reason to drop planning on its own. Coping planning is the half most people leave out.
How to build it.
| Atom | Type | Why this type |
|---|---|---|
| What gets in the way | multi_select | You read this to decide which follow-ups to show, so it has to be a known set |
| What you will do instead | text, one per barrier | Their words, for the barriers they actually picked |
| The plan | content | Quotes the pairs back with autofill |
Offer a menu, not a blank box. The barriers people hit are much the same across a programme: it hurts, no time, forgetting, too many exercises, low mood, nobody to go with. Put those on the screen and let them add their own. A blank box asks somebody to recall barriers they have not thought about yet, and a short list gets a better answer in less time.
That list is illustrative rather than canonical. Build yours from what your own participants actually say.
Read the list with contains. A multi-answer question gives you a list, and
contains is how a condition reads one. Each follow-up carries a clause naming the
option it belongs to, so a participant answers only for the barriers they chose.
{ "field": "values.<the barrier atom>", "op": "contains", "value": "PAIN" }
What breaks it. Collecting the barriers and never bringing them back. A coping plan written once and never shown again on the day it applies is a survey. Deliver it the way you deliver the if-then plan, at the moment it is needed.
Tailoring: the read-back
What it does. Opens a screen with something the participant said earlier, then asks the next thing.
Why it works. Tailoring a message to something the person has actually told you beats a message written for nobody in particular, and it is the oldest well-evidenced idea in health communication. It is also the cheapest version of it available to you, because you write one card and every person sees their own version of it.
How to build it. One content atom, or the label of the next question, carrying a
token. See Autofill for the three ranges.
Put the token on its own line. A participant who skipped the earlier question leaves the token empty, so put it on its own line after a colon rather than in the middle of a clause.
Do it more than once in a sitting. An answer given on the first page can carry into every page after it.
Importance and confidence rulers
What it does. Asks how important a change is, and how confident they are they can make it, then asks the question that does the work: what would move that by one point?
The follow-up reads their own number back, so it cannot be answered in the abstract.
Why it works. Somebody writing down what would take them from a four to a five is naming the thing that has to change, in their own words, which is more use than the number.
How to build it.
| Atom | Type | Notes |
|---|---|---|
| How important | slider | 0 to 10 |
| How confident | slider | 0 to 10 |
| What would move it | text | Carries a condition |
Put a condition on the third atom. Write it to read the confidence slider from earlier in the same sitting, and show the follow-up only when the answer is under 10. Somebody who answers 10 goes straight past it.
{ "field": "values.<the confidence atom>", "op": "less_than", "value": 10 }
Inside a form, values.<atom> holds the answers given so far in this sitting.
Name the atom by its id here, not by its code. A code works in a token and matches nothing in an in-form condition, with no error either way, so take the id from the picker rather than retyping the code you used in the copy. See Conditions.
What breaks it. Asking the follow-up of everybody. Somebody who said ten and is then asked what would improve it reads the programme as not listening.
Self-monitoring of behaviour: the daily record
What it does. One very short entry, most days, that the participant can see building up behind them.
You made seven entries this week. They are all there whenever you want to look back.
That closing line counts entries. It does not count days in a row.
Why it works. Recording a behaviour tends to change it. The reviews find self-monitoring does most where it feeds back into something the person actually uses rather than sitting in a database, so make the record visible to them.
How to build it.
| Part | Setting |
|---|---|
| The entry | One or two atoms, no more. A slider and an optional text is usually enough |
| The cadence | weekly with every day written into days |
| The proof | Leave the sequence's tracking on tracked, which is already the default, so answers reach Progress. See Tracked and untracked |
Keep a daily entry to one or two atoms. It has to be short enough to do on a bad day, which in practice means one or two atoms. If you cannot cut it to two, it is a review rather than a record, and it belongs on a weekly cadence instead.
What breaks it. Presenting the record as an unbroken run. A broken run tells somebody they have failed at the thing you were asking them to keep doing, which is a reason to stop rather than a reason to start again. Nothing in the configuration counts streaks, so this one lives entirely in your copy: write about the entries they have made, never about days in a row.
Graded tasks: the ramp
What it does. Sets next week's level in advance, and holds it whatever the week feels like.
This week: fifteen minutes, four days. That is up from twelve.
Why it works. Graded activity runs on one rule: the level is set by the plan, not by how the day feels. A level agreed a week ahead and held to beats a level decided each morning, because deciding on the day means doing less whenever the day feels bad, and that is the pattern the programme is there to break.
Trials comparing graded activity against other forms of exercise have not settled which part of it does the work (Macedo and colleagues, 2010), so treat the pacing rule as the design principle the technique is built on rather than as a proven mechanism. Graded tasks is a named technique in the behaviour-change technique taxonomy, and it appears in the strong-evidence list of a 2023 umbrella review of behaviour-change techniques in digital health interventions, alongside prompts and cues, self-monitoring and feedback.
How to build it.
| Part | Setting |
|---|---|
| The step | One node per week, each one delivering that week's sequence |
| The move on | An arrow with secondsInNode at least 604800 |
| The delivery | weekly, with days written out |
Write the quota into the copy. The number for the week lives in that week's sequence, which is why the ramp is a node per week rather than one node repeating. It also means you can say the number in words, which is the part the participant reads.
Gate the arrow on time, not on performance. A ramp that waits for a good week has
stopped being a ramp. Use secondsInNode, which resets when they enter the node, and
keep any read of how the week went for a separate card that does not decide the level.
What breaks it. Letting today's symptoms set today's level. Write the flare rule into the content instead, as a step back to the previous level for a set number of days, so the rule is agreed in advance rather than negotiated each morning.
Relapse prevention: after a miss
What it does. Notices that something did not happen, and sends a different card because of it.
You have not made a first entry yet. It is two questions and about thirty seconds. Tomorrow morning is as good a place to start as any. Try it once
Why it is here. Recovery self-efficacy is somebody's belief that they can pick a programme back up after a break. The construct is the belief; what you build is the trigger and the card that speaks to it. Every other move on this page fires when a participant does something. This one fires when they do not, which is the point most programmes go quiet.
Recovery self-efficacy is the Health Action Process Approach's name for that belief, and it is the thing your copy is either building or damaging.
How to build it. A self-loop. One node the participant comes back into every time they log, and an arrow out of it that fires when enough time has passed with nothing new.
{ "field": "secondsInNode", "op": "at_least", "value": 259200 }
Time in the node is what measures the gap. secondsInNode resets when a participant
arrives at a node, so if they re-enter this node every time they log, three days in the
node means three days without a log. That reset is the whole mechanism, which is why this
one is a loop rather than a straight line. See
Common patterns pattern 8 for the loop and pattern 9 for
the routing.
not_exists is a different test, and it is worth having as well. It is true when
there is no answer to that atom at all, from any source, ever. That is the person who
never started, not the person who has stopped: once somebody has logged once, the answer
stays on file and not_exists will not be true again. Two arrows, two cards.
Write the "they did it" arrow first. It is the one that carries them back into the loop, and a node whose only arrow is the absence arrow leaves somebody stuck there when it never becomes true.
What breaks it. Writing it as a chase. A card that leads with how long it has been, or that asks them to account for themselves, is a reason to stop opening the app rather than a reason to come back.
Problem solving: the narrowing
What it does. Generate as many ideas as possible, rank them for how realistic they are, pick one, then plan the one.
"Put my shoes by the front door the night before" How realistic is that, this week?slider, 0 to 10
Your three most realistic: 1. Put my shoes by the front door the night before 2. Walk with the dog instead of driving to the park 3. Ask Sam to come on Tuesdays Which one are you doing this week? Put my shoes by the front door the night before Walk with the dog instead of driving to the park Ask Sam to come on Tuesdays
Why it works. People stuck on a problem generate one bad option and argue with it. The move separates producing ideas from judging them, which is what makes new ones appear.
How to build it. Four pages in one sequence:
- Three or four
textatoms, labelled to encourage quantity rather than quality - One
sliderper idea to rank them, each slider's label quoting that idea back with autofill - A
single_selectto choose, with the ideas quoted in the options themselves textatoms for what, where and when, with the chosen option quoted in the label
Every page after the first has to quote their own words back. Without it they are re-reading their ideas from memory and the ranking is guesswork.
The choice page is where this matters most, and it is the one people build wrong. An
option's label autofills, so the participant picks between the things they wrote. A list
reading "The first one, The second one, The third one" makes them hold the mapping in
their head at the exact moment they are deciding, which is where the move loses people.
Keep a number in the authored label (1. {{ values.IDEA_1 }}), because an option with no
answer behind it falls back to what you authored rather than rendering empty, and an empty
row in a list of three cannot be picked. See Autofill.
What breaks it. Asking for the plan on the same page as the ideas. The judging starts immediately and the list stops at two.
Goal specificity: the goal check
What it does. Takes a goal somebody has written and checks it is specific enough to act on before the programme accepts it.
Have another go, and put the missing part in.their own sentence is already in the box Get fitter
Why it works. A specific goal outperforms a vague one, and "get fitter" is not something anybody can do on a Tuesday.
How to build it. After the goal is written, a short page of boolean atoms, each one
a test: does it say what, does it say when, does it say how often, could somebody else
tell whether you did it. Then a text atom, shown by a condition when any test failed, handing the goal back for
a rewrite with autofill.
Mark every test required. An unanswered test reads as absent rather than as failed,
and a condition on an absent answer is false, so a skipped page would let the goal through
untested, which is the one outcome this move exists to prevent.
{ "any": [
{ "field": "values.<says what>", "op": "is", "value": false },
{ "field": "values.<says when>", "op": "is", "value": false }
] }
Give them their own sentence back to edit. Put it in the input's default rather
than telling them what was wrong with it.
What breaks it. Running the check and then accepting the goal anyway. If nothing happens when a test fails, the tests are a quiz.
Acceptance: sitting with it
What it does. Asks somebody to stay with an uncomfortable feeling for a short time rather than fix it.
What did you notice while you were sitting there?optional
Why it is here. Every other move on this page ends with the participant doing something. This one does not, and building it like the others ruins it.
How to build it.
| Part | Setting |
|---|---|
| The content | A content atom, then one short text reflection. A breathing atom can sit between them, but only where the copy frames it as something to do while the feeling is there, never as a way to make it go |
| Completion | Turn showCompletionState off, on a surface this card has to itself |
A green tick would teach the wrong thing here. It tells the participant the feeling was a task and they have now cleared it, which is the opposite of what the exercise teaches. The setting sits on the surface rather than the card, so every item on that surface loses its ring and tick together: give this one a surface of its own. A card they have opened still dims its content, which is all the acknowledgement this move needs. See Anatomy of a surface.
Anything that tells a participant what a symptom means is your clinician's to write, not ours. The worked example below deliberately says nothing about the cause of the soreness. Reassurance about what a symptom does or does not indicate belongs in copy your clinical lead has approved, with the escalation route you already use.
What breaks it. Congratulating them afterwards. Nothing was achieved and nothing was meant to be. And framing the breathing atom as a way to calm down, which turns the exercise into one more way of getting rid of the feeling.
Where these come from
Every heading on this page is a construct name from the behaviour-change or clinical literature, so each one is a search that returns evidence rather than marketing. Implementation intentions come from Gollwitzer's planning work, and coping planning from the Health Action Process Approach, which is also where recovery self-efficacy comes from. Importance and confidence rulers come from motivational interviewing. Self-monitoring of behaviour, graded tasks, problem solving and goal setting are all named techniques in the behaviour-change technique taxonomy. Goal specificity comes from goal-setting theory. Relapse prevention comes from the Marlatt lineage. Acceptance comes from the acceptance and commitment literature. Tailoring comes from the health communication literature on tailored interventions, and appears as its own feature in the persuasive systems design framework.
Two of them carry a specific result worth knowing before you build. Pairing implementation intentions with coping planning is what changed behaviour in the rehabilitation trial that separated them; planning alone did not. And in graded activity the pacing rule is the design principle the technique rests on, so the effort belongs in the progression logic rather than in the exercise library.
The sources. Implementation intentions come from Gollwitzer and Sheeran's meta-analytic work. Coping planning and recovery self-efficacy come from Schwarzer's Health Action Process Approach, and the cardiac rehabilitation study quoted above is Sniehotta, Scholz and Schwarzer, 2006. Importance and confidence rulers come from Miller and Rollnick on motivational interviewing. Self-monitoring of behaviour, graded tasks, problem solving and goal setting are named techniques in the behaviour-change technique taxonomy, Michie and colleagues. Goal specificity comes from Locke and Latham's goal-setting theory. Relapse prevention comes from Marlatt and Gordon. Acceptance comes from the acceptance and commitment literature, Hayes and colleagues. Tailoring comes from the health communication work on tailored interventions, Kreuter and colleagues. The graded-activity comparison is Macedo and colleagues, 2010, and the digital behaviour-change list is a 2023 umbrella review in Annals of Behavioral Medicine.
Take these as the door into the literature rather than as a reading list we have checked for you. Where a claim on this page matters to a decision you are making, read the paper.
What the platform adds is the delivery. The plan comes back at the moment it was written for, the barrier plan arrives on the day the barrier turns up, the record stays short enough to keep, an absence is something a journey can act on, and the words on the screen are the participant's own.
Next
- Autofill, which most of these depend on
- Conditions for showing an atom only when it is worth asking
- Schedules and recurrence for putting a card at the moment it matters
- Common patterns for the routing underneath all of this