Britixo WhatsApp Enterprise: complete how-to guide
Complete r26.0 operating manual for installation, QR accounts, permissions, Inbox, messages, customer verification, visitor leads, CRM services, OTP, Help Centre responses, portal history, audit, durable delivery, offline workers and security. The guide then takes you through the correct route, the checks to complete before making changes, the workflow in order, and the evidence to review afterwards.
This guide is based on a complete read of all 59 files in the supplied r26.0 installable archive. It supersedes the older r20.5 feature boundary only for this master guide; the existing 369 articles remain available as detailed historical and workflow references.
Schema authority: 2026.07.31-r21.4-exactly-once-replies. The r26.0 runtime/bootstrap changes do not rename the module or discard the retained linked-device sessions.
What the module provides
Britixo WhatsApp Enterprise embeds a permission-scoped, multi-account WhatsApp Web workspace inside the CRM. Each linked number has its own account identity, encrypted credentials, private runtime, event cursor, LocalAuth session and access matrix. Staff can work from the CRM Inbox while automated workflows continue without an open browser or signed-in administrator session.
The module is designed for one-to-one customer conversations. It does not document or expose bulk campaigns, number rotation to evade limits, public connector ports, arbitrary database queries or customer-selected CRM methods.
Access model and visible menus
Access is enforced in two layers. A native module capability controls whether a staff member may use a class of feature, and the per-account matrix controls what that person may do on each WhatsApp number.
- Go to staff roles and permissions and grant only the native capabilities required.
- Go to WhatsApp → Access Control.
- For each active staff member and account, grant View, Reply, Convert and Manage independently.
- Save the matrix, then test with that staff account. The header unread badge, account selector, assignment lists, media and customer-history visibility should reflect the saved scope.
A conversation can be assigned only to a staff member who can view the selected WhatsApp account. Removing account access also removes that person from future eligible assignment lists.
Install, activate and verify r26.0
The module uses its own portable install.php and prefix-safe schema. Activation creates or upgrades sixteen module-owned tables and adds the current settings without deleting existing operational data.
- Keep a controlled copy of the currently installed module package and confirm the CRM supports normal module installation.
- Upload the supplied archive through the CRM module installer, following Upload and activate the module.
- Activate Britixo WhatsApp Enterprise. Allow the installer to create or upgrade the module-owned schema.
- Go to WhatsApp → Connections. A new or existing account must enter the managed preparation flow rather than exposing Node, port or token fields.
- Complete the post-activation verification: menu visibility, schema state, account preparation, QR/connected readiness, Inbox, queue, worker health and audit.
Normal preparation does not require root access, a global Node replacement, a systemd unit, a global cron entry, a public connector port or a server/network configuration change. Use only the module-owned Connections actions.
Create and link a WhatsApp account
- Go to Admin Area → WhatsApp → Connections.
- Enter a descriptive account name, up to 191 characters, and choose whether the account is Active.
- Create the account. The module generates the account key, encrypted connector token, encrypted wake credential, private loopback port and isolated session/runtime paths.
- Wait for automatic preparation. Readiness requires a usable runtime, a real headless-browser launch, authenticated loopback status, QR or connected state, a healthy supervisor/scheduler and a successful browser-independent CRM worker pass.
- On the phone, open WhatsApp → Linked devices → Link a device, then scan the live QR shown for that exact account.
- Wait for Connected. The connector imports the bounded recent history window and begins live event processing.
- Go to Inbox, select the new account and confirm conversations, unread state and message direction.
Repair, restart, unlink and delete safely
These actions are deliberately different. Choose the least disruptive action that matches the fault.
- Use Connect/repair first for a runtime preparation fault.
- Use Restart for a healthy retained session that needs process recovery.
- Use Sync history for bounded reconciliation.
- Use Unlink only when you intend to invalidate that linked device.
- Use Delete only when the account must leave operational use. If runtime removal fails, the model fails safe and does not partially change the account record.
Operate the multi-account Inbox
- Go to WhatsApp → Inbox.
- Use the account selector to switch numbers. The selected numeric account ID is retained for that staff member, but every request revalidates server-side permission.
- Search by conversation/contact text and combine it with All, Open, Pending or Closed status.
- Enable Unread only when you need conversations with current unread messages.
- Go to a conversation. Older messages are loaded in bounded pages; stale responses from a previously selected account are discarded.
- Use Sync now only when you need a controlled recent-history reconciliation. Live events continue through the authenticated shared long-poll and fallback refresh.
Send messages, attachments and read acknowledgements
- Go to the intended conversation and verify the selected account before replying.
- Enter up to 10,000 characters and use Send, or choose a permitted file.
- For files, follow Send an attachment. The configured maximum is 1–32 MB; the default is 8 MB.
- The message enters the durable outbound queue. When capacity is available it is immediately eligible for the conversation’s existing account.
- Check direction, timestamp and delivery acknowledgement. Internal staff attribution is retained separately from customer-visible content.
- When opening an unread conversation, the module calls WhatsApp’s authenticated seen operation before applying the local read change; see Mark as read.
The declared/accepted MIME must be on the allow-list and the decoded file must remain within the configured limit. Unsupported media, invalid base64 and failed protected storage are rejected rather than saved under the original filename.
Control status, assignment, priority and tags
- Go to conversation controls in the selected conversation.
- Set status to Open, Pending or Closed.
- Assign an eligible staff member or remove the assignment.
- Set priority to Low, Normal, High or Urgent.
- Add validated tags or remove existing tags.
- Save and verify the conversation list reflects the new controls without changing another account’s conversation.
Create and use Standard Replies
- Go to WhatsApp → Standard Replies.
- Enter a title, optional slash shortcut, optional category and the reply body.
- Select Global only if you are an administrator and the text should apply across authorised accounts; otherwise select one account.
- Select All authorised staff or Selected staff. If Selected, tick the permitted staff members.
- Set sort order and Active/Inactive, then save.
- In Inbox, insert the reply through the standard reply picker or its shortcut, review the text and send it through the normal queue.
Create native CRM records manually
Manual conversion remains available independently of automated customer workflows. It requires Convert access to the selected account and uses native CRM models rather than creating parallel records.
Understand all customer verification routes
r26.0 contains two deliberate registered-customer verification patterns plus a visitor route. The active route depends on whether Contact entry is enabled and whether the number already has a unique registered-mobile match.
Route A — unique registered mobile
- An inbound one-to-one message is normalised and compared with active customer contact telephone values.
- Exactly one active contact match verifies the conversation automatically when Registered mobile recognition is enabled.
- The module links the conversation to the customer/contact, records the verification evidence and sends the registered-number welcome/service continuation.
- Ambiguous matches are not automatically assigned.
Route B — configurable registered contact entry
- An unknown contact receives the welcome and chooses option 1 / registered customer. Accepted wording includes “registered”, “registered customer”, “customer” and “client”.
- The customer supplies an exact active contact email address.
- The CRM emails a cryptographically generated six-digit code; only its password hash is retained.
- The customer replies with the code before the configured 2–15 minute expiry and within the configured 3–10 attempt limit.
- RESEND is available after the configured 15–300 second cooldown; CHANGE EMAIL restarts the email step.
- On success the conversation is securely linked. The contact telephone is updated only when the canonical number is genuinely different.
Route C — legacy registered email plus customer account number
- When the older verification session applies, the contact supplies the exact active registered email.
- The module asks for the six-digit customer account number, or accepts EMAIL to send that number to the registered address once for the session.
- A matching number verifies the customer. Repeated failure reaches manual review after the configured maximum attempts.
- Account numbers are generated and managed by the module’s client-account service; raw verification replies are not copied into audit context.
Automatic customer verification is limited to supported one-to-one conversations. Group chats and ambiguous active-contact matches are not silently linked to a CRM customer.
Route registered customers and visitors professionally
Contact entry is the controlled first-response workflow for a new unknown or ambiguous one-to-one contact. The first reply is immediately eligible and all routes share the aggregate delivery ceiling.
Registered customer route
Visitor route
- The contact chooses option 2 / not registered. Accepted wording includes “not registered”, “non registered”, “visitor”, “new customer” and “new”.
- Collect full name.
- Collect the callback telephone number, including country code, or accept SAME to use the WhatsApp number.
- Collect email and send the same protected six-digit email-code challenge.
- After email verification, collect the callback reason/message.
- Create one native CRM Lead using the configured source/status, or the first valid available values when set to zero.
- Return the Lead reference. The pending visitor payload is encrypted while the workflow is incomplete.
Configure verified-customer service automation
After a verified match, the service menu presents only enabled branches. Customers may answer by number or recognised wording. MENU reopens the menu after a completed branch.
A second WhatsApp-created support ticket is blocked while the previous WhatsApp ticket is still awaiting staff response. The customer is told to wait and may still choose callback or team enquiry.
Enable built-in and custom CRM self-service
The CRM Services tab discovers providers only when the required native tables and fields exist. Every query is read-only and restricted to the verified customer account.
Custom numbered menu options
- Go to Settings → CRM services.
- Enable the validated providers that may appear.
- Add as many custom menu rows as needed.
- Select a validated service provider for each row and write the customer-facing label, for example “Check your application progress”.
- Save. The next available menu number is assigned automatically; selecting a provider in a custom row also enables that service.
- Test with a verified customer that has and does not have records, confirming the result remains ownership scoped.
Use both registration OTP modes correctly
Verified-customer service-menu OTP
- Enable Settings → Registration OTP and set expiry to 2–15 minutes and attempts to 3–10.
- Keep Registration verification code enabled in the verified service menu.
- A verified customer chooses the option. The module queues a six-digit code with OTP priority, stores only its password hash and binds it to the current session.
- The customer replies with the code. Success emits the authorised registration-OTP verified event; expiry, attempt exhaustion and success all make the challenge unusable.
New customer self-registration gate
- Separately enable Setup → Settings → Customers → Verify new customer registrations through WhatsApp.
- The save action performs a live readiness check: current schema, linked account, detached supervisor and a fresh browser-independent scheduler worker pass.
- When both this customer setting and the Registration OTP master switch are enabled, a newly self-registered contact receives a six-digit code at the registered WhatsApp number.
- The registration page shows WhatsApp verification as step 1. After success, the module invokes the CRM’s normal verification-email model and sends the contact to the existing email-verification step 2.
- Existing customers, administrator-created contacts, staff sessions and unrelated email templates retain their normal behaviour. Disabling the Customers setting restores the default registration flow.
OTP has queue priority, but it does not own hidden capacity and does not bypass the single 30-message rolling-minute limit.
Connect a client-specific Help Centre
- Go to Settings → Help Centre.
- Enable the feature and enter the public HTTPS directory URL for the client’s Help Centre.
- The source must expose
assets/search-index.jsandhelp-centre-manifest.jsonat the expected paths. - Save. The module validates and synchronises the index; an unsafe or invalid source is rejected without replacing the previous active source.
- Set the service-menu label and customise the question prompt, matched response and no-match response.
- Test a verified customer query. A match returns one article URL plus the related category URL; a low-confidence result returns the full Help Centre URL.
Complete administrator settings reference
General
Verification
Contact entry
Automation and delivery
CRM Services, Registration OTP and Help Centre
Every editable customer-facing template
Templates change wording only; they do not disable validation, remove identity checks, change the queue or create an unsupported branch. Each field accepts up to 4,000 characters in the current view.
Core verification and automation templates
- Initial registered-email prompt
- Invalid email-format response
- Registered email not matched response
- Matched-email account-number prompt
- Invalid or unmatched account-number response
- Account-number email sent response
- Repeated account-number email request response
- Account-number email failure response
- Manual-review response
- Successful verification response
- Registered-number and continuation welcome ({{company_name}}, {{client_name}})
- Service-menu introduction ({{contact_name}})
- Invalid menu choice response
- Open-ticket duplicate response ({reference})
- Simultaneous-request response
- Support-ticket subject prompt
- Support-ticket details prompt
- Callback reason prompt
- Callback date/time/timezone prompt
- Team hand-off details prompt
- Support-ticket confirmation ({reference})
- Callback confirmation ({reference})
- Team hand-off confirmation
- Automatic-action failure response
Contact-entry templates
- Welcome introduction ({{company_name}})
- Option 1 label
- Option 2 label
- Invalid option response
- Registered email prompt
- Registered email not verified
- Email-code sent response ({{masked_email}}, {{minutes}})
- Email-code resend cooldown ({{seconds}})
- Email transport rejection response
- Invalid email-code response
- Expired / attempts-exhausted response
- Registered verification success ({{client_name}}, {{company_name}})
- Visitor full-name prompt
- Visitor callback-number prompt
- Visitor email prompt
- Visitor callback-reason prompt
- Visitor lead confirmation ({reference})
- Contact-entry failure response
Help Centre templates
- Question prompt.
- Matched response using {{article_title}}, {{article_url}}, {{category_name}} and {{category_url}}.
- No close match response using {{help_centre_url}}.
Registration code wording
- Verified-customer OTP message using {{code}} and {{minutes}}.
- Invalid, expired/attempts-exhausted and successful OTP responses.
- New customer registration OTP message using {{company_name}}, {{code}} and {{minutes}}.
Keep the purpose, next action, expiry and privacy warning clear. Do not insert secrets, connector credentials, raw audit context or wording that promises a record was created before the native CRM confirms it.
Use protected customer and administrator history
Review audit, verification and compliance evidence
- Go to WhatsApp → Audit Trail.
- Filter by account, staff member and action text.
- Check general audit rows for connection transitions, access changes, sends, read actions, history, files, CRM conversions, portal/customer history and account lifecycle.
- Check verification sessions/events for route, state, actor and outcome.
- Use account-scoped evidence to diagnose a workflow; do not rely on raw server logs as the normal user-facing record.
Understand exactly-once delivery and offline operation
Every staff and automated outbound message enters one module-owned queue before connector delivery. The queue, connector and worker use layered references and locks so retries do not knowingly transmit a second message.
Always-on runtime
- One lightweight user-space supervisor per account owns an exclusive mode-0600 lease and independently supervises connector and scheduler children.
- The scheduler watches protected event/wake state every 200 ms and supplies a CRM worker pass at least once per second.
- A matching PHP CLI is preferred only after a bounded, read-only tenant/account/credential probe succeeds.
- Deterministic CLI failure falls through to certificate-validated HTTPS in the same pass; an uncertain timeout is not replayed immediately because that could duplicate a send.
- The same-host local virtual HTTPS route is attempted before public HTTPS when no verified matching CLI is available.
- On Linux, the live supervisor launches children through /proc/self/exe so a private runtime path refresh cannot strand a still-running supervisor.
- The connector and scheduler use a crash-recoverable account lock, event cursor, queue lock and reference identity as exactly-once authorities.
- Browser closure, CRM logout and an absent administrator session do not stop normal automation. Hosting process policy, WhatsApp availability, the rolling limit and CRM/PHP latency can still affect delivery time.
Preparation is not complete merely because a database label says “running”. The module requires live connector/browser admission plus a real browser-independent worker pass. A failed health gate rolls back the staged application/environment and restarts the previous connector/session where available.
Security and privacy controls
- Connector services bind to loopback only and require the matching high-entropy bearer token and account key.
- Connector tokens and account-specific wake credentials are encrypted independently; the public worker accepts only PUT with both matching credentials and timing-safe comparison.
- No unauthenticated public webhook or CSRF exclusion is introduced for connector events.
- Runtime roots receive deny-all web protection; credentials and health state use restrictive permissions and are not passed in command-line arguments.
- Tenant/account namespaces isolate SaaS master, tenants and linked numbers that share one application filesystem.
- LocalAuth sessions and runtime data are outside the replaceable module directory.
- Private Node downloads use HTTPS and a pinned archive checksum; npm dependencies come from the committed lockfile and the bundled Chromium must pass a real headless launch.
- Private runtime refresh uses a staged prior-directory swap and restores the prior executable tree if the replacement cannot run.
- Media is MIME allow-listed, size-limited, randomly named and controller served.
- Verification codes are cryptographically generated, stored as hashes and never copied into normal audit context.
- Customer self-service queries are ownership scoped and read-only.
- Explicit UNLINK and DELETE confirmations protect destructive account actions.
Professional troubleshooting sequence
- Reproduce on one account and one controlled conversation.
- Record the visible account state, exact action and time.
- Check Access Control and active account state.
- Check Audit Trail and verification events.
- For runtime faults, use Connections → Connect/repair or Restart; never delete LocalAuth/runtime files manually.
- For data or automation faults, verify queue/session state and the native CRM prerequisite.
- After correction, run the final production verification checklist across two accounts and differently scoped staff.
Feature coverage and existing detailed articles
This master guide links to the complete existing article library. Use the topic pages below for smaller task-specific instructions. Their r20.5 build labels remain preserved where they describe the original documented baseline; r26.0 additions and changed boundaries are authoritative in this guide.
r21.0 to r26.0 additions covered here
Before live use, verify two linked accounts, different staff scopes, QR/restart/session retention, history/live events, read state, all allowed file categories, manual CRM conversions, every verification/contact-entry branch, every enabled service-menu branch, portal/admin history, audit redaction, queue capacity and account deletion retention.
