Platform FeaturesEverything you need across WhatsApp, Instagram & Messenger
WhatsApp Team InboxOne number, many agents — zero missed chats
Instagram InboxDMs, story replies & comments in one place
Messenger InboxPage DMs & post comments as conversations
AI Agent (RAG)A smart agent trained on your own business data
Multiple Human Live ChatHandle chats from several agents at once
Ask AIAI-powered smart replies & suggestions
Chatbot Flow BuilderBuild automated reply flows, no coding needed
Retarget Users on WhatsAppRe-engage past contacts with targeted messages
WhatsApp SchedulerSchedule messages for the perfect moment
Import, Broadcast & TrackBulk send campaigns & monitor delivery rates
Ads that Click to WhatsAppTurn ad clicks directly into WhatsApp chats
Multi-Agent Live ChatOne number, many agents — zero missed chats
Connect No Code A.I. ChatbotsPlug in AI bots with zero lines of code
Broadcast CampaignsNo campaign cap from us — Meta’s messaging limits apply
Official, Not a Grey ToolMeta-approved Cloud API — no unofficial workarounds
See all features & pricing
Industries We PowerPurpose-built WhatsApp automation for every sector
Education & EdtechCoaching, Institutes & Online Learning
Banking & FintechDigital Payments, Lending & Finance
HealthcareClinics, Hospitals & Wellness
Events & WebinarConferences, Meetups & Live Events
EcommerceOnline Stores, D2C & Marketplaces
Real EstateAgents, Developers & Property Listings
IT Services & InternetTech Support, SaaS & Web Services
Offline & RetailStores, Outlets & Local Businesses
HR & RecruitmentHiring, Onboarding & Talent Acquisition
Spas & SalonsBookings, Promotions & Client Loyalty
AutomobileDealerships, Service Centers & Rentals
Travel & TourismBookings, Tours & Hospitality
Marketing AgenciesCampaigns, Leads & Client Updates
GovernmentPublic Services & Citizen Engagement
Gym & Fitness CentersMemberships, Classes & Reminders
Blogs
All Blogs/Article
Article

WhatsApp Cloud API Test Number vs Production Number: How to Go Live

On Cloud API TeamSeptember 27, 202613 min read21 views

Your first message went out from Meta's test number and landed on your phone. Nice. Now customers need to hear from your business number, and this is where most integrations stall for a day or two. It isn't a one-field swap. Here's what actually changes and the order to do it in.

WhatsApp Cloud API Test Number vs Production Number: How to Go Live

WhatsApp Cloud API · Go-live guide · 2026

WhatsApp Cloud API Test Number vs Production Number: How to Go Live

Your first message went out from Meta's test number and landed on your phone. Nice. Now customers need to hear from your business number, and this is where most integrations stall for a day or two. It isn't a one-field swap. Here's what actually changes and the order to do it in.

By On Cloud API team · Updated · Checked against Meta's developer documentation on the same date

Quick answer

You don't "upgrade" Meta's test number. You add your real business number to your WhatsApp Business Account, verify it by SMS or voice call, and register it with a 6-digit PIN. Then replace three values in your app: the Phone Number ID (your real number has a new one), the access token (use a system user token, not the test token), and, if it changed, the WABA ID. Your message code and webhook URL usually stay the same.

Test number vs production number

Meta test numberYour production number
Owned byMeta, for testingYour business
Who can receive messagesOnly the few recipient numbers you add and verify (up to five)Any customer, within Meta's messaging limits and opt-in rules
Phone Number IDIts own test IDA different ID
Verification and registrationAlready done by MetaYou verify ownership and register it
Display name and profileMeta's test nameYour business name, after Meta approves it
BillingFor testingNormal Meta per-message pricing
Right forProving your code worksReal customers

The test number is there so you can check the things that don't depend on the final sender: your API calls, message payloads, webhook verification, how your app parses incoming messages, and your CRM or n8n logic. Get all of that working first. Then going live is just swapping the sender.

What actually changes in your app

