The WhatsApp Developer Platform

Build WhatsApp apps in minutes.

Connect your systems via MCP. Type-safe templates.From webhook to response in 10 lines of code.

$ npm install @manano-ai/wham
webhook.ts
handler.onMessage(Filter.text, async (message) => {
  // Connect to your systems via MCP
  const mcp = await getMCPClient();
  const order = await mcp.getOrderStatus(orderId);

  // Respond with type-safe template
  await whatsapp.sendMessage(
    message.from,
    orderStatusTemplate.send({
      orderId: order.id,
      status: order.status,
      tracking: order.trackingNumber
    })
  );
});
MCP Integration
Type-safe

From idea to production in three steps

Build with code or AI, deploy instantly, reach billions of users

01

Build

Write type-safe TypeScript with our SDK, or describe what you want and let AI generate it. Preview instantly in the simulator.

02

Deploy

One click to production. We handle containers, webhooks, SSL, and Meta API sync. Your app gets a unique URL instantly.

03

Live

Your WhatsApp app is live. Real users, real conversations, real-time logs. Update anytime with zero downtime.

Everything you need to build WhatsApp experiences

Templates

Pre-approved message formats for notifications, updates, and outbound messaging.

Flows

Rich interactive forms with buttons, dropdowns, and multi-step wizards inside WhatsApp.

Webhooks

Receive messages in real-time. Filter by type, respond instantly, connect to any backend.

AI Builder

Describe your app in plain English. AI generates the code, you tweak and deploy.

Developer Experience

The complete WhatsApp toolkit

Everything you need to build, test, and deploy WhatsApp integrations. Type-safe from template to webhook.

Zero runtime errors

Type-safe Templates

Define templates with full TypeScript safety. Placeholder counts validated at compile time. No more runtime errors.

example.ts
// Define a type-safe message template
const orderConfirm = template('order_confirm', {
  category: 'UTILITY',
  language: 'en',
  body: body.text(
    'Order #' + '{{1}}' + ' confirmed! Total: ' + '{{2}}',
    'ORD-123', '49.99'  // Example values
  ),
  buttons: [
    button.url('Track Order', 'https://...'),
    button.quickReply('Need Help'),
  ],
});

// Send with full type checking
await client.send(phoneNumber, orderConfirm.send({
  orderId: 'ORD-456',
  total: '129.00'
}))
Multi-screen forms

Interactive Flows

Build multi-screen WhatsApp forms. Zod validation at every step. Complex UIs made simple.

example.ts
// Build multi-screen forms with Zod validation
const bookingFlow = flow('booking', {
  categories: ['APPOINTMENT_BOOKING'],
}, ($) => ({

  SELECT_SERVICE: $.screen(
    z.object({ service: z.string() }),
    (s) => ({
      title: 'Book Appointment',
      body: [
        s.dropdown('service', 'Choose service', [
          { id: 'haircut', title: 'Haircut', },
          { id: 'color', title: 'Hair Color' },
        ]),
      ],
      footer: { label: 'Next', payload: { service: s.form.service } },
    }),
  ),

}));
Auto-routing

Smart Webhooks

Route events with type-safe filters. Handle messages, buttons, flow completions. Built-in reply helpers.

example.ts
// Route webhooks with type-safe filters
const handler = new WebhookHandler();

// Handle text messages
handler.onMessage(Filter.text, async (msg) => {
  const reply = await openai.chat(msg.text.body);
  await msg.reply(reply);
});

// Handle flow completions - data is typed!
handler.onFlowComplete(bookingFlow, async (result) => {
  await createBooking(result.data);
  await result.reply('Booking confirmed!');
});

AI Builder

Describe what you want in plain English. AI writes the code, you preview in simulator, deploy in one click.

Send & Wait

Send messages and await replies with async/await. Built-in timeout handling and delivery tracking.

One-Click Deploy

Templates sync to Meta automatically. Flows publish instantly. Your webhook runs on our infrastructure.

Local Development

Test without credentials

The WHAM simulator runs locally. No WhatsApp Business account needed. Build, test, and iterate before touching production.

Full API Simulation

All messaging endpoints, templates, and flows work locally

Webhook Round-trips

Test complete message flows with HMAC-signed webhooks

Error Injection

Simulate rate limits, failures, and edge cases

CI/CD Ready

Run in tests without real credentials

$ wham dev

 Simulator started at http://localhost:3001
 Webhook endpoint at http://localhost:3000/webhook
 Hot reload enabled
W
WHAM Bot
online

Welcome to Bella's Hair Salon! How can I help you today?

10:32

Book Appointment

10:33 ✓✓

Select a Service

Haircut
Hair Color
10:33
Message
Infrastructure as Code

Deploy like it's 2026

Version control your WhatsApp infrastructure. Plan changes, preview diffs, deploy with confidence.

1

Define Resources

Declare templates and flows in TypeScript

// wham/resources.ts
export const resources = resourceSet([
  bookingFlow,
  reminderTemplate,
  confirmationTemplate,
]);
2

Preview Changes

See what will be created, updated, or deleted

$ wham plan

+ flow.booking         create
~ template.reminder    update body
- template.old_promo   delete
3

Push to Deploy

Apply changes with a single command

$ wham apply

Applying 3 changes...
✓ flow.booking created
✓ template.reminder updated
✓ template.old_promo deleted

Deployed in 4.2s

CI/CD Ready

Integrate with GitHub Actions, GitLab CI, or any CI system. Deploy on merge to main. Preview environments for every PR.

# .github/workflows/deploy.yml
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npx wham apply --yes
Limited Beta Access

Get early access to Whambam

Join the waitlist for our AI-powered WhatsApp builder. Describe what you want to build, and we'll create it for you.

First 50 teams get founding member pricing.
Invite friends to skip the line.