X-API-Key). LazyApp gives you the same idea: a Meta-compatible proxy and a native /v1 API, both authenticated with Authorization: Bearer.
Unlike Zernio’s conversation-centric rewrite, you can often cut over Kapso send traffic with a base-URL and auth header change, then migrate webhooks and platform features.
Most integrations land in half a day to a day.
Quick reference
Before you start
- Kapso project API key (export history / templates before cutover if you need them)
- LazyApp workspace and API key (
sk_test_first) — Authentication - Plan how each Kapso customer maps to a LazyApp platform customer (or a single workspace if you are not multi-tenant)
How the concepts map
Step 1: Point Meta-shaped sends at LazyApp
If your Kapso code already posts Cloud API bodies, keep the body. Change host and auth:X-API-Key — LazyApp expects Bearer only.
Proxy coverage today (same services as /v1, not a fork):
Full native shapes (scheduling, events, broadcasts, Verify) live under
/v1 — see Migrating from Meta’s Cloud API and Messages.
Step 2: Move WhatsApp numbers
Pick the path that matches how the number was connected to Kapso.Reconnect your own (or customer’s) WABA
If the WABA belongs to you or your customer (setup links / BYO SIM):- Create a LazyApp platform customer per Kapso customer (skip if single-tenant — connect in the console).
- Issue a setup link and open it (or send it to the customer).
- Complete Meta Embedded Signup with the Facebook login that owns the WABA.
- Confirm with
connection.connected/customer.connectedwebhooks — not only the browser redirect.
Kapso-managed / Instant Setup numbers
If the number lived in Kapso’s pool, it does not move with you. Connect a number you (or your customer) own through Embedded Signup / a setup link. LazyApp does not sell a dedicated phone-number SKU catalogue like some CPaaS providers.Credentials paste
LazyApp does not expose a public “post Meta system-user token” connect endpoint for integrators. Connection is Embedded Signup (console or setup link). Do not invent a credentials POST from Kapso’s platform API into LazyApp. After connect, confirm the number withGET /v1/capabilities. Store phone_number_id ↔ LazyApp connection_uuid if you use both.
Step 3: Prefer native sends when you are ready
You can stay on the Meta proxy indefinitely. When you want LazyApp-native features, switch bodies to flat JSON:
LazyApp is recipient-centric on
/v1/messages, not Zernio’s “create conversation then post messages” model. Conversations still exist for inbox and webhooks (conversation_id on payloads).
Step 4: Update webhooks
Kapso often registers webhooks per phone number. LazyApp webhooks are workspace-scoped with event filtering. Scope multi-tenant handlers by connection / customer fields on the payload.Event mapping
Payloads are LazyApp-shaped (flat envelope), not nested Meta
entry[].changes[]. Full list: Webhook events.
Signature verification
Same HMAC-SHA256 idea; header and encoding differ:id / X-LazyApp-Delivery. Retries and auto-pause: Webhooks overview.
Step 5: Templates and flows
If you reconnected the same WABA, templates are already at Meta. List withGET /v1/templates or the Meta-compat templates routes. Recreate only when the WABA is new.
Flows: use LazyApp’s Flows guide under /v1/flows (create, publish, send via interactive). If Kapso hosted your Flow data-exchange endpoint, host that endpoint yourself after cutover.
Feature map
You also gain: cursor pagination,
Idempotency-Key on all writes, events that decouple code from template names, flat monthly plans with 0% added to Meta’s message rates, and a WhatsApp-only focus (no Instagram/X inbox).
No LazyApp equivalent (plan around these):
- Kapso-hosted serverless functions for webhooks / Flow data endpoints
- Raw Meta webhook forwarding (
kind: "meta") - Purchasing numbers from a LazyApp number inventory
- Paste Meta system-user credentials via public API
Cutover strategy
Meta’s message billing and template approvals live on the WABA — they are not “re-approved” by LazyApp when you reconnect the same number. Meta keeps billing messages to the business’s own payment method at its own rates; LazyApp adds 0% and charges only its flat plan. Live API keys need the Pro plan, so pick it before the pilot phase.
Troubleshooting
Related
- Migrating from Meta’s Cloud API — proxy details
- Connecting WhatsApp — Embedded Signup and setup links
- Build a platform — Kapso-style multi-tenant model
- Support: support@lazyapp.in