# This file contains all the installation wide configuration which controls various settings in Chatwoot
# This is internal config and should not be modified by the user directly in database
# Chatwoot might override and modify these values during the upgrade process
# Configs which can be modified by the user are available in the dashboard under appropriate UI
#
# name: the name of the config referenced in the code
# value: the value of the config
# display_title: the title of the config displayed in the dashboard UI
# description: the description of the config displayed in the dashboard UI
# locked: if you don't specify locked attribute in yaml, the default value will be true,
#         which means the particular config will be locked and won't be available in `super_admin/installation_configs`
# premium: These values get overwritten unless the user is on a premium plan
# type: The type of the config. Default is text, select and boolean are also supported
# options: For select types, its required to have options for the select in the following pattern: "option_value":"Human readable option"

# ------- Branding Related Config ------- #
- name: INSTALLATION_NAME
  value: 'Chatwoot'
  display_title: 'Installation Name'
  description: 'The installation wide name that would be used in the dashboard, title etc.'
- name: LOGO_THUMBNAIL
  value: '/brand-assets/logo_thumbnail.svg'
  display_title: 'Logo Thumbnail'
  description: 'The thumbnail that would be used for favicon (512px X 512px)'
- name: LOGO
  value: '/brand-assets/logo.svg'
  display_title: 'Logo'
  description: 'The logo that would be used on the dashboard, login page etc.'
- name: LOGO_DARK
  value: '/brand-assets/logo_dark.svg'
  display_title: 'Logo Dark Mode'
  description: 'The logo that would be used on the dashboard, login page etc. for dark mode'
- name: BRAND_URL
  value: 'https://www.chatwoot.com'
  display_title: 'Brand URL'
  description: 'The URL that would be used in emails under the section “Powered By”'
- name: WIDGET_BRAND_URL
  value: 'https://www.chatwoot.com'
  display_title: 'Widget Brand URL'
  description: 'The URL that would be used in the widget under the section “Powered By”'
- name: BRAND_NAME
  value: 'Chatwoot'
  display_title: 'Brand Name'
  description: 'The name that would be used in emails and the widget'
- name: TERMS_URL
  value: 'https://www.chatwoot.com/terms-of-service'
  display_title: 'Terms URL'
  description: 'The terms of service URL displayed in Signup Page'
- name: PRIVACY_URL
  value: 'https://www.chatwoot.com/privacy-policy'
  display_title: 'Privacy URL'
  description: 'The privacy policy URL displayed in the app'
- name: DISPLAY_MANIFEST
  value: true
  display_title: 'Chatwoot Metadata'
  description: 'Display default Chatwoot metadata like favicons and upgrade warnings'
  type: boolean
# ------- End of Branding Related Config ------- #

# ------- Signup & Account Related Config ------- #
- name: ENABLE_ACCOUNT_SIGNUP
  display_title: 'Enable Account Signup'
  value: false
  description: 'Allow users to signup for new accounts'
  locked: false
  type: boolean
- name: CREATE_NEW_ACCOUNT_FROM_DASHBOARD
  value: false
  description: 'Allow users to create new accounts from the dashboard'
  locked: false
- name: HCAPTCHA_SITE_KEY
  value:
  locked: false
- name: HCAPTCHA_SERVER_KEY
  value:
  locked: false
- name: INSTALLATION_EVENTS_WEBHOOK_URL
  value:
  display_title: 'System events Webhook URL'
  description: 'The URL to which the system events like new accounts created will be sent'
  locked: false
- name: WEBHOOK_TIMEOUT
  value: 5
  display_title: 'Webhook request timeout (seconds)'
  description: 'Maximum time Chatwoot waits for a webhook response before failing the request'
  locked: false
- name: DIRECT_UPLOADS_ENABLED
  type: boolean
  value: false
  description: 'Enable direct uploads to cloud storage'
  locked: false
- name: MAXIMUM_FILE_UPLOAD_SIZE
  value: 40
  display_title: 'Attachment size limit (MB)'
  description: 'Maximum attachment size in MB allowed for uploads'
  locked: false
# ------- End of Account Related Config ------- #

