Changed: Dashboard, Flow Builder, campaigns, reports, and developer workflows
Improved dashboard return paths, Flow Builder automation, campaign reliability, report filtering, and developer-facing configuration workflows.
Latest updates and improvements to the Whats91 platform
Improved dashboard return paths, Flow Builder automation, campaign reliability, report filtering, and developer-facing configuration workflows.
Preserved the originally requested dashboard page during unauthenticated redirects so users return to pages like API Tokens after login instead of always landing on the dashboard.
AI Brain playground fallback answers now show the fallback badge without repeating the raw `[FALLBACK]` marker in the chat bubble.
Flow Usage session reports no longer fail with incorrect MySQL prepared-statement arguments when loading journey sessions.
Campaign opt-out keyword handling now records `UNSUBSCRIBE` reliably, avoids the webhook-side `userId is not defined` crash, adds standalone opt-outs to the sender-scoped blacklist, and keeps opt-out/resubscribe handling ahead of flows, chatbots, and AI bots.
Campaign unsubscribe confirmation messages now send consistently after `UNSUBSCRIBE` by allowing the opt-out system reply to bypass only the newly-created sender blacklist row.
Customer sidebar upcoming tags now sit at the row edge without changing the original icon-to-label alignment for main menus.
Campaign throttle setting changes now requeue campaigns waiting on `CAMPAIGN_THROTTLE_WINDOW_CLOSED` so they are rechecked against the updated sending window immediately.
Campaign workers now record retry-expired, subscription-blocked, and billing-blocked jobs as internal not-sent/skipped states when Meta was never called, preventing false `message_failed` rows and false campaign failure rates.
All Messages now classifies message-event origin and hides uncorrelated coexisting/mobile-app webhook activity, while retaining report rows for Whats91-sent messages and matching Meta status/reply updates.
All Messages outbound filtering now keeps report-visible Meta status rows even when older/imported sends do not have a same-table outbound event, restoring valid API and campaign messages while still hiding coexisting/unmatched rows through `report_visible`.
Partner Customer management now gives normal partners the same assigned-customer actions as Tech Partners, including edit, cache clear, impersonation, and customer creation.
Contact import now preserves the selected phonebook when returning from regular or grid imports, adds a completed grid-import back button, and keeps the Contacts menu responsive by syncing phonebook selection with the `groupUid` URL.
Campaign throttle deferrals are now capped at the job retry-expiry boundary and throttle-setting changes also requeue old zero-attempt `RETRY_EXPIRED` rows that were created before Meta dispatch.
Campaign log cleanup now runs through the backend Node-cron scheduler after migrations, using `CAMPAIGN_LOG_CLEANUP_CRON` and `CAMPAIGN_LOG_CLEANUP_TIMEZONE` instead of requiring a separate system cron entry.
Campaign Builder draft confirmation actions now stay aligned in one row, with the discard action styled as a destructive red button.
All Messages and Campaign Reports keep their summary metric counts intact when a status stat filter is applied, so filtered rows change without zeroing the overall stat cards.
Report data loaders now guard against stale API responses overwriting newer filter results.
Message Billing now uses the branded report loader and ignores stale billing responses when filters change.
Template copy now preserves existing JPG, PDF, video, and document header media by preselecting reusable source media in the new template form and resolving source-template media on submit when the upload cache has expired.
WhatsApp Cloud API setup now offers Fresh Register instead of Replace, deleting and recreating the selected setup row from Meta while keeping the same setup reference for sender-scoped configuration.
Customer AI Profiles under the AI menu for encrypted provider credentials, model defaults, full-page editing, and saved-profile testing.
Customer AI Brains under the AI menu with linked AI Profiles, text contracts, copied markdown instructions, playground testing, fallback detection, and basic analytics.
Flow journey tracking now records flow sessions, stages, transitions, messages, user inputs, timeouts, abandonment, and completion status in the flow database, with a new customer Flow Usage report under Automation.
Main backend Flow Usage cleanup cron now removes flow journey report data older than 15 days from the flow database.
Reusable internal template dispatch API for Whats91 systems and a new Flow Builder Talk to Agent node can notify agents through approved WhatsApp templates.
Reusable branded `GlobalLoader` component using the Whats91 logo, first applied to All Messages and Campaign Reports while report data is loading.
Campaign Builder templates with `Unsubscribe`, `Opt-Out`, `Stop`, or `Not Interested` quick replies now auto-enable opt-out, select the initial message button, and fill the report label while still allowing edits.
Campaign Builder save-draft support adds a header Save Draft action and a leave prompt that can save, discard, or continue editing.
Public API v1 `sendtemplate` now supports optional `sendAsImage` / `send_as_image` PDF invoice conversion for approved image-header templates.
Administrator Customer report now supports Billing managed by and Chat access filters, conditional Yes/No coloring, and Excel export with Meta registered phone, `phone_number_id`, and `waba_id`.
Customer template creation now exposes Meta's optional footer text field for non-authentication templates and submits it through the existing footer component payload.
Campaign Builder now shows colored Marketing, Utility, and Authentication badges in template selection dropdowns, final review summaries, and directly above the launch button, and new campaigns default retry expiry to two days after creation.
Meta template approval, rejection, and category webhooks now sync local template status/category data and can notify customers through configured WhatsApp templates.
Template webhook customer notifications now use the generic company notification sender configured by `NOTIFICATION_SENDER_ID`, avoiding customer-specific sender fallbacks.
Internal template dispatch now supports `notification_context` so template notifications use the company notification sender while Flow Builder notifications keep the customer sender.
Template webhook lookup indexes now use MySQL-safe prefix lengths so startup migrations do not fail on long template name columns.
Customer dashboard headers now let signed-in customers open an account profile form from their name/email and update only their email ID, password, or WhatsApp mobile number; password changes require confirmation and mobile changes require country-code selection plus WhatsApp OTP verification.
New Flow Builder inbound-message trigger nodes now default to Exact match instead of Any keyword.
Flow Builder message nodes now show attached image media as inline thumbnails and PDF, Excel, Word, or fallback document media as clear file-type chips.
Flow Builder node headers are now slimmer with balanced vertical padding and no default title/subtitle paragraph spacing.
Flow Builder message nodes now support up to 10 mixed media attachments with per-item captions and media-first webhook delivery.
Flow Builder timeout and action paths can now route to Talk to Agent, with mandatory template-based agent alerts and optional customer text notifications.
AI Brain Markdown instructions now provide separate website and document copy buttons with source-specific Brain Contract extraction prompts and no embedded Brain-specific values.
Campaign Builder throttle defaults now use a wider `05:00` to `23:00` sending window for new/default settings.
Campaign opt-out defaults now include `NOT INTERESTED` for opt-out and `INTERESTED` for re-subscribe keyword handling.
Developer REST API dashboard documentation now shows a moved-docs notice and opens the maintained external developer site in a new tab.
Flow Usage, Chat Shortcuts, and Customer Add-ons pages were tightened by removing redundant hero/header panels, moving key actions into the dashboard header, reducing excess padding, and making pagination/action visibility more contextual.
All Messages report stat cards are now clickable quick filters for statuses such as total, read, pending, duplicate, and failed; the filter resets naturally on a page reload.
Campaign Reports now match the All Messages quick-filter behavior on campaign list and campaign detail stats, with report-area loading overlays while filters refresh.
Campaign Reports now use the compact All Messages-style two-column mobile layout for list and detail filters while preserving desktop report layouts.
Message Billing runtime indexes now cover common customer billing report filters on the separate billing database.
Message Billing now defaults to an explicit all-linked-numbers aggregate view, with a sender filter for viewing billing rows and summaries for one registered Meta number while shared wallet balances remain account-wide.
Administrator Wallet Management now uses the same customer search styling and debounced customer lookup as the Subscription form when adding wallet transactions.
Administrator Customer search now matches Cloud API WABA IDs through `cloud_api_setup.whatsapp_business_account_id`, backed by a new runtime index for faster WABA lookup.
Customer sidebar now moves AI, Orders, Catalog Management, and WA Group into the bottom upcoming section with visible `Upcoming` tags.
Talk to Agent node setup now accepts country-code phone numbers without requiring a leading plus sign and uses clear parameter dropdown labels such as incoming phone number, last incoming message text, flow name, and session references.
Improved webhook chat-access cache safety so enabled chats do not miss inbound messages.
Rechecked the Cloud API setup from the database when webhook cache reports `access_chats` disabled, preventing stale cache from skipping inbound conversation inserts.
Invalidated WhatsApp-number setup cache immediately when administrators toggle chat access for a customer.
Added Partner and Tech Partner subtypes for partner accounts while keeping the shared partner login flow.
Added administrator controls to upgrade or downgrade partners, role badges in partner/admin UI, and role-specific subscription/add-on pricing overrides.
Added an administrator-controlled subscription plan visibility toggle so plans stay hidden from partner screens unless explicitly enabled.
Added phase-one Whats91 Coins allocation with administrator ledger entries, GST/tax audit values, and partner read-only balance/history views.
Added a partner read-only Plans menu that lists subscription plans marked visible to partners with Partner/Tech Partner pricing applied.
Added partner subscription activation using Whats91 Coins for assigned customers, including balance validation, idempotent activation requests, and negative spend ledger rows.
Added unique partner project registration links so customers registering from a partner link are automatically assigned to that partner.
Added public API v2 webhook management endpoints for listing event keys, creating Webhooks v2 destinations, listing/retrieving webhooks, and updating existing webhook UIDs.
Added public API v2 message reporting endpoints for paginated message reports, message status lookup, mobile-number history, campaign reports, campaign responses, and delivery analytics.
Added public API v2 billing endpoints for user-wide and sender-scoped message billing history, template-category billing, delivered/payable/free records, billing summaries, and wallet history.
Added public API v2 chatbot creation endpoints for text, public media URL, button, CTA, and list-response chatbots, plus list/get APIs for existing chatbots.
Added public API v2 contact book management endpoints for listing books, reading contacts, creating/updating books, and JSON bulk contact uploads.
Added public API v2 message blacklist management endpoints for listing, retrieving, adding, updating, and soft-removing sender-scoped blocked recipients.
Added public API v2 conversation report endpoints for listing conversations, summary counts, by-mobile threads, conversation detail, and paginated conversation messages.
Added a dedicated public API v2 message-sending documentation file that separates Whats91-specific send/chat APIs from Meta-compatible message APIs.
Normal Partner accounts now keep read-only customer access, while Tech Partner accounts retain customer edit, cache flush, and impersonation actions.
Partner subscription views now show only plans marked visible to partners, keeping internal administrator-only plans hidden.
Partner Coins now displays a unified coin ledger with both incoming administrator allocations and outgoing subscription activation spends.
Improved contact book maintenance with duplicate phone cleanup and safer selection behavior.
Added partner password login support with a required business profile form before partner dashboard access.
Added a direct partner registration page at `/partner/register` with account-owner and business-profile sections.
Added state and city capture to partner registration and partner business-profile completion, with mandatory India state selection and mandatory city validation.
Added administrator-controlled partner assignment for customers using a dedicated partner-customer relationship table and searchable partner selector in the customer edit form.
Added administrator partner management with a Partners menu, partner list, edit form for personal and business details, and partner impersonation support.
Added partner-scoped customer management so partners can view assigned customers, log in as assigned customers, flush cache, and update only name, email, mobile number, and password.
Added read-only partner Subscription and Customer Add-ons menus so partners can review assigned customers' subscriptions and add-ons without creating, upgrading, assigning, or editing them.
Added a read-only partner Message Billing menu so partners can review message billing history only for customers assigned to them.
Added a nightly Campaign v2 log cleanup worker with dry-run support, retention controls, batch limits, MySQL locking, and run-audit records for operational campaign logs.
Added a contact book duplicate phone cleanup workflow that lets customers select multiple contact books, preview duplicate phone numbers, and remove duplicate book memberships while keeping the oldest active occurrence.
Added Excel export for Contacts, including all-contact export from the contact book list and contact-book scoped export from inside a selected book.
Added sender-scoped message blacklist management under Contacts, including single number add, bulk paste, search, deactivate, restore, Redis-backed checks, and send-path blocking before Meta delivery.
Added Flow Builder add-on `103`, seeded as `Flow Builder`, so administrators can assign Flow Builder access per WhatsApp sender number.
Added Orders > Payment Gateways for sender-scoped Dynamic UPI intent gateway onboarding with encrypted credentials, default gateway selection, and validation for VPA, HTTPS intent URL, MCC, and active duplicate names.
Updated the contact book page so row selection is only enabled after activating Check Duplicate mode; normal row clicks continue opening contact books by default.
Converted the Contacts sidebar item into a group with Contact Books and Blacklist entries.
Reworked the Blacklist page to match the contact book header/action pattern, moved single-number entry into a modal, and moved bulk copy-paste entry into a dedicated sub-page.
Flow Builder now remains visible in the menu, but customers without add-on `103` for the selected WhatsApp number see an access warning instead of the flow list/editor.
Moved the Partner Dashboard menu item to the first sidebar position and added responsive dashboard summary counts for assigned customers, active add-ons, and inactive add-ons.
Removed legacy `users` table field usage for the discontinued Standard WhatsApp integration from modern Whats91 customer, partner, registration, and template-library flows.
Fixed Blacklist table source badges overflowing into the updated-date column by constraining long source labels and widening responsive table columns.
Fixed partner Customer Add-ons scope lookup failing when add-on scope UID columns and Cloud API setup UID columns use different MySQL collations.
Fixed WhatsApp reconnect/replace looping when Meta assigns a new phone-number ID/WABA to the same E.164 number; Replace now archives the old setup and activates the new Meta identity.
Fixed template cleanup after WhatsApp number replacement by detaching old-number templates from the active sender context and skipping invalid Meta delete calls for stale WABA/HSM IDs.
Removed the administrator Cloud API setup comparison page and backend report endpoints because the legacy database comparison workflow is no longer needed.
Added a database cleanup migration to drop legacy `users` columns: `session_count`, `sms_min_count`, `whatsapp_type`, `demo_period`, and `sms_count`.
The first Whats91 changelog baseline, covering the current customer workspace, WhatsApp Cloud API workflows, automation, reporting, billing, and developer tooling.
Connect and manage WhatsApp Cloud API phone numbers from the customer workspace.
Maintain templates, carousel templates, Meta library imports, and reusable template parameter presets.
Review phone-number webhook state, business profile information, session health, and setup diagnostics.
Create campaigns from contact books, CSV/Excel imports, manual numbers, and conversations.
Use template mapping, source-specific inputs, test sends, scheduling, retries, opt-out controls, and throttle settings.
View campaign reports, response reports, unsubscribe reports, and customer-friendly delivery summaries.
Track outbound messages, received messages, raw events, and WhatsApp analytics in separate report views.
Use status counters, filtering, message history, exports, and campaign delivery breakdowns.
Audit accepted, sent, delivered, read, failed, pending, and reached message states.
Manage contact books, contacts, custom fields, grid imports, CSV/Excel uploads, and date field compatibility.
Map columns, validate phone numbers, preview import data, and maintain custom contact attributes.
Build chatbots, chat shortcuts, AI MetaBot workflows, labels, teams, departments, and chat redirect access.
Use the Flow Builder with flow library imports, validation, draft editing, media assets, and WhatsApp-style testing.
Design node-based automation flows with triggers, messages, waits, actions, conditions, and validation.
Create flows from administrator-managed library samples and test draft flows without sending live WhatsApp messages.
Manage reusable media, Busy template documentation, Busy software API setup, and file-template mapping.
Support PDF and text Busy formats, screenshot previews, and file-based campaign/template workflows.
Review message billing, wallet history, subscription access, add-ons, and plan-gated capabilities.
Use administrator billing tools for pricing, wallet management, message billing gaps, and WhatsApp cost reporting.
Manage public API tokens, REST API documentation, live logger streams, and public sendtemplate integrations.
Use custom integrations such as Miracle and Busy-compatible APIs for external software workflows.
Configure webhooks, departments, team members, chat labels, Google Workspace, Google Sheets, and Google Drive.
Use maintenance mode, cache controls, phone-number context, and operational health views.
Operate WA groups, catalog management, products, feeds, sync jobs, orders, diagnostics, and analytics where enabled.
Use administrator tools for users, subscriptions, template library, flow library, Meta system users, and setup comparison.