NOWEB
Overview
NOWEB engine does not require a browser to work with WhatsApp Web, it does so directly using a WebSocket. Not running Chromium saves you CPU and Memory, so you can run more instances on a single server!
⚠ Read the article before using NOWEB engine How to avoid blocking ->.
Run NOWEB
# Plus
docker run -v `pwd`/.sessions:/app/.sessions -e "WHATSAPP_DEFAULT_ENGINE=NOWEB" devlikeapro/waha-plus
# Core
docker run -it -e "WHATSAPP_DEFAULT_ENGINE=NOWEB" devlikeapro/wahaConfiguration
markOnline: true- sendonlinepresence when session starts (defaulttrue).- Required if you want to get notifications in your phone
- Read more about ✅ Presence
{
"name": "default",
"config": {
"noweb": {
"markOnline": false,
"store": {
...
}
}
}
}Store
By default, NOWEB doesn’t store any contacts, chats, or messages, so it’s your application’s responsibility to store them. It’s fine for CRM cases like “appointment reminders” or “order notifications” where you don’t need to store the chat history.
These endpoints doesn’t work by default in NOWEB engine.
Here’s how you can enable the store feature:
Enable store
If you want to get the contacts, chats or messages you need to enable it explicitly by settings additional fields
in config at POST /api/sessions/ body.
👉 Do not change the values after you scanned QR, it can lead to the loss of the chat history.
{
"name": "default",
"config": {
"noweb": {
"store": {
"enabled": true,
"fullSync": false
}
}
}
}config.noweb.enabled.store=true- to enable the store feature (falseby default)config.noweb.enabled.fullSync=true- emulate a desktop connection (and receive more message history).fullSync=falseyou’ll get about 3 months of message history.fullSync=trueyou’ll get about 1 year of message history (max 100K messages per chat).
Or enable it on WAHA Dashboard when starting a new session:

Get messages
When you enabled store - you can Get messages from chat, it’s the store with some additional fields in _data:
reactions- reactions to the messagepollUpdates- encrypted votes to the polls (not decrypted yet, please create an issue if you wish to get the summary of polls in the response.userReceipt- broadcast and group messages - the user receipt of the message (aka ACK flag, green checkmarks) for
Reactions
[
{
"id": "true_111111@c.us_AAAAAAAAAAAAAA",
// Regular fields here,
"_data": {
"key": {
"remoteJid": "111111@s.whatsapp.net",
"fromMe": true,
"id": "AAAAAAAAAAAAAA"
},
"messageTimestamp": 1718265764,
"pushName": "Sim2",
"broadcast": false,
"status": 2,
"reactions": [ // <==== Reactions
{
"key": {
"remoteJid": "111111@s.whatsapp.net",
"fromMe": true,
"id": "11111111111111111111111111111111"
},
"text": "❤️",
"senderTimestampMs": 1718265740788
}
]
}
}
]Poll votes
[
{
"id": "true_111111@c.us_AAAAAAAAAAAAAA",
// Regular fields here,
"_data": {
"key": {
"remoteJid": "111111@s.whatsapp.net",
"fromMe": true,
"id": "AAAAAAAAAAAAAA"
},
"messageTimestamp": 1718265764,
"pushName": "Sim2",
"broadcast": false,
"status": 2,
"pollUpdates": [
{
/// Encrypted poll votes
}
]
}
}
]User receipt for group messages and status@broadcast messages (aka Status field)
[
{
"id": "true_111111111111111111111@g.us_AAAAAAAAAAAAAAAAA",
"timestamp": 1718266155,
"from": "111111111111111111111@g.us",
"fromMe": true,
"body": "Hdhf",
"to": "111111111111111111111@g.us",
"participant": "33333@c.us",
"hasMedia": false,
"ack": 1,
"ackName": "SERVER",
"_data": {
"key": {
"remoteJid": "111111111111111111111@g.us",
"fromMe": true,
"id": "AAAAAAAAAAAAAAAAA",
"participant": "33333@s.whatsapp.net"
},
"messageTimestamp": 1718266155,
"pushName": "Sim2",
"broadcast": false,
"status": 2,
"message": {
"conversation": "Test"
},
"userReceipt": [ // <<<==== User receipt
{
"userJid": "1111111@s.whatsapp.net",
"readTimestamp": 1718266160 // aka ackName: READ
},
{
"userJid": "22222@s.whatsapp.net",
"receiptTimestamp": 1718266162 // aka ackName: DEVICE
}
]
}
}
]Get chats and contacts
When you enabled store - you can Get all chats and Get all contacts.
Here’s some ids you can meet there:
123123123@c.usPhone numbers accounts - international phone number without + at the start and add@c.usat the end. For phone number12132132131thechatIdis12132132131@c.us123123123@s.whatsapp.netcan also appear in internal data for NOWEB, just convert it to@c.usto work with that properly. Kindly don’t use it inchatIdwhen sending messages12312312123133@g.us- Groups uses random number with@g.usat the end.123123123@lid- is a hidden user ID, each user has a regular ID along with a hidden one. WhatsApp added that type of ID along with communities functionality.123123123@newsletter- for 📰 WhatsApp Channels.
Store under the hood
Under the hood, the NOWEB stores the session data in database based on 🗄️ Storage you choose - either in files or in MongoDB.
- For File local storage it creates sqlite3 database at
.sessions/noweb/{sessionName}/store.sqlite3store withchats,contacts,messagestables with proper indexes.- 👉 We don’t recommend opening it manually when the session is running, even for reading, it can lead to the loss of the chat history.
- For MongoDB in
waha_{engine}_{sessionName}it createschats,contacts,messagescollections with proper indexes.- 👉 You can safely READ from the database, but DO NOT WRITE to it manually, it can lead to the loss of the chat history.