# ------- Email Related Config ------- #
- name: MAILER_INBOUND_EMAIL_DOMAIN
  display_title: 'Inbound Email Domain'
  value:
  description: 'The domain name to be used for generating conversation continuity emails (reply+id@domain.com)'
  locked: false
- name: MAILER_SUPPORT_EMAIL
  display_title: 'Support Email'
  value:
  description: 'The support email address for your installation'
  locked: false
- name: ACCOUNT_EMAILS_LIMIT
  display_title: 'Account Email Sending Limit (Daily)'
  description: 'Maximum number of non-channel emails an account can send per day'
  value: 100
  locked: false
- name: ACCOUNT_EMAILS_PLAN_LIMITS
  display_title: 'Account Email Plan Limits (Daily)'
  description: 'Per-plan daily email sending limits as JSON'
  value:
  type: code
# ------- End of Email Related Config ------- #

# ------- Facebook Channel Related Config ------- #
- name: FB_APP_ID
  display_title: 'Facebook App ID'
  locked: false
- name: FB_VERIFY_TOKEN
  display_title: 'Facebook Verify Token'
  description: 'The verify token used for Facebook Messenger Webhook'
  locked: false
  type: secret
- name: FB_APP_SECRET
  display_title: 'Facebook App Secret'
  locked: false
  type: secret
- name: IG_VERIFY_TOKEN
  display_title: 'Instagram Verify Token'
  description: 'The verify token used for Instagram Webhook'
  locked: false
  type: secret
- name: FACEBOOK_API_VERSION
  display_title: 'Facebook API Version'
  description: 'Configure this if you want to use a different Facebook API version. Make sure its prefixed with `v`'
  value: 'v18.0'
  locked: false
- name: ENABLE_MESSENGER_CHANNEL_HUMAN_AGENT
  display_title: 'Enable human agent'
  value: false
  locked: false
  description: 'Enable human agent for messenger channel for longer message back period. Needs additional app approval: https://developers.facebook.com/docs/features-reference/human-agent/'
  type: boolean
# ------- End of Facebook Channel Related Config ------- #

# ------- WhatsApp Channel Related Config ------- #
- name: WHATSAPP_APP_ID
  display_title: 'WhatsApp App ID'
  description: 'The Facebook App ID for WhatsApp Business API integration'
  locked: false
- name: WHATSAPP_CONFIGURATION_ID
  display_title: 'WhatsApp Configuration ID'
  description: 'The Configuration ID for WhatsApp Embedded Signup flow (required for embedded signup)'
  locked: false
- name: WHATSAPP_APP_SECRET
  display_title: 'WhatsApp App Secret'
  description: 'The App Secret for WhatsApp Embedded Signup flow (required for embedded signup)'
  locked: false
- name: WHATSAPP_API_VERSION
  display_title: 'WhatsApp API Version'
  description: 'Configure this if you want to use a different WhatsApp API version. Make sure its prefixed with `v`'
  value: 'v22.0'
  locked: false
# ------- End of WhatsApp Channel Related Config ------- #

# MARK: Microsoft Email Channel Config
- name: AZURE_APP_ID
  display_title: 'Azure App ID'
  description: 'The App ID that will be used to authenticate with customer Microsoft accounts. Find more details on setting up Azure here: https://chwt.app/dev/ms'
  locked: false
- name: AZURE_APP_SECRET
  display_title: 'Azure App Secret'
  locked: false
  type: secret
# End of Microsoft Email Channel Config

# MARK: Captain Config
- name: CAPTAIN_OPEN_AI_API_KEY
  display_title: 'OpenAI API Key'
  description: 'The API key used to authenticate requests to OpenAI services for Captain AI.'
  locked: false
  type: secret
- name: CAPTAIN_OPEN_AI_MODEL
  display_title: 'OpenAI Model'
  description: 'The OpenAI model configured for use in Captain AI. Default: gpt-4.1-mini'
  locked: false
- name: CAPTAIN_OPEN_AI_ENDPOINT
  display_title: 'OpenAI API Endpoint (optional)'
  description: 'The OpenAI endpoint configured for use in Captain AI. Default: https://api.openai.com/'
  locked: false
