Tracks company recency from linked contact activity so the Companies list and detail page can show/sort by real customer engagement instead of generic record updates. ## Closes None. ## Why Company recency should reflect activity from people associated with the company. This keeps the signal tied to persisted contact activity, without treating passive online presence or widget heartbeat pings as company activity. ## What Changed - Adds a company helper to record `last_activity_at` from linked contact activity. - Rolls up `Contact#last_activity_at` changes to the associated company. - Initializes company activity when an already-active contact is associated with a company, including the business-email auto-association path. - Throttles company activity rollups to once every 5 minutes per company to avoid unnecessary writes during active conversations. - Treats company activity as monotonic: unlinking, moving, or deleting contacts does not move a company's activity timestamp backwards. - Leaves historical backfill, online presence tracking, widget visit tracking, and richer activity attribution out of scope. ## How to Test 1. Open an account with Companies enabled and visit the Companies list. 2. Trigger activity for a contact that belongs to a company, for example by receiving or sending a message in that contact's conversation. 3. Confirm the linked company shows a recent activity timestamp in the Companies list/detail page after the contact activity updates. 4. Associate an already-active contact with a company and confirm the company receives that contact's existing activity timestamp. 5. Confirm repeated contact activity within a short window does not continuously rewrite the company timestamp. --------- Co-authored-by: Sony Mathew <2040199+sony-mathew@users.noreply.github.com>
245 lines
6.3 KiB
YAML
245 lines
6.3 KiB
YAML
# DO NOT change the order of features EVER
|
|
############################################
|
|
# name: the name to be used internally in the code
|
|
# display_name: the name to be used in the UI
|
|
# enabled: whether the feature is enabled by default
|
|
# help_url: the url to the help center article
|
|
# chatwoot_internal: whether the feature is internal to Chatwoot and should not be shown in the UI for other self hosted installations
|
|
# deprecated: purpose of feature flag is done, no need to show it in the UI anymore
|
|
- name: inbound_emails
|
|
display_name: Inbound Emails
|
|
enabled: true
|
|
- name: channel_email
|
|
display_name: Email Channel
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/email
|
|
- name: channel_facebook
|
|
display_name: Facebook Channel
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/fb
|
|
- name: channel_twitter
|
|
display_name: Twitter Channel
|
|
enabled: true
|
|
deprecated: true
|
|
- name: ip_lookup
|
|
display_name: IP Lookup
|
|
enabled: false
|
|
- name: disable_branding
|
|
display_name: Disable Branding
|
|
enabled: false
|
|
premium: true
|
|
- name: email_continuity_on_api_channel
|
|
display_name: Email Continuity on API Channel
|
|
enabled: false
|
|
- name: help_center
|
|
display_name: Help Center
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/help-center
|
|
- name: agent_bots
|
|
display_name: Agent Bots
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/agent-bots
|
|
- name: macros
|
|
display_name: Macros
|
|
enabled: true
|
|
- name: agent_management
|
|
display_name: Agent Management
|
|
enabled: true
|
|
- name: team_management
|
|
display_name: Team Management
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/teams
|
|
- name: inbox_management
|
|
display_name: Inbox Management
|
|
enabled: true
|
|
- name: labels
|
|
display_name: Labels
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/labels
|
|
- name: custom_attributes
|
|
display_name: Custom Attributes
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/custom-attributes
|
|
- name: automations
|
|
display_name: Automations
|
|
enabled: true
|
|
- name: canned_responses
|
|
display_name: Canned Responses
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/canned
|
|
- name: integrations
|
|
display_name: Integrations
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/integrations
|
|
- name: voice_recorder
|
|
display_name: Voice Recorder
|
|
enabled: true
|
|
- name: report_rollup
|
|
display_name: Report Rollup
|
|
enabled: false
|
|
- name: channel_website
|
|
display_name: Website Channel
|
|
enabled: true
|
|
- name: campaigns
|
|
display_name: Campaigns
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/campaigns
|
|
- name: reports
|
|
display_name: Reports
|
|
enabled: true
|
|
help_url: https://chwt.app/hc/reports
|
|
- name: crm
|
|
display_name: CRM
|
|
enabled: true
|
|
- name: auto_resolve_conversations
|
|
display_name: Auto Resolve Conversations
|
|
enabled: true
|
|
- name: custom_reply_email
|
|
display_name: Custom Reply Email
|
|
enabled: false
|
|
- name: custom_reply_domain
|
|
display_name: Custom Reply Domain
|
|
enabled: false
|
|
- name: audit_logs
|
|
display_name: Audit Logs
|
|
enabled: false
|
|
premium: true
|
|
- name: custom_tools
|
|
display_name: Custom Tools
|
|
enabled: false
|
|
premium: true
|
|
- name: message_reply_to
|
|
display_name: Message Reply To
|
|
enabled: false
|
|
deprecated: true
|
|
- name: insert_article_in_reply
|
|
display_name: Insert Article in Reply
|
|
enabled: false
|
|
deprecated: true
|
|
- name: inbox_view
|
|
display_name: Inbox View
|
|
enabled: false
|
|
chatwoot_internal: true
|
|
- name: sla
|
|
display_name: SLA
|
|
enabled: false
|
|
premium: true
|
|
help_url: https://chwt.app/hc/sla
|
|
- name: help_center_embedding_search
|
|
display_name: Help Center Embedding Search
|
|
enabled: false
|
|
premium: true
|
|
chatwoot_internal: true
|
|
- name: linear_integration
|
|
display_name: Linear Integration
|
|
enabled: false
|
|
- name: captain_integration
|
|
display_name: Captain
|
|
enabled: false
|
|
premium: true
|
|
- name: custom_roles
|
|
display_name: Custom Roles
|
|
enabled: false
|
|
premium: true
|
|
- name: chatwoot_v4
|
|
display_name: Chatwoot V4
|
|
enabled: true
|
|
- name: captain_v1_action_classifier
|
|
display_name: Captain V1 Action Classifier
|
|
enabled: false
|
|
premium: true
|
|
chatwoot_internal: true
|
|
- name: contact_chatwoot_support_team
|
|
display_name: Contact Chatwoot Support Team
|
|
enabled: true
|
|
chatwoot_internal: true
|
|
- name: shopify_integration
|
|
display_name: Shopify Integration
|
|
enabled: false
|
|
chatwoot_internal: true
|
|
- name: search_with_gin
|
|
display_name: Search messages with GIN
|
|
enabled: false
|
|
chatwoot_internal: true
|
|
- name: channel_instagram
|
|
display_name: Instagram Channel
|
|
enabled: true
|
|
- name: crm_integration
|
|
display_name: CRM Integration
|
|
enabled: false
|
|
- name: channel_voice
|
|
display_name: Voice Channel
|
|
enabled: false
|
|
premium: true
|
|
- name: notion_integration
|
|
display_name: Notion Integration
|
|
enabled: false
|
|
- name: captain_integration_v2
|
|
display_name: Captain V2
|
|
enabled: false
|
|
premium: true
|
|
- name: whatsapp_embedded_signup
|
|
display_name: WhatsApp Embedded Signup
|
|
enabled: false
|
|
deprecated: true
|
|
- name: whatsapp_campaign
|
|
display_name: WhatsApp Campaign
|
|
enabled: false
|
|
- name: crm_v2
|
|
display_name: CRM V2
|
|
enabled: false
|
|
chatwoot_internal: true
|
|
- name: assignment_v2
|
|
display_name: Assignment V2
|
|
enabled: true
|
|
- name: captain_document_auto_sync
|
|
display_name: Captain Document Auto Sync
|
|
enabled: false
|
|
premium: true
|
|
- name: advanced_search
|
|
display_name: Advanced Search
|
|
enabled: false
|
|
premium: true
|
|
chatwoot_internal: true
|
|
- name: saml
|
|
display_name: SAML
|
|
enabled: false
|
|
premium: true
|
|
- name: advanced_search_indexing
|
|
display_name: Advanced Search Indexing
|
|
enabled: false
|
|
premium: true
|
|
chatwoot_internal: true
|
|
- name: reply_mailer_migration
|
|
# This feature is temporary only to migrate reply mailer to new email builder
|
|
# Once the migration is done, this feature can be removed
|
|
display_name: Reply Mailer Migration
|
|
enabled: false
|
|
chatwoot_internal: true
|
|
- name: quoted_email_reply
|
|
display_name: Quoted Email Reply
|
|
enabled: false
|
|
deprecated: true
|
|
- name: companies
|
|
display_name: Companies
|
|
enabled: false
|
|
premium: true
|
|
- name: channel_tiktok
|
|
display_name: TikTok Channel
|
|
enabled: true
|
|
- name: csat_review_notes
|
|
display_name: CSAT Review Notes
|
|
enabled: false
|
|
premium: true
|
|
- name: captain_tasks
|
|
display_name: Captain Tasks
|
|
enabled: true
|
|
- name: conversation_required_attributes
|
|
display_name: Required Conversation Attributes
|
|
enabled: false
|
|
premium: true
|
|
- name: advanced_assignment
|
|
display_name: Advanced Assignment
|
|
enabled: false
|
|
premium: true
|