From sign-up to first message in five minutes
WAGate connects to WhatsApp the same way WhatsApp Web does — as a linked device — and exposes that connection as a clean HTTP API.
Create an account and add a number
Register in the dashboard, click Add number and give it a label like “Shop notifications”. Your first number starts a 5-day free trial automatically; after that, pick a plan and pay with crypto.
Link WhatsApp
On your phone open WhatsApp → Linked devices → Link a device, and scan the QR shown in the dashboard. Or request a pairing code and type it in. Both normal WhatsApp and WhatsApp Business work.
Copy your API key
Each number gets its own key starting with wg_. Paste it into your plugin settings, your automation tool (n8n, Make, Zapier via webhooks) or your own code.
Send a message
One POST /v1/messages with to and text. We queue it, pace it naturally and return an ID you can track. Media, locations and contacts work the same way.
Receive replies
Set a webhook URL in the dashboard. Incoming messages, delivery receipts and connection changes are pushed to you as signed JSON, with retries if your server is down.
Monitor and scale
Watch the live log, usage chart and webhook deliveries. Add more numbers for different brands or departments — each one is isolated with its own key and plan.
What happens behind the scenes
When you scan the QR, WhatsApp issues a set of device credentials to WAGate. We store them encrypted and keep a persistent connection to WhatsApp's servers on your behalf. Your phone stays the primary device: you'll see every conversation in your app, and you can unlink us at any time from Linked devices or from the dashboard.
Outgoing messages go into a per-number queue. A worker sends them one at a time with randomised gaps and a typing indicator, records the WhatsApp message ID, and updates the status as WhatsApp acknowledges delivery and reads.
If the connection drops — your phone is off for 14+ days, WhatsApp pushes an update, the network blips — the session reconnects automatically and the queue resumes. Nothing you've asked us to send is lost.
# PHP example — works in WordPress, WHMCS, XenForo, anything
$ch = curl_init('https://signup.wagate.net/v1/messages');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: wg_your_key',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'to' => $customer_phone,
'text' => "Your appointment is tomorrow at 10:00.",
'reference' => 'appt-'.$appointment_id,
]),
]);
$result = json_decode(curl_exec($ch), true);