- name: CAPTAIN_EMBEDDING_MODEL
  display_title: 'Embedding Model (optional)'
  description: 'The embedding model configured for use in Captain AI. Default: text-embedding-3-small'
  locked: false
- name: CAPTAIN_FIRECRAWL_API_KEY
  display_title: 'FireCrawl API Key (optional)'
  description: 'The FireCrawl API key for the Captain AI service'
  locked: false
  type: secret
- name: CAPTAIN_CLOUD_PLAN_LIMITS
  display_title: 'Captain Cloud Plan Limits'
  description: 'The limits for the Captain AI service for different plans'
  value:
  type: code
# End of Captain Config

# ------- Chatwoot Internal Config for Cloud ----#
- name: CHATWOOT_INBOX_TOKEN
  value:
  display_title: 'Inbox Token'
  description: 'The Chatwoot Inbox Token for Contact Support in Cloud'
  locked: false
  type: secret
- name: CHATWOOT_INBOX_HMAC_KEY
  value:
  display_title: 'Inbox HMAC Key'
  description: 'The Chatwoot Inbox HMAC Key for Contact Support in Cloud'
  locked: false
  type: secret
- name: CHATWOOT_CLOUD_PLANS
  display_title: 'Cloud Plans'
  value:
  description: 'Config to store stripe plans for cloud'
- name: CHATWOOT_CLOUD_PLAN_FEATURES
  display_title: 'Planwise Features List'
  value:
  description: 'Config to features and their associated plans'
- name: DEPLOYMENT_ENV
  value: self-hosted
  description: 'The deployment environment of the installation, to differentiate between Chatwoot cloud and self-hosted'
- name: CLOUD_ANALYTICS_TOKEN
  value:
  display_title: 'Analytics Token'
  description: 'The Amplitude analytics API key for Chatwoot cloud'
  type: secret
- name: CLEARBIT_API_KEY
  value:
  display_title: 'Clearbit API Key'
  description: 'This API key is used for onboarding the users, to pre-fill account data.'
  type: secret
- name: DASHBOARD_SCRIPTS
  value:
  display_title: 'Dashboard Scripts'
  description: 'Scripts are loaded as the last item in the <body> tag'
  type: code
- name: BLOCKED_EMAIL_DOMAINS
  value:
  display_title: 'Blocked Email Domains'
  description: 'Add a domain per line to block them from signing up, accepts Regex'
  type: code
- name: SKIP_INCOMING_BCC_PROCESSING
  value:
  display_title: 'Skip BCC Processing For'
  description: 'Comma-separated list of account IDs that should be skipped from incoming BCC processing'
- name: INACTIVE_WHATSAPP_NUMBERS
  value: ''
  display_title: 'Inactive WhatsApp Numbers'
  description: 'Comma-separated list of WhatsApp numbers that should be rejected with a 422 error'
  type: code
# ------- End of Chatwoot Internal Config for Cloud ----#

# ------- Chatwoot Internal Config for Self Hosted ----#
- name: INSTALLATION_PRICING_PLAN
  value: 'community'
  description: 'The pricing plan for the installation, retrieved from the billing API'
- name: INSTALLATION_PRICING_PLAN_QUANTITY
  value: 0
  description: 'The number of licenses purchased for the installation, retrieved from the billing API'
- name: CHATWOOT_SUPPORT_WEBSITE_TOKEN
  value:
  description: 'The Chatwoot website token, used to identify the Chatwoot inbox and display the "Contact Support" option on the billing page'
  type: secret
- name: CHATWOOT_SUPPORT_SCRIPT_URL
  value:
  description: 'The Chatwoot script base URL, to display the "Contact Support" option on the billing page'
- name: CHATWOOT_SUPPORT_IDENTIFIER_HASH
  value:
  description: 'The Chatwoot identifier hash, to validate the contact in the live chat window.'
  type: secret
- name: ACCOUNT_SECURITY_NOTIFICATION_WEBHOOK_URL
  display_title: Webhook URL to post security analysis
  value:
  description: Used to notify Chatwoot about account abuses, potential threads (Should be a Discord Webhook URL)
# ------- End of Chatwoot Internal Config for Self Hosted ----#

