The Psychology of Tapbacks and “On It”
Why a tapback and a one-line “on it” make customers trust your product while it works.

Watch someone text a product that does real work for them, and the thing you notice isn't the answer. It's everything before it. An eyes reaction when it picks the request up, a magnifying glass when it starts researching, a check mark when it's done. That's the moment it stops feeling like software.
A tapback and a one-line "on it" are about the cheapest things your product can send over text. They don't do any of the work. But they change how the person on the other end feels while the work happens, and on a long task that feeling is most of the experience. It's the part every product that moves into a text thread has to get right.
You gave up the screen
When your customers text your product instead of downloading an app, you gain a lot. No install, no login, no password reset. They're already in iMessage all day.
But you also give up the screen. Everything your app used to say with buttons, checkmarks, toasts and loading states now has to arrive as a text. The thread is the whole interface, and the most important thing an interface ever says is "I'm working on it."
Silence over text means something
In an app, nobody has to tell you that something is happening. You tap a button and get a spinner, a progress bar, a skeleton screen. Designers spent twenty years making waiting visible, because waiting you can't see feels broken.
Over text you get none of that. There's the message you sent, and then there's nothing. And unlike an app, a text thread is a social space. We've all learned what silence means in one: the other person is busy, or annoyed, or didn't see it, or saw it and decided not to answer.
So when someone texts your product "can you move my appointment to Friday" and gets nothing back, they don't think "it's checking the calendar." They think what they'd think about a person. Did it get it? Did I say it wrong? Should I just open the app?
One of our customers told us about the first time they showed their product to their mom. They shared the contact, she texted it, and nothing came back. Something on the backend had broken. She didn't report a bug or try again. She waited a bit, assumed it wasn't working, and two days later had forgotten it existed. She never saw the product. She saw the silence.
We can see this in our own data. Across a month of conversations on Keiki, the longer a product stayed quiet after someone's text, the more likely that person was to text again before it answered. A lot of those second texts aren't new information.

Almost nobody texted again when the reply came within ten seconds. Most people did when the silence ran past ten minutes. The second texts are "you there??", "and?", "wya", and my favorite, "why did you stuck?"

That second text is the person doing the job a progress bar would have done. They're checking whether anything is happening, because nothing has told them.
Waiting has a psychology
None of this is new. It's just new to products you text. In 1985 David Maister wrote a short paper called "The Psychology of Waiting Lines" that every team putting a product on iMessage should read. A few of his propositions could have been written about text threads:
- Unoccupied time feels longer than occupied time.
- Anxiety makes waits seem longer.
- Uncertain waits are longer than known, finite waits.
- Unexplained waits are longer than explained waits.
The best-known story along these lines is from Houston's airport, which Alex Stone told in the New York Times. Travelers complained constantly about the wait at baggage claim. The airport added staff and cut the wait, and the complaints didn't stop. What finally worked was moving the arrival gates farther from the carousels, so people spent the time walking instead of standing. The total time barely changed. How it felt did, and the complaints nearly disappeared.
The research that matters most here is Ryan Buell and Michael Norton's work on what they called the labor illusion. In their experiments, people searching for flights or dates rated a service more highly when it showed them the work it was doing, even when that made them wait longer than an instant result would have. Seeing effort made the result feel more valuable and more trustworthy. A later study by Buell with Tami Kim and Chia-Jung Tsay put cameras in a dining hall so diners could watch their food being made, and diners rated the food higher.
People don't judge a wait by how long it is. They judge it by whether they know what's going on, and whether they believe someone is working on their thing.
A tapback and a reply line are how your product answers both of those questions over text.
Why three dots aren't enough
The obvious fix is the typing indicator, and you should send it. But three dots make a specific promise: a reply is a few seconds away. When they sit there for a minute, or disappear and come back, they stop reading as "typing" and start reading as stuck.
One of our customers asked me about this, because their product searches flights and that takes real time. My advice was that speed is the moat, but you can make the wait feel fast. When someone texts "find me the cheapest flights to Barcelona," react to it with a ✈️ right away and reply "looking now." Then go do the work. If all they see is three bubbles for two minutes, they'll think it's a bug. If they see the plane, they know it's doing the task.
The typing indicator says someone is at the keyboard. The tapback and the line say someone is on the job.
What a tapback says
A tapback is the smallest message there is. It doesn't need an answer and it doesn't take up a bubble. But it carries a lot.
The first thing it says is "I got it." On iMessage you already get a read receipt, and Keiki marks the message read the moment it lands. But a read receipt only tells you a message was opened. A reaction tells you someone opened it and responded. That's the difference between a letter being delivered and someone nodding at you.
The second thing depends on which tapback it is. When a product uses them consistently, they turn into a small vocabulary. Eyes means I'm looking at it. A thumbs up means done, nothing more to say. A heart means thanks received. People pick this up fast, because it's how they already text their friends. You don't have to teach anyone what 👀 means.
Since iOS 18 a tapback can be any emoji, and that's where it gets good. A ✈️ on "find me flights to Barcelona." A 🍔 on "any good restaurants near the venue?" A 📊 on "can you research this company?" A matching reaction proves the request was understood before a single word comes back, and it feels human in a way a generic thumbs up doesn't.
We saw how much of this kind of texting people do at an event we ran in Vancouver. We put the event's number on the back of a pamphlet. About 80 people came, and they sent it hundreds of texts that day. Most were small asks like "restaurant nearby" or "can I reach out to this person." Each one is a long-ish task hiding inside a casual text, and each one is a chance to react before you answer.