ValueChanges when you go live?
Phone Number IDYes, always. Your real number is a new object with a new ID.
Access tokenShould. Swap the short-lived test token for a system user token.
WABA IDMaybe. Same if you added the number to the same account; different if it went into another WABA. Check, don't assume.
Message templatesMaybe. Templates belong to a WABA, so a new WABA needs its own approved templates.
Webhook URLUsually no, but the app must be subscribed to the production WABA.
Message payload and endpointNo. Same /<PHONE_NUMBER_ID>/messages call.

If these values live in environment variables, going live is a config change, not a code change:

# .env — testing
WHATSAPP_PHONE_NUMBER_ID=meta_test_phone_number_id
WHATSAPP_ACCESS_TOKEN=temporary_test_token

# .env — production
WHATSAPP_PHONE_NUMBER_ID=your_real_phone_number_id
WHATSAPP_ACCESS_TOKEN=system_user_token
WHATSAPP_WABA_ID=your_production_waba_id
Search your codebase for the test Phone Number ID before launch. If it's hard-coded anywhere, in a job, a Blade view or an n8n node, that part will quietly keep sending from the test number.

New number or your existing WhatsApp Business app number?

Decide this before you touch anything. The path is different.

Your situationPath
A new or spare number, used only for the APIAdd it in WhatsApp Manager, verify, register. The steps below.
A number already on another API providerA migration, not a fresh add. The number must be released by the old setup first.
Your current WhatsApp Business app number, and you want to keep using the appCoexistence, through a Tech Provider's Embedded Signup.

What coexistence means

With coexistence, your existing WhatsApp Business app number connects to the Cloud API and keeps working in the app on your phone. You can reply one-to-one from the app and send at volume through the API. A few things worth knowing, straight from Meta's documentation:

  • Only Tech Providers and Solution Partners can onboard you, through Embedded Signup.
  • Messages you send from the Business app stay free; API messages are billed at normal Cloud API rates.
  • Throughput on a coexistence number is fixed at 20 messages per second.
  • You get 24 hours to sync your chat history during onboarding.
  • Some app features stop working afterwards, including broadcast lists, group chats, disappearing messages and calls.

If that trade-off suits you, coexistence saves you from changing the number your customers already know.

Go-live steps, in the right order

  1. Finish testing on the test number. One outbound message, one inbound message hitting your webhook, and your app processing both. Don't add a real number to a setup that isn't working yet.
  2. Open the right Business Portfolio and WABA. If you manage several businesses, double-check. Adding the number to one WABA and using credentials from another is a classic time-waster.
  3. Add your number in WhatsApp Manager (or through a Tech Provider's Embedded Signup). Set your display name. Meta reviews it, so use your real business name.
  4. Verify ownership with the SMS or voice code. The number must be able to receive it. Voice works for landlines.
  5. Get the new Phone Number ID from API Setup or /<WABA_ID>/phone_numbers.
  6. Register the number for Cloud API with a 6-digit PIN, which also becomes the number's two-step verification PIN. Save it somewhere safe.
  7. Switch to a system user token with the WhatsApp permissions, and make sure the system user has this WABA assigned.
  8. Subscribe your app to the WABA so incoming messages reach your webhook.
  9. Check your templates exist and are approved in this WABA.
  10. Update your .env, restart workers, then send one template to your own phone.
  11. Message the new number from another phone and confirm your webhook receives it.
  12. Only then turn on real traffic: campaigns, CRM triggers, the chatbot.

Verify and register the number with API calls

WhatsApp Manager can do the verification for you, but if you're doing it by API, these are the three calls. All of them use the new Phone Number ID.

1. Request a verification code

curl -X POST \
"https://graph.facebook.com/<GRAPH_API_VERSION>/<PHONE_NUMBER_ID>/request_code" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "code_method": "SMS", "language": "en_US" }'

Use "VOICE" instead of "SMS" if the number can't receive texts.

2. Submit the code

curl -X POST \
"https://graph.facebook.com/<GRAPH_API_VERSION>/<PHONE_NUMBER_ID>/verify_code" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "code": "<6_DIGIT_CODE_YOU_RECEIVED>" }'

3. Register the number for Cloud API

curl -X POST \
"https://graph.facebook.com/<GRAPH_API_VERSION>/<PHONE_NUMBER_ID>/register" \
-H "Authorization: Bearer <SYSTEM_USER_ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "messaging_product": "whatsapp", "pin": "<YOUR_6_DIGIT_PIN>" }'