# ------- Compliance Related Config ----#
- name: CHATWOOT_INSTANCE_ADMIN_EMAIL
  display_title: 'Instance Admin Email'
  value:
  description: 'The email of the instance administrator to receive compliance-related notifications'
  locked: false
# ------- End of Compliance Related Config ----#

## ------ Configs added for enterprise clients ------ ##
- name: API_CHANNEL_NAME
  value:
  description: 'Custom name for the API channel'
- name: API_CHANNEL_THUMBNAIL
  value:
  description: 'Custom thumbnail for the API channel'
- name: LOGOUT_REDIRECT_LINK
  value: /app/login
  locked: false
  description: 'Redirect to a different link after logout'
- name: DISABLE_USER_PROFILE_UPDATE
  value: false
  locked: false
  description: 'Disable rendering profile update page for users'
## ------ End of Configs added for enterprise clients ------ ##

## ------ Configs added for FCM v1 notifications ------ ##
- name: FIREBASE_PROJECT_ID
  display_title: 'Firebase Project ID'
  value:
  locked: false
  description: 'Firebase project ID'
- name: FIREBASE_CREDENTIALS
  display_title: 'Firebase Credentials'
  value:
  locked: false
  type: secret
  description: 'Contents on your firebase credentials json file'
## ------ End of Configs added for FCM v1 notifications ------ ##

## ------ Configs added for Linear ------ ##
- name: LINEAR_CLIENT_ID
  display_title: 'Linear Client ID'
  value:
  locked: false
  description: 'Linear client ID'
- name: LINEAR_CLIENT_SECRET
  display_title: 'Linear Client Secret'
  value:
  locked: false
  description: 'Linear client secret'
  type: secret
## ------ End of Configs added for Linear ------ ##

## ------ Configs added for Notion ------ ##
- name: NOTION_CLIENT_ID
  display_title: 'Notion Client ID'
  value:
  locked: false
  description: 'Notion client ID'
- name: NOTION_CLIENT_SECRET
  display_title: 'Notion Client Secret'
  value:
  locked: false
  description: 'Notion client secret'
  type: secret
- name: NOTION_VERSION
  display_title: 'Notion Version'
  value: '2022-06-28'
  locked: false
  description: 'Notion version'
## ------ End of Configs added for Notion ------ ##

## ------ Configs added for Slack ------ ##
- name: SLACK_CLIENT_ID
  display_title: 'Slack Client ID'
  value:
  locked: false
  description: 'Slack client ID'
- name: SLACK_CLIENT_SECRET
  display_title: 'Slack Client Secret'
  value:
  locked: false
  description: 'Slack client secret'
  type: secret
## ------ End of Configs added for Slack ------ ##

# ------- Shopify Integration Config ------- #
- name: SHOPIFY_CLIENT_ID
  display_title: 'Shopify Client ID'
  description: 'The Client ID (API Key) from your Shopify Partner account'
  locked: false
  type: secret
- name: SHOPIFY_CLIENT_SECRET
  display_title: 'Shopify Client Secret'
  description: 'The Client Secret (API Secret Key) from your Shopify Partner account'
  locked: false
  type: secret
# ------- End of Shopify Related Config ------- #

# ------- Instagram Channel Related Config ------- #
- name: INSTAGRAM_APP_ID
  display_title: 'Instagram App ID'
  locked: false
- name: INSTAGRAM_APP_SECRET
  display_title: 'Instagram App Secret'
  description: 'The App Secret used for Instagram authentication'
  locked: false
  type: secret
- name: INSTAGRAM_VERIFY_TOKEN
  display_title: 'Instagram Verify Token'
  description: 'The verify token used for Instagram Webhook'
  locked: false
  type: secret
- name: ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT
  display_title: 'Enable human agent for instagram channel'
  value: false
  locked: false
  description: 'Enable human agent for instagram channel for longer message back period. Needs additional app approval: https://developers.facebook.com/docs/features-reference/human-agent/'
  type: boolean
- name: INSTAGRAM_API_VERSION
  display_title: 'Instagram API Version'
  description: 'Configure this if you want to use a different Instagram API version. Make sure its prefixed with `v`'
  value: 'v22.0'
  locked: true
