Meta Embedded Signup

Connect a customer account with Meta onboarding

The Meta-hosted flow lets the customer choose the correct business and WhatsApp assets. Final activation still depends on your Meta app configuration, permissions and the customer's account eligibility.

  1. 1

    Create your account

    Register for CampaignSetu and start the 7-day platform trial.

  2. 2

    Connect WhatsApp

    Tap Connect WhatsApp to open the official Meta Embedded Signup popup.

  3. 3

    Choose business assets

    Inside Meta, choose or create the correct Business Portfolio, WhatsApp Business Account and phone number.

  4. 4

    Complete Meta verification

    Complete any OTP, business verification or eligibility step Meta requires for the selected account or number.

  5. 5

    Use automation tools

    After activation, use inbox, contacts, templates, broadcasts and keyword chatbot rules from the dashboard.

Meta WhatsApp Embedded Signup

A secure Meta popup will open so you can select or create your Business Portfolio, WhatsApp Business Account and phone number.

Connect your existing WhatsApp Business App using the Meta-hosted coexistence flow. Keep the WhatsApp Business app installed and active on your phone.

Production Meta requirements

Multi-client Embedded Signup is a Meta Tech Provider / Solution Partner style flow. Your Meta app must complete the required review and permissions before you can release it broadly to customers. Individual WABAs and phone numbers can also require additional verification or activation steps.

Implementation note

Do not exchange the code too early

The frontend must wait for both Meta callbacks. The production component on this site already does that.

embedded-signup.ts
// Important: Meta returns the authorization code and the
// WA_EMBEDDED_SIGNUP FINISH event separately. Collect BOTH before
// calling your server.
let code;
let waba_id;
let phone_number_id;

function finishWhenReady() {
  if (!code || !waba_id || !phone_number_id) return;
  return fetch("/api/embedded-signup/exchange", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ code, waba_id, phone_number_id }),
  });
}

// FB.login callback -> save response.authResponse.code into 'code'.
// WA_EMBEDDED_SIGNUP FINISH postMessage -> save waba_id + phone_number_id.
// Then call finishWhenReady().