Client Management
or click ➕ Create Client.
Data Browser
Configure your webhook URL in Settings,
then click Refresh to load data.
Configuration
Webhooks & Security
All webhook endpoints, connection mode, and security settings for every module. Changes sync to each module automatically.
Every webhook URL, API key, and secret typed below is mirrored to your per-client Config sheet (column shown next to each field). Config wins over this browser's localStorage when both have a value — so settings travel with the client, not the device.
Connection mode and high-level system settings.
Choose how data sheets are displayed. Spreadsheet view gives you Excel-like resize, reorder, freeze, copy/paste, and keyboard navigation.
Core data webhook — all sheet reads/writes flow through here.
URL the connection-status pill probes every 45s. Set to your n8n health-check webhook (e.g. https://ttsnzai.tech/webhook/healthcheck). Leave empty to use the legacy fallback.
Sent as role in every webhook call. admin bypasses server-side field filtering; client_user receives data with hide_fields stripped. Will be replaced by per-user JWT once login is wired (see TODO).
Connects to the listener service so the dashboard updates the moment a row changes. Same shared secret for every client (will be replaced by per-user JWT once login is wired).
localStorage on this browser only — never sent anywhere except as a Bearer token to the Listener URL. Status: disconnected
Choose how you're alerted when new data arrives. Each channel is independent.
Webhook used by both the client ticket form and the admin response panel. Saved to localStorage.n8n_webhook so the embedded pages pick it up on every load.
Which view loads by default when opening Help & Support. Users can still switch on the page using the inline toggle.
dashboard_secret — you normally never touch this. Sent as the x-dashboard-secret header to authenticate the dashboard to the database. A value typed here is a per-client override saved to localStorage (keyed tts_dashboard_secret:<CLIENT_ID>) on this browser only — it does NOT leak to other clients. Use 📋 to copy the resolved secret.
Google Calendar Sync
How appointments are pushed to Google Calendar.
Security
Security fields have moved to Webhooks & Security.
Business Config
Your business hours, contact info, and holiday schedule. Changes save automatically.
Used in your sent emails.
Text shown on top of your Brand Colour in emails.
holidays_custom from your Config sheet on each inbound/outbound call and skips contact attempts on matching dates. Time slot mode lets you mark partial-day busy windows (e.g. 14:00–16:30) — add the same date multiple times to record several busy windows in one day.
💬 AI Chat Agent
Persona, knowledge & behaviour for the customer-facing chat agent.
🔔 Notifications & Reminders
Control reminders, channels, quiet hours, and the Today tab. Changes save with the Save bar below.
Click Refresh to load history.
📝 Blog
Automated blog publishing to WordPress.
0 9 * * 1 = every Monday at 9 am.📤 Email Sending (Amazon SES)
Outbound email engine for this client. Default = Gmail (agent's personal account, ~500/day cap). Switch to Amazon SES for uncapped, isolated, reputation-managed sending. Each switch below explains what it does, why it matters, and the ⚠ danger if set wrong.
Email Provider
Which engine sends this client's mail. Flipping this is a Config change (safe, reversible) — not a workflow edit.
Per-purpose sending — choose Gmail or SES for each
Each email type can use a different provider, per client. The Amazon SES details below only need filling for purposes set to SES.
Email Sending
Sending Domains
Verified domains your SES emails can be sent from. Add your TTS shared domains or verify a client's own domain.
Send-from addresses
Manage the email addresses your SES email can be sent from. Add as many as you need.
System notification sender — one address, ALL clients
Agent-facing system emails (campaign approval requests, cap warnings, reports, reminders) send FROM this address for every client. Stored per client but kept identical — the Apply button writes it to all clients at once.
Automation
Configure automated email replies and outbound call triggers for new leads.
Master switch. Off = enquiries are never auto-engaged (manual only).
On = log intended consent asks / engagements without sending. Recommended until live-tested.
Brand & UI Customization
Personalize the look, feel, and identity of your command center.
💡 What this controls: Brand Palette colours + logos are saved to Config and used by sent email campaigns + Campaign Composer preview. Theme Tuner (logo size, dashboard accent) changes the dashboard UI only. Not used by call scripts, social posts, or property listings.
Theme Tuner
Adjust component sizing globally. Changes preview live and persist across reloads. Use this to find the right values, then we can delete redundant per-page overrides.
Scales every --sp-* unit (4/8/12/16/20/24/32/40 px) at once.
Integrations
Connect your external services to enable calendar sync, email, and social features.
Checking…
Checking…
Connecting either grants both Drive + Gmail (one Google account).
Checking…
Connecting either grants both Drive + Gmail (one Google account).
Checking…
Checking…
Checking…
Connect TikTok, Instagram, LinkedIn, YouTube, Facebook, X, Threads, Pinterest & Bluesky for scheduling + publishing.
Calendar, Drive & Sheets
Sheet IDs and Drive folder that workflows read from this client's Config. Changes save automatically when you leave the field.
Theme
Pick a colour theme for your dashboard. Changes apply instantly.
Advanced Data Tools
Manage raw IDs, layout mappings, and system operations.
Legacy Page Styling
By default every page uses the unified global UI. Turn this ON to fall back to the original per-page styles (used as a safety net while migrating).
Date/Time Picker Columns
Pick which columns open a calendar picker when clicked. Stored locally in this browser.
Server Redundancy Control
Monitor both servers, auto-failover when one dies, manually switch between local dev and Hostiger production.
Dual-Server Setup
Server #1 (Hostiger) is production. Server #2 (Local PC) is your fast dev machine. Test locally, push to prod with one click.
Server Status ▶
🌐 Hostiger (Production)
💻 Local PC (Dev)
Drift Report ▶
Switch & Open ▶
🌐 Server #1 (Hostiger Production)
💻 Server #2 (Local PC Dev)
Docker Controls ▶
Workflow Diff & Compare ▶
| Workflow | Local updated | Hostiger updated | Local · Host nodes | Verdict |
|---|
Push: Local → Hostiger (deploy · destructive)▶
Pull: Hostiger → Local (backup data)▶
cd ~/n8n-server-2 && node sync-server.jsSync ALL clones n8n workflows AND business data (TTS_DATABASE + client_data).
Skips execution history. Brings down local n8n for ~30s during clone.
Auto-Failover ▶
Cloudflare API ▶
Activity Log 0▶
Data Protection & Recovery
If a client loses data, pick a saved point in time below and restore it. Every restore saves the current state first, so it is always reversible.
Client Health
| Client | Status | Sheets | Config cols | Last check | |
|---|---|---|---|---|---|
| Loading… | |||||
Restore client data?
Local Backup & Disaster Recovery
Three independent layers keep your data safe. Each one alone is a backup; together they're disaster-proof. Backups never load automatically — you choose when to restore.
⚙️ Advanced settings
🔐 What gets saved & what doesn't
token / key / password / secret / pw / api_ / oauth / credential.Today Tab
Choose which menus the Today briefing scans, and how it surfaces overdue / upcoming items.
Sources to scan
Tasks is always on — your rule, never miss anything.
Alerts & previews
Modules & Layout
Show or hide menus, sub-tabs and sheet columns for this client. Saved to Config.ui_layout. Empty = use the industry default.
📁 Apply an industry preset
Click an industry tile, then: Preview into form loads its layout into the tree below (tweak, then Save) — or Apply to this client writes the preset's layout and its default Config values to this client. If the client already has a custom layout, Apply shows it and asks first.
— none —
—
Campaign Composer Settings
Everyday customization for the email campaign module — agent profile, brand colour, email layout, schedule.
Email Confirmation
If you previously disabled the "Are you sure?" prompt before sending a campaign, you can turn it back on here.
Sending
Your Details
These fields are required by the email workflow. Missing or invalid values block sending. Changes save automatically as you edit.
When Emails Go Out
When the batch sender fires for approved campaigns. Times in your business timezone.
agent_notify_email (set under Webhooks → Escalation). Edit it there.Sending Limits
Caps that protect your sender reputation. Warmup gradually ramps your daily volume on a new email account.
Error Alerts
Where error/failure alerts go.
Content & Look
How Your Emails Look
These fields control how the logo, agent photo, header, font and signature appear in emails. Pick an email theme above and it fills all of these in for you — they'll show a 🎨 Part of theme tag. Want one different? Click Override on that field. Saved to the Config sheet.
AI Writing — advanced
Voice, Bio & AI Tuning
How the AI writes your emails — your bio, tone, language, persona and per-campaign-type instructions. Changes save automatically as you edit.
⚠️ Advanced — replace entire AI system prompt
Advanced
Engine-level settings. Leave these alone unless you know exactly what they do.
Social Media Settings
Everyday customization for the social media module — provider choice, page IDs, posting mode.
Social Publishing Profiles
Add the social profiles that can be selected when posting.
Enabled Platforms
Choose which platforms appear as options in the post composer.
Voice & Calls Settings
Everyday customization for the voice module — agent ID, voice, prompt, hours. API keys and webhook URLs stay in Webhooks & Security.
{{name}}, {{phone}}, {{agent}} placeholders.Calendar Preferences
Everyday calendar sync behaviour. Calendar ID, webhook URL, OAuth client ID and secret stay in Webhooks & Security.
Config.calendar_id column. No setup needed here.
Config.tts_email. n8n workflows read this per-client.
Calculators
The Calculators module has no everyday user-facing settings — only webhook endpoints, which live in 🔒 Webhooks & Security → Calculators.
Developer Mode
Diagnostics, payload inspection, and developer-only toggles. None of these affect production users.
Probe the configured webhook and force a full data refresh.
Show the JSON payload + target URL in a confirmation dialog before any webhook is actually sent. Useful when verifying new flows.
Override every module to use its webhook-test/... endpoint regardless of the per-module test toggle. Affects Dashboard, Social Media, Property, Voice — Campaign Composer has its own toggle in its settings tab.
Modules check this flag and emit extra logs (data load timings, deduplication stats, etc.). Default off.
Quick-access inspectors for runtime state and persisted data.
Floating panel showing all outbound webhook traffic in real time.
Maps & Address
Configure address autocomplete for lead and property forms.
Maps & Address
Activity
Today
Your day at a glance — pulled live from every menu, sorted by what matters most.
Ideas
Smart suggestions based on what's happening in your account. Accept to act on it, dismiss to hide.
Appraisal
| Address | Sold | Price | Land m² | Beds | Dist. |
|---|
Calculator
Documents Manager
Social Media Marketing
Developer Mode
Live n8n payload inspector, merge debug, and node references. Data syncs with the compose form in real time.
unified_media_order map.
🔗 Merge Caption node will receive and output.Blog Generator
Blog Generator
Blog Library
Live Preview
Blog Analytics
Webhook & Sheet Settings
Blog.json workflow. Sends:
{ client_id, action:"generate", row_id, primaryKeyword, keywords, cluster, intent, title }Returns 200
{ status:"ok", row_id, url, wordpress_post_id } on publish, or 403 { status:"rejected", reason } if Config.Blog ≠ YES.row_id, Blog Title, Cluster, Intent, Keywords, Summary, Primary Keyword, Completed, URL
Edit Blog
Revision History
Add Keyword Row
Email Marketing
Campaign Analytics
Campaigns
Campaigns)CampaignData
CampaignData)Queue
Queue)Tracking
Tracking)Unsubscribes
Unsubscribes)Qhistory
Qhistory)Property Listing Management
Cold Call
ColdCall)AI Receptionist
Receptionist)Email Enquiries
| First Name | Last Name | Preferred Name | Lead Type | Phone | Address | Enquiry Type | Call Status | Message | Date Contacted |
|---|
Website Enquiries
| First name | Last name | Preferred name | Lead type | Phone | Address | Enquiry type | Call status | Message | Date contacted | |
|---|---|---|---|---|---|---|---|---|---|---|
| No website enquiries yet — data auto-fills from the cold call module | ||||||||||
Social Media Enquiries
| First Name | Last Name | Preferred Name | Lead Type | Phone | Address | Enquiry Type | Call Status | Message | Date Contacted |
|---|
Referral Enquiries
| First Name | Last Name | Preferred Name | Lead Type | Phone | Address | Enquiry Type | Call Status | Referred By | Date Contacted |
|---|
Appointments
Appointment)Meta Manager
Tasks
Customer Support
Website Enquiries
| First Name | Last Name | Preferred Name | Lead Type | Enquiry Type | Call Status | Message | Phone | Address | Date Contacted |
|---|
Leads Qualified
Qualified buyer & seller leads from the AI receptionist. Pipeline by status · open a lead for the full qualification & load it into the calculators.
Leads Qualified
Qualified buyer & seller leads from the AI receptionist. Pipeline by status · open a lead for the full qualification & load it into the calculators.
Confirm Campaign Composer changes
These settings will be written to your Config sheet. Cancel to keep the changes pending without saving.
| Field | Current | New |
|---|
QUALIFIED & NURTURED LEADS
Manage buyer and seller leads by qualify status, urgency, and pipeline stage.
| Contact ID | First Name | Last Name | Phone | Decision Maker | Type | Timeframe | Urgency | Qualify Status | Enquiry Source | Initial Appointment | Email Consent | Another Agent | Profile Created | Agent Subscribed | Buying Purpose | Finance Approved | First Home | Lender / Bank | Property Type | Area of Choice | Budget Range | Bedrooms | Bathrooms | Extras | Notes for Agent | Stage in Pipeline | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No buyer leads yet. | ||||||||||||||||||||||||||||
NURTURED LEADS
Leads in nurture status — growing relationships toward qualification.
| Contact ID | First Name | Last Name | Phone | Decision Maker | Type | Timeframe | Urgency | Qualify Status | Enquiry Source | Initial Appointment | Email Consent | Another Agent | Profile Created | Agent Subscribed | Buying Purpose | Finance Approved | First Home | Lender / Bank | Property Type | Area of Choice | Budget Range | Bedrooms | Bathrooms | Extras | Notes for Agent | Stage in Pipeline | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No nurtured buyer leads. | ||||||||||||||||||||||||||||
Leads CRM
Ultimate Dashboard| No buyer leads yet. |
Lead Financials
Lead Properties
Add Property
Leads Analytics
Pipeline, qualification, budget & property insights — Leads · Financials · Properties.
Leads Over Time
New leads captured per period
Qualification Funnel
Captured → qualified → booked
Lead Sources
Where leads originate
Buyer vs Seller
Lead type split
Urgency Mix
How hot the pipeline is
Finance Readiness
From Lead Financials
Budget Distribution
Mid-budget across leads
Property Types
From linked Properties
Property Pipeline
Listing status mix
Revenue Analytics
Price Changes
Books
Pipeline Analytics
Stage funnel, urgency breakdown, conversion rates & source analysis.
Stage Funnel
Deals by pipeline stage
Urgency
Lead temperature mix
Conversion
New → settlement
Lead Sources
Where deals originate
Recent Leads
Latest 10 captured