The third thing is restraint. A lot of messages don't need a reply. "Thanks!" doesn't. "Cool, see you then" doesn't. A product that answers every one of those with a full sentence feels like a customer service script. A product that hearts it and moves on feels like a person who respects your time. Ask a product to cancel a reminder, and the right answer is a thumbs up and nothing else. That's exactly what a friend would send.
People do it back, too. On Keiki we store the reactions people leave on replies, and they look like the reactions you'd leave a person. From October 11 to November 11 the most common was 👍 (42 times), then ❤️ (21), then the odd 😂 and 🙏. Nobody hearts a loading spinner. People heart someone who did something for them.
What a reply line says
A tapback works when the answer is coming soon. For a long task you need words. By reply line I mean the short text your product sends before it disappears into the work: "On it, checking when they have a room Friday." "One moment, pulling your policy." "This one takes a while, I'll text you when I have it."
A good one does three things.

It names the thing. "On it" is fine. "On it, checking other five-star hotels nearby" is better, because it proves your product understood the request. If it misunderstood, the person can correct it now instead of finding out ten minutes later. That's Maister's "unexplained waits are longer than explained waits," solved in one line.
It sets the expectation. "This one takes a while" turns an uncertain wait into a known one. The person can put their phone down. That's the real gift: they stop supervising.
It promises a follow-up, and then keeps the promise. "I'll text you when I have it" only works if the text comes. This is the part that's actually hard to build, and I'll come back to it.
In our data the difference showed up clearly. When a product sent a short "on it" line and then went off to work, people texted again during the wait less than half as often as when it just went quiet for the same length of time. The task took the same time. The person just didn't feel the need to check.

These are small samples. Most texts on Keiki get answered quickly, so long tasks are the minority (31 and 14 conversations for the "on it" bars). The direction matched every other time I looked.
Why it's bigger than manners
You could read all this as politeness. I think it's closer to the core of the product.
A chatbot doesn't need any of this, because it only answers questions, and answers come back fast. The moment your product starts doing things, like booking the room, filing the claim or building the app, the work takes real time and someone is waiting on the other end. Products that do things need to show that they're doing them.
When someone texts your product, they're delegating. They're handing over a small piece of their life and trusting you with it. Delegation only feels good if you can stop thinking about the thing you handed off. If you have to keep checking, you haven't delegated anything. You've just added a step.
A tapback and a reply line are what let people stop thinking about it. And once people trust that they can, they start handing over bigger things. Someone who starts by asking for a haircut ends up asking it to plan a trip. You give it the next thing because it was clear with you about the last one.
We watched this happen at Vet Together. Reps said texting the agent felt like texting a friend who was trying to help, so they got comfortable fast and started asking it things it was never set up to answer. Comfort is what turns a tool you try once into one you lean on.
The opposite also compounds. Every unexplained silence teaches the person to supervise. They'll check more, send more "you there?" texts, and eventually go back to calling or opening your app, because those at least show them something happening. That's the opposite of what moving your app into iMessage is supposed to do.
The tapback isn't decoration. In a text thread, it's what tells people your product is working.
How to get it wrong
There are a few ways this goes badly, and I've seen all of them.
Narrating everything. "Searching… found 3 results… opening the first… reading…" is a progress bar written out as texts, and it's exhausting. A real person doing an errand for you texts at the start and at the end, and maybe once in the middle if something changes. One of our customers put it better than I could: "we definitely do not want to give user a bunch of text, because then we're not saving time, we are wasting time."

