WhatsApp Phone number registration required

A complete technical guide to provisioning Meta WABA numbers, validating webhooks, and debugging routing drops via PowerShell.

Setting up the WhatsApp Cloud API through Profichat using the built-in embedded signup framework is usually smooth. However, when performing a manual configuration via your own Meta Developer Application, you will frequently find that your phone number gets stuck in a partially provisioned state—meaning you can send outbound messages, but incoming responses from your customers are completely dropped.

This step-by-step guide walks you through exactly how to completely register your phone number, configure your callback endpoints, and force-link the webhook streaming pipeline using PowerShell.

Prerequisites & Information Gathering

Before executing the commands below, log into your Meta Business Suite, Meta Developer Portal, and Profichat Inbox Configuration page to gather the following explicit variables:

  • YOUR_PHONE_NUMBER_ID: Located in your Meta WhatsApp Manager dashboard under your specific phone number row.
  • YOUR_WHATSAPP_BUSINESS_ACCOUNT_ID: The parent asset ID (WABA ID) found in your Meta business settings or WhatsApp Manager page header.
  • YOUR_PROFICHAT_WEBHOOK_URL: The explicit callback endpoint generated by your dashboard when you create a manual WhatsApp Inbox channel (e.g., https://cwp2.profichat.net/webhooks/whatsapp/+YOUR_PHONE_NUMBER).
  • YOUR_PROFICHAT_VERIFY_TOKEN: The unique cryptographic verification string provided alongside your webhook configuration block inside Profichat.

Step 1: Generate a Permanent System User Token

Standard tokens generated via the Graph API Explorer expire within 24 hours. For operational stability, you must build a permanent Admin token:

  1. Open Meta Business SettingsUsersSystem Users.
  2. Select a system user with Admin access (or add a new one).
  3. Click Assign Assets, choose WhatsApp Accounts on the left menu, click your target account, and toggle on full control management permissions. Save changes.
  4. Click Generate New Token, select your WhatsApp Developer App, and strictly check these two scopes:
    • whatsapp_business_management
    • whatsapp_business_messaging
  5. Click generate, then copy and securely save the returned string. Meta will only show this code to you once.

Step 2: Initialize Core Number Registration

Numbers often remain locked from backend configuration steps (such as uploading profile pictures or initiating webhook handshakes) until an explicit registration sequence triggers within Meta's cloud engine.

Script Configuration Parameter Description
YOUR_PHONE_NUMBER_ID The unique ID for the specific phone number from the Meta dashboard.
YOUR_PERMANENT_SYSTEM_USER_TOKEN The stable System User token generated in Step 1.
YOUR_CHOSEN_6_DIGIT_PIN Any 6-digit numeric string to set up 2-step verification.
POWERSHELL SCRIPT: CORE_REGISTRATION.PS1UTF-8
# 1. Provide your customized account parameters
$PhoneNumberId   = "YOUR_PHONE_NUMBER_ID"
$AccessToken     = "YOUR_PERMANENT_SYSTEM_USER_TOKEN"
$RegistrationPin = "YOUR_CHOSEN_6_DIGIT_PIN" 

# 2. Setup the Graph API Endpoint Connection
$Url = "https://graph.facebook.com/v20.0/$PhoneNumberId/register"
$Headers = @{
    "Authorization" = "Bearer $AccessToken"
    "Content-Type"  = "application/json"
}
$Body = @{
    "messaging_product" = "whatsapp"
    "pin"               = $RegistrationPin
} | ConvertTo-Json

# 3. Fire the Request
try {
    $Response = Invoke-RestMethod -Uri $Url -Method Post -Headers $Headers -Body $Body
    Write-Host "Success! Number registered with Meta." -ForegroundColor Green
    $Response | Format-List
}
catch {
    Write-Host "Error during registration script execution:" -ForegroundColor Red
    $_.Exception.Response.Content.ReadAsStringAsync().Result
}

Expected Response: If successful, the console outputs {"success": true}. If it drops a "Display Name" error, Meta's automated background review has not finalized the registration name yet. Wait a few hours for the dashboard status to turn green, then re-run the script.

Step 3: Configure Callbacks in the Meta Developer Portal

Now you need to tell Meta's servers exactly where to pass raw message data payloads. This is configured natively inside the browser dashboard panel:

  1. Navigate to the Meta Developer Portal and open your App.
  2. In the left sidebar, expand WhatsApp and click on Configuration.
  3. Under the Webhook module at the top of the interface, click Edit.
  4. Fill out the configuration prompt fields:
    • Callback URL: Paste your YOUR_PROFICHAT_WEBHOOK_URL
    • Verify Token: Paste your YOUR_PROFICHAT_VERIFY_TOKEN
  5. Click Verify and Save. Meta will execute an immediate programmatic verification challenge handshake against your Profichat server routing.
  6. Once saved, scroll down to the Webhook fields window on the same page, click Manage, and click Subscribe next to messages.
    • Tip: Also subscribe to message_deliveries and message_statuses to sync gray/blue message read-receipt behaviors in Profichat.

Step 4: Activate WABA Event Streaming via PowerShell

This final step solves the classic issue where outbound messages pass perfectly, but incoming replies never show up in Profichat. Even with verified webhooks, Meta drops event broadcasts until your parent business profile explicitly streams its account events to your App framework.

Script Configuration Parameter Description
YOUR_WHATSAPP_BUSINESS_ACCOUNT_ID The parent core WABA Account ID asset number.
YOUR_PERMANENT_SYSTEM_USER_TOKEN The stable System User token generated in Step 1.
POWERSHELL SCRIPT: WEBHOOK_SUBSCRIPTION.PS1UTF-8
# 1. Define your Account Identifiers
$WABAID      = "YOUR_WHATSAPP_BUSINESS_ACCOUNT_ID"
$AccessToken = "YOUR_PERMANENT_SYSTEM_USER_TOKEN"

# 2. Setup the Subscribed Apps Connection Rule
$Url = "https://graph.facebook.com/v20.0/$WABAID/subscribed_apps"
$Headers = @{ "Authorization" = "Bearer $AccessToken" }

# 3. Fire the connection event
try {
    $Response = Invoke-RestMethod -Uri $Url -Method Post -Headers $Headers
    Write-Host "Success! Profichat webhook stream linked to your WABA." -ForegroundColor Green
    $Response | Format-List
}
catch {
    Write-Host "Failed to subscribe WABA to Application events:" -ForegroundColor Red
    $_.Exception.Response.Content.ReadAsStringAsync().Result
}

Verification Testing

Once the final PowerShell script logs "success": true, the infrastructure loop is closed. To verify operations:

  1. Open your Profichat Dashboard and view your manual WhatsApp inbox.
  2. Grab an external personal phone, open WhatsApp, and send a normal message text to your business number.
  3. The inbound routing packet will resolve through Meta's core cluster, check your linked app parameters, and instantly generate an active, open message session straight within Profichat.