Every Automate app feature, explained.
Automate turns an opt-in contact list into a live WhatsApp campaign in minutes. Link a number by QR code, upload a CSV, write one message with spintax personalization, and a rate-limited background worker delivers it with human-like pacing - on your own dedicated server with a private IP.
Tip: press / anywhere to jump to search.
Applies to app version 2.9.x · Last updated August 2026 · Managed service by Jeedesigns LLC
On this page
Connections
Campaigns
Audience lists
Anti-ban protection
Opt-outs & compliance
Monitoring
Account & settings
Updates & reliability
Security
Welcome to Automate
Three short pages and your first campaign is on its way.
What is Automate?
Automate is a WhatsApp campaign manager for businesses that already have a customer list. You upload the list, write one message, and Automate delivers it person by person - each recipient gets a slightly different version, paced like a human would send it, from a WhatsApp number you own.
It is deliberately not a CRM, a chatbot, or a shared inbox. It does one job: getting your opted-in message to your list safely, and showing you exactly what happened to every single message.
- Your infrastructure. Every account runs on its own dedicated VPS with a private IP. No other sender shares it, so your delivery reputation reflects only your own behavior, and your contacts and logs stay on your server.
- Your numbers. Link the WhatsApp numbers you already have by scanning a QR code - no Business API approval, no Meta paperwork. Run several numbers side by side.
- Flat pricing. No per-message fees, no credits. Your plan is a flat yearly price (see Plans & pricing).
How it works
Under the hood, one server process runs everything:
- A browser for every number. Each connection is a real, headless WhatsApp Web session in its own isolated Chromium instance. Linking a number is exactly like linking WhatsApp Web on a new computer - you scan a QR code once and the session is remembered.
- A patient background worker. Uploaded contacts sit in a job queue. A worker sends one message, waits a randomized interval, checks its limits, and sends the next - never faster than the anti-ban settings allow. It survives restarts and resumes interrupted campaigns on its own.
- A live dashboard. The web dashboard shows every connection's status, the live activity of each campaign, the full delivery history with delivered/read receipts, and charts of your sending volume.
Your first campaign
- Connect a number. Dashboard → Add Connection → give it a name → scan the QR code with WhatsApp on your phone (WhatsApp → Settings → Linked devices → Link a device). The badge turns green when it is connected.
- Upload your list. Open the connection → upload a CSV with at least a
phonecolumn - plusnameand optionally amessagecolumn. Up to 50,000 rows per upload. See CSV reference. - Write the message. Use
{name}to greet each person by name and spintax like{Hi|Hello|Hey}so every message is unique. Attach one image or PDF if you like. - Send a test. Use Test message to deliver one copy to your own number first. It renders exactly as a campaign message would.
- Start. Press Start. The worker takes over: typing indicators, randomized delays, breaks and quiet hours are all handled for you. Watch it live in the activity terminal; pause at any time.
Starter, Growth & Enterprise
Flat yearly pricing. No per-message fees, no credits, no throttled tiers - every plan runs on its own dedicated server.
What each plan includes
| Starter | Growth | Enterprise | |
|---|---|---|---|
| Price | $180/year ($15/mo) | $240/year ($20/mo) | $360/year ($30/mo) |
| Messages per month | 15,000 | 37,000 | 75,000 |
| Connected numbers | 2 | 5 | 10 |
| Dedicated VPS + private IP | ✓ | ✓ | ✓ |
| Personalization engine (spintax) | ✓ | ✓ | ✓ |
| PDF & media attachments | ✓ | ✓ | ✓ |
| Quiet-hours scheduler | ✓ | ✓ | ✓ |
| Onboarding & migration help | ✓ | ✓ | ✓ |
| Custom networking | - | - | ✓ |
| Support | Email, same-day | Email, same-day | 24/7 |
Messages-per-month is a plan ceiling, not a target: the per-number anti-ban limits (default 100/day, ramping up slowly on new numbers) are what keep your numbers safe, and they always apply. Reach the plan ceiling and campaigns pause until the month rolls over or you upgrade.
How ordering works
- Submit the order form on automatemessage.com - your name, email, phone number, and optionally your business name. No payment is taken on the form.
- We reply within one business day to confirm details and send a payment link.
- Provisioning begins once payment clears. Your dedicated server is hand-built with a private IP; this takes up to 2 days. Login credentials arrive at the email address on the order.
Refunds & cancellation
- 14-day refund window, counted from the day your login credentials are delivered - not from purchase - so provisioning time never eats into your evaluation period.
- Refunds are the subscription fee minus a deduction for the provisioned server (that cost is already spent when the window opens). The exact deduction and final amount are disclosed before you confirm.
- If we cannot deliver your instance at all, you are refunded in full, regardless of elapsed time.
- Accounts terminated for Acceptable Use violations (purchased or scraped lists, fraud, platform evasion) receive no refund.
- Yearly plans are paid in advance and not pro-rated. Cancel any time to stop renewal; access continues through the paid term. Full details: Refund Policy.
Your WhatsApp numbers
A "connection" is one linked WhatsApp number with its own browser, settings, proxy and queue. Run as many as your plan allows, side by side.
Adding a connection
- Dashboard → Add Connection. Give it a recognizable name ("Shop number", "Client A - flash sale").
- Scan the QR code shown live in the dashboard, using the phone's WhatsApp → Linked devices → Link a device.
- Wait for the green badge. The connection syncs your chats (you will see a progress percentage) and then reports Connected, with the linked phone number shown.
The session is remembered on disk, so a server restart does not ask you to scan again. Each connection consumes roughly 400-600 MB of server memory - that is the real limit on how many numbers one plan's server comfortably runs.
Connection statuses
ConnectedLinked, ready to send. This is the only status that sends.Scan QR codeWaiting for you to scan - happens on a fresh or re-linked connection.Connecting… N%Authenticated and syncing chats.Reconnecting…Lost contact; automatic restart with backoff is in progress (up to 10 attempts).DisconnectedThe phone unlinked this session, or it was logged out. Click Re-link to scan again.ErrorSomething failed at startup. The message on the badge says what - usually a Chrome or network issue; try Re-link, then the proxy.Connection settings
Every connection has its own anti-ban profile, edited from Connection → Settings. Changes take effect on the very next message - no restart needed.
| Setting | Default | What it does |
|---|---|---|
| Min / max delay | 10 s / 60 s | Random pause between messages. The delay is drawn between the two; keep at least 10/60. |
| Daily limit | 100 | Maximum dispatches per calendar day for this number (both sent and failed attempts count). |
| Hourly limit | 30 | Maximum dispatches per clock hour. Prevents burning the daily allowance in one burst. 0 disables. |
| Coffee break | 15 min / 30 msgs | Pause for N minutes after every M messages, tracked across restarts. Set M to 0 to disable. |
| Restricted hours | (empty) | Quiet window, e.g. 22:00-08:00 (windows past midnight are handled). Both fields empty disables. |
| Warm-up | On | Ramps a new number from 20/day up to the daily limit over about a week. See Warm-up. |
The dashboard shows each connection's progress as sent / effective cap with the reason (configured limit or warm-up cap) spelled out.
Proxies
Each connection can route its traffic through its own HTTP or SOCKS proxy. When you run several numbers from one server, give each its own residential or mobile proxy so they do not all share one network identity.
- Proxy details are set when the connection is created. To change them later, delete and recreate the connection (contacts on it are removed too - export first).
- The proxy password is stored encrypted at rest (AES-256-GCM) and is never sent back to the browser - the dashboard only shows whether one is set.
- If the server's
SESSION_SECRETis ever rotated, stored proxy passwords must be re-entered.
Re-link, disconnect & delete
- Re-link wipes the stored login and generates a fresh QR. Use it when the phone unlinked the session or the number was re-registered.
- Disconnect logs the number out of WhatsApp Web but keeps the connection row, its settings and its contacts, so you can re-link the same number later without losing anything.
- Delete removes the connection, its browser, its auth data and all of its queued contacts. Delivery history survives (it copies the connection's name and number into every record). This cannot be undone.
From CSV to delivered
Import a list, write one message, press Start. Everything between is handled - and everything after is recorded.
Importing contacts (CSV)
Upload a CSV on the connection's page. Only phone is required; name and message are used if present, and a media-URL column can attach a per-recipient file. Full column list in the CSV reference.
- Up to 50,000 rows per upload, 20 MB per file (2 MB for PDFs).
- Numbers already pending or sending on this connection are skipped as duplicates. Numbers already sent or failed are not skipped - re-sending to a past audience works.
- Phone numbers are stripped to digits and must include the country code (
919876543210, not9876543210). Values Excel mangled into scientific notation (9.19877E+11) are repaired automatically. - Header names are forgiving:
Phone Number,phone_numberandphonenumberare all the same column. - A row's own message or media wins; blank rows fall back to the dashboard's default message and attachment.
Writing messages
One template goes to everyone, rendered per person:
{name}- replaced with the contact's name (blank if none).{phone}- their number.- Spintax varies the wording - see below. Both work in any language.
- The compose box shows a live preview of a rendered example before you send.
Spintax
Spintax is the personalization engine. Write alternatives inside curly braces separated by pipes, and every recipient gets one chosen at random:
{Hi|Hello|Hey} {name}! Our new catalog is live.
Claim your {20% off|discount|welcome offer} {today|this week}. Spintax nests, so you can vary whole sentences:
{{We miss you|It has been a while} - here is 10% off|Your 10% welcome code is waiting} {name}! Why it matters: two hundred identical messages from one number is a bulk-sender fingerprint. Two hundred messages that differ in wording, with the offer intact, look like a person writing to people. With a handful of spintax choices your campaign produces thousands of unique bodies.
Attachments & media
- One attachment per campaign: JPG, PNG, WEBP or PDF. PNG/WEBP are re-encoded to JPEG; PDFs are delivered as documents (2 MB cap).
- Or put a URL in the CSV's media column to attach a different file per recipient (up to 16 MB, fetched server-side).
- Every image is re-encoded slightly for each recipient, so one campaign is not one identical file hash shared with everyone. See Typing & media variation.
- If an attachment cannot be loaded, the contact fails rather than sending the text alone - a message written around a missing brochure is worse than no message, and it cannot be unsent. Fix the file and retry; nothing was dispatched, so no quota was spent.
Sending a test message
Before committing to thousands, send one copy to yourself: Connection → Test message, enter a phone number, and Automate delivers the rendered message immediately. The test is a true preview - spintax expanded, {name} filled - and the number is validated exactly as in a campaign. It counts against the day's quota because it is a real message from a real account.
Start, pause, resume & stop
| Action | What happens |
|---|---|
| Start | Fills any contact without a message with the default text, then begins the loop. Refuses if the connection is not connected or nothing is queued. |
| Pause | Stops after the in-flight message. The schedule is remembered - Resume continues with the same pacing. |
| Resume | Picks up exactly where the campaign stopped, including mid-batch break counters. |
| Stop | Ends the run and clears scheduled jobs. Contacts stay where they are; Start again to continue. |
| Switching numbers | Stop the campaign on one connection and start it on another - the queue travels with the contacts, so an in-progress campaign can fail over to a different line mid-flight. |
When the last contact is processed the campaign finishes itself and the connection's badge resets. A campaign interrupted by a restart or a Redis blip resumes on its own - see Crash recovery.
Retrying failures
- Retry all re-queues every failed contact of a connection in one click.
- Retry one re-queues a single contact - handy after fixing one bad row or re-attaching a file.
- Contacts failed as not on WhatsApp are never retried. The number is not on WhatsApp; retrying would only burn quota and repeat the strongest ban signal there is. They are reported separately in the retry response and the health report.
- Contacts failed as opted out are never retried either - they asked to stop.
Reusable contact lists
Save your segments once, launch campaigns from them without re-uploading.
Reusable contact lists
- Lists are independent of any connection - "Loyalty customers", "Diwali 2026", "Client A - leads".
- Import by CSV (phone + name), add contacts by hand, or export any list back to CSV for editing elsewhere.
- Duplicate checking is per list: the same number can live in several lists.
- Hard ceiling: 100,000 saved contacts across all lists combined, enforced at import time.
- Deleting a list never touches contacts already copied into a campaign queue.
Launching from a list
On any list: Apply to connection, choose the connection, write the default message, optionally attach media. The whole list is copied into that connection's queue as pending contacts, skipping numbers already queued there. The copy is a snapshot - later edits to the list do not change contacts already queued.
Built to send more - safely
Ten layers of pacing and hygiene, all automatic, all per connection. This is the core of the product.
How the protection stacks
WhatsApp restricts numbers that behave like bulk senders. Every control below exists to make one number's behavior look like a person's: it validates before it sends, it starts slow, it varies everything, it pauses often, and it stops itself when something looks wrong.
Number validation
Before every send, the recipient is resolved against WhatsApp. Numbers that are not on WhatsApp are skipped permanently - no message is attempted. This is the single strongest ban signal there is: ordinary users never message numbers that are not registered, bulk senders with stale lists do it constantly.
- Results are cached for 30 days, so each number is looked up once, not once per campaign.
- The lookup also resolves country-code variants, fixing silent non-delivery to numbers written in local formats.
- Skipped contacts are marked not on WhatsApp and never consume your daily quota (nothing reached WhatsApp) - and never retry.
Warm-up ramp
A brand-new linked number sending at full volume is the most recognizable bulk pattern there is. With warm-up on (default), the number's real limit starts at 20 messages on day one and grows about 1.6× per day until it reaches your configured daily limit - typically within a week:
| Day | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8+ |
|---|---|---|---|---|---|---|---|---|
| Approx. cap/day | 20 | 32 | 51 | 82 | 131 | 210 | 336* | your limit |
* Capped by your configured daily limit - warm-up can only lower a limit, never raise it. It keys off when the connection was created, so re-linking an old, already-warm number does not reset the ramp; turn warm-up off per connection for those.
Daily & hourly limits
Two ceilings per connection: a daily limit (default 100) and an hourly limit (default 30, disable with 0). The hourly one exists because a daily cap alone lets a number spend everything in one burst and then idle for 23 hours - not a shape a human produces. When a limit is reached the queue parks itself and tells you when it resumes; both sent and failed dispatches count, and only dispatches that actually reached WhatsApp count.
Random delays & send order
- The pause between messages is drawn randomly between your min and max delay (default 10-60 s), so intervals never repeat.
- Send order is randomized within the queue - the worker picks from the next 50 pending contacts at random. Sending in exact CSV order reproduces whatever ordering the list arrived in (by area code, alphabetically, by batch), which is a very regular signal.
Coffee breaks
Every M messages (default 30) the queue takes a break of N minutes (default 15) - deliberate idling that keeps the number looking human. The counter is stored on the connection, so a restart cannot silently skip a break, and pausing/resuming does not reset it.
Quiet hours
Two quiet-hours layers, both optional:
- Your window - set restricted hours per connection (e.g. 22:00-08:00, correctly spanning midnight). The queue sleeps through the window and resumes after.
- Their window - a contact whose own local time is inside your window is held back until morning, using a timezone derived from the country calling code. Someone in a different country does not get your 11 p.m. at their 3 a.m.
The default shipped to every account - 10 p.m. to 8 a.m. - is also what our Acceptable Use Policy asks you to respect.
Typing & media variation
- Typing indicator. Before each send the recipient sees "typing…" for a duration scaled to the message length - a long message types for longer, jittered, then clears before the message lands.
- Media variation. Images are re-encoded per recipient (slightly different quality and width, metadata stripped), so one campaign to 500 people is not one identical file hash 500 times.
Circuit breaker
When a number is in trouble, pushing on is how a temporary restriction becomes a permanent ban. The circuit breaker stops the queue for you:
- Five consecutive failures pause the queue and raise a warning in the activity feed.
- One unmistakable signal - rate limited, blocked, banned, unauthorized, or a dead session - pauses immediately rather than waiting for five.
- Resuming after a breaker trip is a deliberate operator action: check the connection (try a test message) before you continue.
Best practices
| Control | Recommendation |
|---|---|
| Min / max delay | Keep 10 s / 60 s or wider. Never below the 10/60 floor. |
| Daily limit | 100-300 per number. Start low on a new number and let warm-up do its thing. |
| Coffee break | 10-15 min after every 25-30 messages. |
| Restricted hours | Block overnight, e.g. 22:00-08:00. |
| Proxy | One residential/mobile proxy per number when running several from one server. |
| Message body | Always vary it - spintax plus {name}. Identical bulk text is the fastest route to a ban. |
| List hygiene | Only opted-in, recent contacts. Validation removes dead numbers, but a stale list hurts delivery before validation sees it. |
Opt-outs & compliance Consent-first, built in
Someone who asked to stop must never hear from you again - the app enforces that for you.
Automatic opt-out capture
When a recipient replies with a stop keyword, Automate catches it, on any of your connections, and acts immediately:
- The number is added to the suppression list permanently, with their message kept as the note.
- Anything already queued for them is cancelled on every connection, not just the one that received the reply.
- A warning appears in the activity feed telling you who opted out and how many queued messages were cancelled.
Recognized keywords (a bare message, not one that merely contains the word): stop, unsubscribe, opt out, remove me, do not contact, no more, cancel.
The suppression list
- Every suppressed number is checked before every send, on every connection, forever - unless you remove the entry by hand.
- Add numbers manually too (someone who emailed you to stop, for instance); anything queued for them anywhere is cancelled on the spot.
- The list is searchable, exportable to CSV, and deletable entry by entry.
Acceptable use essentials
- Opt-in only. Message people who knowingly opted in on this channel, with evidence of when and how they consented.
- Never purchased, rented or scraped lists. No exceptions, regardless of how the seller described them - this is immediate termination without refund.
- Honor opt-outs promptly and permanently; never move a suppressed contact to another list to keep messaging them.
- No impersonation, fraud, or rate-limit evasion (including number rotation to dodge bans).
- Automate does not bypass WhatsApp's rules and does not promise ban immunity - following the guidance here reduces risk; nothing eliminates it. Full policy: Acceptable Use.
Monitoring Know what happened to every message
Live telemetry while a campaign runs, and a complete audit trail after.
Dashboard & chart
- Lifetime totals - uploaded, sent, failed - plus live pending/sending counts per connection.
- A messages-per-day chart with 7- and 30-day ranges, fed by real delivery records.
- Every connection card shows its live status, today's progress against its effective limit, and queue counts (pending / sent / failed).
Live activity terminal
The activity feed streams what the worker is doing in real time - each send, each skip with its reason, breaks starting and ending, limits reached, quiet hours, circuit-breaker trips, opt-outs. If the dashboard is open, you never have to guess what the queue is doing.
Delivery history & read receipts
- Every message - sent or failed - is recorded with the rendered body actually delivered, the attachment type, the connection used, timestamps, and the failure reason if any.
- WhatsApp acknowledgements are tracked per message: sent → delivered → read, and only ever move forward. Delivered/read ratios survive page reloads.
- Search across phones, names, connection names, message bodies and errors; filter by status; export any view to CSV.
- History is retained for 90 days (export to keep longer). Clearing history never affects remaining daily quota.
Campaign health report
Each connection has an outcome report that turns raw counts into a verdict:
Metric Meaning Failure rate Share of attempts that failed - with a breakdown: not on WhatsApp, opted out, send errors, connection errors. Delivery & read rates From WhatsApp acknowledgements over the last 7 days. Health ok normally · warning above a 10% failure rate (or delivery under 50%) · critical above 25%. Judged once at least 20 attempts make the ratio meaningful.
A degrading delivery rate is your earliest signal that a number is being throttled - act on it before the circuit breaker does.
Account & settings Your account
One admin login per server - yours, with everything on it belonging to you.
Logging in
You receive your dashboard URL, username and password when provisioning completes. Sessions last 7 days. Login attempts are rate-limited (20 per 15 minutes) and credentials are checked against a bcrypt hash - the server never stores your password in a readable form.
Changing your password
- Change it any time from Settings (minimum 8 characters).
- Locked out? Your server operator can reset it to the original credentials from the server shell.
System info
Settings → System info shows the app version, the server's CPU and memory, and - importantly - whether the instance is still receiving software updates. That last one matters: a silently expired deploy credential is otherwise invisible until something breaks.
Fixed limits
Limit Value CSV rows per campaign upload 50,000 Saved contacts across all lists 100,000 Upload file size 20 MB (PDFs 2 MB) Remote media per recipient 16 MB Delivery history retained 90 days Queued contacts retained 1 year Number-validation cache 30 days Dashboard session 7 days Inter-message delay floor 10-60 s
Updates & reliability Stays up, stays current
The server heals itself, updates itself, and never loses a campaign to a restart.
Software updates
- The instance checks your repository hourly and the dashboard tells you when an update is available, with the pending changes listed.
- Applying an update runs the same gated procedure the hourly cron uses: tests and schema migrations must pass or the update aborts, leaving the running version untouched.
- Updates are refused while a campaign is mid-send (you can override), on a dirty working tree, or when nothing would restart the app afterwards.
- Unattended auto-install is available but off by default - updates are announced and you choose when.
Crash recovery & auto-resume
- The app runs under a process manager that restarts it after a crash and after a server reboot, with exponential backoff - it never permanently gives up.
- A contact caught mid-send when a restart happens is reset and retried; the campaign picks itself back up about five seconds after the job queue is reachable again, with nothing to press.
- A paused campaign stays paused - resuming is always your call.
- Disconnects reconnect automatically with exponential backoff (up to 10 attempts), stale browser locks are cleaned automatically, and a wedged browser is detected and reported instead of stalling the queue forever.
The /health endpoint
The dashboard can look perfectly healthy while sending is impossible - that is why the server exposes a public /health endpoint that reports its database and job-queue status and answers 503 when sending is not possible. Point any uptime monitor at it and you will know about an outage before a customer does.
Security What protects your account
Your contacts, your logs, your server - locked down by default.
- Isolation. Nothing is shared: your own VPS, own IP, own database. We charge for software, not access to your data.
- Session hardening. Passwords hashed with bcrypt; cookies are HTTP-only and same-site; sessions are regenerated on login and expire after 7 days.
- Browser hardening. Strict Content-Security-Policy with no third-party origins, framing forbidden, WebRTC disabled in every connection's browser so your server's real location cannot leak.
- Upload safety. Files are verified by magic bytes, not just extension; CSV formula injection is neutralized on every export.
- SSRF guards. Media URLs you import are resolved and checked before fetching - private, loopback and cloud-metadata addresses are refused.
- Rate limiting. 600 API requests / 15 min, 20 login attempts / 15 min, plus a cross-origin write guard.
- Secrets at rest. Proxy passwords are AES-256-GCM encrypted with a key derived from the server's secret; they are never returned to any browser.
Reference API quick reference
Everything the dashboard does is a documented HTTP endpoint - useful for integrations and monitoring. All endpoints require the dashboard session cookie; responses are JSON.
Method & path Purpose GET /healthPublic probe. 200 when DB + queue are up, 503 when sending is impossible. POST /api/auth/login · /logoutSession login (rate-limited 20/15 min) and logout. POST /api/auth/passwordChange the admin password. GET /api/sessionsAll connections with live status, queue counts and effective daily limit. POST /api/sessionsCreate a connection (name + optional proxy). DELETE /api/sessions/:idDelete a connection and its queue. POST /api/sessions/:id/reconnect · /disconnectRe-link (fresh QR) or log out while keeping settings. PUT /api/sessions/:id/settingsUpdate anti-ban settings (delays, limits, breaks, quiet hours, warm-up). POST /api/contacts/uploadMultipart CSV (+ optional attachment) into a connection's queue. GET /api/contacts · /stats · /report · /chart-statsQueue listing, counts, health report, chart data. POST /api/contacts/retry · POST /api/contacts/:id/retryRe-queue failures (bulk or single). GET/POST /api/contact-listsManage audience lists; /upload, /export, /apply-to-session per list. POST /api/queue/:id/start · /pause · /resume · /stopCampaign controls. /start accepts a default_message. POST /api/queue/:id/testSend one rendered test message. GET /api/history · /export · DELETE /api/historyDelivery history: list, CSV export, clear. GET/POST /api/suppression · DELETE /:phone · /exportDo-not-contact list management. GET /api/updates · POST /check · /applySoftware update state and actions. GET /api/settings/system-infoServer metrics and running version.
Live events (connection status, per-message outcomes, breaks, breaker trips, update notices) stream to the dashboard over an authenticated WebSocket; the socket is broadcast-only - all actions go through the REST endpoints above.
Reference CSV reference
Column matching is forgiving - header names are compared with spaces, underscores, hyphens and dots removed. The first matching column with a non-empty value wins.
Campaign queue upload connection page
Only phone is required. Where a row leaves message/media blank, the dashboard's default message and attachment are used.
Field Accepted headers Phone required phone, number, mobile, contact, cell, whatsapp, phonenumber, mobilenumber, contactnumber, telephone Name name, fullname, contactname, customername, firstname, lastname, clientname Message message, defaultmessage, msg, text, caption, content, body, template, description, notes Media URL imageurl, image, media, file, photo, picture, attachment, document, pdf, url
phone,name,message
919876543210,Rahul Sharma,"{Hi|Hello} {name}, our new catalog is live!"
919812345678,Priya,
Contact list upload list page
Only phone and name are read; message and media columns are ignored.
phone,name
919876543210,Rahul Sharma
919812345678,Priya Nair
Phone formatting
- Digits only after import; at least 7 digits; always include the country code.
- Spaces, dashes, parentheses and a leading
+ are all fine - they are stripped. - Excel-scientific-notation values (
9.19877E+11) are repaired automatically. - Format your column as Text in Excel/Sheets before saving to CSV to avoid mangling in the first place.
Reference Troubleshooting
The six things that account for almost every support question.
The queue says running but nothing sends
Check the activity feed - it always says why. The usual reasons, in order: the connection dropped (badge not green), quiet hours are active, a daily or hourly limit is reached, a coffee break is running, or warm-up is holding a new number to a low cap. Each state is announced in the feed with its resume time.
The dashboard is asking for a QR code again
The phone unlinked this session (or WhatsApp logged it out). Scan again with Re-link. Contacts, settings and history are untouched by a re-link.
Lots of contacts "not on WhatsApp"
Two usual causes: stale lists, or missing country codes. Numbers without a country code can silently fail resolution - re-export with full international format and re-import. Skipped contacts are permanent, so cleaning the source list is worth it.
Contacts failing with "attachment is missing"
The campaign's file was removed from the server (or the upload failed its safety check). Re-attach the file and retry the failed contacts - nothing was sent to them, so nothing was wasted.
Sending paused automatically
The circuit breaker tripped - five failures in a row, or one hard signal (rate limit, block, unauthorized). The activity feed shows the exact reason. Send a test message to check the connection; if it works, press Resume. If WhatsApp is restricting the number, stop and let it rest for a day or two.
A connection behind a proxy will not connect
Verify the proxy from the server itself first. Proxy credentials were set at creation - if the server's secret was rotated, re-enter the password by recreating the connection. One residential or mobile proxy per number, always.
FAQ Frequently asked questions
Will WhatsApp ban my number?
Automation on a personal WhatsApp account always carries risk, and we will not pretend otherwise. What we can say honestly: the app controls (number validation, warm-up, pacing, quiet hours, unique message bodies, circuit breaker) remove the behaviors that get numbers banned fast, and customers who follow the recommended settings and message only opted-in contacts run for months on the same numbers. Nobody can promise immunity, and anyone who does is selling you something. Do I need WhatsApp Business API access?
No. Automate drives real WhatsApp Web sessions through an isolated browser on your server. There is no Meta application, no template approval, no per-message API fee. You link the numbers you already have by scanning a QR code. Where does my data live?
On your own server. Every account is a separate machine with its own private IP and its own database - not a shared multi-tenant platform. Contacts, message bodies and delivery logs never leave it, except the payment processor and order form, which are the only outside services involved. Can I import any list I bought?
No. Purchased, rented, scraped or harvested lists are banned outright by our Acceptable Use Policy, with immediate termination and no refund. Only message people who opted in to hear from you, and keep evidence of the consent. How many messages can I really send per day?
Per number, start at 20 (warm-up) and settle at 100-300/day as the number matures. The plan ceilings (15k / 37k / 75k per month) are far above what a single number can safely carry - real volume comes from running several numbers, which is why Growth and Enterprise include 5 and 10. What is spintax, exactly?
A way to write one template that produces a different message per recipient. {Hi|Hello|Hey} {name}! greets everyone differently. Alternatives can be nested for whole-sentence variety. The offer and call-to-action stay intact; the wording varies. See Spintax. Can I run a 50,000-contact campaign?
Yes - 50,000 rows is the per-upload limit, and larger audiences can be split across uploads or lists. At recommended pacing, plan the calendar: a single warm number delivers roughly its daily limit per day, so big campaigns use several numbers or several days. Are there per-message charges?
Never. Plans are a flat yearly price. Send your plan full monthly volume and the price does not move. Can I pause a campaign and continue tomorrow?
Yes - pause or stop at any time and resume later, or switch the remaining queue to a different number entirely. Queued contacts are never lost: they survive restarts, deploys and re-links, and an interrupted campaign resumes on its own after server maintenance. Can recipients reply? What happens to "STOP"?
Replies arrive on the phone as normal WhatsApp messages - Automate is a sender, not an inbox. But it listens: a reply like "stop" or "unsubscribe" instantly suppresses that number across all your connections and cancels everything queued for them. How fast is setup?
Up to two days from payment: your server is hand-built with a private IP, the app is installed and secured, and credentials are emailed to you. Onboarding and migration help are included in every plan. What if it doesn't work for me?
You have 14 days from the day your credentials are delivered to request a full refund of the subscription minus the disclosed server-setup deduction - and if we cannot provision your instance at all, the refund is total. Details: Refund Policy. Glossary Word glossary
- Connection
- A linked WhatsApp number with its own browser session, settings and queue. Called a "session" in the API.
- Campaign
- One run of sending through a connection's queue: the uploaded contacts, the message, the attachment, and the outcome of every send.
- Queue
- The pending contacts of a connection, processed one at a time by a background worker with anti-ban pacing between each message.
- Spintax
- Template syntax
{Hi|Hello|Hey} that picks one alternative at random per recipient, so every message body is unique. Supports nesting. - Warm-up
- The automatic ramp that holds a newly linked number to 20 messages on day one and grows the cap about 1.6x daily until it reaches the configured limit.
- Coffee break
- A scheduled pause (default 15 min) after every N messages (default 30), tracked across restarts so a restart cannot skip it.
- Restricted hours / quiet hours
- A daily window during which a connection does not send. Enforced in your server's time zone and, on top of that, per recipient's approximate local time.
- Circuit breaker
- The safety that pauses a queue automatically after five consecutive failures, or immediately on rate-limit / block / unauthorized signals.
- Number validation
- Resolving a recipient against WhatsApp before sending. Non-registered numbers are skipped permanently, never messaged.
- Suppression list
- The permanent do-not-contact list. Checked before every send on every connection; fed automatically by opt-out replies and manually by you.
- Opt-out
- A recipient reply (e.g. "STOP") that adds them to the suppression list and cancels everything queued for them anywhere.
- Acknowledgement (ack)
- WhatsApp's per-message status report: sent → delivered → read. Stored on each history record and only ever moves forward.
- failure_kind
- Why a contact failed:
not_registered (permanent), opted_out (permanent), send_error (retryable) or connection (retryable once the connection is healthy). - Provisioning
- The hand-built setup of your dedicated server and private IP after payment - up to 2 days.
Support Getting more help
- Email: mail@automatemessage.com - answered the same business day.
- Website: automatemessage.com - pricing, ordering and policy pages.
- Before writing in: the activity feed and the connection's health report answer most "why did X happen" questions - include a screenshot of both when you email.
- Enterprise plans include 24/7 support.
Strategy From features to campaigns: the guides
This page explains every control in the app. The guides explain
what to do with them - list building, pacing, personalization and
the honest parts of choosing software - as full playbooks rather
than feature notes.
- WhatsApp Marketing: The Complete Playbook for Businesses (2026) - The complete WhatsApp marketing playbook: build a consented list, write messages that get replies, pace your sends, and measure what actually matters.
- WhatsApp Deliverability: The Complete Guide to Getting Delivered, Read, and Trusted - How WhatsApp deliverability works: what sent, delivered and read mean, the behaviors that earn trust, and the safeguards that keep numbers healthy.
- Personalized WhatsApp Messages at Scale: The Complete Guide - How per-recipient personalization works at scale: variables, spintax, segments and per-row copy, and what uniqueness does for delivery and replies.
- How to Choose WhatsApp Marketing Software: The Honest Buyer's Guide - A decision framework for choosing WhatsApp marketing software: infrastructure, pricing, personalization, compliance, data ownership and support - with a checklist.
- All guides - every article, organized by topic.
Read this Automate drives real WhatsApp Web sessions through
automation. The anti-ban controls in this app reduce risk; they do not eliminate it.
Only ever message people who opted in to hear from you - messaging strangers or
scraped lists is both against our Acceptable Use Policy and the fastest way to lose a
number.
Nothing matches that search. Try a shorter phrase - e.g. "spintax", "quiet hours", "refund".