Invia messaggi WhatsApp con PHP
Invia testi, immagini e file WhatsApp dal tuo sito o dalla tua app PHP, dal tuo numero collegato a WbizTool come WhatsApp Web. Bastano l'estensione cURL di PHP e una POST a un endpoint documentato.
Prova gratuita: 50 messaggi in qualsiasi arco di 30 giorni, senza carta.
Come funziona
Ottieni la chiave API e collega il tuo numero
Registrati, poi collega il tuo numero WhatsApp nella pagina Numeri WhatsApp con un codice QR o un codice di abbinamento, come WhatsApp Web. In Impostazioni → Chiavi API, crea una chiave e copia il tuo Client ID (la guida Chiavi API qui sotto mostra dove). L'ID sulla scheda del numero (come ID 678) è il tuo
whatsapp_client.Prepara la richiesta
Metti
client_id,api_key,whatsapp_client, il numero di telefono emsgin un array. Invialo come JSON con l'estensione cURL di PHP – o con qualsiasi client HTTP che usi già, con gli stessi campi.Invia il messaggio
Invialo con una POST a
https://wbiztool.com/api/v1/send_msg/. Una risposta con"status": 1e unmsg_idsignifica che il messaggio è in coda sul tuo numero.Controlla che sia partito
Passa un URL
webhookper sapere quando il messaggio viene inviato o fallisce, oppure interroga l'endpoint Stato del messaggio con ilmsg_id.
Esempi di codice PHP
<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 0,
'country_code' => '91',
'phone' => '9876543210',
'msg' => 'Hi Aman, your order #4821 has shipped and will arrive on Thursday.',
];
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Queued with msg_id ' . $result['msg_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}{"status": 1, "message": "Created", "msg_id": 9817263}<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 1,
'country_code' => '91',
'phone' => '9876543210',
'img_url' => 'https://example.com/offers/diwali-sale.jpg',
'msg' => 'Our Diwali sale starts today 🎉',
]),
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
// An array body (not json_encode) makes cURL send multipart/form-data.
CURLOPT_POSTFIELDS => [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 2,
'country_code' => '91',
'phone' => '9876543210',
'msg' => 'Your invoice for order #4821 is attached.',
'file_name' => 'invoice-4821.pdf',
'file' => new CURLFile('/path/to/invoice-4821.pdf', 'application/pdf', 'invoice-4821.pdf'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
]);
echo curl_exec($ch);
curl_close($ch);<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 0,
'country_code' => '91',
'phone' => '9876543210',
'msg' => 'Hi Aman, a reminder that your appointment is today at 11:30 AM.',
'date' => '24/12/2026',
'time' => '09:00',
'timezone' => 'Asia/Kolkata',
];
$ch = curl_init('https://wbiztool.com/api/v1/schedule_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Scheduled with msg_id ' . $result['msg_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no message in response');
}<?php
$msgId = 9817263;
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
];
$ch = curl_init("https://wbiztool.com/api/v1/message/status/{$msgId}/");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['message'] ?? '') === 'Unknown message id') {
echo 'No message with this ID in your workspace';
} elseif (!isset($result['status_text'])) {
echo 'Request failed: ' . ($result['message'] ?? 'no message in response');
} elseif ($result['status'] === 1) {
echo 'Sent';
} elseif ($result['status'] === 2) {
echo 'Failed: ' . $result['error'];
} else {
echo 'Status: ' . $result['status_text'];
}<?php
// webhook.php – WbizTool posts form fields, so they arrive in $_POST.
$msgId = $_POST['msg_id'] ?? '';
$status = $_POST['status'] ?? ''; // SENT, FAILED, CANCELLED or EXPIRED
error_log("WbizTool message $msgId: $status");
http_response_code(200);Cosa puoi fare
Nessuna libreria da installare
Gli esempi usano solo l'estensione cURL di PHP. L'API accetta JSON, campi di modulo o multipart form data quando carichi un file.
Testi, immagini e file
Imposta
msg_typea 0 per il testo, 1 per un'immagine o 2 per un file. Indica unimg_urlo unfile_urlpubblico, oppure carica il file conCURLFile.Pianifica per più tardi
Fai una POST a
/api/v1/schedule_msg/condate(gg/mm/aaaa),time(HH:MM) e untimezonecomeAsia/KolkataoAmerica/New_York.Webhook per ogni stato
Passa
webhooke il tuo script riceve una POST form-encoded – leggi$_POST['msg_id']e$_POST['status'](SENT,FAILED,CANCELLEDoEXPIRED).Usi WordPress? Usa il plugin
Il plugin WordPress di WbizTool invia messaggi WhatsApp per gli ordini WooCommerce, le prenotazioni WP Amelia e i moduli Contact Form 7 senza codice.
Buono a sapersi
"status": 1significa che il messaggio è in coda, non consegnato. Inviato è lo stato finale di successo; l'API non segnala se il messaggio è stato consegnato o letto.- Gli errori di Invia messaggio arrivano con HTTP 400 (429 al limite giornaliero); quelli di Pianifica messaggio arrivano di solito con HTTP 200 e
"status": 0, quindi decodifica sempre il body e controllastatus. - Per caricare un file, passa un array a
CURLOPT_POSTFIELDS, nonjson_encode, così cURL inviamultipart/form-datacon il file in un campo chiamatofile. - Tieni la chiave API sul tuo server, ad esempio in una variabile d'ambiente. Chiunque la possieda può inviare dai tuoi numeri, quindi non metterla mai in JavaScript eseguito nel browser, in un'app mobile o in codice che pubblichi.
- La prova gratuita offre 50 messaggi in qualsiasi arco di 30 giorni e 1 numero, senza carta. I piani a pagamento partono da $25 al mese negli USA (il tuo prezzo è nella pagina Prezzi) e inviano messaggi illimitati con uso corretto: fino a 1.000 al giorno per numero.
- I messaggi partono dal tuo numero WhatsApp, quindi valgono le regole di WhatsApp: scrivi a persone che si aspettano di sentirti.
Domande
- Esiste un SDK PHP?
- Non c'è un pacchetto PHP ufficiale, e non ti serve: ogni chiamata è una singola POST con l'estensione cURL, come mostrato sopra. Qualsiasi client HTTP per PHP funziona con lo stesso URL e gli stessi campi.
- Come invio una fattura PDF da PHP?
- Usa
msg_type2. Indica unfile_urlpubblico, oppure carica il file connew CURLFile(...)in un campo chiamatofile. Impostafile_namecon la sua estensione, comeinvoice-4821.pdf. - Come faccio a sapere che il messaggio è stato inviato?
- Una risposta con
"status": 1e unmsg_idsignifica che è in coda. Passa un URLwebhookper ricevere una POST conSENT,FAILED,CANCELLEDoEXPIRED, oppure chiama l'endpoint Stato del messaggio con ilmsg_id. Inviato è lo stato finale: l'API non segnala se il messaggio è stato consegnato o letto. - In che formato devo inviare il numero di telefono?
- Invia il numero con il prefisso internazionale (393471234567), oppure senza (3471234567) insieme a
country_code(39). Spazi, +, trattini e parentesi vengono rimossi per te, quindi funziona anche +39 347-123 4567. - Mi servono la WhatsApp Business API o l'approvazione di Meta?
- No. WbizTool invia dal tuo numero WhatsApp o WhatsApp Business, collegato come WhatsApp Web. Non serve l'approvazione di Meta e non ci sono template di messaggio da far approvare.
- Si paga per ogni messaggio?
- No. La prova gratuita include 50 messaggi in qualsiasi arco di 30 giorni. I piani a pagamento inviano messaggi illimitati con uso corretto, fino a 1.000 al giorno per numero: Lite $25, Standard $59 e Advanced $149 al mese negli USA; la pagina Prezzi mostra il prezzo del tuo Paese.
Leggi le guide
- API Invia messaggio
- API Pianifica messaggio
- API Stato del messaggio
- Plugin WordPress
- Chiavi API e Client ID
- Collega il tuo numero WhatsApp
Pagine correlate
- WordPressMessaggi WhatsApp per gli ordini WooCommerce, Contact Form 7 e WP Amelia.
- cURLInvia, pianifica e segui i messaggi WhatsApp con un solo comando cURL.
- PythonInvia messaggi WhatsApp da Python con il client ufficiale o con requests.
- Promemoria di pagamentoPromemoria di pagamento mensili o singoli dal tuo numero, con la fattura in PDF.
Invia oggi il tuo primo messaggio WhatsApp automatizzato
Crea un account, scansiona il codice QR e invia un messaggio in meno di cinque minuti.
Inizia gratisI piani a pagamento partono da $25 al mese negli USA. Prezzi