# ------- End of Instagram Channel Related Config ------- #

# ------- TikTok Channel Related Config ------- #
- name: TIKTOK_API_VERSION
  display_title: 'TikTok API Version'
  description: 'Configure this if you want to use a different TikTok API version. Make sure its prefixed with `v`'
  value: 'v1.3'
  locked: false
- name: TIKTOK_APP_ID
  display_title: 'TikTok App ID'
  locked: false
- name: TIKTOK_APP_SECRET
  display_title: 'TikTok App Secret'
  locked: false
  type: secret
# ------- End of TikTok Channel Related Config ------- #

# ------- OG Image Related Config ------- #
- name: OG_IMAGE_CDN_URL
  display_title: 'OG Image CDN URL'
  description: 'The CDN URL for serving OG images'
  value: ''
  locked: false
- name: OG_IMAGE_CLIENT_REF
  display_title: 'OG Image Client Reference'
  description: 'Token used to block unauthorized access to OG images'
  value: ''
  locked: false
  type: secret
# ------- End of OG Image Related Config ------- #

## ------ Configs added for Google OAuth ------ ##
- name: GOOGLE_OAUTH_CLIENT_ID
  display_title: 'Google OAuth Client ID'
  value:
  locked: false
  description: 'Google OAuth Client ID for email authentication'
- name: GOOGLE_OAUTH_CLIENT_SECRET
  display_title: 'Google OAuth Client Secret'
  value:
  locked: false
  description: 'Google OAuth Client Secret for email authentication'
  type: secret
- name: GOOGLE_OAUTH_REDIRECT_URI
  display_title: 'Google OAuth Redirect URI'
  value:
  locked: false
  description: 'The redirect URI configured in your Google OAuth app'
- name: ENABLE_GOOGLE_OAUTH_LOGIN
  display_title: 'Enable Google OAuth login'
  value: true
  locked: false
  description: 'Show Google OAuth as a login option when credentials are configured'
  type: boolean
## ------ End of Configs added for Google OAuth ------ ##

## ------ Configs added for SAML SSO ------ ##
- name: ENABLE_SAML_SSO_LOGIN
  display_title: 'Enable SAML SSO login'
  value: true
  locked: false
  description: 'Show SAML SSO as a login option. Cannot be disabled if any users are using SAML authentication.'
  type: boolean
## ------ End of Configs added for SAML SSO ------ ##

## ------ Configs added for Cloudflare ------ ##
- name: CLOUDFLARE_API_KEY
  display_title: 'Cloudflare API Key'
  value:
  locked: false
  description: 'API key for Cloudflare account authentication'
  type: secret
- name: CLOUDFLARE_ZONE_ID
  display_title: 'Cloudflare Zone ID'
  value:
  locked: false
  description: 'Zone ID for the Cloudflare domain'
## ------ End of Configs added for Cloudflare ------ ##

## ------ Customizations for Customers ------ ##
- name: WIDGET_TOKEN_EXPIRY
  display_title: 'Widget Token Expiry'
  value: 180
  locked: false
  description: 'Token expiry in days'
## ------ End of Customizations for Customers ------ ##

## ----- LLM Observability ---- ##
- name: OTEL_PROVIDER
  display_title: 'OpenTelemetry Provider'
  description: 'LLM observability provider (langfuse, langsmith, etc.)'
  value: ''
  locked: false
- name: LANGFUSE_PUBLIC_KEY
  display_title: 'Langfuse Public Key'
  description: 'Public key for Langfuse authentication'
  value: ''
  locked: false
  type: secret
- name: LANGFUSE_SECRET_KEY
  display_title: 'Langfuse Secret Key'
  description: 'Secret key for Langfuse authentication'
  value: ''
  locked: false
  type: secret
- name: LANGFUSE_BASE_URL
  display_title: 'Langfuse Base URL'
  description: 'Langfuse endpoint (US: https://us.cloud.langfuse.com, EU: https://cloud.langfuse.com)'
  value: 'https://us.cloud.langfuse.com'
  locked: false
## ---- End of LLM Observability ---- ##
