---
title: 'Behavior Models'
source: 'https://academia.sh/en/courses/user-experience/behavior-models'
course: 'User Experience and Behavior Design'
language: en
updated: '2026-08-19T05:19:57+00:00'
license: 'CC BY-SA 4.0'
---

# Behavior Models

That motivation, ability, and a trigger must hold at the same time for a behavior to occur; computing the effect of two types of intervention on a population; and why the motivation gain fades.

The previous lesson reduced the borrowing flow's load from thirteen decision points to
six and pulled the time from 7.44 seconds to 3.32 seconds. That is a gain that makes
things easier for the user who **enters** the flow. The unanswered question is this: why
would the user enter the flow at all? Most catalog users open a record's detail, read
it, and leave without borrowing. Even when the load is low, the behavior may not occur.

This lesson establishes which conditions must hold at the same time for a behavior to
occur, and computes which of these conditions is worth intervening on to bring more
users to act.

## Three Conditions Are Required at Once

A widely used **behavior model** holds that a behavior occurs at the intersection of
three conditions.

**Motivation** is the degree to which the user wants to perform that behavior. The
motivation to borrow a record in the catalog comes from the user's need for that book;
the interface does not create this need, at most it makes it visible.

**Ability** is the ease of performing the behavior. Ability is not the user's skill
alone; it is determined together with the task's cost. The same user has lower ability
in a flow with thirteen decision points than in a flow with six.

A **trigger** is the signal that starts the behavior at that moment. The Borrow button
on the record detail is a trigger; so is a message notifying the user that a book's due
date is approaching.

The three combine **multiplicatively**: if one is zero, the behavior does not happen. A
user with high motivation who does not see the trigger does not borrow. A user who sees
the trigger but lacks the ability to complete the flow does not borrow either. This
means an observed "low conversion" can have at least three different causes, and which
one it is cannot be found by guessing.

## The Effect of Two Interventions on the Population

The computation below builds a population of two thousand users. Each user has a
motivation and a base skill. Ability is a quantity determined jointly by skill and flow
cost: as cost rises, ability falls. The behavior occurs when the product of motivation
and ability clears a threshold and the trigger is seen.

Two interventions are compared: raising motivation by fifteen points (a text that makes
the benefit of borrowing visible) and reducing the flow from thirteen decisions to six.

