Organization Settings
Audience: Support / Management (engineers for the technical section) · Where in app: Sidebar → Settings → Organization · Plan availability: All plans
Organization settings are the company-level config that owns most defaults across the platform. Almost everything here lives on the companies document (CompanyModel). Changing a value here generally takes effect on the next request — there's no redeploy.
What it does
Defines who the company is and how the widget and AI behave by default:
- Company profile (name, website, industry, timezone).
- Branding (logo, email signature/footer where the plan allows).
- Working hours and timezone (drive widget online/offline state).
- Widget visibility controls (global on/off, mobile).
- Billing emails, affiliate links, and organization-level notification toggles.
How it works
The companies document is read on each widget load and each dashboard request, so updates are picked up live. The timezone (an IANA string like Pacific/Auckland) is the source of truth for working-hours math; timezone_offset is a denormalized convenience that can drift. If the company is agency-managed, some of these defaults may be controlled by the agency.
Configuration & options
Profile (CompanyModel)
| Field | Default | What |
|---|---|---|
company_name | — | Display name |
website_url | '' | Primary site (drives auto-scrape on signup) |
industry | '' | Used by AI prompts and the industry_match lead-score signal |
agent_type | 'sales' | Reserved / historical AI-agent classification |
timezone | Pacific/Auckland | IANA timezone — source of truth |
timezone_offset | 720 | Convenience minutes-offset (denormalized) |
language | en | Org-wide language (ISO code) |
Branding
- Logo →
companies.logo(aFileModelreference). - Email signature for transcript emails; invoice-email footer text (where the plan allows).
- White-label widget branding is separate — see White-Label and the widget styling docs.
Working hours
companies.working_hours[]+companies.timezonedefine when the widget is "online". Configured under Settings → Organization → Working Hours.
Billing emails
companies.billing_emails[]— where invoice notifications and credit-low alerts go. May list multiple admins.
Visibility & mobile
| Field | Default | What |
|---|---|---|
visibility | true | Global widget on/off |
mobile_disable | false | Hide the widget on mobile |
widget_installed | false | Auto-set when the first event arrives |
widget_installed_at | — | Timestamp of first event |
Affiliate
affiliate_link(URL) +affiliate_link_enabled(bool) — partner/referral programs (Rewardful).
Notifications
companies.notificationsholds org-level toggles:chat_transcript,call,missed_call,reports_email,daily_recap_email,slack_new_visitor,slack_hot_lead, etc. These are the ceiling — a per-user toggle only fires when the org-level one is on.
Privacy
privacy_policy_text/privacy_policy_url— shown to visitors where applicable.
Agency-managed companies
If the company is owned by an agency:
companies.agency_idis set.companies.agency_self_accountdistinguishes the agency's own business account from agency-created client sub-accounts.- Some org settings (working hours, branding) may be controlled/inherited from the agency — admins should know the precedence. See Agency Overview.
Behaviors & edge cases
- "Why is the timezone wrong?" — the IANA
timezonestring is the source of truth;timezone_offsetis convenience and can drift. Fixtimezone. - "Team in two timezones — what do I set?" — use the primary office's; per-user
timezoneon eachUserModelhandles individual schedules. See Account Settings. - Changing
industrydoes not retroactively re-score existing visitors — it applies to future signals only. timezonechanges affect working hours immediately on the next request.widget_installedflips automatically when the first widget event arrives — admins can't toggle it manually.
Plan & limits
- Organization settings are available on all plans.
- Some branding (e.g. invoice-email footer text, white-label widget footer) is plan-gated — see Plans & Subscriptions and White-Label. Verify per-tier specifics.
Technical implementation
- Model:
CompanyModel—/home/bilal/Projects/knock-knock-app/backend/app/models/CompanyModel.js. - Controller / routes:
CompanyController; e.g.PUT /company/:_id(profile),PUT /company/:_id/affiliate-link,PUT /company/:_id/lead-intelligence,PUT /company/:_id/webhooks. Admin-only:PUT /company/admin/free-period,PUT /company/admin/manual-ai-credits. - Frontend:
frontend/src/views/settings/organization/Index.vue(+Notifications.vue,WorkingHours.vue). - Working-hours/timezone drive widget state — see the widget module and backend service.