How to Run a WhatsApp Business API Free Trial Without Wasting Your Time

You want to test the WhatsApp Business API. You probably saw that Meta offers a free tier or sandbox, and you want to see if it can handle your customer notifications, OTPs, or sales queries.
Most business owners and developers in Pakistan and India start this process backward. They sign up for a portal, get excited about sending a single test message to their own phone, and then stop. They assume the system works. Then, when they pay for a production setup, they get hit with rejected templates, blocked numbers, broken webhooks, and unexpected bills.
The Meta developer sandbox is free. You can test almost everything before you spend a single rupee. This guide is a step-by-step walkthrough to help you thoroughly test the system so you know exactly what you are getting into before you buy.
What You Need Before You Start
Do not start clicking buttons in the Meta Developer Portal until you have these three things ready. If you skip these, you will get stuck halfway through setup.
- A clean phone number: This number must not have an active WhatsApp or WhatsApp Business App account associated with it. If it does, you must delete the account. Simply uninstalling the app from your phone is not enough. You must go into the app settings and select "Delete My Account". This action is permanent and deletes your chat history.
- A Meta Business Manager account: You can set up a sandbox without verification, but you will need an active Meta Business Manager account to move to production later.
- A personal Facebook profile: Meta uses this to verify that a real person is managing the developer account.
Step 1: Setting Up the Meta Sandbox
Meta provides a free sandbox environment using the WhatsApp Cloud API. This allows you to send test messages without linking a real phone number or adding a payment method immediately.
To start, go to developers.facebook.com and log in with your Facebook credentials. Click on "My Apps" in the top right corner, then click "Create App". Select "Other" as your use case, and choose "Business" as the app type. Give your app a name, like "Test_Notification_System", and link it to your Meta Business Manager portfolio.
Scroll down your app dashboard until you see "WhatsApp" and click "Set up". Meta will automatically generate a temporary access token and a test phone number. This test number is a US-based number (+1) owned by Meta. You cannot change this number during the sandbox phase.
How to confirm it worked
Meta restricts sandbox numbers. You cannot send messages to arbitrary numbers yet. You must scroll down to the "To" field on the getting started page, select "Manage phone number list", and add your own personal phone number (e.g., your Pakistani +92 or Indian +91 number). Meta will send a verification code to your WhatsApp app. Enter that code on the screen to whitelist your number.
Once whitelisted, click the "Send Message" button on the developer portal. Meta will send a pre-approved "Hello World" template to your phone.
What to do if it fails
If you do not receive the message, check the API response on the right side of the screen. If you see an error code like 100 with a message about an invalid parameter, it usually means your personal phone number was not whitelisted correctly, or you did not include the country code (92 or 91) without the leading zeros or the plus sign.
Step 2: Testing Custom Templates and Variables
You cannot send free-form text messages to initiate a conversation on WhatsApp. You must use a pre-approved message template. Testing Meta's pre-approved "Hello World" template proves the connection works, but it does not prove your business workflow works. You must test your own templates.
Go to your WhatsApp Manager within the Meta Business Suite. Click on "Message Templates" and then click "Create Template". Select the "Utility" category for things like order updates or OTPs, or "Marketing" for sales broadcasts.
Create a template called order_delivery_status with the following body text:
"Hi {{1}}, your order {{2}} has been shipped and will arrive on {{3}}."
Submit the template for approval. Meta's automated system usually approves simple utility templates within two to ten minutes.
How to confirm it worked
Once the template status turns green and says "Approved", you must test sending it via an API call. You can use Postman or a simple cURL command in your terminal. Your payload must look like this:
{
"messaging_product": "whatsapp",
"to": "923001234567",
"type": "template",
"template": {
"name": "order_delivery_status",
"language": {
"code": "en_US"
},
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Ali" },
{ "type": "text", "text": "ORD-9982" },
{ "type": "text", "text": "Tuesday" }
]
}
]
}
}
Run this request. If your phone receives the message with the variables correctly replaced ("Hi Ali, your order ORD-9982 has been shipped..."), your template engine is working.
What to do if it fails
If you get an error code 132001, it means the template name or language code does not match what you created. Meta is highly sensitive to letter casing. If your template is named Order_Delivery_Status but you called order_delivery_status in your code, the API will reject it.
Step 3: Setting Up Webhooks for Incoming Messages
An API is useless if you can only send messages. You must be able to receive customer replies. To do this, you need a webhook—a URL on your server that Meta can send data to whenever a customer sends you a message.
During a free trial, you do not need to write a full backend server to test this. You can use a free tool like Webhook.site to generate a temporary URL. Copy the unique URL they give you.
Go back to the Meta Developer Portal, click "WhatsApp" on the left menu, and select "Configuration". Under "Webhooks", click "Edit". Paste your Webhook.site URL into the "Callback URL" field. In the "Verify Token" field, type any random string you want (e.g., my_test_token_9988).
How to confirm it worked
Your server (or Webhook.site) must handle the verification request. Meta will send a GET request to your URL containing a query parameter called hub.challenge. Your server must return this challenge value back as plain text. Webhook.site handles this automatically.
Once the webhook is saved, click "Manage" next to Webhook Fields, and subscribe to messages. Now, open your phone and reply to the test message you received from the sandbox number. Check your Webhook.site dashboard. You should see a incoming POST request containing a JSON payload with the sender's name, phone number, and the exact text they sent.
| JSON Key to Parse | Purpose | Example Value |
|---|---|---|
entry[0].changes[0].value.messages[0].from | Sender's phone number | 923001234567 |
entry[0].changes[0].value.messages[0].text.body | The message text | "Is delivery free?" |
entry[0].changes[0].value.messages[0].id | Unique message ID | wamid.HBgMOTIzM... |
What to do if it fails
If Meta refuses to save your webhook URL, it is almost always because your server did not return the hub.challenge value as a plain text string. If your server returns it inside a JSON object (like {"challenge": "12345"}), Meta will reject it. Ensure your server returns raw text with a HTTP 200 status code.
Step 4: Testing the 24-Hour Customer Service Window
This is where most businesses get caught off guard. WhatsApp enforces a strict 24-hour customer service window. When a customer sends you a message, a timer starts. For the next 24 hours, you can send them free-form messages (non-templates) for free. Once that 24-hour window closes, you cannot send free-form messages anymore. You must use an approved template again.
You must test how your system handles this limit.
- Send a message from your personal phone to the sandbox number to open the 24-hour window.
- Send a free-form text message via the API to your phone. It should deliver successfully.
- Wait 24 hours without sending any messages from your personal phone.
- Try to send another free-form text message via the API.
How to confirm it worked
The API should reject your second message. You should receive an HTTP error code 400 with a subcode of 131047. The error message will state: "Message failed to send because more than 24 hours have passed since the customer last replied to this number."
Your development team must write code to handle this specific error. If your system tries to send a standard chat reply to a customer after 24 hours, it will fail silently unless you catch this error code and prompt your staff to send a template message instead.
What to Do Next
Once you have verified that you can send templates, receive replies via webhooks, and handle the 24-hour window error, your technical test is complete. The technology works. Now you must decide on your infrastructure.
You have two choices. You can build your own custom chat interface and database to manage these APIs, which requires significant developer time. Alternatively, you can use a software layer to manage the inbox for you.
This is where we at WA Link can assist. We provide a platform that connects to your Meta API account, giving your team a shared inbox, contact management, and automated routing tools. However, we do not host the Meta developer console or bypass Meta's verification rules. You still need to go through the setup steps outlined above, and you will still pay Meta directly for their conversation fees.
If you are ready to transition from sandbox to production, you must add a real phone number to your Meta Business Suite, add a valid credit card to your Meta billing account, and complete your Business Verification if Meta requests it.
Frequently Asked Questions
Do I need a credit card to use the WhatsApp API free trial?
No. You do not need to add a credit card to use the Meta Developer Sandbox with a test number. However, the moment you want to use your own real phone number instead of the US test number, Meta will require you to add a payment method to your Meta Business Portfolio to cover any charges beyond the free tier limits.
How much does the API cost after the free trial?
Meta does not charge per message. They charge per 24-hour conversation. Meta provides 1,000 free service (user-initiated) conversations per month. If a customer messages you and you reply, that conversation is free if you stay within your monthly 1,000 allowance. If you initiate the conversation using a template (utility or marketing), you are charged from the very first message. The exact rates depend on the recipient's country code and the template category. You can check the current rates on the Meta developer pricing page.
Can I use my personal WhatsApp number for the API?
You can use the same phone number, but you cannot use it on both the regular WhatsApp app and the WhatsApp API at the same time. If you register a number to the API, it will be disconnected from the mobile app. If you want to keep using your personal phone for daily chats, you must buy a new SIM card or virtual number specifically for the API.
Why is my message template being rejected by Meta?
Meta's automated filters reject templates that look like spam, contain spelling errors, use vague variable placeholders, or are categorized incorrectly. For example, if you submit a marketing message but label it as a "Utility" template to try and get a cheaper rate, Meta will reject it. Ensure your variables have clear context and your category matches the content.