```js
// behavior.mjs — computing the motivation, ability, and trigger framework over a population

function generator(seed) {
  let s = seed >>> 0;
  return () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 4294967296; };
}

const POPULATION = 2000;
const THRESHOLD = 20;          // motivation x ability must clear this threshold

// Population: each user's motivation (0-100) and base skill (0.2-1.0)
function population() {
  const rnd = generator(19770401);
  const people = [];
  for (let i = 0; i < POPULATION; i++) {
    people.push({ motivation: rnd() * 100, skill: 0.2 + rnd() * 0.8 });
  }
  return people;
}

// Flow cost pulls ability down; cost is the decision time from lesson 02.
const ability = (skill, cost) => skill * (4 / (4 + cost));

function rate(people, { cost, motivationBoost = 0, triggerRate = 1 }) {
  let acted = 0;
  for (const p of people) {
    const m = Math.min(100, p.motivation + motivationBoost);
    if (m * ability(p.skill, cost) >= THRESHOLD) acted++;
  }
  return (acted / people.length) * triggerRate * 100;
}

const PEOPLE = population();
const FULL_FLOW = 7.44;      // lesson 02: flow with 13 decision points
const REDUCED = 3.32;        // lesson 02: flow with 6 decision points

console.log("intervention                          flow cost  acted");
const baseline = rate(PEOPLE, { cost: FULL_FLOW });
console.log(`none (baseline)                           ${FULL_FLOW.toFixed(2)} s   ${baseline.toFixed(1).padStart(6)} %`);
const motivated = rate(PEOPLE, { cost: FULL_FLOW, motivationBoost: 15 });
console.log(`motivation +15                            ${FULL_FLOW.toFixed(2)} s   ${motivated.toFixed(1).padStart(6)} %`);
const abled = rate(PEOPLE, { cost: REDUCED });
console.log(`flow reduced from 13 to 6 decisions       ${REDUCED.toFixed(2)} s   ${abled.toFixed(1).padStart(6)} %`);
const both = rate(PEOPLE, { cost: REDUCED, motivationBoost: 15 });
console.log(`both together                             ${REDUCED.toFixed(2)} s   ${both.toFixed(1).padStart(6)} %`);

// Trigger: if the user does not see the call to action at that moment, the behavior does not occur
console.log("\ntrigger visibility       acted (reduced flow)");
for (const t of [0.3, 0.6, 0.9, 1.0]) {
  console.log(`${(t * 100).toFixed(0).padStart(21)} %  ${rate(PEOPLE, { cost: REDUCED, triggerRate: t }).toFixed(1).padStart(6)} %`);
}

// Which intervention moves whom: split the population into four zones
const zone = (p) => (p.motivation >= 50 ? "high motivation" : "low motivation") +
  (p.skill >= 0.6 ? " / high skill" : " / low skill");
const ZONES = ["high motivation / high skill", "high motivation / low skill",
  "low motivation / high skill", "low motivation / low skill"];

function zoneRates(settings) {
  const count = {}, total = {};
  for (const z of ZONES) { count[z] = 0; total[z] = 0; }
  for (const p of PEOPLE) {
    const z = zone(p);
    total[z]++;
    const m = Math.min(100, p.motivation + (settings.motivationBoost ?? 0));
    if (m * ability(p.skill, settings.cost) >= THRESHOLD) count[z]++;
  }
  return ZONES.map((z) => ({ z, rate: (count[z] / total[z]) * 100, n: total[z] }));
}

console.log("\nzone                                 people  baseline  motivation+15  flow shortening");
const z0 = zoneRates({ cost: FULL_FLOW });
const z1 = zoneRates({ cost: FULL_FLOW, motivationBoost: 15 });
const z2 = zoneRates({ cost: REDUCED });
for (let i = 0; i < ZONES.length; i++) {
  console.log(
    `${ZONES[i].padEnd(36)} ${String(z0[i].n).padStart(5)} ${(z0[i].rate.toFixed(1) + " %").padStart(8)}` +
    ` ${(z1[i].rate.toFixed(1) + " %").padStart(14)} ${(z2[i].rate.toFixed(1) + " %").padStart(14)}`
  );
}

// Second visit: the motivation boost fades, the flow shortening remains
console.log("\nvisit  motivation intervention  flow shortening");
for (const v of [1, 2, 3]) {
  const boost = v === 1 ? 15 : 0;              // the persuasive text is effective only on the first visit
  const m = rate(PEOPLE, { cost: FULL_FLOW, motivationBoost: boost });
  const a = rate(PEOPLE, { cost: REDUCED });
  console.log(`${String(v).padStart(5)}  ${(m.toFixed(1) + " %").padStart(20)}  ${(a.toFixed(1) + " %").padStart(15)}`);
}

// Threshold curve: the minimum motivation required for a behavior to occur
console.log("\nability  minimum motivation required");
for (const sk of [0.2, 0.3, 0.4, 0.6, 0.8, 1.0]) {
  const full = THRESHOLD / ability(sk, FULL_FLOW);
  const red = THRESHOLD / ability(sk, REDUCED);
  console.log(`${sk.toFixed(1).padStart(7)}  full flow ${(full > 100 ? "unreachable" : full.toFixed(1)).padStart(11)}   reduced flow ${(red > 100 ? "unreachable" : red.toFixed(1)).padStart(11)}`);
}
```

```
intervention                          flow cost  acted
none (baseline)                           7.44 s     14.6 %
motivation +15                            7.44 s     23.5 %
flow reduced from 13 to 6 decisions       3.32 s     34.6 %
both together                             3.32 s     47.0 %

trigger visibility       acted (reduced flow)
                   30 %    10.4 %
                   60 %    20.8 %
                   90 %    31.2 %
                  100 %    34.6 %

zone                                 people  baseline  motivation+15  flow shortening
high motivation / high skill           531   55.0 %         84.0 %         96.8 %
high motivation / low skill            501    0.2 %          2.2 %         26.3 %
low motivation / high skill            485    0.0 %          2.7 %          9.7 %
low motivation / low skill             483    0.0 %          0.0 %          0.0 %

visit  motivation intervention  flow shortening
    1                23.5 %           34.6 %
    2                14.6 %           34.6 %
    3                14.6 %           34.6 %

ability  minimum motivation required
    0.2  full flow unreachable   reduced flow unreachable
    0.3  full flow unreachable   reduced flow unreachable
    0.4  full flow unreachable   reduced flow        91.5
    0.6  full flow        95.3   reduced flow        61.0
    0.8  full flow        71.5   reduced flow        45.8
    1.0  full flow        57.2   reduced flow        36.6
```

## Intervening on Ability Delivers More Than Intervening on Motivation

The first table compares the two interventions on the same scale. Raising motivation by
fifteen points moves the acted-on rate from 14.6 percent to 23.5 percent. Shortening the
flow moves the same rate to 34.6 percent. Both together reach 47.0 percent.

For this comparison to be fair, both interventions would need to be "fifteen units";
they are not. What makes the comparison meaningful is that the two interventions'
**costs** are also similar: writing a text and binding seven fields to defaults are
comparable amounts of work. For the same effort, the second intervention brings more
than twice as many users into the flow.

