Settings
Complete reference for every setting in the admin area — General, Support, Sales, Estimate, Email, and Maintenance tabs.
Overview
The Settings page (/admin/settings) is the central configuration hub. All settings are stored in the app_config table with a flexible key-value structure organized by bot (e.g. support, sales, estimate, email_monitor, shared) and category. Lookup uses bot-specific values first, then falls back to shared for defaults. The UI is organized into six tabs; use the tab bar to switch sections and the vertical menu (or dropdown on mobile) for sub-sections.
| Tab | What It Configures |
|---|---|
| General | Global settings and AI model management. |
| Support | Support chatbot behavior, prompts, quick actions, ticket settings, notifications, and technician configuration. |
| Sales | Sales chatbot behavior, prompts, and sales knowledge base prompts. |
| Estimate | Estimate categories, products, selectors, flow steps, rules, notes, knowledge, and QuickBooks integration. |
| Email monitor system controls, AI prompts, filters, and voicemail settings. | |
| Maintenance | Database reset tools. |
General Tab
General Configuration
The General sub-section contains global settings that apply across the entire system. These are key-value configuration entries that you can edit inline. Common settings include:
- Company Name — Your business name as displayed on estimates, emails, and chatbots.
- Company Phone — Your business phone number.
- Company Email — Your business email address.
- Business Hours — Your operating hours, shown to customers in chatbots.
Each setting has a label and description to help you understand its purpose. Make changes and click Save — the save bar appears at the bottom when you have unsaved changes.
AI Models Manager
The AI Models sub-section lets you manage the list of available Gemini models. Each bot (Support, Sales, Estimate, Email) can use a different model. Config entries use value_type (string, number, boolean, json, text_long) for parsing.
| Field | Description |
|---|---|
| Display Name | Friendly name in the dropdown (e.g. "Gemini 2.5 Flash"). |
| Model ID | Exact API identifier from Google AI Studio (e.g. gemini-2.5-flash). Incorrect IDs cause API errors when the bot runs. |
Models in use by any chatbot cannot be deleted. Switch all bots to another model first, then delete.
Support Tab
The Support tab configures the Support Chatbot and related ticket functionality.
General Settings
Key settings in this sub-section:
- Chat Enabled (boolean) — Master toggle to enable or disable the support chatbot.
- Welcome Message (text) — The first message customers see when they open the chat.
- Max Message Length (number) — Maximum characters per user message. Default: 2000.
AI Model
Select which Gemini model the support chatbot should use. Choose from the models defined in General → AI Models.
Prompts
The system prompt tells the AI how to behave. This is a large text area where you define the AI's personality, rules, and boundaries. For example, you might instruct it to always be professional, never make up information, and always suggest creating a ticket for complex issues.
AI Behavior
Configure how the AI responds to different situations:
- Web Search Enabled (boolean) — Whether the AI should search the web when the knowledge base has no answer.
- Self-Learning Enabled (boolean) — Whether web search results should be saved for admin review in the knowledge queue.
- Escalation Keywords (text/JSON) — Words or phrases that trigger the AI to suggest creating a support ticket. Example: "speak to someone," "not working," "emergency."
- Deflection Keywords (text/JSON) — Words that the AI should redirect (e.g., sales questions redirected to the sales chatbot).
Quick Actions
Configure the clickable chip buttons shown at the start of a support chat. This is a JSON array where each entry has:
id— A unique identifier (e.g., "alarm").label— The text shown on the chip (e.g., "Alarm System").icon— An optional icon name (e.g., "shield-alert").
Tickets
Configure ticket-related settings:
- Ticket Prefix (string) — The prefix for ticket reference numbers. Default: "TKT". The full format is
TKT-XXXXXX. - Ticket Email To (string) — The email address that receives ticket creation notifications.
Notifications
Configure how and where notifications are sent:
- Google Chat Notifications Enabled (boolean) — Toggle Google Chat notifications for ticket events.
- Google Chat Webhook URL (string) — The webhook URL for your Google Chat space. Ticket creation, assignment, and resolution events are sent here.
Technician
Configure the technician portal and technician list:
- Tech Entry Enabled (boolean) — Whether technicians can submit KB entries from the tech portal.
- Tech Tickets Enabled (boolean) — Whether technicians can view and create tickets.
- Technicians List (JSON) — A JSON array defining all technicians. Each entry has:
name— The technician's display name.email— The technician's email (for assignment notifications).pin— The 4-digit PIN used to log in to the tech portal.
[{"name": "Mike T", "email": "mike@example.com", "pin": "1234"}]
Sales Tab
General Settings
- Welcome Message (text) — The initial greeting for the sales chatbot.
- System Prompt (text) — Instructions for the sales AI persona.
- AI Model — Which Gemini model to use for the sales chatbot.
- Max Message Length (number) — Maximum characters per user message.
Prompts
The Sales Prompts Manager lets you create and manage prompt templates that provide the AI with knowledge about your business. These prompts are loaded with every sales conversation. Each prompt has:
- System — The system category (e.g., "alarm", "cctv").
- Type — The prompt type (e.g., "info", "pricing", "faq").
- Topic — The subject of the prompt.
- Content — The actual information/instructions.
Estimate Tab
The Estimate tab is the most complex settings section. It manages everything about how estimates are built — from the questions asked to the products included.
General & AI
- Welcome Message (text) — The initial estimate chatbot greeting.
- System Prompt (text) — Instructions for the estimate AI.
- AI Model — Which Gemini model to use.
- Estimate Prefix (string) — Prefix for estimate numbers. Default: "EST".
- Tax Rate (number) — HST rate applied to estimates. Default: 13%.
Categories
Manage the system categories for estimates (e.g., Alarm, CCTV, Access Control). See the Process Estimates → Categories section for detailed field documentation.
Products
Manage the product catalog with pricing. See the Process Estimates → Products section for detailed field documentation. Products can also be imported from QuickBooks Online.
Selectors
Configure which products appear in the quantity selector UI during the estimate chat. Each selector item links a product code to a display name and quantity constraints (min/max).
Chat Flow
Configure the flow steps and transitions that control the estimate chatbot's conversation. See Process Estimates → Chat Flow for detailed field documentation.
Rules
Configure the product rules that determine what gets added to estimates based on customer answers. See Process Estimates → Product Rules for detailed field documentation.
Notes
Manage conditional notes that appear on estimate documents. Each note has a category, section, condition, and the note text.
Knowledge Base
Manage estimate-specific knowledge base articles that the AI references during estimate conversations.
Integrations (QBO)
Connect to QuickBooks Online to sync estimates and products:
- Connect to QBO — Starts the OAuth flow to connect your QuickBooks account.
- Disconnect — Removes the QBO connection.
- Sync Products — Pull products from QBO into RFS Hub.
- Push Products — Push RFS Hub products to QBO.
- Import Products — Import products from QBO items.
- Sync Log — View a log of all QBO sync operations.
Email Tab
The Email tab configures the email monitoring system that automatically processes incoming Gmail messages.
System Controls
| Setting | Type | Description |
|---|---|---|
| Auto-Reply Enabled | Toggle | Master switch for all automatic email replies. When off, emails are classified but not replied to. |
| Sales Auto-Reply | Toggle | Enable/disable auto-replies for emails classified as sales inquiries. |
| Support Auto-Reply | Toggle | Enable/disable auto-replies for emails classified as support requests. |
| Max Replies Per Hour | Number | Rate limit for auto-replies to prevent spam. Default: 20. |
| Estimate Chatbot URL | Text | The URL of your estimate chatbot. Included in sales auto-replies so customers can get instant estimates. |
AI Model
Select which Gemini model to use for email classification and reply generation.
AI Prompts
Three prompts control how emails are processed:
| Prompt | Description |
|---|---|
| Classification Prompt | Instructions for classifying incoming emails as sales, support, spam, or other categories. The AI reads the email content and sender information to determine the type. |
| Sales Reply Prompt | Instructions for generating replies to sales inquiries. Supports the {chatbot_url} placeholder which is replaced with your estimate chatbot URL. |
| Support Reply Prompt | Instructions for generating replies to support requests. Supports the {ticket_number} placeholder when a ticket is created. |
Each prompt has a Reset to Default button to restore the original prompt text.
Filters
Configure email patterns that should be ignored (not auto-replied to). This prevents the system from replying to newsletters, automated emails, or no-reply addresses.
- Ignored Email Patterns — A list of email patterns to skip. Add patterns like
noreply@,newsletter@, or*@marketing.example.com. Use the input field to add new patterns and the "×" button to remove existing ones.
Voicemail Settings
| Setting | Type | Description |
|---|---|---|
| Voicemail Monitoring | Toggle | Enable processing of voicemail notification emails. When enabled, voicemail emails are transcribed and create callback tasks. Default: Off. |
| Google Chat Notifications | Toggle | Send Google Chat notifications when voicemails are received. Default: Off. |
| Callback Reminder (minutes) | Number | How many minutes after a voicemail before sending a reminder notification. Default: 30. |
| Voicemail Sender Pattern | Text | The sender name or pattern to identify voicemail emails. Default: "VoIP Server" |
| Extension Mapping | JSON | A JSON object mapping phone extensions to categories or names. Example: {"101": "Sales", "102": "Support"} |
| Transcription Prompt | Text | Instructions for the AI to transcribe and summarize voicemail content from the email body. |
Maintenance Tab
Database Reset
The Database Reset panel allows you to clear data from the system. This is useful for development and testing environments. Use with extreme caution in production.
Two reset modes are available:
- Reset ALL — Clears all resettable data from every table group at once.
- Selective Reset — Choose specific table groups to reset individually. Groups include tickets, estimates, knowledge base, email data, etc.
The panel shows the current row count for each table group so you can see how much data will be affected. Protected tables (like app_config,customers, est_categories) are never reset.
Some table groups have cascade rules — selecting one group may automatically select dependent groups. For example, resetting sessions also resets related messages.
To confirm a reset, type RESET in the confirmation field and clickConfirm Reset. After completion, results show how many rows were deleted from each table.
How the Config Editor Works
Many settings use the Config Editor component, which dynamically renders form controls based on the setting type:
| Value Type | Control | How to Use |
|---|---|---|
| string | Text input | Type the value. For AI model fields, a dropdown is shown instead. |
| number | Number input | Enter a numeric value. |
| boolean | Toggle switch | Click to toggle on/off. |
| text_long | Textarea | For multi-line text like prompts and descriptions. |
| json | Textarea | For JSON data. The editor validates that the JSON is valid before allowing save. Invalid JSON shows an error message. |
When you make changes, a save bar appears at the bottom of the screen showing how many fields have changed. Click Save Changes to persist all changes at once, or Discard to revert.