Opened
0
WA links opened
Remaining
0
In queue
Skipped
0
Manually skipped
Total
0
Contacts loaded
Contacts
Message
Media
Send Queue
Logs
Add Contacts
For bulk import โ download template, fill numbers & names, then upload.
Contact List 0 contacts
| # | Number | Name |
|---|
0 selected
Compose Message
Supports WhatsApp formatting: *bold* _italic_ ~strike~ `mono`
{{name}}
{{phone}}
{{city}}
{{date}}
{{amount}}
Live Preview
Message preview appears here.
now โโ
Attach Media
How media works with wa.me: Paste a public URL of your image/PDF hosted on your website (e.g.
https://deinrimapp.in/wa-bulk/image.jpg). Add the URL inside your message text. WhatsApp will show a preview link. For direct file attachment, use WhatsApp Business API.Image
PDF / Doc
Video
Audio
Send Queue โ wa.me Links
Each button opens WhatsApp with the pre-filled personalised message. Click "Open & Mark Sent" for each contact. WhatsApp Web or App opens โ just hit Send.
Ready to send
0%
Add contacts and write a message first, then come here to send.
Session Log
โ Session log will appear here โ
WhatsApp Message Formatter
Template Library
Sales
Festival Offer
Hello {{name}}! ๐ Exclusive festival discount of 30% for you. Valid till Sunday!
Intro
Business Introduction
Hi {{name}} ๐ โ Deinrim Solutions intro message
Reminder
Payment Reminder
Dear {{name}}, your payment of โน{{amount}} is due on {{date}}.
Session History
| Number | Name | Status | Time |
|---|---|---|---|
| No history yet. Start sending to see results here. | |||
PHP + MySQL Integration Guide
Your site: deinrimapp.in/wa-bulk/ โ PHP + MySQL on Hostinger Shared Hosting. Here's exactly what to create.
Step 1 โ MySQL Table
CREATE TABLE wa_contacts (
id INT AUTO_INCREMENT PRIMARY KEY,
number VARCHAR(20) NOT NULL,
name VARCHAR(100),
city VARCHAR(100),
status ENUM('pending','sent','skipped') DEFAULT 'pending',
sent_at DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE wa_campaigns (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(200),
message TEXT,
total INT DEFAULT 0,
sent INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Step 2 โ PHP API file (api.php)
<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$host='localhost'; $db='your_db'; $user='your_user'; $pass='your_pass';
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$action = $_POST['action'] ?? $_GET['action'] ?? '';
if($action === 'save_contacts'){
$contacts = json_decode($_POST['contacts'], true);
$stmt = $pdo->prepare("INSERT INTO wa_contacts (number,name,city) VALUES (?,?,?)");
foreach($contacts as $c)
$stmt->execute([$c['number'],$c['name']??'',$c['city']??'']);
echo json_encode(['ok'=>true,'saved'=>count($contacts)]);
}
if($action === 'mark_sent'){
$id = intval($_POST['id']);
$pdo->prepare("UPDATE wa_contacts SET status='sent',sent_at=NOW() WHERE id=?")->execute([$id]);
echo json_encode(['ok'=>true]);
}
if($action === 'get_contacts'){
$rows = $pdo->query("SELECT * FROM wa_contacts ORDER BY created_at DESC")->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($rows);
}
if($action === 'export_csv'){
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="wa_contacts.csv"');
$rows = $pdo->query("SELECT number,name,city,status,sent_at FROM wa_contacts")->fetchAll();
echo "number,name,city,status,sent_at\n";
foreach($rows as $r) echo implode(',',$r)."\n";
exit;
}
?>
Step 3 โ Connect this UI to your PHP
// Set your API URL below in this tool:
const API = 'https://deinrimapp.in/wa-bulk/api.php';
// Save contacts to MySQL:
fetch(API, { method:'POST', body: new URLSearchParams({
action: 'save_contacts',
contacts: JSON.stringify(contacts)
})});
// Mark as sent:
fetch(API, { method:'POST', body: new URLSearchParams({
action: 'mark_sent', id: contact.id
})});
Live API Connection Test