The reason shows up in the third table. The motivation intervention raises the "high
motivation / high skill" zone from 55 percent to 84 percent — a group that was already
close to acting. In the other three zones, its effect stays under 3 percent. Shortening
the flow, on the other hand, raises the "high motivation / low skill" zone from 0.2
percent to 26.3 percent. This zone is a quarter of the population and consists of users
who genuinely want the book but cannot complete the flow.

The last table gives the reason for this gap plainly. For users with ability of 0.4 or
below, the full flow is **unreachable**: even at a hundred points of motivation, the
threshold is not cleared. When the flow is shortened, the motivation required for a
user with ability 0.4 drops to 91.5, and for a user with ability 0.6 it drops from 95.3
to 61.0. The motivation intervention can do nothing for these users; their problem is
not unwillingness but inability. For a user with ability of 0.3 or below, even
shortening the flow is not enough — for this group six decision points are still too
many, and what the design needs is not shortening the flow a little more but
investigating why that user cannot complete the task.

## Motivation Fades, Ability Stays

The fourth table adds the time dimension. The persuasive text gives 23.5 percent on the
first visit; on the second visit the user has already read the same text, its effect no
longer holds, and the rate returns to the baseline of 14.6 percent. Shortening the flow
gives 34.6 percent on every visit.

This is the most practical difference between the two types of intervention. The
motivation intervention requires repetition; its effect shrinks with each repetition,
and preserving the effect requires raising the dose. Raising the dose means
exaggerating the message. Beyond a point, exaggeration parts ways with accuracy, and
that parting is exactly the boundary this topic addresses at its end.

The ability intervention requires no repetition; once the flow is shortened, it stays
short. The fact that taking a decision away from the user is permanent also makes it
more important that the decision be bound to the correct default.

## The Trigger Is a Multiplier, Not an Addend

The second table shows that the trigger is a different kind of quantity. At 30 percent
visibility, the acted-on rate is 10.4; at 100 percent, it is 34.6. The relationship is
linear, because the trigger multiplies the other two conditions: even if the user is
ready, if they do not see the signal at that moment, the behavior does not occur.

There are two separate questions in the design of a trigger, and they get conflated.
The first is **visibility**: is the call to action where the user is looking? This is
the visual hierarchy question from the Fundamentals of Interface Design course. The
second is **timing**: does the trigger arrive at the moment the user's motivation and
ability clear the threshold?

The second question is the source of the distinction. A message notifying the user that
a book's due date is approaching arrives at the moment the user needs that information;
the user, had they known they would want this message, would still want it. A message
sent about something the user has no interest in at all is not a trigger but an
interruption. The difference between the two is whether the message rests on the user's
existing motivation or tries to manufacture motivation.

## What the Model Does Not Say

This framework is a diagnostic tool, not a prediction tool. The threshold value, the
multiplicative form, and the motivation–ability distribution are assumptions; other
assumptions give other numbers. What the computation carries is this: **an intervention
cannot be chosen without first identifying which condition is missing when a behavior
fails to occur.** If motivation is missing, shortening the flow does not help; if
ability is missing, the persuasive text does not help.

The model does not say one more thing. It does not assume that a behavior occurring is
**good**. In the model, one way to raise the acted-on rate is to lower the threshold —
that is, to make the user commit to a decision without thinking it through. In the
borrowing flow, that leaves the user with a book they did not want. The criterion here
is the same: would the user make the same decision if they knew why the designer made
this change? For shortening the flow, the answer is yes. It is not yes for a speed-up
that prevents the decision from being considered.

## Summary

- A behavior occurs when the product of motivation, ability, and trigger clears a
  threshold; if one of them is zero, the behavior does not happen.
- Ability is not the user's skill but a quantity determined jointly by skill and task
  cost; shortening the flow raises ability.
- In the computation, the motivation intervention moved the acted-on rate from 14.6
  percent to 23.5 percent, shortening the flow moved it to 34.6 percent; both together
  reached 47.0 percent.
- The motivation intervention affects the group already close to the threshold; for the
  low-ability group, the full flow is unreachable even at a hundred points of
  motivation.
- The motivation gain fades on the second visit and preserving it requires raising the
  dose; the ability gain stays the same on every visit.
- One way to raise the acted-on rate is to prevent the user from thinking the decision
  through; the criterion is whether the user would make the same decision knowing about
  the change.

## Next Step

This lesson addressed a single behavior: the user borrows once. The catalog interface's
real question is repetition — does the user come back a second, a fifth, a twentieth
time? A repeated behavior is explained by a different structure than a one-time
behavior. The next lesson builds that structure: the loop formed by cue, routine, and
reward, how it strengthens through repetition, and under what condition the designer
has the right to build that loop.
