Skip to content

Integrator guides ​

Task-oriented guides for engineers who put meta-whatsapp-rs into a product: the e-commerce backend (marketing, order notifications, invoices, WhatsApp OTP login) and the multi-tenant CMS (each merchant connects their own number with Embedded Signup and chats with customers in-app).

They sit between the README quick start and the API reference (cargo doc -p meta-whatsapp-rs --all-features --open). The design and its reasons are in architecture.md; what exists and what does not is in coverage.md and parity.md, and what comes next in roadmap.md; product decisions, all but one decided, are in OPEN_QUESTIONS.md.

Checked against meta-whatsapp-rs 7940d15 (2026-09-24), Graph API v25.0. Every Rust name in these pages was checked against the source at that commit, and the snippets were compiled against it; bots.md was written later (2026-09-26) with the crate it describes; its snippets are copied from the skill example the gate compiles (the copies themselves are not checked). On another revision, trust the rustdoc over these pages.

Which guide for which job ​

GuideRead it when youExampleAgent skill
getting-started.mdset up the Meta app, add the dependency, send a first message, handle errorssend_messagemeta-whatsapp-rs-setup, meta-whatsapp-rs-errors
embedded-signup.mdlet each merchant of your CMS connect their own numberembedded_signupmeta-whatsapp-rs-embedded-signup, meta-whatsapp-rs-token-vault
webhooks.mddeploy the webhook endpoint and decide what to do with each eventcms_inboxmeta-whatsapp-rs-webhook-endpoint, meta-whatsapp-rs-webhook-events, meta-whatsapp-rs-live-updates
cms-inbox.mdbuild the merchant ↔ customer chat (history, live updates, replies)cms_inboxmeta-whatsapp-rs-cms-inbox
marketing-and-commerce.mdsend campaigns and order updates, collect opt-ins, show productssend_messagemeta-whatsapp-rs-marketing, meta-whatsapp-rs-commerce, meta-whatsapp-rs-templates, meta-whatsapp-rs-send-templates
otp-login.mdlog users in (or verify a number) with a WhatsApp codeotp_loginmeta-whatsapp-rs-otp-login
documents.mdsend invoices, receipts and voucher imagesinvoice_documentmeta-whatsapp-rs-documents
bots.mdanswer commands, button taps and free text with a bot: guards, cooldowns, middleware, plugins, Markdown replies, Meta's command menubot.rsmeta-whatsapp-rs-bot
production.mdpick storage, manage keys, log safely, scale, pin versions—meta-whatsapp-rs-production, meta-whatsapp-rs-storage
server.mdrun the HTTP service for an app not written in Rust: configure it, create tenants and keys, send, receive Meta's webhooks and poll eventsclient.ts, send.ts, events.ts (TypeScript callers, type-checked against the service's OpenAPI document)meta-whatsapp-rs-server, meta-whatsapp-rs-server-send, meta-whatsapp-rs-server-events

Reading order ​

E-commerce backend: getting-started → webhooks → marketing-and-commerce → documents → otp-login → production.

CMS: getting-started → embedded-signup → webhooks → cms-inbox → production.

Not in Rust: getting-started (the Meta app) → server.

How to read the code ​

  • Snippets are excerpts. Names such as merchant_id, save_merchant_waba or pool stand for your own code and values; everything imported from meta_whatsapp_rs is the real API.
  • use meta_whatsapp_rs::prelude::*; brings in the client, ids, Recipient, the message and template builders, the webhook pieces, the store and sink traits and the inbox. Everything else is one path away.
  • Each runnable example's header lists the environment variables it reads and the command that runs it. The two servers (embedded_signup, cms_inbox) refuse to start without WA_TENANTS, a bearer-token stand-in for your own authentication, and listen on 127.0.0.1 unless WA_BIND says otherwise.

Meta's documentation ​

Meta's pages are the authority on everything that happens on Meta's side (dashboards, review, limits, prices). Links point at https://developers.facebook.com/documentation/business-messaging/whatsapp/<path>; append .md to any of them for Markdown. The guides paraphrase them and were written against the pages as they read on 2026-09-24; Meta changes dashboards without notice, so when a screen looks different, the linked page wins.

Released under the MIT License.