Muhsin Keloth
3e5b2979eb
feat: Add support for sending CSAT surveys via templates (Whatsapp Cloud) ( #12787 )
...
This PR enables sending CSAT surveys on WhatsApp using approved WhatsApp
message templates, ensuring survey delivery even after the 24-hour
session window.
The system now automatically creates, updates, and monitors WhatsApp
CSAT templates without manual intervention.
<img width="1664" height="1792" alt="approved"
src="https://github.com/user-attachments/assets/c6efd61e-1d01-4738-abb6-0afc0dace975 "
/>
#### Why this change
Previously, WhatsApp CSAT messages failed outside the 24-hour customer
window.
With this update:
- CSAT surveys are delivered reliably using WhatsApp templates
- Template creation happens automatically in the background
- Users can modify survey content and recreate templates easily
- Clear UI states show template approval status
#### Screens & States
<details>
<summary>Default — No template configured yet</summary>
<img width="1662" height="1788" alt="default"
src="https://github.com/user-attachments/assets/ed26d71b-cf7c-4a26-a2af-da88772c847c "
/>
</details>
<details>
<summary>Pending — Template submitted, awaiting Meta approval</summary>
<img width="1658" height="1816" alt="pending"
src="https://github.com/user-attachments/assets/923b789b-d91b-4364-905d-e56a2b65331a "
/>
</details>
<details>
<summary>Approved — Survey will be sent when conversation
resolves</summary>
<img width="1664" height="1792" alt="approved"
src="https://github.com/user-attachments/assets/c6efd61e-1d01-4738-abb6-0afc0dace975 "
/>
</details>
<details>
<summary>Rejected — Template rejected by Meta</summary>
<img width="1672" height="1776" alt="rejected"
src="https://github.com/user-attachments/assets/f69a9b0e-be27-4e67-a993-7b8149502c4f "
/>
</details>
<details>
<summary>Not Found — Template missing in Meta Platform</summary>
<img width="1660" height="1784" alt="not-exist"
src="https://github.com/user-attachments/assets/a2a4b4f7-b01a-4424-8fcb-3ed84256e057 "
/>
</details>
<details>
<summary>Edit Template — Delete & recreate template on change</summary>
<img width="2342" height="1778" alt="edit-survey"
src="https://github.com/user-attachments/assets/0f999285-0341-4226-84e9-31f0c6446924 "
/>
</details>
#### Test Cases
**1. First-time CSAT setup on WhatsApp inbox**
- Enable CSAT
- Enter message + button text
- Save
- Expected: Template created automatically, UI shows pending state
**2. CSAT toggle without changing text**
- Existing approved template
- Toggle CSAT OFF → ON (no text change)
- Expected: No confirmation alert, no template recreation
**3. Editing only survey rules**
- Modify labels or rule conditions only
- Expected: No confirmation alert, template remains unchanged
**4. Template text change**
- Change survey message or button text
- Save
- Expected:
- Confirmation dialog shown
- On confirm → previous template deleted, new one created
- On cancel → revert to previous values
**5. Language change**
- Change template language (e.g., en → es)
- Expected: Confirmation dialog + new template on confirm
**6. Sending survey**
- Template approved → always send template
- Template pending → send free-form within 24 hours only
- Template rejected/missing → fallback to free-form (if within window)
- Outside 24 hours & no approved template → activity log only
**7. Non-WhatsApp inbox**
- Enable CSAT for email/web inbox
- Expected: No template logic triggered
Fixes
https://linear.app/chatwoot/issue/CW-6188/support-for-sending-csat-surveys-via-approved-whatsapp
---------
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com >
Co-authored-by: Vinay Keerthi <11478411+stonecharioteer@users.noreply.github.com >
Co-authored-by: iamsivin <iamsivin@gmail.com >
2026-01-06 11:46:00 +04:00
Muhsin Keloth
ab1ba1c4c7
feat: Add manual WhatsApp templates sync with UI ( #12007 )
...
Fixes https://github.com/chatwoot/chatwoot/issues/9600
**Summary**
- Added manual WhatsApp templates sync functionality accessible via UI
- Added refresh button in both inbox settings and template picker modal
- Enhanced template picker to always show for WhatsApp Cloud channels
(even when empty)
**Preview**
<img width="1456" height="798" alt="CleanShot 2025-07-22 at 14 15 28@2x"
src="https://github.com/user-attachments/assets/8a04ff26-61fa-42ee-a1b8-5e06433ae6e0 "
/>
<img width="2376" height="1574" alt="CleanShot 2025-07-22 at 14 19
24@2x"
src="https://github.com/user-attachments/assets/1c772034-04ff-484d-88dd-ca8123e93065 "
/>
---------
Co-authored-by: iamsivin <iamsivin@gmail.com >
2025-07-23 12:22:51 +04:00
Shivam Mishra
00ee0478eb
feat: IndexedDB based caching for labels, inboxes and teams [CW-50] ( #6710 )
...
* feat: allow caching of labels in the account scope
* feat: send cache keys in account json response
* feat: kickstart web worker
* feat: setup basic architecture for workers
* feat: install idb
* feat: add datamanger
* fix: typos
* refactor: rename method
* feat: make init db a manual step
* refactor: separate accountIdFromRoute
* feat: cache enabled API client
* feat: enable caching for inboxes and labels
* feat: enable cache for team
* feat: manage exceptions for team
* feat: add team to data manager
* feat: add a generic listener
* refactor: send only cache keys
* refactor: separate validate method
* feat: add listeners
* feat: add event for revalidate
* feat: add cache keys endpoint
* refactor: fetch cache keys instead of full account data
* fix: key pattern
* feat: don't fetch account for cache_keys
* fix: cache key base class
* refactor: cache keys helper
* feat: add helper
* fix: cache-key update logic
* feat: delete indexeddb on logout
* feat: remove worker.js
* refactor: move data-manager
* refactor: name of file
* feat: add test for DataManager
* refactor: add fake idb to jest setup
* test: cache keys helper
* test: cache keys helper
* test: cache_keys in accounts controller
* refactor: remove cache_keys context
* feat: add policy for cache-keys
2023-03-27 12:16:25 +05:30
Pranav Raj S
16bfd68d95
chore: Allow admins to choose the agent bot from the UI ( #5895 )
2022-11-18 08:54:32 -08:00
Pranav Raj S
56cd9bc0b8
chore: Add Assignable Agents API ( #4722 )
2022-05-23 19:24:07 +05:30
Aswin Dev P.S
1ff9939a80
feat: Ability to remove inbox avatar ( #2885 )
...
* Delete inbox avatar
1) New API endpoint added for deleting inbox avatar.
2) Delete avatar button in the inbox settings page.
Co-authored-by: Sojan Jose <sojan@pepalo.com >
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com >
2021-08-31 15:12:05 +05:30
Muhsin Keloth
18cea3b0ac
chore: Add inbox id in get campaigns API ( #2278 )
2021-05-17 21:38:12 +05:30
Sivin Varghese
285f7bbeb5
Enhancement: Ability to assign administrators as conversation assignees ( #2142 )
...
* Enhancement: Ability to assign administrators as conversation assignee
Co-authored-by: Nithin David Thomas <webofnithin@gmail.com >
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com >
2021-04-22 23:17:29 +05:30
Sojan Jose
19ab0fe108
Chore: Scope URLs with account_id ( #601 )
...
* Chore: Enable Users to create multiple accounts
Addresses: #402
- migrations to split roles and other attributes from users table
- make changes in code to accommodate this change
Co-authored-by: Pranav Raj Sreepuram <pranavrajs@gmail.com >
2020-03-09 23:27:10 +05:30
Pranav Raj S
5ddc46c474
Refactor: Inbox store, remove inboxes from sidebar ( #387 )
...
* Refactor: Inbox store, remove inboxes from sidebar
* Add a new page for inbox settings
* Show inboxes on sidebar
* Add inbox_members API
* Disable similar-code check
* Fix codeclimate scss issues
* Add widget_color update API and actions
* Add specs for inbox store
* Fix Facebook auth flow
* Fix agent loading, inbox name
2019-12-28 21:56:42 +05:30