Troubleshooting
Most issues come down to the WhatsApp connection, the database, or configuration. Work through the relevant section below.
Chats aren't loading in the inbox
- Check the number’s status. Open Numbers — the line must show Ready. If
it’s
connecting,disconnected, orlogged_out, fix the connection first (see below). - Give history time to sync. Right after linking, Loopwave pulls history in the background over the first couple of minutes. Older chats fill in progressively.
- Pull older history on demand. If a re-link didn’t bring enough history, use the number’s sync-history action to fetch an older batch.
- Confirm the database is reachable. If MongoDB is down, the inbox can’t read or
store chats. Check
MONGODB_URIand that MongoDB is running. - Check the browser console / API logs for errors if the list stays empty.
The number is stuck at the QR screen
- Scan within the time limit. QR codes expire; if it times out, refresh to get a new one and scan promptly.
- Scan from the right place. On the phone holding that number, go to WhatsApp → Settings → Linked Devices → Link a Device.
- Check linked-device limits. WhatsApp caps how many devices a number can link. Remove an unused linked device on the phone, then try again.
- Use a clear, well-lit screen. A dim or partially covered QR won’t scan.
A number won't connect or keeps dropping
- Keep the phone online. Linked devices need the phone reachable periodically. A phone that’s off or offline will cause drops.
- Let auto-reconnect work. On a
disconnectedstate, Loopwave retries automatically. Brief drops usually recover on their own. - Re-link on
logged_out. This means the device was unlinked from the phone side (or removed from WhatsApp’s Linked Devices list). Scan a fresh QR code to reconnect. - Verify the data directory persists. If
AUTH_DIRwas wiped or isn’t writable, credentials are lost and the number must be re-linked. Make sure the directory is persistent and writable.
Media (images/files) won't show
- Open the message to trigger download. Loopwave downloads media lazily — the file is fetched the first time it’s opened, then cached.
- Keep the source number connected. Media is downloaded through a connected session. If the number is offline, the download can’t complete; reconnect and try again.
- Retry after reconnecting. A media item that failed to download while a number
was offline can be re-fetched once it’s
readyagain. - Check disk space. Downloaded media is cached on disk; a full disk will block new downloads.
Agents can't see customer phone numbers
This is usually intended. Number masking is on by default and hides customer numbers from agents (admins always see them). To change it, an admin can toggle masking in Settings → Privacy.
Writes are failing with a 402 error
A 402 means the license is expired, revoked, or invalid and the deployment is in
enforce mode, so writes are blocked while reads still work. Open Settings → Billing
& License, check the state, and activate or refresh a valid key. See
Licensing.
API calls return 401 or 403
- 401 invalid_api_key: the key is missing, malformed, or disabled. Confirm the
header (
Authorization: Bearer lw_live_...orX-API-Key) and that the key is enabled. - 403 insufficient_scope: the key lacks the scope for that endpoint. Add the scope
or use a
*key. See Authentication.
Auto-replies or broadcasts aren't sending
This is often the anti-ban guards doing their job:
- The sending number must be ready — a disconnected number pauses sends.
- Auto-replies honor a per-chat cooldown, a global rate cap, and skip your own outbound messages and (by default) group chats. See Auto-reply guards.
- Broadcasts send one recipient per tick with randomized delays and a daily cap, so large campaigns take time and may span days by design. See Broadcast pacing.
Webhooks aren't arriving
- Confirm the webhook is enabled and subscribed to the right events.
- Send a test delivery from the webhook screen and watch your endpoint.
- Return a 2xx quickly. Endpoints that time out (5s) or error are retried, then the failure is recorded on the webhook (last status / last error) — check those fields.
- Verify the signature correctly over the raw body. A mismatch usually means the body was re-serialized before hashing. See Webhooks.
Still stuck?
Capture the number’s status, any error shown in the dashboard, and the relevant API logs, then reach out to support with those details.
Connection basics→Revisit how linking a number is supposed to work.