Slack is the exception, because it gives apps a status line under the thread that updates in place. On Keiki your product's steps show up there ("Searching," "Browsing the web") instead of as messages. iMessage and WhatsApp have nothing like it, so one line has to do the job.
Tapping back on everything. If every message gets a thumbs up, the thumbs up stops meaning anything. The vocabulary only works if each reaction is a choice. Our Orchid prompt has a rule for this: a tapback on its own is the rare exception, kept for a message with no task in it. A question, an "ok, go" or a finished sign-in always gets words.
Fake labor. The labor illusion works because the labor is real. A product that says "on it" and then does nothing is worse than one that said nothing, because now it has broken a promise. Same for a reply line that claims to be checking something it isn't.
Promising a follow-up you can't deliver. "I'll text you when it's done" is the most valuable line your product can send and the most dangerous. It only works if the work keeps running in the background and a new message goes out on its own when it's done. If the work stops when the model's turn ends, the promise stops with it.
Getting the number is the easy part
You can get an iMessage number in an afternoon. Getting the product behind it to act like this with real customers is the hard part, and it's most of what we've spent the last year on.
Each piece needs its own plumbing. The read receipt and typing indicator have to fire before the model even starts, or they come too late to mean anything. The tapback has to land on the exact message it's reacting to, in the native format, which is different on iMessage, WhatsApp, Telegram and Slack. And the reply line only holds up if there's something behind it that can run a task for ten minutes, survive a restart, and text the person when it finishes.
On Keiki, the read receipt and typing indicator go out automatically wherever the channel supports them. Tapbacks are one tool, react_to_message, that works the same way everywhere they're supported. And long work runs in the background: your product sends its line, ends its turn, and the result comes back to the conversation as its own message when it's ready.
import { create } from '@onkeiki/agents'
const kit = create({
apiKey: process.env.KEIKI_API_KEY!,
name: 'Concierge',
agent: {
model: '<model-id>',
systemPrompt: () =>
`Reply like a person texting. Short bubbles.\n` +
`A message that needs no answer gets a tapback, not a sentence.\n` +
`Before long work, send one line that names the task and says you'll follow up. Then follow up.`,
// background work texts the person on its own when it finishes
executor: { enabled: true, timeout: '10 minutes', onComplete: 'notify' },
},
})
await kit.sync()The code is the easy part. What you have to work out yourself is the judgment: which messages deserve a reaction, which deserve words, and what your product should sound like when it says "on it." That's what people will remember about it.
FAQ
What is a tapback on iMessage?
A tapback is a reaction left on a specific message, like a heart, a thumbs up or, since iOS 18, any emoji. For a product people text, it's the lightest way to say "got it" without sending a new message.
Why do customers text again when a product goes quiet?
Because nothing told them the work started. In a text thread, silence reads as "didn't get it" or "broken," so people check in with "you there?" or give up. In our data, people checked in less than half as often during long tasks when the product sent one short line first.
Is a typing indicator enough during a long task?
No. Three dots promise a reply in seconds. Past that they look like a stall. Pair the indicator with a tapback and one line that names the task and says you'll follow up.
Should a product react to every message?
No. Reactions only mean something if each one is a choice. Use them for messages that don't need words, like "thanks!" or "cool, see you then," and for acknowledging a request before a short wait. When in doubt, reply.
What should a product text before a long task?
One line that names the task, sets an expectation and promises a follow-up, like "on it, checking who has a room Friday. This one takes a few minutes, I'll text you when I have it." Then send the follow-up.
Sources
- David H. Maister, "The Psychology of Waiting Lines" (1985)
- Ryan W. Buell and Michael I. Norton, "The Labor Illusion: How Operational Transparency Increases Perceived Value", Management Science (2011)
- Ryan W. Buell, Tami Kim and Chia-Jung Tsay, "Creating Reciprocal Value Through Operational Transparency", Management Science (2017)
- Alex Stone, "Why Waiting Is Torture", The New York Times, August 18, 2012
- Keiki conversation data: 8,919 conversation starts in 1,543 conversations across 42 companies on iMessage, SMS, WhatsApp and Telegram, October 11 to November 11, 2026. Internal and test accounts excluded.