1Overview #
Three kinds of plumbing live here. Mailboxes are the addresses the CRM reads (over IMAP, read-only) so that customer mail lands on records. SMS webhooks are the addresses your gateway calls back with delivery reports and replies. WhatsApp numbers are your Meta business numbers, with the templates they may send.
This is an administrator's screen. Everything on it is set up once and then left alone; the people who use the CRM never come here.
Secrets, passwords and tokens are write-only: they are stored encrypted and never shown again - the boxes simply say that something is stored.
WhatsApp is a feature of the Communication Hub, bought on its own. Without it the WhatsApp numbers section is not shown, a WhatsApp number cannot be saved or its templates synced, and nothing is sent by WhatsApp - mailboxes and SMS do not need it.
2Who it is for #
- Say which of your mail accounts the CRM reads, and where its unmatched mail waits.
- Give your SMS gateway an address for delivery reports and inbound replies, and name the fields it sends.
- Connect a WhatsApp business number and sync its approved templates.
- See at a glance what is working, what is failing, and what is waiting to be processed.
3What it is not for #
- Sending. The inbox, the record panels and Bulk Messages send; this only sets up the channels.
- The outgoing mail server. That lives on Settings > Mail Accounts, which this screen picks an account from.
4Step by step #
- A mailbox: press Add mailbox, pick the account (it must already exist on Settings > Mail Accounts), and give its IMAP server, port, user name and password. - Gmail and Microsoft 365 need an app password, with IMAP switched on for the mailbox.
- Press Test the sign-in. - It signs in and counts the folder - it reads nothing and changes nothing.
- Set from which date to read, the tray group, and whether only known senders are kept. Save (F5).
- An SMS webhook: press Add webhook, give it a name and a secret, and name the fields your gateway sends. - Sender and text for replies; message id and status for delivery reports.
- Copy the Address shown after saving into your gateway's webhook settings, with the secret. - The server must be reachable from the internet at that address.
- A WhatsApp number: press Add WhatsApp number, give the phone number id, business account id, a permanent access token and the app secret. - Then copy the callback URL and verify token into Meta's WhatsApp > Configuration, and subscribe to *messages*.
- Press Sync templates, and check they are approved. - Only approved templates can be sent.
5The fields #
- A mailbox - What the CRM reads. It never writes to your mail server.
- Mail account - An account from Settings > Mail Accounts - usually a shared sales address. Its outgoing server sends the replies. Add the account there first; this list only offers what exists.
- Active ? - Off: not read, and not offered as a From address. What was already read stays on the records. Switch
- Incoming (IMAP) server - e.g. imap.gmail.com, outlook.office365.com.
- Port / SSL ? - 993 with SSL is usual; 143 upgrades to TLS. 1 to 65535
- Account (user name) - Usually the address itself.
- Password - Stored encrypted and never shown again; blank keeps what is stored. An app password for Gmail and Microsoft 365. Required when first saved
- Folder - INBOX, or a folder a mail rule files customer mail into.
- Read mail from - The first read takes mail from this date; later reads take only what is new. Blank = the last seven days. Not in the future
- Tray - user group - Who sees mail nobody could be matched to (with CRM: no lead or contact matches). Blank = everybody. From Admin > User Group
- Only known senders ? - On for a busy general mailbox: mail from nobody known is not kept at all. Replies to CRM mail are always kept. Switch
- Offer as From ? - On: it is a From choice when composing, so replies come back here. Switch
- An SMS webhook - One per gateway. Give the address and the secret to the gateway, not to people.
- Name - Which gateway this is, e.g. "MSG91 replies". Up to 100 characters, unique
- Active ? - Off: calls to its address are refused. Switch
- Secret - What proves a call came from your gateway. Stored encrypted. Sent as the header X-Webhook-Secret, or ?secret= on the address for a gateway that cannot set headers. 12 characters at least
- SMS account - The gateway account this webhook belongs to - for your own reference. From Settings > SMS/WhatsApp Profiles
- Sender field / Message text field - Replies: what your gateway calls the sender's number and the message text. Name both, or replies cannot be read. e.g. from / text
- Message id field / Status field - Reports: the id it answered the send with, and the delivery status. Name both, or delivery reports cannot be matched. e.g. requestId / status
- Tray - user group - Who sees a reply from a number nobody has.
- Address - Made by the server when the webhook is first saved. It never changes. Give it to your gateway.
- A WhatsApp number - Meta's WhatsApp Cloud API.
- Name - What people pick when they send, e.g. "Sales WhatsApp". Up to 100 characters, unique
- Active ? - Off: nothing is sent from it and Meta's calls are refused. Switch
- Phone number ID - Meta's id of the number (WhatsApp > API Setup) - not the phone number. 5 to 30 digits
- WhatsApp Business Account ID - From the same page - the templates belong to it. 5 to 30 digits
- Phone number - The number as people see it, e.g. +91 98470 12345. Up to 30 characters
- Graph API version - Like v21.0 - leave it unless Meta retires the version. vNN.N
- App secret - App settings > Basic > App secret - every call from Meta is signed with it and checked. The 32-character secret
- Verify token - A phrase you type into Meta's webhook set-up too. Blank = one is made for you. 12 characters at least
- Callback URL - Made by the server on first save. Give it to Meta with the verify token.
- What the badges mean
- Working / Waiting - The mailbox has read successfully, or has not read yet.
- Failing - The last attempt failed; the reason is on the card.
- Sends - The mailbox is offered as a From address.
- n failed / n waiting - Webhook calls that could not be processed, and calls accepted but not yet read. Retry failed puts the failed ones back in the queue.
- n approved - How many WhatsApp templates Meta has approved. Only approved templates can be sent.
6Rules and integrity #
- Read-only on the mail server - Nothing is marked, moved or deleted there. Our own copies (from the mailbox itself) are skipped.
- Every incoming call is stored first - A webhook call is kept before anything is made of it, retried if it fails, and listed as failed after several attempts - so nothing is lost while you fix a field name.
- Secrets are write-only - Passwords, tokens and secrets are stored encrypted and never returned to the screen. Blank means "keep what is stored".
- A call without the right secret is refused - It is answered 401 and kept nowhere.
- Templates are made at Meta - You create and get templates approved in Meta's WhatsApp Manager; Sync templates brings them here. A template Meta drops shows as DELETED.
- HTTPS and the internet - SMS and WhatsApp webhooks only work if your server answers on an address the gateway can reach.
7Shortcut keys #
- F5 - Save while editing.
- Esc - Cancel the edit; otherwise close the tab.
8If something does not work #
"The mail account has no incoming (IMAP) server - set it on Communications > Channel Setup."
- Why
- Replies are read from the account's incoming server, and none is set, so the inbox stays empty.
- What to do
- Give the incoming server, its port and the account on Communications > Channel Setup.
"Give the incoming server and the account first."
- Why
- Testing or saving an inbox needs the server and the account to log in with.
- What to do
- Fill in both and try again.
"Give the password - none is stored for this account yet."
- Why
- The password field was left blank on an account that has no password stored.
- What to do
- Type the password; it is stored encrypted and never shown again.
"That webhook is no longer there."
- Why
- The channel was removed after the list was read.
- What to do
- Refresh the list.
"The Communication Hub is not licensed for this company - the inbox, the outbox and the channel set-up need it. Contact your software vendor."
- Why
- The channel set-up belongs to the Communication Hub (COMMHUB), a module of its own - it moved here from CRM > CRM Channels. Companies that had the CRM Communication Hub add-on were given it automatically.
- What to do
- Ask your vendor to add the Communication Hub, then sign out and in.
"Mail account: pick the account whose inbox is read." / "'...' is not an account on Settings > Mail Accounts - add it there first."
- Why
- A mailbox here reads an account that must already exist in Settings > Mail Accounts.
- What to do
- Add the account there, then pick it here.
"'...' is already read by another mailbox row."
- Why
- Two rows would read the same inbox and take the same mail twice.
- What to do
- Change the existing row instead.
"Incoming (IMAP) server: e.g. imap.gmail.com or outlook.office365.com." / "Port: 1 to 65535 - usually 993 with SSL, 143 without."
- Why
- The incoming server or its port is missing or out of range.
- What to do
- Your mail provider's help page names both.
"Account: the user name the mail server signs in with - usually the address itself." / "Password: give the mailbox's password (an app password for Gmail or Microsoft 365)."
- Why
- The sign-in is incomplete. Gmail and Microsoft 365 refuse ordinary passwords.
- What to do
- Make an app password with the provider and paste it here.
"Folder: usually INBOX." / "Read mail from: it cannot be in the future."
- Why
- The folder is blank, or the start date is ahead of today.
- What to do
- Use INBOX, and a date on or before today.
"Signed in. INBOX holds ... message(s). Nothing was read or changed."
- Why
- The Test succeeded - this is the good answer, not an error.
- What to do
- Nothing to do; the worker reads it on its next round.
"Name: say which number this is, e.g. \"Sales WhatsApp\"." / "There is already a channel named '...'."
- Why
- A channel needs a name of its own.
- What to do
- Name it for the number or the gateway it is.
"Phone number ID: the number's id from Meta's WhatsApp > API Setup page (digits only) - not the phone number itself."
- Why
- The phone-number id was mistaken for the telephone number.
- What to do
- Copy the id from Meta's API Setup page - it is a long run of digits.
"WhatsApp Business Account ID: digits only, from the same page - the templates belong to it." / "Give the WhatsApp Business Account id first - templates belong to it."
- Why
- Templates are listed against the business account, so it must be there before a sync.
- What to do
- Copy the WABA id from the same Meta page.
"API version: like v21.0."
- Why
- Meta's version is written v and a number.
- What to do
- Use the version your Meta app shows.
"Access token: give the permanent (system user) token - messages are sent with it." / "App secret: give it - every call from Meta is signed with it (App settings > Basic)."
- Why
- A WhatsApp channel cannot send without the token, nor trust Meta's calls without the secret.
- What to do
- Paste both from Meta. They are stored write-only - you never read them back.
"App secret: it is the 32-character secret on Meta's App settings > Basic page." / "Verify token: 12 characters at least - or leave it blank and one is made for you."
- Why
- Something too short was pasted.
- What to do
- Copy the real secret; leave the verify token blank and let it be made.
"Fields: name at least the sender field (for replies) or the status field (for delivery reports) - as your gateway's documentation calls them."
- Why
- An SMS webhook that names no field cannot read anything the gateway sends.
- What to do
- Take the field names from your gateway's documentation.
"Message text field: a reply needs its text." / "Message id field: a delivery report is matched to the message by it."
- Why
- Half of a pair was named.
- What to do
- Name both of the pair you are using.
"Secret: give one - your gateway sends it with every call (a header X-Webhook-Secret, or ?secret= in the address)." / "Secret: 12 characters at least - it is what proves a call came from your gateway."
- Why
- Without it anybody who finds the address could post messages into your CRM.
- What to do
- Set a long secret and give it to the gateway.
"A channel cannot change between SMS and WhatsApp - add a new one." / "That channel is no longer there." / "That mailbox is no longer there."
- Why
- The kind is fixed once the row exists, and somebody may have deleted it.
- What to do
- Add a new channel; press F5 to reload the list.
"That WhatsApp account is not there, or not active." / "Give the account's access token first."
- Why
- A template sync was asked for on an account that is off or incomplete.
- What to do
- Switch it on and give it its token.
"WhatsApp refused the template list: ..." / "Meta could not be reached: ..."
- Why
- Meta answered with an error, or could not be reached at all - its own words follow the colon.
- What to do
- Check the token and the WABA id; if Meta is unreachable, the server's outgoing connection is blocked.
Replies arrive in the tray but never on the record
- Why
- A reply is matched by the number or the address; an unknown one goes to the endpoint's tray.
- What to do
- Link it from the inbox, or add the number to the lead so the next one matches.
An endpoint's event list fills with Failed rows
- Why
- Each is retried five times with a longer wait, then left as Failed with the reason on it.
- What to do
- Read the Result on the row; fix the cause, then Retry.
"The call carried none of the fields named on the endpoint (sender + text for a reply, message id + status for a report)."
- Why
- The gateway posts fields under different names than the endpoint expects.
- What to do
- Compare the gateway's documentation with the field names on the endpoint.
"Status '...' is not one the hub keeps (it keeps delivered, read and failed)."
- Why
- A delivery report carried a state the hub has no use for; it is ignored on purpose.
- What to do
- Nothing to do.
Nothing at all arrives from Meta or the gateway
- Why
- The webhook is refused before it gets in: a wrong verify token, a bad signature or secret, or an address that is not HTTPS.
- What to do
- Check the verify token and the secret, and that the API is published on HTTPS - Meta calls no other kind of address.
9For an administrator #
- Order of work - Mail account first (Settings > Mail Accounts), then the mailbox here; gateway account first, then the webhook here.
- Trays - Name a user group on every channel, or unmatched messages go to everybody.
- Keep an eye on the badges - "Failing" and "n failed" are the two words worth checking weekly.
10Settings it uses #
- 253 how often mailboxes are read, 254 largest attachment kept (MB), 255 bulk messages a minute - all on Communications > Hub Settings.
This is the help InvoiceNET® ERP shows beside the Channel Setup screen. Whether you have the screen depends on the modules of your licence and the rights your administrator has given you.
See this screen for yourself
The demo is the real product, with a company of your own.