Skip to content
Guides8 min read

Put Your App on iMessage and WhatsApp

Your customers won't download another app. Here's how to let them text yours instead.

Grainy, motion-blurred film still of a white retro-futuristic car crossing a dark lawn past orange flowers, with the words "Put Your App on iMessage and WhatsApp"

Your customers already text all day: friends, family, the dentist. Most of them will never download your app or open your chat widget, but they will text you. The work is giving them something on the other end that knows your product, can actually do things in it, and knows when to bring in your team.

This guide is for founders and ops leads who already have a product and customers. It's part of our guide to customer-facing AI agents.

Can you put your app on iMessage?

Yes, as a number your customers text, not as something they install. Apple has no public API for iMessage bots, so there are three real ways to show up in Messages:

Way inWhat customers seeWhat it takes
A dedicated iMessage lineA number they save, like any contactReady right away on Keiki
Apple Messages for BusinessYour verified name and logoApple's review, usually weeks
A Mac running MessagesA personal Apple IDA Mac that has to stay awake and signed in

An iMessage line is the one most companies start with, because either side can text first and nobody has to approve it. WhatsApp works the same way from a WhatsApp number. The rest of this guide puts one agent on both. (For the full list of options, see Is there an iMessage API?)

What you need

  • A product with customers, and the five things they ask you about most. For example: "Where's my order?", "Can I move my appointment?", "How much do I owe?"
  • Your website, docs or help center.
  • Optional: your API or an MCP server, so the agent can do things in your product and not only answer.
  • A Keiki account. No code is required. There's an SDK if you want one.

How to put your app on iMessage and WhatsApp

Step 1: Tell it about your company

Describe the job in a sentence or two, then point it at your sources:

"You answer customers for Acme. Help with orders, deliveries and returns. Send anything about refunds to the support team."

Add your website, docs and policies. You can also start from your website alone, and Keiki builds the first version of the agent from it.

What breaks first: the agent fills a gap with a guess. A customer asks about a policy you never wrote down, and it sounds sure anyway. Give it the sources for your top five questions before you share the number, and tell it to say "let me check with the team" when the answer isn't there.

Step 2: Connect your product

Answering questions is half the job. The other half is doing things: booking, paying, checking an order. Connect what you already have:

  • Shopify or Stripe, from the dashboard.
  • Your API, one endpoint per job.
  • Your MCP server, if you have one. Its tools become the agent's tools.

"We plugged our existing MCP server into Keiki and had our iMessage agent texting real customers almost right away."

Perry Raskin, Head of Web & Integrations, Coverdash

If you're writing tools in code, each job is one tool. Anything that changes money or data asks a person first:

import { defineTool } from '@onkeiki/agents'
import { Effect, Schema } from 'effect'

export const rescheduleBooking = defineTool({
  name: 'reschedule_booking',
  description: 'Move an existing booking to a new time',
  input: Schema.Struct({ bookingId: Schema.String, startsAt: Schema.String }),
  policy: { approval: 'ask' },
  execute: (input) => Effect.promise(() => acme.bookings.reschedule(input.bookingId, input.startsAt)),
})

What breaks first: a write runs that nobody checked. Start with reads allowed and writes set to ask, then switch tools to allow one at a time as you trust what you see. See governed actions.

Step 3: Know who's texting

A customer asking "where's my order?" should only ever see their own orders. Each conversation on Keiki carries who the person is, recognized by their phone number or WhatsApp account, and with identity also by your own user ID and permissions. Per-customer memory means the agent remembers past chats, so nobody has to repeat their order number every time.

What breaks first: trusting an ID the agent passes in. Your API should still check that the order belongs to the person texting, the same way it does in your app.

Step 4: Share your number

The agent is set up once. Each channel is just another place your customers can reach it:

