iachat/db/migrate
Tanmay Deep Sharma 61d10044a0
feat: Whatsapp embedded signup (#11612)
## Description

This PR introduces WhatsApp Embedded Signup functionality, enabling
users to connect their WhatsApp Business accounts through Meta's
streamlined OAuth flow without manual webhook configuration. This
significantly improves the user experience by automating the entire
setup process.

**Key Features:**

- Embedded signup flow using Facebook SDK and Meta's OAuth 2.0
- Automatic webhook registration and phone number configuration
- Enhanced provider selection UI with card-based design
- Real-time progress tracking during signup process
- Comprehensive error handling and user feedback


## Required Configuration

The following environment variables must be configured by administrators
before this feature can be used:
Super Admin Configuration (via
super_admin/app_config?config=whatsapp_embedded)

- `WHATSAPP_APP_ID`: The Facebook App ID for WhatsApp Business API
integration
- `WHATSAPP_CONFIGURATION_ID`: The Configuration ID for WhatsApp
Embedded Signup flow (obtained from Meta Developer Portal)
- `WHATSAPP_APP_SECRET`: The App Secret for WhatsApp Embedded Signup
flow (required for token exchange)
![Screenshot 2025-06-09 at 11 21
08 AM](https://github.com/user-attachments/assets/1615fb0d-27fc-4d9e-b193-9be7894ea93a)


## How Has This Been Tested?

#### Backend Tests (RSpec):

- Authentication validation for embedded signup endpoints
- Authorization code validation and error handling
- Missing business parameter validation
- Proper response format for configuration endpoint
- Unauthorized access prevention

#### Manual Test Cases:

- Complete embedded signup flow (happy path)
- Provider selection UI navigation
- Facebook authentication popup handling
- Error scenarios (cancelled auth, invalid business data, API failures)
- Configuration presence/absence behavior

## Related Screenshots:

![Screenshot 2025-06-09 at 7 48
18 PM](https://github.com/user-attachments/assets/34001425-df11-4d78-9424-334461e3178f)
![Screenshot 2025-06-09 at 7 48
22 PM](https://github.com/user-attachments/assets/c09f4964-3aba-4c39-9285-d1e8e37d0e33)
![Screenshot 2025-06-09 at 7 48
32 PM](https://github.com/user-attachments/assets/a34d5382-7a91-4e1c-906e-dc2d570c864a)
![Screenshot 2025-06-09 at 10 43
05 AM](https://github.com/user-attachments/assets/a15840d8-8223-4513-82e4-b08f23c95927)
![Screenshot 2025-06-09 at 10 42
56 AM](https://github.com/user-attachments/assets/8c345022-38b5-44c4-aba2-0cda81389c69)


Fixes
https://linear.app/chatwoot/issue/CW-2131/spec-for-whatsapp-cloud-channels-sign-in-with-facebook

---------

Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: iamsivin <iamsivin@gmail.com>
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
Co-authored-by: Sojan Jose <sojan@pepalo.com>
2025-07-14 21:37:06 -07:00
..
20230426130150_init_schema.rb chore: Squash migrations till 05/2023 (#8862) 2024-02-06 17:00:38 +04:00
20230503101201_create_sla_policies.rb feat: SLA CRUD APIs (EE) (#7027) 2023-05-11 22:42:56 +05:30
20230509101256_add_index_to_messages_created_at.rb feat(perf): add index to messages created at (#7044) 2023-05-10 11:34:49 +05:30
20230510060828_add_index_to_messages_for_reportings.rb feat: add index migration (#7050) 2023-05-10 17:55:14 +05:30
20230510113208_set_default_empty_string_for_contact_name.rb chore: Add migration to set the default empty string value for contact name (#7052) 2023-05-11 17:35:19 +05:30
20230515051424_update_article_image_keys.rb feat: add migration to fix image signed keys (#7076) 2023-05-15 15:13:26 +05:30
20230523104139_add_partial_index_for_resolved_contacts.rb feat(perf): contacts query performance (#7175) 2023-05-23 17:22:47 +05:30
20230525085402_add_custom_sender_name_toggle.rb feat: Ability to customise the email sender name [CW-1629] (#7345) 2023-07-04 20:46:01 +05:30
20230608040738_add_processed_message_content_to_messages.rb fix: Automations condition based quoted text (#7272) 2023-06-09 17:00:05 +05:30
20230612103936_add_index_to_reporting_events.rb feat: add index to reporting events [CW-1960] (#7294) 2023-06-12 18:23:42 +05:30
20230614044633_add_sender_name_to_in.rb feat: Ability to customise the email sender name [CW-1629] (#7345) 2023-07-04 20:46:01 +05:30
20230620132319_add_sla_policy_to_conversations.rb chore: Add sla policy association to conversation (#7360) 2023-06-21 14:48:50 +05:30
20230620212340_add_waiting_since_to_conversations.rb feat: Add a sort option for conversations waiting for a reply from an agent (#7364) 2023-06-21 13:20:39 -07:00
20230706090122_sentiment_column_to_messages.rb feat: Sentiment Analysis (#7475) 2023-07-12 15:03:31 +05:30
20230714054138_add_api_key_sid_to_twilio_sms.rb feat: Add support for API key authentication in Twilio (#7523) 2023-07-14 19:20:54 -07:00
20230727065605_add_partial_index_contact_account_id.rb feat(perf): contact page loading speed (#7629) 2023-07-27 13:32:22 +05:30
20230801180936_update_default_status_in_hooks.rb fix: Update the default status of the hooks to enabled (#7652) 2023-08-01 12:14:47 -07:00
20230905060223_add_regex_to_custom_attribute_definition.rb feat: Support Regex validation for custom attributes (#7856) 2024-01-23 18:01:57 +04:00
20231011041615_ensure_message_private_not_null.rb chore: Ensure null validation for private attribute in messages (#8085) 2023-10-11 13:16:59 +05:30
20231013072802_add_icon_to_categories.rb feat: Adds the ability to set an emoji for help center category (#8111) 2023-10-20 13:52:30 +05:30
20231114111614_change_feature_flags_to_bigint_in_accounts.rb feat: convert feature_flag to bigint [CW-2767] (#8350) 2023-11-17 15:50:24 -08:00
20231129091149_add_snoozed_until_to_notifications.rb feat: Snooze notification API (#8439) 2023-12-04 12:32:35 +05:30
20231201014644_remove_notifications_with_message_primary_actor.rb chore: Change primary actor to Conversation for all the notification types. (#8435) 2023-12-06 10:43:09 +05:30
20231211010807_add_cached_labels_list.rb chore(migration): Re-run database migration job for caching. (#8581) 2023-12-18 17:29:02 -08:00
20231219000743_re_run_cache_label_job.rb chore(migration): Re-run database migration job for caching. (#8581) 2023-12-18 17:29:02 -08:00
20231219073832_add_last_activity_at_to_notifications.rb feat: Add last_activity_at field to Notification model (#8585) 2023-12-20 13:02:37 +05:30
20231223033019_refactor_sla_policy_columns.rb feat: sla 1 - refactor sla_policies model and add applied_sla model (#8602) 2024-01-23 23:48:02 +05:30
20231223040257_create_applied_slas.rb feat: sla 1 - refactor sla_policies model and add applied_sla model (#8602) 2024-01-23 23:48:02 +05:30
20240124054340_add_contact_type_to_contacts.rb feat: Add contact_type attribute to contact model (#8768) 2024-01-24 12:26:47 +05:30
20240124084032_add_middle_name_and_last_name_to_contacts.rb feat: Add middle_name and last_name to contact model (#8771) 2024-01-24 16:22:04 +05:30
20240129080827_add_location_and_country_code_to_contacts.rb feat: Add attributes location and country_code to Contact model (#8803) 2024-01-29 14:10:14 +05:30
20240131040316_remove_imap_inbox_syned_at_from_channel_email.rb chore: Remove unused attribute imap_inbox_synced_at (#8822) 2024-01-31 11:48:46 +04:00
20240207103014_change_applied_sla_sla_status_to_enum.rb feat: Add sidekiq jobs to monitor applied SLAs (#8828) 2024-02-07 21:44:56 +04:00
20240213131252_add_blocked_to_contacts.rb feat: Ability to block contacts permanently (#8922) 2024-02-21 14:18:42 -08:00
20240215065844_add_meta_to_notifications.rb feat: Add meta to notification model (#8941) 2024-02-16 14:38:02 +05:30
20240216055809_add_unique_index_to_applied_slas.rb feat: sla-7 ensure applied_sla uniqueness (#8938) 2024-02-20 21:59:49 +05:30
20240306201954_change_identifier_type_in_notifications_subscriptions.rb fix: Change the column identifier from string to text to avoid overflow (#9073) 2024-03-07 11:13:01 +05:30
20240319062553_create_sla_events.rb feat: add sla events table (#9126) 2024-03-20 11:59:37 +05:30
20240322071629_convert_cached_label_list_to_text.rb fix: Convert cached_label_list to text (#9143) 2024-03-25 18:47:08 -07:00
20240415210313_add_channel_web_widget_to_portals.rb feat: Add widget to help center config (#9235) 2024-04-15 16:46:48 -07:00
20240515201632_index_improvements_conversations_contacts.rb chore: Improved indexes for Conversations & Contacts [CW-3300] (#9475) 2024-05-15 16:10:39 -07:00
20240516003531_add_index_for_message_type_account_date.rb chore: Add indexes to improve reporting performance (#9478) 2024-05-15 21:21:15 -07:00
20240726220747_add_custom_roles.rb feat: Add APIs to manage custom roles in Chatwoot (#9995) 2024-08-23 17:18:28 +05:30
20240923215335_add_locale_to_article.rb fix: Include uncategorized articles in the all article section to allow edit/delete (#10153) 2024-09-23 23:39:03 -07:00
20241217041352_fix_old_audio_alert_data.rb fix: Update old data to fix login issues (#10594) 2024-12-17 17:17:11 +05:30
20250104200055_create_captain_tables.rb feat(ee): Add Captain features (#10665) 2025-01-14 16:15:47 -08:00
20250104210328_remove_robin_tables.rb feat(ee): Add Captain features (#10665) 2025-01-14 16:15:47 -08:00
20250105001414_add_status_to_captain_documents.rb feat(ee): Add Captain features (#10665) 2025-01-14 16:15:47 -08:00
20250105005821_remove_not_null_from_captain_documents.rb feat(ee): Add Captain features (#10665) 2025-01-14 16:15:47 -08:00
20250107030743_add_config_to_captain_assistant.rb feat(ee): Add Captain features (#10665) 2025-01-14 16:15:47 -08:00
20250108031358_create_captain_inbox.rb feat(ee): Add Captain features (#10665) 2025-01-14 16:15:47 -08:00
20250108211541_remove_index_from_captain_assistants.rb feat(ee): Add Captain features (#10665) 2025-01-14 16:15:47 -08:00
20250116000103_add_status_to_captain_assistant_responses.rb feat: Add a review step for FAQs generated from conversations before using it (#10693) 2025-01-16 09:54:34 +05:30
20250116061033_convert_document_to_polymorphic_association.rb fix(ce): Check the edition before running the data migration (#10728) 2025-01-21 10:00:37 +05:30
20250207040150_add_meta_to_attachment.rb feat: Show shared contact's name in Telegram channel (#10856) 2025-02-11 19:39:54 +05:30
20250228185548_add_internal_attributes_to_accounts.rb feat: Add support for account abuse detection (#11001) 2025-02-28 15:28:19 -08:00
20250315202035_add_index_to_articles.rb chore: Limit the number of articles retrieved by widget (#11095) 2025-03-15 14:10:12 -07:00
20250326034635_add_instagram_channel.rb feat: Added Instagram channel migration (#11181) 2025-03-26 11:12:32 +05:30
20250402233933_remove_portal_members.rb chore: Clean up report & knowledge base policies (#11234) 2025-04-03 16:00:32 -07:00
20250410061725_convert_csml_bots_to_webhook_bots.rb feat: Implement UI for Agent Bots in settings and remove CSML support (#11276) 2025-04-16 18:02:49 +05:30
20250416182131_flip_chatwoot_v4_default_feature_flag_installation_config.rb chore: Enable chatwoot_v4 feature flag by default for accounts (#11321) 2025-04-17 08:53:37 +05:30
20250421082927_add_settings_column_to_account.rb feat: Add support for minutes in auto resolve feature (#11269) 2025-05-07 00:36:15 -07:00
20250421085134_update_auto_resolve_to_mminutes.rb feat: Add support for minutes in auto resolve feature (#11269) 2025-05-07 00:36:15 -07:00
20250512231036_create_copilot_threads.rb feat: Add support for persistent copilot threads and messages (#11489) 2025-05-15 17:37:04 -07:00
20250512231037_create_copilot_messages.rb feat: Add support for persistent copilot threads and messages (#11489) 2025-05-15 17:37:04 -07:00
20250514045638_add_csat_config_to_inboxes.rb feat: Improve CSAT responses (#11485) 2025-05-16 14:18:52 +05:30
20250523024825_remove_uuid_from_copilot_threads.rb feat: Add support for realtime-events in copilot-threads and copilot-messages (#11557) 2025-05-22 22:25:05 -07:00
20250523024826_remove_user_id_from_copilot_messages.rb feat: Add support for realtime-events in copilot-threads and copilot-messages (#11557) 2025-05-22 22:25:05 -07:00
20250523031839_change_message_type_to_integer_in_copilot_messages.rb feat: Add support for realtime-events in copilot-threads and copilot-messages (#11557) 2025-05-22 22:25:05 -07:00
20250620120000_create_channel_voice.rb feat: Whatsapp embedded signup (#11612) 2025-07-14 21:37:06 -07:00
20250627195529_add_index_to_messages.rb fix: disable_ddl_transaction! on add_index action (#11833) 2025-06-27 16:58:50 -07:00
20250710145708_create_captain_scenarios.rb feat: add Captain::Scenario Model and API [CW-4597] (#11907) 2025-07-14 16:12:38 +05:30
20250714104358_add_response_guidelines_and_guardrails_to_captain_assistants.rb feat: add response guidelines and guardrails field (#11911) 2025-07-15 08:56:03 +05:30