A {"success": true} response means the number is live on Cloud API. Replace <GRAPH_API_VERSION> with a current version from Meta's changelog (for example v25.0).

Do you need a new webhook for the production number?

Usually not. The webhook URL is set on your Meta app, not on the phone number. What you do need is for your app to be subscribed to the WABA the new number belongs to:

curl -X POST \
"https://graph.facebook.com/<GRAPH_API_VERSION>/<WABA_ID>/subscribed_apps" \
-H "Authorization: Bearer <ACCESS_TOKEN>"

Then check your own code. If your webhook handler filters incoming events by the test Phone Number ID, it will silently ignore every message to your real number. Each webhook payload includes metadata.phone_number_id. Make sure your routing expects the new one.

For the bigger picture of how the Cloud API, WABA and numbers fit together, see our WhatsApp Cloud API overview. If you're moving an n8n workflow from test to live, our WhatsApp Business API + n8n guide shows which credential and node fields to update.

Test number works, production doesn't? Check these

What you seeLikely causeFix
Messages still come from the test senderOld Phone Number ID somewhereSearch code, .env and workflow nodes for the test ID
Error 190Test token expiredUse a system user token
Error 200 or 10Permission or asset missingGive the system user the WABA and the WhatsApp permissions
Number shows in WhatsApp Manager but can't sendNot registered yetCall /register with a 6-digit PIN
Registration fails asking for a PINTwo-step verification already setUse the existing PIN, or reset it in WhatsApp Manager
Sending works, incoming messages don't arriveApp not subscribed, or webhook filters the old IDCall /subscribed_apps; update routing to the new phone_number_id
"Template does not exist"Template is in a different WABACreate and approve it in the production WABA
Fix one layer at a time: number, then registration, then Phone Number ID, then token, then webhook, then payload. Changing everything at once is how a 10-minute fix becomes a two-day one.

This process is the same in every market. A +92 Pakistan number, a +971 UAE number or a +91 India number each gets its own Phone Number ID and goes through the same verify-and-register steps. What differs by country is message pricing, not the go-live process.

Frequently asked questions

What is the WhatsApp Cloud API test number?

It is a phone number Meta gives you when you add WhatsApp to your app, so you can send test messages before connecting your own business number. It can only message the handful of recipient numbers you add and verify.

Can I use the Meta test number in production?

No. It can only reach a few verified test recipients and it is not your business identity. Real customers must be messaged from your own verified and registered number.

How many numbers can the WhatsApp test number message?

Up to five recipient numbers that you add and verify in the API Setup page. Your production number has no such list and can message any customer within Meta's limits and opt-in rules.

Does my real number get a different Phone Number ID?

Yes. Your business number is a separate object with its own Phone Number ID, so you must replace the test ID everywhere in your code, environment settings and workflows.

How do I move WhatsApp Cloud API from the test number to my real number?

Add your number to your WhatsApp Business Account, verify it by SMS or voice, register it with a 6-digit PIN, then update your app with the new Phone Number ID and a system user access token, and make sure your app is subscribed to the WABA.

Do I need a new webhook URL for my production number?

Usually not. The webhook is set on your Meta app. You do need to subscribe the app to the production WABA and make sure your code accepts events for the new phone_number_id.

Can I use my existing WhatsApp Business app number with the Cloud API?

Yes, through coexistence, which a Tech Provider or Solution Partner offers using Embedded Signup. You keep using the Business app, but some app features such as broadcast lists and group chats stop working and API throughput is fixed at 20 messages per second.

Why does the test number work but my real number does not?

The usual causes are the old test Phone Number ID still in your code, an expired test token, a number that was verified but not registered, missing WABA access for the system user, or templates that only exist in another WABA.

What is the 6-digit PIN when registering a WhatsApp number?

It is the two-step verification PIN you set when you register the number for Cloud API. Store it safely, because Meta can ask for it again, for example when re-registering or migrating the number.

Ready to Start with WhatsApp Business API?

Join 5,000+ businesses. Meta Verified. 0% markup on Meta rates. Live in 10 minutes.