.yaml
+```
+
+## Heroku
+
+1. Pull the latest changes from Chatwoot github repo to your fork. Use the fetch upstream changes feature on Github.
+2. Deploy the latest branch to your heroku app.
\ No newline at end of file
diff --git a/developer-docs/self-hosted/others/enterprise-edition.mdx b/developer-docs/self-hosted/others/enterprise-edition.mdx
new file mode 100644
index 000000000..6fd1e1b35
--- /dev/null
+++ b/developer-docs/self-hosted/others/enterprise-edition.mdx
@@ -0,0 +1,36 @@
+---
+title: 'Managing Enterprise Edition Features'
+description: 'Learn how to manage and configure Chatwoot Enterprise Edition features including licensing, pricing, and advanced capabilities'
+---
+
+Chatwoot Enterprise Edition is a proprietary version of Chatwoot software designed for larger organizations that require advanced features such as Whitelabeling, SLA Management, Audit Logs, Agent Capacity Managment, etc. It is developed from the same GitHub repository as the Community Edition but includes additional, proprietary features aimed at supporting commercial business needs.
+
+The Enterprise Edition offers direct support options and an easy upgrade path to paid features, ensuring that businesses can scale their operations efficiently without needing to reinstall the software. For more detailed information, you can visit the [Chatwoot Enterprise Edition User Guide](https://www.chatwoot.com/hc/user-guide/articles/1677776492-enterprise-edition).
+
+## Managing Enterprise Edition Plan
+
+To activate the Enterprise Plan, head over to the `Settings` tab in your Super Admin panel. It displays your current plan; clicking on the manage button will let you access the portal where you can purchase the appropriate number of licenses.
+
+Our pricing plans start at $19 per agent per month. For more detailed information, please refer to the [self-hosted pricing plans](https://chatwoot.com/pricing/self-hosted-plans).
+
+### Settings Overview
+
+
+
+- `Installation Identifier`: This is the unique identifier used to identify an installation and associate a license with that installation.
+- `Manage Plan`: Redirects to the Stripe portal where you can purchase the appropriate number of licenses.
+- `Refresh`: Refresh button next to plan details helps to sync your server with the license server in cases where a license purchase is not yet reflected in the system.
+- `Feature Config`: You can configure settings for enterprise features like `Whitelabeling` by clicking on the gear icon next to the feature name under feature settings.
+- `Support Options`: Based on your plan, applicable support options will be displayed.
+
+## FAQ
+
+### Do you have Instance level plans?
+
+No, at the moment Chatwoot only offers per agent per month plans. If you are looking at a large number of agents, you can reach out to us at `sales@chatwoot.com` for custom plans.
+
+### Transferring licenses?
+
+If you are moving the installation between servers and doing so with a database backup, the original installation identifier is retained, and you don't need to activate the license again.
+
+If for some reason you decide to delete an existing licensed installation and want to do a new installation, please reach out to Chatwoot support, and our team can help you transfer the license to your new installation.
\ No newline at end of file
diff --git a/developer-docs/self-hosted/others/faq.mdx b/developer-docs/self-hosted/others/faq.mdx
new file mode 100644
index 000000000..41c4db823
--- /dev/null
+++ b/developer-docs/self-hosted/others/faq.mdx
@@ -0,0 +1,144 @@
+---
+title: 'Frequently Asked Questions'
+description: 'Common questions and answers about self-hosted Chatwoot installation, support, and best practices'
+---
+
+This document is a place to search for frequently asked questions in the Chatwoot community about the processes, support and best practices.
+
+## How to get support?
+
+The chatwoot team provides support over the following channels. Please choose the appropriate medium based on the type of your query and resolution expectations.
+
+**Business Enquiries**: Questions related to the pricing and commercial partnerships.
+
+**Developer Support**: Questions related to Self-hosting Chatwoot, Extending/Contributing to Chatwoot and leveraging Chatwoot APIs
+
+**Product Support**: Bug Reports, Feature Requests and Support related to Chatwoot Cloud Version.
+
+**Premium Support**: Available for customers having a commerical contract with Chatwoot or subscribers of a paid plan. This includes both Chatwoot Cloud Customers and Self-hosted Customers.
+
+| Channel Type | Response Expectations | Query Types |
+|----------|-------------|------|
+| Chat Widget | Real-time responses based on online agent availability. Cloud customers can use the in-product Support option for priority resolutions.
Email follow-ups in 2 Business Days or per SLA | Business Enquiries, Premium Support |
+| [Email](mailto:hello@chatwoot.com) | Responses in 2 Business Days or as per SLA | Business Enquiries, Premium Support |
+| [Github](https://github.com/chatwoot/chatwoot) | Responses in 5 Business Days or per SLA | Developer Support, Product Support, Premium Support |
+| [Discord](https://discord.gg/cJXdrwS) | Community Support Based on availability. Contributors support based on availability | Developer Support, Product Support, Premium Support |
+
+
+The Chatwoot team tries to resolve queries in public forums. So please avoid DMing, the contributors unless sensitive information is involved.
+
+- Chatwoot team doesn't provide one-time installation services at the moment due to limited resources.
+- Chatwoot team doesn't provide bug fixes and support for older/modified versions of the software. Therefore, please ensure that you have the latest version of software running when reporting bugs.
+
+
+## How to promote Chatwoot Services?
+
+We encourage the community to build and promote Chatwoot related services. You can use the following Channels for that.
+
+1. [General (Github Discussions)](https://github.com/chatwoot/chatwoot/discussions/categories/general): Use the Channel to advertise Chatwoot related Hiring Posts and Opportunities.
+2. [Show and tell - (GitHub Discussions)](https://github.com/chatwoot/chatwoot/discussions/categories/show-and-tell): Use the Channel to showcase a Chatwoot related service / Custom Integrations that you have built. Examples include Chatwoot Hosting services, Services built on top of Chatwoot etc
+3. [Discord Channels](https://discord.gg/cJXdrwS) : Use appropriate discord Channels like `#intro` , `#general`.
+
+
+Spamming channels with repetitive messages, Hijacking threads with unrelated promotional messages isn't allowed and will be handled according to the [Code of Conduct](/contributing/code-of-conduct#3-temporary-ban).
+
+
+## How can I customise the Chatwoot Branding ?
+
+In `Community Edition` of Chatwoot, you can customise the branding by modifying the source code.
+In `Enterprise Edition` of Chatwoot, Custom Branding is available as a premium feature as a part of the paid plans.
+
+## Can I run a SaaS using Chatwoot?
+
+Ref: [Are there any restrictions in using Chatwoot?](#are-there-any-restrictions-on-using-chatwoot)
+
+## Are there any restrictions on using Chatwoot?
+
+When using the `Enterprise` edition of Chatwoot, you must adhere to the [Enterprise License](https://github.com/chatwoot/chatwoot/blob/develop/enterprise/LICENSE). Additionally, distributing or selling the `enterprise` edition of Chatwoot requires a valid Chatwoot Enterprise subscription with the correct number of user seats.
+
+The Community edition of Chatwoot comes under an [MIT License](https://github.com/chatwoot/chatwoot/blob/develop/LICENSE), which lets you use the software without any restrictions. This also allows you to build and resell derivatives of Chatwoot Community edition. For the Community edition, the team trusts the users to use the software fairly and encourages the following use cases:
+
+- Leveraging Chatwoot as a Customer Support/Data Platform in your organization.
+- Building Custom Conversational interfaces over the Chatwoot Platform.
+- Leveraging Chatwoot to add conversational capabilities to your existing software.
+- Enhancing Community Edition software to cater to specific business niches.
+
+Chatwoot team doesn't encourage the following cases:
+
+- Leveraging the software for any usage that isn't permitted by applicable law.
+- Use cases that directly compete with Chatwoot Business offerings.
+ examples: clones of Chatwoot Cloud (SaaS), Rebranding Services, etc
+
+## How to debug SMTP Email errors in Chatwoot?
+
+Suppose you run into issues with the agent mailers ( account confirmation, password reset, etc.) and email Channels in Chatwoot. Then, you can go through the following steps to debug your SMTP configurations.
+
+### Step 1: Check your SMTP configuration
+
+Ensure that the intended config matches what is configured in the system. If there are discrepancies, you should double-check your environment variables.
+
+#### Viewing the SMTP config for the Installation
+
+Run the following command from the [Rails Console](/self-hosted/configuration/monitoring/super-admin-console/).
+
+```ruby
+ActionMailer::Base.smtp_settings
+```
+
+#### Viewing the SMTP config for an Inbox
+
+Run the following command from the [Rails Console](/self-hosted/configuration/monitoring/super-admin-console/).
+
+```ruby
+# replace `inbox_id` with your Inbox Id
+Inbox.find(inbox_id).channel
+```
+
+### Step 2: Validate your SMTP config by sending an Email
+
+If you find the config is as intended, Try sending an email from the Rails Console using your config.
+
+Run the following script from the [Rails Console](/self-hosted/configuration/monitoring/super-admin-console/).
+
+```ruby
+# Fill values for appropriate settings
+# Remove the keys which aren't relevant to your use case
+smtp_settings = {
+ address: '',
+ port: '',
+ user_name: '',
+ password: '',
+ domain: '',
+ tls: '',
+ enable_starttls_auto: '',
+ openssl_verify_mode: '',
+ authentication: '',
+}
+
+mailer = ActionMailer::Base.new
+# check settings:
+mailer.delivery_method = :smtp
+mailer.smtp_settings = smtp_settings
+
+# replace with your values for the mail
+mailer.mail(from: 'sender@example.com', to: 'recipient@example.com', subject: 'test', body: "Hello, you've got mail!").deliver
+```
+
+If the configuration is correct, You should receive the email in the recipient's Inbox. In other cases, Fix the config as per the returned error and reconfigure the values in Chatwoot Environment variables with the correct values.
+
+
+If you are still facing errors, Please check your Sidekiq worker logs or [Sidekiq UI](/self-hosted/configuration/monitoring/super-admin-console/) for any errors.
+
+
+## How to Fix the Onboarding Screen Issue in Chatwoot?
+
+If you have deployed Chatwoot and the login page is shown instead of the onboarding screen, follow these steps to resolve the issue:
+
+1. Open a Rails shell and run the following command:
+ ```ruby
+ Redis::Alfred.set(Redis::Alfred::CHATWOOT_INSTALLATION_ONBOARDING, true)
+ ```
+
+2. Restart Chatwoot.
+
+This should resolve the issue, and the onboarding screen should be displayed as expected.
\ No newline at end of file
diff --git a/developer-docs/self-hosted/others/instagram-app-review.mdx b/developer-docs/self-hosted/others/instagram-app-review.mdx
new file mode 100644
index 000000000..dfc2dcf26
--- /dev/null
+++ b/developer-docs/self-hosted/others/instagram-app-review.mdx
@@ -0,0 +1,221 @@
+---
+title: "Instagram App Review"
+description: "Complete guide for submitting Instagram App Review request to get advanced messaging permissions for Chatwoot integration"
+---
+
+This document provides a customizable template for brands requesting advanced Instagram permissions. Use this template to submit an Instagram App Review request and demonstrate how your app uses advanced messaging permissions to provide real-time customer support through Instagram.
+
+## Requested Permissions
+
+- `instagram_business_basic` – Retrieve connected Instagram Business account metadata (username, ID, profile picture).
+- `instagram_business_manage_messages` – Receive and respond to direct messages.
+- `human_agent` – Enable human responses beyond the standard 24-hour window.
+
+Please replace all placeholder values such as `BRAND_NAME`, `DASHBOARD_URL`, `EMAIL`, and `PASSWORD` before submitting.
+
+## Start the Review Process
+
+### Add the Website Platform
+
+Navigate to the basic settings and add the Website platform. Provide your frontend URL in the platform configuration.
+
+
+
+### Go to the App Review Section
+
+Go to the Instagram product and click on "Go to App Review".
+
+
+
+### Confirm the Documentation
+
+Click on "Continue" to confirm the documentation.
+
+
+
+### Select the Permissions
+
+Select the permissions `instagram_business_basic`, `instagram_business_manage_messages`, and `human_agent` and click on "Continue to App Review".
+
+
+
+### Configure App Review Requests
+
+After clicking on "Continue to App Review", you will be redirected to the App Review requests page.
+
+
+
+Click on the "Edit" button to edit the review request.
+
+
+
+### Business Account
+
+You **must** have a Business Account to be able to request these permissions. Please ensure you have a Business Account before requesting the permissions. Submit Business Account details.
+
+
+
+### Data Handling
+
+Please answer all the questions in the Data Handling section and include all the pre-processing steps you perform on the data.
+
+
+
+
+
+### Complete App Settings
+
+Make sure you have an app icon, privacy policy URL, and app category configured. You can update these via the Basic Settings.
+
+
+
+### Review Instructions
+
+Provide the review instructions to the reviewer for the App Review. Essentially, you need to provide the steps to log in to the Dashboard and send a message to the connected Instagram account.
+
+
+
+You can use the following template to provide the review instructions:
+
+1. Go to `[DASHBOARD_URL]`.
+2. Log in using the following credentials. Ensure the credentials are entered exactly as provided, without leading or trailing spaces.
+ Email: `[EMAIL]`
+ Password: `[PASSWORD]`
+3. Once logged in, you will see the Dashboard with an empty chat screen. On the leftmost sidebar, you will find the Settings (gear icon).
+4. Click on Settings > Inboxes > Add Inbox. You can also access the settings page at: `[DASHBOARD_URL]/app/accounts/[ACCOUNT_ID]/settings/inboxes/new`.
+5. On the first step, "Choose a channel," select Instagram. This will take you to the second step, where you will find the "Continue with Instagram" button.
+6. Once the setup is complete, you can send a message to the connected Instagram account.
+7. The message should appear on the Dashboard at `[DASHBOARD_URL]/app/accounts/[ACCOUNT_ID]/dashboard`.
+
+
+
+## Permissions
+
+It is time to request the permissions. Please click on each permission and fill in the details. Once you are done, click on "Submit for Review". Below are sample permission requests you can use as a reference.
+
+
+
+## `instagram_business_basic`
+
+### Why You Are Requesting This Permission
+
+[BRAND_NAME] is a customer support platform that allows businesses to manage conversations across multiple messaging platforms — including Instagram, WhatsApp, Facebook, and more — through a unified inbox.
+
+This permission is used to:
+
+- Retrieve basic metadata (username, user ID, and profile picture) of connected Instagram Business accounts during onboarding.
+- Display sender information (username and ID) when customers message the business through Instagram.
+
+This metadata is essential for correct routing of messages to the appropriate agent, identification of the agent handling the conversation, and accurate profile display in the chat UI, ensuring a seamless customer experience.
+
+- **App URL:** [DASHBOARD_URL]
+- **Test Account:**
+ - Email: [EMAIL]
+ - Password: [PASSWORD]
+
+---
+
+### Screencast Walkthrough
+
+Include a screencast demonstrating the following steps:
+
+1. Log in to the app using the provided credentials.
+2. Navigate to the Dashboard.
+3. Add a new inbox by selecting Instagram as the channel.
+4. Authenticate an Instagram Business account.
+5. Show that the platform uses the `instagram_business_basic` permission to display:
+ - Instagram username
+ - User ID
+ - Profile picture
+6. Simulate receiving a message and show how this metadata appears in the inbox.
+
+---
+
+## `instagram_business_manage_messages`
+
+### Why You Are Requesting This Permission
+
+[BRAND_NAME] is a customer support platform that allows businesses to manage conversations across multiple messaging platforms — including Instagram, WhatsApp, Facebook, and more — through a unified inbox.
+
+This permission allows the platform to manage and respond to Instagram messages on behalf of the connected Instagram Business account.
+
+It is used to:
+
+- Receive messages via the Instagram webhook.
+- Display conversations in the agent inbox.
+- Allow agents to reply from within the platform.
+- Keep conversations synced in real time.
+
+The webhook setup works by configuring a URL endpoint on the platform to receive incoming messages from Instagram. When a message is sent to the connected Instagram Business account, it triggers a webhook event that delivers the message to the specified endpoint. The backend processes this message, stores it in the database, and updates the agent's inbox in real time.
+
+Without this permission, users would not be able to communicate with their Instagram audience via the support platform.
+
+- **App URL:** [DASHBOARD_URL]
+- **Test Account:**
+ - Email: [EMAIL]
+ - Password: [PASSWORD]
+
+---
+
+### Screencast Walkthrough
+
+Include a screencast demonstrating the following steps:
+
+1. Log in to the Dashboard.
+2. Connect an Instagram Business account as described in the previous section.
+3. From another Instagram user account, send a direct message to the connected business.
+4. Show that the message appears in the inbox UI.
+5. Reply from the inbox.
+6. Switch back to Instagram to show that the user received the reply.
+7. Demonstrate real-time syncing.
+
+---
+
+## `human_agent`
+
+### Why You Are Requesting This Permission
+
+[BRAND_NAME] is a customer support platform that allows businesses to manage conversations across multiple messaging platforms — including Instagram, WhatsApp, Facebook, and more — through a unified inbox.
+
+We are requesting the Human Agent permission to allow support agents to follow up on customer conversations beyond the 24-hour window, especially when customers reach out after business hours or over the weekend.
+
+Example use case:
+
+- A customer sends a message Friday night.
+- The business is closed on weekends.
+- On Monday morning, the agent cannot reply because the 24-hour window has expired.
+- With the Human Agent tag, the agent can now follow up on Monday morning and resolve the query.
+
+This enhances customer experience and ensures critical messages are not left unresolved due to timing limitations.
+
+This permission is essential to allow human agents to continue conversations in a natural, respectful, and supportive way without forcing customers to message again just to reopen the window.
+
+- **App URL:** [DASHBOARD_URL]
+- **Test Account:**
+ - Email: [EMAIL]
+ - Password: [PASSWORD]
+
+---
+
+### Screencast Walkthrough
+
+Include a screencast demonstrating the following steps:
+
+1. Log in to the platform.
+2. Open an existing Instagram conversation that is **older than 24 hours**.
+3. Attempt to respond to the message and explain how current Meta policy restricts the reply.
+4. Explain why a response is still needed — for example, the support agent was unavailable during a weekend or the issue required escalation.
+5. Describe how the `human_agent` tag will be used to allow the response within the extended 7-day window.
+
+## Notes
+
+- Do not include Instagram account credentials.
+- Only share test Dashboard credentials (non-super admin access recommended).
+- Ensure your screencast clearly shows the platform UI and relevant workflows.
+- Keep your permission usage aligned with Meta's policy for message tags and user privacy.
+- Speak aloud or add captions in your video for reviewer clarity.
+- Video should be as detailed as possible.
+
+
+**Tip:** Use a screen recorder that captures mouse interactions, popups, and browser activity to clearly demonstrate authentication flows and inbox interactions.
+
\ No newline at end of file
diff --git a/developer-docs/self-hosted/others/restricted-instances.mdx b/developer-docs/self-hosted/others/restricted-instances.mdx
new file mode 100644
index 000000000..57f7fc805
--- /dev/null
+++ b/developer-docs/self-hosted/others/restricted-instances.mdx
@@ -0,0 +1,78 @@
+---
+title: 'Running Chatwoot in Restricted Instances'
+description: 'Configuration guide for deploying Chatwoot in environments with restricted internal networks'
+---
+
+This guide outlines the necessary configurations for deploying Chatwoot in environments with restricted internal networks, ensuring full functionality and compliance.
+
+## Activating Licenses
+
+Licensing is critical for the operational legality and functionality of Chatwoot:
+
+### Whitelist Licensing Server
+
+Add `https://hub.2.chatwoot.com` to your network's whitelist for license activation and management of Stripe payment links.
+
+### Switch to Email Invoices
+
+For organizations preferring email invoices, contact our sales team at `sales@chatwoot.com` with your installation identifier to configure this billing option.
+
+## Enabling ChatWidget for Users
+
+To ensure seamless functionality of the ChatWidget within restricted networks, perform the following configurations:
+
+### WebSockets
+
+Enable WebSocket connections through `wss://yourdomain.com/cable` to facilitate real-time communications.
+
+### Widget API URLs
+
+Open all API endpoints under the widget path to ensure full functionality. Configure your network to allow access to:
+
+```
+https://yourdomain.com/api/v1/widget/*
+```
+
+This wildcard approach ensures all necessary widget functionalities such as conversation handling, message management, and contact updates are operable without individual endpoint specifications.
+
+### Widget Assets
+
+Make sure that static assets required by the ChatWidget are accessible. These are typically served from:
+
+```
+https://yourdomain.com/packs
+```
+
+Ensure all paths under this directory are accessible to support the widget fully.
+
+## SMTP Configuration for Emails
+
+Proper SMTP setup is essential for managing email communications within restricted networks:
+
+### SMTP Server Details
+
+Configure your SMTP server to handle outgoing emails from Chatwoot, including server address, port, authentication details, and secure connection protocols.
+
+### Secure Connections
+
+Employ TLS/SSL for secure email transmissions, ensuring your network permits connections over the designated SMTP port (commonly 587 for TLS).
+
+## Additional Configuration for Restricted Networks
+
+Additional considerations are necessary for the optimal operation of Chatwoot in restricted environments:
+
+### DNS Configuration
+
+Ensure DNS settings are optimized to reduce resolution times and enhance the accessibility of Chatwoot services.
+
+### SSL/TLS Configuration
+
+Maintain up-to-date SSL/TLS certificates that are compatible with all internal systems and browsers.
+
+### Monitoring and Logging
+
+Implement comprehensive monitoring and logging solutions to swiftly detect and address potential disruptions, maintaining system stability and performance.
+
+
+By following these detailed instructions, your Chatwoot deployment can effectively operate within restricted network environments, ensuring a robust and secure customer support platform.
+
\ No newline at end of file
diff --git a/developer-docs/self-hosted/others/supported-features.mdx b/developer-docs/self-hosted/others/supported-features.mdx
new file mode 100644
index 000000000..412a051b9
--- /dev/null
+++ b/developer-docs/self-hosted/others/supported-features.mdx
@@ -0,0 +1,138 @@
+---
+title: "Supported Features on Channels"
+description: "Comprehensive reference for supported features, message types, and limitations across all Chatwoot channels"
+---
+
+## Supported message type
+
+| Channel | Incoming/Outgoing message | Activity message |
+| --------- | ------------------------- | ---------------- |
+| Website | Yes | Yes |
+| Facebook | Yes | Yes |
+| Instagram | Yes | Yes |
+| SMS | Yes | Yes |
+| Whatsapp | Yes | Yes |
+| Email | Yes | Yes |
+| Telegram | Yes | Yes |
+| Line | Yes | Yes |
+| API | Yes | Yes |
+
+## Maximum message size (number of characters)
+
+| Channel | Maximum message size |
+| ------------------ | -------------------- |
+| Website | 10,000 |
+| Facebook | 2000 |
+| Instagram | 1000 |
+| Twilio SMS | 320 |
+| Twilio WhatsApp | 1600 |
+| Whatsapp Cloud | 4096 |
+| 360Dialog WhatsApp | 1600 |
+| Bandwidth SMS | 160 |
+| Email | 25,000 |
+| Telegram | 4096 |
+| Line | 2000 |
+| API | 10,000 |
+
+## Outbound conversation restriction
+
+| Channel | Restriction |
+| --------- | --------------------------------------------------------------------------------------------------------------- |
+| Website | You can create outbound conversations to verified contacts |
+| Facebook | Cannot create outbound conversations. First message should be from the contact |
+| Instagram | Cannot create outbound conversations. First message should be from the contact |
+| SMS | No restriction |
+| Whatsapp | Cannot send any message other than Whatsapp approved template messages 24 hours after the last incoming message |
+| Email | No restriction |
+| Telegram | Cannot create outbound conversations. First message should be from the contact |
+| Line | Cannot create outbound conversations. First message should be from the contact |
+| API | No restriction |
+
+## Outgoing message restriction
+
+| Channel | Restriction |
+| --------- | --------------------------------------------------------------------------------------------------------------- |
+| Website | No restriction |
+| Facebook | Cannot send promotional messages 24 hours after the last incoming message (7 days if Human agent enabled) |
+| Instagram | Cannot send promotional messages 24 hours after the last incoming message (7 days if Human agent enabled) |
+| Whatsapp | Cannot send any message other than Whatsapp approved template messages 24 hours after the last incoming message |
+| SMS | No restriction |
+| Email | No restriction |
+| Telegram | No restriction |
+| Line | No restriction |
+| API | Custom time depends on Agent reply time window |
+
+## Outgoing message delivery status
+
+| Channel | Sent status | Read status | Delivered status | Failed status |
+| ------------------ | ----------- | ------------- | ---------------- | ------------- |
+| Website | Yes | Yes | Yes | Yes |
+| API | Yes | Yes | Yes | Yes |
+| Official WhatsApp | Yes | Yes | Yes | Yes |
+| Twilio WhatsApp | Yes | Yes | Yes | Yes |
+| 360Dialog WhatsApp | Yes | Yes | Yes | Yes |
+| Twilio SMS | Yes | Yes | Not supported | Yes |
+| Bandwidth SMS | Yes | Yes | Not supported | Yes |
+| Facebook | Yes | Yes | Yes | Yes |
+| Instagram | Yes | Not supported | Yes | Yes |
+| Line | Yes | Not supported | Not supported | Yes |
+| Telegram | Yes | Not supported | Not supported | Yes |
+| Email | Yes | Not supported | Not supported | Not supported |
+
+## Reply to message
+
+| Channel | Reply to incoming message | Reply to outgoing message |
+| --------------- | ------------------------- | ------------------------- |
+| Website | Yes | Yes |
+| Facebook | Yes | No |
+| Instagram | Yes | No |
+| SMS | No | No |
+| Whatsapp Cloud | Yes | Yes |
+| Twilio WhatsApp | No | No |
+| Email | No | No |
+| Telegram | Yes | Yes |
+| Line | No | No |
+| API | Yes | Yes |
+
+## Outgoing attachments supported file types
+
+
+The default maximum file size limit is 40MB.
+
+
+| Channel | Audio | Image | Video | Document |
+| --------------- | ------------------------- | -------------------- | ------------------------------ | ------------- |
+| Website | All | All | All | All |
+| Instagram | aac, m4a, wav, mp4 (25mb) | png, jpeg, gif (8mb) | mp4, ogg, avi, mov, web (25mb) | Not supported |
+| Facebook | All | All | All | All |
+| WhatsApp Cloud | All | All | All | All |
+| WhatsApp Twilio | mpeg, opus, ogg, amr(5mb) | png, jpeg (5mb) | mp4 (5mb) | pdf (5mb) |
+| Email | All | All | All | All |
+| Telegram | All | All | All | All |
+| Line | Not supported | png, jpeg | mp4 | Not supported |
+| API | All | All | All | All |
+
+
+"All" means the channel supports all standard file types listed below:
+
+**Standard File Types**
+
+- **Video:** `ogg`, `mp4`, `mov`, `webm`, `quicktime`, `avi`
+- **Audio:** `mp3`, `mpeg`, `opus`, `ogg`, `amr`, `aac`, `m4a`, `wav`
+- **Image:** `png`, `jpeg`, `gif`, `bmp`, `webp`
+- **Document:** `pdf`, `doc`, `docx`, `xls`, `xlsx`, `ppt`, `pptx`, `zip`, `7z`, `rar`, `tar`, `xml`, `csv`, `json`, `rtf`, `txt`, `plain`, `.3gpp`, `x-7z-compressed`, `vnd.rar`, `x-tar`, `msword`
+
+
+## Available features
+
+| Channel | Channel greeting | Attachments | Agent Auto assignment | Slack |
+| --------- | ---------------- | ----------- | --------------------- | ----- |
+| Website | Yes | Yes | Yes | Yes |
+| Facebook | Yes | Yes | Yes | Yes |
+| Instagram | Yes | Yes | Yes | Yes |
+| SMS | Yes | No | Yes | Yes |
+| Whatsapp | Yes | Yes | Yes | Yes |
+| Email | Yes | Yes | Yes | Yes |
+| Telegram | Yes | Yes | Yes | Yes |
+| Line | Yes | No | Yes | Yes |
+| API | Yes | Yes | Yes | Yes |
\ No newline at end of file
diff --git a/developer-docs/self-hosted/others/telemetry.mdx b/developer-docs/self-hosted/others/telemetry.mdx
new file mode 100644
index 000000000..916fa729e
--- /dev/null
+++ b/developer-docs/self-hosted/others/telemetry.mdx
@@ -0,0 +1,57 @@
+---
+title: "Telemetry"
+description: "Learn about Chatwoot's telemetry data collection, what data is collected, how it's used, and how to opt-out"
+---
+
+Chatwoot tracks usage of its products which helps the team to improve and deliver better software. You can opt-out of this telemetry at any time.
+
+## What data is collected
+
+None of your customer data is ever transmitted by Chatwoot installation. The telemetry data collected by our products are purely usage statistics of various software features.
+
+### On-boarding
+
+Our software onboarding screens may contain optional forms to subscribe to our product newsletters or a callback request. These inputs are completely optional and the user preferences updated in these onboarding steps are completely adhered to.
+
+### Self hosted installations
+
+Chatwoot sends anonymised metadata to our telemetry instance at a defined interval. The following list contains the various attributes in this metadata.
+
+- Aggregated number various data models like users, accounts, labels, canned responses etc.
+- Distribution of inboxes by type.
+- Distribution of conversations by inbox type.
+- The list of enabled integrations
+
+### Mobile Apps
+
+- Usage events on various feature interactions.
+
+## How is the data used
+
+This data will only be used by Chatwoot team for:
+
+- Directly improving the product and identifying the parts of product which are popular.
+- Identifying areas with limited usage or where our users get stuck.
+- Prioritizing the next set of features to be developed.
+
+## How is the data collected and how will it be processed
+
+The telemetry data is stored securely on Chatwoot systems, with appropriate encryptions and access controls in place.
+
+The self-hosted installation interacts with the URLs (hub.chatwoot.com, hub.2.chatwoot.com) every day. Both the URLs are hosted and owned by Chatwoot. The data collected from the individual installations would follow our [privacy policy](https://www.chatwoot.com/privacy-policy/#how-chatwoot-uses-and-protects-personally-identifying-information).
+
+## How to opt-out of data collection
+
+If you want to disable telemetry you can do the following.
+
+### Disable data collection
+
+Use the environment variable `DISABLE_TELEMETRY` in the installation. Set it to `true` to disable the data collection.
+
+```bash
+DISABLE_TELEMETRY=true
+```
+
+### Disable update email subscription
+
+While you signup, you have to option to disable the subscription to update emails. If the option is disabled, Chatwoot won't collect the emails.
\ No newline at end of file
diff --git a/developer-docs/self-hosted/requirements.mdx b/developer-docs/self-hosted/requirements.mdx
index da816e55f..6bee43433 100644
--- a/developer-docs/self-hosted/requirements.mdx
+++ b/developer-docs/self-hosted/requirements.mdx
@@ -1,339 +1,108 @@
---
title: System Requirements
-description: Hardware, software, and infrastructure requirements for deploying Chatwoot in different environments.
+description: Hardware and software requirements for self-hosting Chatwoot
sidebarTitle: Requirements
---
-Before deploying Chatwoot, ensure your infrastructure meets the minimum requirements for your expected usage. This guide covers requirements for different deployment scenarios and scales.
+This page includes useful information on the requirements that are needed to install and run Chatwoot on your servers.
-## Minimum System Requirements
+## Operating Systems
-### Development Environment
+### Supported Linux distribution
-For local development and testing:
+- Ubuntu (20.04)
-| Component | Requirement |
-|-----------|-------------|
-| **CPU** | 2 cores (2.0 GHz+) |
-| **RAM** | 4GB |
-| **Storage** | 20GB available space |
-| **OS** | Ubuntu 20.04+, macOS 10.15+, Windows 10+ |
-| **Network** | Broadband internet connection |
+Installation of Chatwoot is possible on most unix environments, but not officially supported.
-### Small Production (1-10 agents)
+### Microsoft Windows
-For small teams and low-volume usage:
+Chatwoot is developed for Linux-based operating systems. Please consider using a virtual machine to run Chatwoot on windows.
-| Component | Requirement |
-|-----------|-------------|
-| **CPU** | 2 cores (2.4 GHz+) |
-| **RAM** | 4GB |
-| **Storage** | 50GB SSD |
-| **Network** | 100 Mbps bandwidth |
-| **Concurrent Users** | Up to 100 |
+## Software requirements
-### Medium Production (10-50 agents)
+### Ruby versions
-For growing teams with moderate usage:
+- Ruby 3.2 and later is required.
-| Component | Requirement |
-|-----------|-------------|
-| **CPU** | 4 cores (2.4 GHz+) |
-| **RAM** | 8GB |
-| **Storage** | 100GB SSD |
-| **Network** | 500 Mbps bandwidth |
-| **Concurrent Users** | Up to 500 |
+You must use the standard MRI implementation of Ruby. Chatwoot needs several Gems that have native extensions.
-### Large Production (50+ agents)
+### Node.js versions
-For enterprise deployments with high volume:
+We only support Node.js 10.13.0 or higher.
-| Component | Requirement |
-|-----------|-------------|
-| **CPU** | 8+ cores (2.4 GHz+) |
-| **RAM** | 16GB+ |
-| **Storage** | 200GB+ SSD |
-| **Network** | 1 Gbps+ bandwidth |
-| **Concurrent Users** | 1000+ |
+We recommend Node 20.x, as it's faster and the latest.
-## Software Requirements
+Chatwoot uses [webpack](https://webpack.js.org/) to compile frontend assets, which requires a minimum version of Node.js 20.x.0.
-### Operating System
+You can check which version you're running with `node -v`. If you're running a version older than `v10.13.0`, you need to update it to a newer version. You can find instructions to install from community maintained packages or compile from source at the [Node.js website](https://nodejs.org/en/download/).
-**Supported Linux Distributions:**
-- Ubuntu 20.04 LTS or later (recommended)
-- Ubuntu 22.04 LTS
-- Debian 10 or later
-- CentOS 8 or later
-- RHEL 8 or later
-- Amazon Linux 2
+## Hardware requirements
-**Container Platforms:**
-- Docker 20.10+ with Docker Compose 2.0+
-- Kubernetes 1.20+
-- OpenShift 4.6+
+### Storage
-### Runtime Dependencies
+The necessary hard drive space largely depends on your usage, the size and number of attachments that you receive through your conversations etc.
-| Component | Version | Purpose |
-|-----------|---------|---------|
-| **Ruby** | 3.3.3+ | Application runtime |
-| **Node.js** | 20.x LTS | Frontend build tools |
-| **PostgreSQL** | 12+ | Primary database |
-| **Redis** | 6.0+ | Cache and job queue |
-| **Nginx** | 1.18+ | Reverse proxy |
+
+Consider using a storage option provided by AWS, Azure, Google Cloud etc, if you want to stay flexible and accommodate the growing storage requirements. Chatwoot also supports other S3 API compatible services viz Minio, DigitalOcean Spaces, Linode Objects etc.
+
-### Development Dependencies
+### CPU
-For building from source:
+CPU requirements are dependent on the usage and expected workload. Your workload is influenced by factors such as - but not limited to - how active your users are, how many conversations do you receive and the conversation channels which you are using.
-| Component | Version | Purpose |
-|-----------|---------|---------|
-| **Git** | 2.25+ | Source code management |
-| **Build tools** | Latest | Compiling native extensions |
-| **ImageMagick** | 7.0+ | Image processing |
-| **FFmpeg** | 4.0+ | Video/audio processing |
+The following is the recommended minimum CPU hardware guidance for a handful of example Chatwoot conversation base sizes.
-## Database Requirements
+- **4 cores** is the **recommended** minimum number of cores and supports up to 10,000 conversations a day.
+- 8 cores supports up to 20,000 conversations a day.
+- More conversations? Consider scaling horizontally by adding more application servers.
-### PostgreSQL Configuration
+### Memory
-**Minimum Version:** PostgreSQL 12+
-**Recommended Version:** PostgreSQL 14+
+Memory requirements are dependent on the usage and expected workload. Your workload is influenced by factors such as - but not limited to - How active your users are, how many conversations do you receive and the conversation channels which you are using.
-**Required Extensions:**
-- `pg_stat_statements` (performance monitoring)
-- `uuid-ossp` (UUID generation)
-- `pg_trgm` (full-text search)
+The following is the recommended minimum Memory hardware guidance for a handful of example Chatwoot conversation base sizes.
-**Configuration Recommendations:**
-
-```sql
--- Memory settings (adjust based on available RAM)
-shared_buffers = 256MB # 25% of RAM for small instances
-effective_cache_size = 1GB # 75% of RAM
-work_mem = 4MB # Per connection
-maintenance_work_mem = 64MB # For maintenance operations
-
--- Connection settings
-max_connections = 100 # Adjust based on expected load
-max_prepared_transactions = 100 # For prepared statements
-
--- Write-ahead logging
-wal_buffers = 16MB # WAL buffer size
-checkpoint_completion_target = 0.9 # Checkpoint target
-```
-
-### Redis Configuration
-
-**Minimum Version:** Redis 6.0+
-**Recommended Version:** Redis 7.0+
-
-**Memory Requirements:**
-- **Small deployment:** 512MB
-- **Medium deployment:** 2GB
-- **Large deployment:** 4GB+
-
-**Configuration Recommendations:**
-
-```redis
-# Memory management
-maxmemory 2gb
-maxmemory-policy allkeys-lru
-
-# Persistence (choose one)
-save 900 1 # RDB snapshots
-# appendonly yes # AOF logging
-
-# Security
-requirepass your_secure_password
-```
-
-## Network Requirements
-
-### Ports
-
-| Port | Protocol | Purpose | External Access |
-|------|----------|---------|-----------------|
-| **80** | HTTP | Web traffic (redirect to HTTPS) | Yes |
-| **443** | HTTPS | Secure web traffic | Yes |
-| **3000** | HTTP | Application server (behind proxy) | No |
-| **5432** | TCP | PostgreSQL database | No |
-| **6379** | TCP | Redis cache | No |
-| **22** | SSH | Server administration | Admin only |
-
-### Firewall Configuration
-
-**Inbound Rules:**
-```bash
-# Allow HTTP and HTTPS
-ufw allow 80/tcp
-ufw allow 443/tcp
-
-# Allow SSH (restrict to admin IPs)
-ufw allow from YOUR_ADMIN_IP to any port 22
-
-# Deny all other inbound traffic
-ufw default deny incoming
-```
-
-**Outbound Rules:**
-```bash
-# Allow all outbound (for updates, integrations)
-ufw default allow outgoing
-
-# Or restrict to specific services
-ufw allow out 53/udp # DNS
-ufw allow out 80/tcp # HTTP
-ufw allow out 443/tcp # HTTPS
-ufw allow out 587/tcp # SMTP
-```
-
-### Bandwidth Estimation
-
-**Per Agent (monthly):**
-- **Light usage:** 1-2 GB
-- **Medium usage:** 3-5 GB
-- **Heavy usage:** 8-10 GB
-
-**Per Customer Conversation:**
-- **Text only:** 10-50 KB
-- **With images:** 500 KB - 2 MB
-- **With files:** 1-10 MB
-
-## Storage Requirements
-
-### Disk Space Planning
-
-**Base Installation:** 5-10 GB
-**Database Growth:** 100 MB - 1 GB per 1000 conversations
-**File Attachments:** Varies by usage (plan for 10-50 GB)
-**Logs:** 1-5 GB per month
-**Backups:** 2x database size + file storage
-
-### Storage Performance
-
-| Deployment Size | IOPS | Throughput |
-|-----------------|------|------------|
-| **Small** | 1,000 IOPS | 50 MB/s |
-| **Medium** | 3,000 IOPS | 150 MB/s |
-| **Large** | 10,000+ IOPS | 500+ MB/s |
-
-### File Storage Options
-
-**Local Storage:**
-- Suitable for small deployments
-- Requires backup strategy
-- Limited scalability
-
-**Object Storage (Recommended):**
-- AWS S3, Google Cloud Storage, Azure Blob
-- Unlimited scalability
-- Built-in redundancy
-- CDN integration
-
-## Security Requirements
-
-### SSL/TLS Certificates
-
-**Required for Production:**
-- Valid SSL certificate for your domain
-- TLS 1.2 or higher
-- Strong cipher suites
-
-**Certificate Options:**
-- Let's Encrypt (free, automated)
-- Commercial certificates
-- Wildcard certificates for subdomains
-
-### Access Control
-
-**Server Access:**
-- SSH key-based authentication
-- Disable password authentication
-- Regular security updates
-- Fail2ban or similar intrusion prevention
-
-**Application Security:**
-- Strong database passwords
-- Redis authentication
-- Regular security updates
-- Web Application Firewall (optional)
-
-## Cloud Provider Specifications
-
-### AWS EC2 Instance Types
-
-| Use Case | Instance Type | vCPU | RAM | Storage |
-|----------|---------------|------|-----|---------|
-| **Development** | t3.medium | 2 | 4 GB | 20 GB gp3 |
-| **Small Production** | t3.large | 2 | 8 GB | 50 GB gp3 |
-| **Medium Production** | m5.xlarge | 4 | 16 GB | 100 GB gp3 |
-| **Large Production** | m5.2xlarge | 8 | 32 GB | 200 GB gp3 |
-
-### DigitalOcean Droplets
-
-| Use Case | Droplet Size | vCPU | RAM | Storage |
-|----------|--------------|------|-----|---------|
-| **Development** | 2 GB | 1 | 2 GB | 50 GB SSD |
-| **Small Production** | 4 GB | 2 | 4 GB | 80 GB SSD |
-| **Medium Production** | 8 GB | 4 | 8 GB | 160 GB SSD |
-| **Large Production** | 16 GB | 6 | 16 GB | 320 GB SSD |
-
-### Google Cloud Compute Engine
-
-| Use Case | Machine Type | vCPU | RAM | Storage |
-|----------|--------------|------|-----|---------|
-| **Development** | e2-medium | 2 | 4 GB | 50 GB SSD |
-| **Small Production** | e2-standard-2 | 2 | 8 GB | 100 GB SSD |
-| **Medium Production** | e2-standard-4 | 4 | 16 GB | 200 GB SSD |
-| **Large Production** | e2-standard-8 | 8 | 32 GB | 500 GB SSD |
-
-## Performance Benchmarks
-
-### Expected Performance
-
-| Metric | Small | Medium | Large |
-|--------|-------|--------|-------|
-| **Concurrent Users** | 100 | 500 | 1000+ |
-| **Messages/minute** | 1,000 | 5,000 | 20,000+ |
-| **Response Time** | <200ms | <300ms | <500ms |
-| **Uptime** | 99.5% | 99.9% | 99.95% |
-
-### Load Testing
-
-Before production deployment, consider load testing:
-
-```bash
-# Example using Apache Bench
-ab -n 1000 -c 10 https://your-chatwoot-domain.com/api/v1/accounts
-
-# Example using wrk
-wrk -t12 -c400 -d30s https://your-chatwoot-domain.com/
-```
-
-## Monitoring Requirements
-
-### Essential Metrics
-
-- **System:** CPU, memory, disk, network
-- **Application:** Response times, error rates
-- **Database:** Connection count, query performance
-- **Redis:** Memory usage, hit rates
-
-### Recommended Tools
-
-- **System Monitoring:** Prometheus + Grafana, DataDog, New Relic
-- **Log Management:** ELK Stack, Fluentd, Splunk
-- **Uptime Monitoring:** Pingdom, UptimeRobot
-- **APM:** New Relic, DataDog APM, Scout
-
----
-
-
-These requirements are guidelines. Your actual needs may vary based on usage patterns, integrations, and performance expectations. Monitor your deployment and adjust resources accordingly.
-
+- **4GB RAM** is the **required** minimum memory size and supports up to 10,000 conversations a day.
+ - we are always working to reduce the memory requirement.
+- 8GB RAM supports up to 20,000 conversations a day.
+- More conversations? Consider scaling horizontally by adding more application servers.
-For high-availability deployments, consider redundancy in all components and implement proper backup and disaster recovery procedures.
+Add at least 1GB of swap memory to the machine to ensure that the machine doesn't run out of resources during an upgrade.
+
+
+## Database
+
+PostgreSQL is the only supported database. We don't have plans to support any other alternatives as of now.
+
+### PostgreSQL Requirements
+
+The server running PostgreSQL should have _at least_ 5-10 GB of storage available, though the exact requirements depends on the usage on your Chatwoot Instance.
+
+We highly recommend using the latest stable PostgreSQL versions as these were used for development and testing.
+
+### Redis
+
+Redis stores the background task queue and various chatwoot configurations cached. The storage requirements for Redis are minimal, You can start with 100MB and scale up as required.
+
+Redis version 7.0 or higher is recommended
+
+## Sidekiq
+
+Sidekiq processes the background jobs with a multi-threaded process. This process starts with the entire Rails stack but it can grow over time due to memory leaks. On a very active server the Sidekiq process can use 1GB+ of memory.
+
+You can opt to have both the sidekiq workers and rails servers to run on the same machine. But we recommend keeping the worker process and rails server on separate webservers for better scalability.
+
+## Supported web browsers
+
+Chatwoot supports the following web browsers:
+
+- [Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/)
+- [Google Chrome](https://www.google.com/chrome/)
+- [Chromium](https://www.chromium.org/getting-involved/dev-channel)
+- [Apple Safari](https://www.apple.com/safari/)
+- [Microsoft Edge](https://www.microsoft.com/en-us/edge)
+
+
+We don't support running Chatwoot with JavaScript disabled in the browser.
\ No newline at end of file
diff --git a/developer-docs/self-hosted/runbook/email-notifications.mdx b/developer-docs/self-hosted/runbook/email-notifications.mdx
new file mode 100644
index 000000000..63e5ddd00
--- /dev/null
+++ b/developer-docs/self-hosted/runbook/email-notifications.mdx
@@ -0,0 +1,65 @@
+---
+title: Customize email notifications in Chatwoot
+description: Guide to customizing email notification templates in self-hosted Chatwoot installations
+sidebarTitle: Email Notifications
+---
+
+Chatwoot allows customization of email notifications in self hosted installations.
+
+To customize the email notifications, follow the instructions below. Inorder to update the content, you have to add a new template in the Database, here is how you can do it.
+
+## 1. Login into the rails console.
+
+For Heroku installation, login to your account, go to the app. Click on "More", select "Run Console" from the dropdown menu. Enter the following command and hit run
+
+```rb
+heroku run rails console
+```
+
+For Linux VM installations, go to directory where Chatwoot code is available. If you have used the installation script, the default path is `/home/chatwoot/chatwoot`. Run the following command.
+
+```rb
+RAILS_ENV=production bundle exec rails console
+```
+
+## 2. Create a new template for the emails. Execute the following commands.
+
+```rb
+email_template = EmailTemplate.new
+email_template.name = 'conversation_assignment' # Accepts conversation_assignment, conversation_creation
+email_template.body = '// Enter your content'
+email_template.save!
+```
+
+### Variables
+
+Template would receive 3 variable
+
+1. `user` - Use `{{ user.name }}` to get the username.
+2. `conversation` - Use `{{ conversation.display_id }}` to get the conversation ID
+3. `action_url` - This is the URL of the conversation.
+
+## Default content
+
+Default content of the above template is as shown below
+
+### 1. Conversation Assignment
+
+```html
+Hi {{user.available_name}},
+Time to save the world. A new conversation has been assigned to you
+ Click here to get cracking.
+```
+
+### 2. Conversation Creation
+
+```html
+Hi {{user.available_name}}
+
+Time to save the world. A new conversation has been created in {{ inbox.name }}
+
+Click here to get cracking.
+
+```
+
+We use [Liquid templating engine](https://shopify.github.io/liquid/) internally, so all valid operators can be used here.
\ No newline at end of file
diff --git a/developer-docs/self-hosted/runbook/enable-ip-logging.mdx b/developer-docs/self-hosted/runbook/enable-ip-logging.mdx
new file mode 100644
index 000000000..3377b0618
--- /dev/null
+++ b/developer-docs/self-hosted/runbook/enable-ip-logging.mdx
@@ -0,0 +1,42 @@
+---
+title: How to enable IP identification in Chatwoot?
+description: Guide to enabling IP address geocoding and location identification in Chatwoot
+sidebarTitle: Enable IP Logging
+---
+
+Chatwoot lets you identify the user's location by geocoding the IP address. For IP Address geocoding, we support MaxmindDB services. This lookup provides methods for geocoding IP addresses without calling a remote API every time. You can follow the steps below to set up your self-hosted instance with the geocoding.
+
+## Step 1: Create MaxmindDB Account
+
+Create an account at [MaxmindDB](https://www.maxmind.com) and create an API key.
+
+## Step 2: Add Environment Variables
+
+Add the following environment variables.
+
+```bash
+IP_LOOKUP_API_KEY=your-api-key
+```
+
+With this step, Chatwoot would automatically download the [MaxmindDB downloadable databases](https://dev.maxmind.com/geoip/geoip2/downloadable/) and cache it locally.
+
+## Step 3: Enable IP Lookup
+
+Enable IP Lookup on your account. You can do this in two ways.
+
+### Method 1: Via Superadmin Console UI
+
+Log into the super admin and select accounts. Select your account, click edit, and toggle the `ip_lookup` feature.
+
+### Method 2: Via Rails Console
+
+```bash
+RAILS_ENV=production bundle exec rails console
+```
+
+```rb
+account_id = 1 // Please fill your account id instead of 1
+account = Account.find(account_id)
+account.enable_features('ip_lookup')
+account.save!
+```
\ No newline at end of file
diff --git a/developer-docs/self-hosted/runbook/migrate-chatwoot-database.mdx b/developer-docs/self-hosted/runbook/migrate-chatwoot-database.mdx
new file mode 100644
index 000000000..5355f5a8c
--- /dev/null
+++ b/developer-docs/self-hosted/runbook/migrate-chatwoot-database.mdx
@@ -0,0 +1,76 @@
+---
+title: "How to migrate Chatwoot database?"
+description: "Learn how to migrate your Chatwoot database from bundled PostgreSQL to managed database services like AWS RDS"
+---
+
+## Chatwoot database migration
+
+Follow along If you started out with a bundled install of postgres, redis and chatwoot in a single instance
+and now wants to migrate to managed database service.
+
+In this guide, we assume you want to migrate to AWS RDS. This guide should be equally applicable to any other
+managed database service or even migrating data between different Chatwoot installations.
+
+### Step 1: Stop Chatwoot service
+
+Stop Chatwoot service to stop database activity.
+
+```bash
+sudo systemctl stop chatwoot.target
+```
+
+### Step 2: Back up the database
+
+Back up the database using `pg_dump` tool.
+
+```bash
+pg_dump -Fc --no-acl --no-owner -U postgres chatwoot_production > /tmp/cw.dump
+```
+
+### Step 3: Create RDS instance
+
+Create an RDS Postgres instance in your AWS account. Refer to the [AWS documentation](https://aws.amazon.com/getting-started/hands-on/create-connect-postgresql-db/).
+
+### Step 4: Verify connectivity
+
+Verify connectivity to the new RDS instance from your Chatwoot installation.
+
+```bash
+psql -h -u -d postgres
+```
+
+### Step 5: Restore the database
+
+Restore the database from the backup file.
+
+```bash
+pg_restore --verbose --clean --no-acl --no-owner --create -U postgres -d postgres /tmp/cw.dump
+```
+
+### Step 6: Update environment variables
+
+Modify the Postgres related environment variables to use the new RDS credentials.
+
+```bash
+sudo -i -u chatwoot
+cd chatwoot
+vi .env
+```
+
+### Step 7: Start Chatwoot service
+
+Start the Chatwoot service.
+
+```bash
+sudo systemctl start chatwoot.target
+```
+
+
+ If you are getting the Chatwoot onboarding screen again on visiting your self-hosted Chatwoot URL,
+ login to the rails console and run the following:
+
+ ```bash
+ sudo cwctl --console
+ ::Redis::Alfred.delete(::Redis::Alfred::CHATWOOT_INSTALLATION_ONBOARDING)
+ ```
+
\ No newline at end of file
diff --git a/developer-docs/self-hosted/runbook/upgrade-to-chatwoot-v4.mdx b/developer-docs/self-hosted/runbook/upgrade-to-chatwoot-v4.mdx
new file mode 100644
index 000000000..38984cf69
--- /dev/null
+++ b/developer-docs/self-hosted/runbook/upgrade-to-chatwoot-v4.mdx
@@ -0,0 +1,125 @@
+---
+title: "How to upgrade to Chatwoot v4?"
+description: "Complete guide for upgrading to Chatwoot v4 with PostgreSQL pgvector support"
+---
+
+Chatwoot v4 requires PostgreSQL with `pgvector` support. You need to ensure that the version of PostgreSQL you are running supports `pgvector` before upgrading.
+
+## Type of Deployment
+
+### Linux
+- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below.
+- If you are using self-hosted PostgreSQL, read along.
+
+### Docker
+- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below.
+- If you are using self-hosted PostgreSQL, read along.
+
+### Kubernetes (Helm)
+- If you are using managed PostgreSQL, refer to the **Managed PostgreSQL** section below.
+- If you are using self-hosted PostgreSQL, read along.
+
+### Heroku
+- No action is needed if you are using Heroku PostgreSQL.
+- If you are using another managed PostgreSQL, refer to the **Managed PostgreSQL** section below.
+
+## PostgreSQL
+
+The PostgreSQL section is divided into parts based on how you are running PostgreSQL:
+1. **Managed PostgreSQL** from cloud vendors like AWS, GCP, Azure, Heroku, etc.
+2. **Self-hosted PostgreSQL** on Linux, Docker, or Kubernetes via Helm charts.
+
+### Managed PostgreSQL
+
+#### AWS RDS
+No action is needed if you are on the latest version of RDS.
+[Learn more](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-rds-postgresql-pgvector-hnsw-indexing/)
+
+#### Google Cloud (Cloud SQL)
+No action is needed.
+[Learn more](https://cloud.google.com/blog/products/databases/using-pgvector-llms-and-langchain-with-google-cloud-databases)
+
+#### Heroku PostgreSQL
+The `pgvector` extension is supported. No action is needed.
+[Learn more](https://devcenter.heroku.com/articles/pgvector-heroku-postgres)
+
+#### Azure PostgreSQL
+To enable `pgvector` on your Azure Database for PostgreSQL flexible server instance:
+
+1. Add `pgvector` to your allowlist as described in the PostgreSQL extensions documentation.
+2. Verify if it is correctly added by running:
+ ```sql
+ SHOW azure.extensions;
+ ```
+
+[Learn more](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-use-pgvector#enable-extension)
+
+---
+
+## Self-hosted PostgreSQL
+
+### Linux VM
+
+#### Existing Installation
+Install the `pgvector` extension for your version of PostgreSQL and run the upgrade:
+
+```bash
+# Find your PostgreSQL version
+psql --version
+
+# If its version 16, use the following command
+# Replace "16" with your PostgreSQL version
+sudo apt install postgresql-16-pgvector
+```
+
+### Docker Container
+
+#### Existing Installation
+
+1. Replace the PostgreSQL image with the pgvector image. The pgvector image is a drop-in replacement and works with your existing data:
+
+ ```bash
+ docker compose down
+
+ # Edit and replace the PostgreSQL image in docker-compose.yaml
+ vi docker-compose.yaml
+
+ # Replace PostgreSQL image tag
+ # Example: replace
+ # image: postgres:12
+ # with
+ # image: pgvector/pgvector:pg12
+
+ # Ensure the pg tag number matches your PostgreSQL version
+ docker compose pull
+
+ # Verify the updated setup
+ docker compose up -d
+ ```
+
+2. After verifying that the existing installation works with the pgvector image, proceed with the regular upgrade steps.
+ [Learn more](https://www.chatwoot.com/docs/self-hosted/deployment/upgrade#docker)
+
+### Kubernetes (Helm Chart)
+
+If you use the built-in PostgreSQL via the official Helm chart, follow the steps below. The Bitnami-packaged PostgreSQL used in the Helm chart does not support the pgvector extension. To address this, we have built a custom Postgres image with `pgvector` support.
+
+
+ This is only applicable if you are using the built-in Postgres with helm charts. Refer to the managed docs section if you are using AWS RDS or something similar.
+
+
+1. Create a `values.v4-upgrade.yaml` file with the following contents:
+
+ ```yaml
+ image:
+ repository: chatwoot/chatwoot
+ tag: v4.0.1
+ pullPolicy: IfNotPresent
+
+ postgresql:
+ image:
+ registry: ghcr.io
+ repository: chatwoot/pgvector
+ ```
+
+2. Run `helm upgrade` with this custom values.yaml file.
\ No newline at end of file