ChannelReady in
iMessage, dedicated lineRight away to a few days, by line type
WhatsAppAbout 5 minutes
Slack, Telegram, emailRight away to a few minutes
Phone callsRight away
Apple Messages for BusinessAfter Apple's review (early access)

Then put the number where customers already are. On your site, an sms: link opens Messages with the first text filled in:

<a href="sms:+15555550123?body=Hi">Text us</a>

What breaks first: texting people who never texted you. Apple judges a line by how it behaves, and cold outreach is the fastest way to get one flagged. On Keiki's iMessage lines over 30 days, over 99% of conversations were started by the customer. Let them text first. See will an iMessage API get your number banned?

Step 5: Keep your team in every chat

Chats from every channel land in one inbox. When the agent isn't sure, it tells the customer a person is on it and flags the chat for you. From there, leave a note and the agent's next reply follows it, or take over and reply yourself. On Slack, your team can take over right in the thread.

What breaks first: a handoff that drops the context. Whoever steps in should see the whole conversation and what the agent already did, so the customer doesn't start over.

Step 6: Text it before your customers do

Text the agent your five most common questions. Then text it the way people actually do: three messages in a row, a typo, "actually, make it Saturday." Before you change the agent later, replay past conversations against the new version so one fix doesn't break five other answers.

The line is the easy part

Anyone can get a number. Getting an agent to work with real customers is the hard part, and it's what Keiki does:

What goes wrongWhat Keiki does
It gets flagged as spamPaces sends and keeps your number healthy: 7,000 messages and 50 new conversations per line per day, never in bursts
It forgets who's textingKnows each customer and remembers past chats
It can't do anythingBooks, pays and checks status in your product, with approval on anything risky
It says something wrongYour team sees every chat and can step in
It only works on iMessageThe same agent on WhatsApp, Slack, Telegram, email and phone calls
It breaks at 2amWatches line health, pauses a conversation at risk, and moves sends to a healthy line

Why customers text instead of downloading

An app is a place people have to remember to go. The average generative AI app keeps 0.9% of new users after 30 days (AppsFlyer). People who text a Keiki agent are 2 to 3 times more likely to still be texting it a month later. When we moved our own assistant from an app to an iMessage line, 30-day retention went from about 1% to roughly 50%, with the same model and the same tools. That's a daily-use assistant, the best case, and the full numbers are here.

Already have an agent?

Keep it. Bring your own agent to Keiki and you get the numbers, every channel and your team in the chat, without rebuilding anything.

FAQ

Is there an official iMessage API for businesses? Not for bots. Apple's official business channel is Apple Messages for Business, which needs Apple's review and a person reachable in every chat. Most companies start with a dedicated iMessage line, which works like any phone number.

What's the best way to add iMessage to my app or AI agent? Give the agent a dedicated iMessage line, connect it to your product, and keep your team able to step in. Keiki does all three, and the same agent also answers on WhatsApp, Slack and email.

How do I add an AI agent to WhatsApp? Connect a WhatsApp number through WhatsApp's guided signup in Keiki, which takes about 5 minutes. The agent you already set up for iMessage answers there too, with the same tools and memory.

Will texting customers from an iMessage line get my number banned? Not if customers text first and you never send in bursts. Keiki caps each line at 7,000 messages and 50 new conversations a day, and over 99% of conversations on its iMessage lines are started by the customer.

Do I need a Mac or an iPhone? No. Keiki runs the line for you, so there's no Mac to keep awake and no Apple ID to manage.

Do I need to write code? No. Describe the job, add your website and connect Shopify, Stripe or your API from the dashboard. There's a TypeScript SDK if you want to write tools in code.

Does it work for customers on Android? Yes. An iMessage line falls back to SMS/RCS on the same number for Android users, with plain text and files. WhatsApp works the same on every phone.

How long does it take? A dedicated iMessage line can be ready right away and WhatsApp takes about 5 minutes. Most of the time goes into testing your top questions, which is worth doing before you share the number.

Sources

Published · Guides