Integration overview
- Prepare your account. Have YCloud enable Partner Direct Link, create an API key, and configure your webhook receiver.
- Configure your entry point. Open Partner Direct Link in the dashboard and set your branding, redirect URL, or SDK origins.
- Create a link. Your server requests an onboarding link for a customer in your system.
- Let the customer connect. They open the hosted page or SDK popup and complete Meta authorization.
- Confirm the result. Your backend receives the webhook and associates the WABA with the customer.
Before you start
- Ask YCloud to enable Partner Direct Link for your account. If you are not yet a Tech Partner, apply to become one.
- Create an API key in Developers > API Key.
- Configure your receiver in Developers > Webhooks and subscribe to
whatsapp.business_account.updated.
Find Partner Direct Link in the dashboard
- Open the YCloud dashboard for the account where Partner Direct Link is enabled.
- Expand Developers in the left sidebar.
- Click Partner Direct Link to open the configuration page.

Open Developers > Partner Direct Link to configure your branding and entry point. This example shows the settings before configuration.
Configure your branding and entry point
Open Developers > Partner Direct Link in the YCloud dashboard. Complete Basic settings:
For SDK origins, enter the exact scheme, domain, and optional port, without a path. Add each subdomain or port separately; wildcards are not supported. Use HTTPS in production. HTTP is allowed only for
localhost development. Direct Link works without an allowed SDK origin; SDK Button does not.
Create an onboarding link on your server
- WhatsApp Business Platform (
WHATSAPP_BUSINESS_PLATFORM): Choose this mode to connect a number for messaging through APIs and your software. - WhatsApp Business App coexistence (
WHATSAPP_BUSINESS_APP): Choose this mode for an eligible existing Business App number when the customer wants to keep using the app and add API messaging on the same number.
en_US (English), zh_CN (Simplified Chinese), es_ES (Spanish), pt_BR (Brazilian Portuguese), id_ID (Indonesian), and ru_RU (Russian). Values are case-sensitive. Other values return HTTP 400.
Example response:
expiresAt is the expiry time as a Unix timestamp in milliseconds. The default link lifetime is two hours. Each link connects one customer to one WABA. Before signup completes, the customer can refresh, retry, or open the link in another browser while it remains valid. After successful binding, the link cannot bind another WABA. Create a new link when the customer needs to change or add a WABA.
Option 1: Direct Link
Add a connect button to your customer application. When the customer clicks it, request an onboarding link from your server and navigate toonboardingUrl or open it in a new window. You can also send it privately to the intended customer through a secure one-to-one channel.
The customer opens the hosted page and clicks Continue with Meta. They use a Facebook account with permission to manage their business and select or create their business, WABA, and phone number in Meta. YCloud completes the binding and displays the result.

Direct Link integration and the hosted page preview. This example has no generated onboarding link.
status=connected appended as a query parameter. Use this to update the customer-facing page; use the webhook below to confirm the binding in your backend.
Option 2: SDK Button
Add your page’s origin to Allowed SDK origins, then load the SDK. Your browser code calls your own backend to obtain the link. The/api/ycloud/onboarding-link route below is an example route that you implement on your server.
onStatus(result) reports the signup state:
onError(error) means the SDK could not open signup. Its code can be POPUP_BLOCKED or INVALID_ONBOARDING_URL. onClose(event) fires only when the customer closes the window before a final result, with reason: "USER_CLOSED".
These callbacks update your frontend. Use the server-side webhook as the final binding result.
Confirm the binding with a webhook
Subscribe to whatsapp.business_account.updated in Developers > Webhooks to receive the binding result.
whatsapp.business_account.updated to your configured webhook receiver after binding succeeds. The following excerpt shows the fields your integration uses:
updateEvent is PARTNER_ADDED, process the WABA as newly added. Match partnerCustomerId to your customer and save the WABA id. A paymentMethodAttached value of true means credit attachment succeeded; false means it has not completed.
Deduplicate deliveries using the event id, and return HTTP 2xx after successful receipt. See Webhooks for receiver setup.

