WA
Configuration
Settings
Paste your WhatsApp token below and save to start. It's stored in Firestore (config/app), not in the code.
Stored in Firestore. Loaded after login.
Every upload is tagged with this; the Assets page lists by it.
API key/secret are stored but not used in the browser — Cloudinary's Admin API is CORS-blocked and the secret must never reach a client. Uploads use the unsigned preset; the Assets list uses the public list-by-tag endpoint.
Library
Templates
No templates yet — sync your approved ones from Meta, or create a new one.
Templates / New
Create template
12:30 PM
Saved audience
Contacts
Build audiences in New Send; saved contacts appear here. ( saved)
| Name | Phone | Source |
|---|---|---|
History
Campaigns
| Template | Recipients | Sent | Failed | Status | |
|---|---|---|---|---|---|
No campaigns yet.
Media library
Assets
Files uploaded through the app (tagged ). Copy a link to reuse it anywhere.
No assets listed. Two things to check in Cloudinary → Settings → Security: un-check “Resource list” under Restricted image types (checked = blocked), then upload a file here so it gets tagged
.New Send
Send a campaign
Pick an approved template. Need a new one? Create it under Templates.
No approved templates cached. Go to Templates → Sync from Meta.
APPROVED
Need the format? Download a ready-made sheet, fill it, re-upload.
valid recipient(s) · invalid/duplicate skipped.
×
This template has no variables — nothing to fill. Continue.
✓ All variables resolved for every recipient.
Some variables are empty for one or more recipients.
⚠ That link couldn't be loaded — check it's public and direct to the file.
✓ Media link is reachable.
A header media link is required for this template — upload or paste one to continue.
Review & send
Template
Recipients
Header
Media link
Est. time
Header media link is missing — go back to step 4.
Done
✅ Sent
❌ Failed
Keep this tab open while sending — there's no server, the loop runs here.
12:30 PM
Recipients
Variables