Use caseYour new users get their welcome on WhatsApp, and take action.
At sign-up, the user who ticked the box gets their welcome on WhatsApp, with a button that takes them to the first action in your product. Where they actually read their messages.
The welcome, then the recovery: 38 seconds.
From the request in Claude Code to the first schedule created, on a real WhatsApp conversation. The same film then shows a failed payment recovery.
How it flows.
Step by step, for real.
- 1
The welcome template
Claude Code creates it with
create_template, in the marketing category: for Meta, a welcome that invites people to use the product is marketing. The first name, and a button to the page that gets the user started;get_template_statusconfirms the approval. - 2
The form’s box
The sign-up form carries a “Get my getting-started tips on WhatsApp” box, unticked by default. Without it, nothing goes out: a marketing template only goes to those who consented.
- 3
The send at sign-up
Once the account exists, your app sends the template with
POST /v1/sends, with the consent and its source: the API writes them on the contact before the marketing filter. An idempotency key taken from the user prevents duplicates. - 4
The first use
The user taps the message’s button: your app opens on the page of their first action, their first schedule, their first project.
What you type in Claude Code
With the plugin installed, one sentence is enough. The film’s also wires the failed payment recovery: Claude Code creates both templates, writes the code and tests.
/messagingme:demarrer at sign-up (app/signup.ts), a whatsapp welcome with the link to create their first schedule. and when stripe reports a failed payment, a whatsapp with the link to update their card
The welcome, as Claude Code writes it
import { messagingme } from '../lib/messagingme';
// Call it once the account exists. The template welcome is MARKETING (it invites to use the product): it only
// goes to someone who ticked the WhatsApp box on the sign-up form. It has one variable, the first name, and a URL
// button to the page that creates the first schedule.
export async function sendWelcome(user: { id: string; phone: string; firstName: string; whatsappOptIn: boolean }): Promise<void> {
if (!user.whatsappOptIn) return;
const send = await messagingme.POST('/v1/sends', {
body: {
target: { template: { name: 'welcome', language: 'en' } },
recipients: [{
phone: user.phone,
variables: { firstName: user.firstName },
// The ticked box is the consent: written on the contact before the marketing filter.
consent: 'opted_in',
consentSource: 'signup form',
}],
params: [{ position: 1, source: { type: 'variable', key: 'firstName' } }],
},
// Replayed within 24 hours (the life of the key), the welcome does not send twice.
idempotencyKey: `welcome-${user.id}`,
});
// A refused recipient (STOP, no consent, plan limit) is not an error: it is listed in skipped, with its reason.
if (send.skippedTotal > 0) console.warn(`welcome ${user.id} not sent: ${send.skipped[0]?.reason}`);
}
app/signup.ts · all the code in the guide
What you pay.
- The Free plan is enough to start: 1,000 templates sent a month and 100 contacts, the API and the MCP server included; beyond that, Pro.
- Meta bills your business directly for each marketing template, according to its rate card and the user’s country.
Frequently asked questions.
Why marketing, not utility?
Meta classifies as marketing any template that invites people to use the product, and as utility an alert on the account, like a failed payment. A template declared utility with a marketing text is reclassified by Meta.
What about the user who did not tick the box?
They receive nothing: your code does not send it, and the API would set them aside anyway, since a marketing template only goes to those who consented.
How much does a welcome cost?
Free includes 1,000 templates a month. Meta bills each marketing template to your business, according to its rate card and the user’s country.
Can they stop receiving messages?
Yes: a user who replies STOP receives nothing more, and their refusal is recorded on the contact.
Welcome your users on WhatsApp.
The plugin in two commands, then the sentence above in Claude Code. No account to create.