How many chars of the AI reply to read aloud in voice mode. Default: 1500.
How many chars to read aloud during Live Screen sessions. Default: 2000.
Shown in the EOH Live floating popup. HTML allowed (e.g. <strong>bold</strong>). Leave blank for default.
🔍 Web Search & Image Search
Configure search APIs and manage the sites used for ERP knowledge search
Click the Search Stats tab to load
Search API Configuration
Configure search providers. Serper.dev is recommended — get a free key at serper.dev (2,500 free searches/month). Google CSE is the alternative.
Used for web search + image search in AI chat
💡 How image search works
When a user types "show me SAP FI screenshots" or "give me images of Workday dashboards", the AI detects the image intent and uses Serper.dev (or Google CSE) to find relevant images, then displays them inline in the chat. Without an API key, image search falls back to web scraping which may fail.
Search Sites
These domains are used when users search in AI chat. Enable/disable to control which sites are searched.
Loading…
Feature Flags
Enable or disable platform features globally
💬 Chat Limits
Control file uploads, message length, multi-file support, and how much document content the AI reads. Per-plan file size limits are set in Plan Settings.
📎 File Upload Limits
Global limits for file uploads. Per-plan file size is set in Plan Settings → max_file_mb. These are the system-wide ceilings.
System-wide max. Per-plan limits set in Plans. Range: 1–50 MB.
How many files a user can attach per message. Range: 1–10.
Extensions with dots, comma separated. Example: .pdf,.docx,.xlsx,.pptx,.png,.jpg,.jpeg,.csv,.txt,.md,.json,.xml
🤖 AI File Reading Limits
Control how much of an uploaded file the AI actually reads. Larger = more accurate but uses more tokens.
Characters of extracted text sent to AI per file. Default 40,000 (~30 pages). Range: 1,000–100,000.
How many follow-up messages keep file content in context. 0 = only first message. Default 3. Range: 0–20.
✏️ Message Limits
Control the text input box maximum length.
Max chars a user can type in the chat box. Default 8,000 (~2,000 words). Range: 500–50,000.
📋 Per-Plan File Limits (reference)
These are set in Plan Settings per plan. Shown here for reference only.
Loading...
ERP Systems & Products
Add, edit, reorder, or remove ERP vendors and their product lines shown in the frontend
ERP Vendors
Drag rows to reorder | Changes are saved to the database and reflected on the frontend immediately
#
Vendor Name
Products
Status
Actions
Loading...
Plans & Pricing
Configure subscription plans, limits, pricing, and all feature restrictions
Available variables: {{first_name}} {{full_name}} {{email}} {{plan}}
Automatic Limit Alert Emails
When a user hits a plan limit (queries, exports, voice, screen), automatically send them an email encouraging them to upgrade. Each user receives at most 1 alert per limit per 24 hours.
Disabled
AI
Query Limit
Sent when chat queries run out
Doc
Export Limit
Sent when file exports run out
Voice
Voice Limit
Sent when voice minutes run out
Screen
Live Screen Limit
Sent when screen minutes run out
Tip: Use the limit_reached template (pre-seeded) or create a custom one in the Templates tab. Available variables: {{first_name}}{{feature}}{{used}}{{limit}}{{plan}}{{upgrade_url}}
Plan Expiry Alarm Emails
Disabled
Automatically email users before their plan expires. Configure how many days in advance, which template to use, and the subject line.
days before expiry
Leave blank to use the default renewal reminder template
See which users will receive the next alarm, or send it immediately
User
Email
Plan
Expires
Days Left
How it works: A cron job runs daily at 8:00 AM UTC and emails users whose plan expires in exactly N days. Each user receives at most 1 alarm per 20 hours. Set up the Vercel cron in vercel.json: { "crons": [{ "path": "/api/admin/expiry-alarm/cron", "schedule": "0 8 * * *" }] }
—
Total Sent
—
Delivered
—
Failed
—
Today
From
To
Recipient
Subject
Type
Status
Sent
Loading logs...
📧 Email Preview
Subject:
🎉 Welcome Email
Sent automatically when a user verifies their email. Once per user, never repeated.
On email verify
📣 Marketing / Recurring Email
Periodic campaign email sent to users on a set interval (e.g. every 30 days).
Cron / interval
🔔 New Device / Login Alert
Sent when user logs in from a new device or unusual IP address.
On suspicious login
⬆️ Plan Upgrade Confirmation
Sent when admin upgrades a user plan, or user upgrades mid-cycle.
On plan upgrade
⏰ Plan Expiry Warning
Auto-sent 7 days and 1 day before plan expires. Encourages renewal.
Cron — daily
📊 Monthly Usage Summary
Sent on the 1st of each month showing previous month usage breakdown.
Cron — 1st of month
🚦 80% Quota Warning
Sent when user reaches 80% of any plan limit. Warns before they hit the wall.
On usage check
💳 Payment Successful
Sent immediately after a successful payment via Stripe.
On Stripe payment
❌ Payment Failed
Sent when a Stripe payment fails. Includes update payment method CTA.
On Stripe failure
🔄 Subscription Renewed
Sent when a subscription auto-renews successfully.
On Stripe renewal
👋 Subscription Cancelled
Sent when user cancels their subscription. Access continues until expiry.
On cancellation
⌛ Plan Expired
Sent when a plan expires and the user is moved to the Free plan.
On expiry (cron daily)
🎫 Ticket Submitted
Confirmation sent to user after they submit a support ticket.
On ticket create
💬 Admin Replied to Ticket
Sent to user when admin replies to their support ticket.
On admin reply
📱 Social Post Published
Notification to admin when a social media post is published successfully.
On post publish
Loading learning email templates…
Email Verification
View verification status, resend codes, and configure the verification SMTP sender.
—
Total Users
—
Verified ✅
—
Unverified
—
Email
—
Google
—
LinkedIn
Verification SMTP
6-digit codes sent from verification@erponlinehub.com
Trigger — show popup when EITHER condition is met first
Services shown in survey
Edit Rating
🔑 API Credentials
OAuth app credentials — stored securely in database
💼 LinkedIn
📺 Google / YouTube
📘 Facebook
ℹ️ Callback URLs to register in each platform:
LinkedIn: https://erp-ai-backend.vercel.app/social-connect/linkedin/callback
YouTube: https://erp-ai-backend.vercel.app/social-connect/youtube/callback
Facebook: https://erp-ai-backend.vercel.app/social-connect/facebook/callback
🔗 Platform Connections
Connect your accounts to enable direct publishing
💼
LinkedIn
Checking...
📺
YouTube
Checking...
Note: YouTube API supports video uploads only — text posts must be published manually.
📘
Facebook Page
Checking...
Posts to your Facebook Page (not personal profile).
📸
Instagram
Coming soon (needs Meta review)
📱 Social Media Content Studio
AI-generated posts for LinkedIn, Twitter/X, Facebook and Instagram
—
Total Posts
—
Drafts
—
Published
—
Ideas
Posts Library
Loading posts...
✨ AI Post Generator
✨ Generating...
Claude is writing your post
Edit Post
🧮 Token Usage Analytics
Track AI token consumption per user, feature, and date range.
—
Total Tokens
—
💬 Chat Tokens
—
📄 Export Tokens
—
🎤 Voice + Screen
📈 Daily Token Usage
Loading...
📊 Feature Breakdown
Loading...
👥 Per-User Token Usage
Loading...
📋 Recent Token Log
Loading...
Reports
Export and analyze platform data — users, plans, subscribers, payments, usage
Report Filters
Results
Select a report type and click Run Report
PM Mode — User Data
View and manage PM projects per user. Data is preserved even after plan expiry.
EOH PM Email Sending
Master on/off for ALL PM emails sent through EOH servers — task assignments, meeting invites, manual emails. Disable to pause all PM email delivery platform-wide.
User Custom Sender Email
Allow users to send PM emails from their own email address. Disable to force all emails through EOH servers (anti-spam).
Users with PM Projects
Loading...
Projects
PM Mode — Quota Limits
Control how much each PM user can create. Applied globally across all PM plans.
Quota Settings
Total projects a user can create
Tasks per project (excluding cancelled)
All email types combined per user per month
PM Email Settings
Configure dedicated SMTP credentials, sender identity and email signature for all PM mode emails.
Zoho SMTP Credentials
✅ Configured
Leave blank to fall back to the main email settings. Dedicated PM SMTP lets you send PM emails from a separate Zoho address (e.g. pm@erponlinehub.com).
This will also be used as the From address
Use a Zoho App Password, not your account password
Sender Identity
Shown as "From" name in emails
Defaults to SMTP username if blank
Email Signature
HTML is supported — keep it simple for email compatibility
Preview
No signature yet — fill in the fields above
PM Mode — All Sent Emails
Full log of every PM email sent platform-wide. Filter by status, type, user, project or date to diagnose delivery issues and monitor usage.
Loading...
PM Mode — Activity Logs
Full audit trail of every create, update and delete across all PM entities — projects, tasks, members, meetings, documents and emails.
Loading...
PM Mode — Reports & Analytics
Platform-wide PM usage, project statistics, top users and document breakdown.
Loading reports...
Projects by Status
ERP Systems Used
Document Types Generated
Top Users by Projects
App Settings
Control all frontend text, emails, URLs and billing options from one place
Loading settings...
Chat Logos
Upload images directly — stored in your Supabase database. Max 2MB per image. JPEG, PNG, WebP, GIF or SVG.
Click or drag image
Shown next to every AI message.
Click or drag image
Shown while AI is thinking. Use GIF for animation.
Click or drag image
Shown next to user messages (no profile photo).
Stripe Payments Required for subscriptions
Enter your Stripe keys here — no Vercel env vars needed. Stored securely in your database (admin-only).
Where to find your keys: Go to dashboard.stripe.com/apikeys → copy Publishable key & Secret key. Use test keys (pk_test_ / sk_test_) for development, live keys in production.
Site Banner
Show a full-screen overlay on the chat page — for maintenance, coming soon, or any announcement. Takes effect immediately for all users.
When On, all users see this overlay instead of the chat.
Live Preview
↑ Fill in the fields above to see preview
Technical Settings
AI limits, security, features and search configuration
Loading...
Account Lockout Settings
Auto-lock accounts after repeated failed login attempts. Protects against brute-force attacks from multiple IPs. Changes take effect within 60 seconds.
Wrong passwords before lock. Default: 10. Range: 3–50.
How long to lock. Default: 30 min. Range: 5–1440. Admin can unlock manually anytime.
Failed Login Alert Email
Automatically email the user when suspicious login activity is detected on their account.
Default: 5 attempts. Email is sent once per lockout cycle. Uses your Email Center SMTP settings.
CAPTCHA & Suspicious Login
Protect logins with CAPTCHA after repeated failures and alert users when they log in from a new location.
CAPTCHA (Cloudflare Turnstile)
Default: 3. Range: 1–20.
Get free keys at Cloudflare Turnstile. Also set TURNSTILE_SECRET_KEY in Vercel env vars.
Suspicious Login Notification
Emails user when they login from a new IP they've never used before.
How it works: Every successful login IP is stored in the database. When a user logs in from a new IP they've never used before, they receive an email alert with location details and a "Secure My Account" link. Uses your Email Center SMTP/Zoho settings.
👤 Guest Access Limit
Unauthenticated visitors are limited to N send attempts per day before being shown a "Create Free Account" modal. Tracked in localStorage by date — resets at midnight. No PII stored.
Default: 3. Set to 0 to require login on first attempt.
⚡ Per-IP Rate Limiting
Limits requests per IP address per time window. Values are read at Vercel cold start — changes propagate within ~5 minutes as functions restart.
Default: 30. Range: 5–300.
Default: 60000 (1 min). Range: 10s–5min.
📎 File Upload Limits
Controls max file size and which file types users can upload. Frontend validates before any network request — backend re-validates server-side for security. Both layers must agree.
Default: 10MB. Maximum: 50MB.
Comma-separated extensions with dot. Shown in upload hint.
🌐 ERP System Selection
Controls whether users must select a vendor and product before chatting. When optional, a "Skip" path lets users chat freely and vendor is auto-detected from their messages.
Default: Required. When optional, Start Chat is enabled immediately.
⏱ Session Inactivity Timeout
Automatically signs out idle users after a period of inactivity. A warning modal appears before logout with a "Stay signed in" button. Set timeout to 0 to disable.
Default: 720 min (12 hours). Set to 0 to disable auto-logout.
Default: 2 min. Range: 1–10 min.
💬 Welcome Prompt Chips
Quick-prompt chips shown on the welcome screen. Each chip has a short label and a full question sent when clicked.
Shown when a user starts a new chat. Use {name}, {vendor}, {product} tokens. Leave empty to use the built-in message.
Tokens: {name}{vendor}{product}
💬 Chat Input Textarea
Control the size and appearance of the chat input box shown to users.
Default: 24px (1 line)
Default: 160px (~6 lines)
Default: 14px
Default: 1.65
AI Output Limits
Control how many tokens (words) the AI generates for each feature. Higher = longer responses but slower and more expensive. Changes take effect within 60 seconds.
How detailed the live screen analysis is. 5000 ≈ 3,750 words. Default: 5000. Range: 500–8000.
More tokens = more detailed documents. 65000 ≈ 50,000 words. Default: 65000. Range: 8192–100000.
Default: 16 turns (~8 exchanges). Lower = faster & cheaper. Raise to 30+ for complex projects. First 2 messages always kept as context anchor.
Token guide:
512 = very short · 2048 = short · 4096 = medium · 8192 = standard · 16384 = long · 32768 = very long · 65000 = maximum
Upgrade Modal Text
Control the text shown on the upgrade/plans popup that users see.
Shown below the title. Use • as bullet separator.
👤 Guest Access Limit
Unauthenticated visitors are limited to N send attempts per day before being shown a "Create Free Account" modal. Tracked in localStorage by date — resets at midnight. No PII stored.
Default: 3. Set to 0 to require login on first attempt.
⚡ Per-IP Rate Limiting
Limits requests per IP address per time window. Values are read at Vercel cold start — changes propagate within ~5 minutes as functions restart.
Default: 30. Range: 5–300.
Default: 60000 (1 min). Range: 10s–5min.
📎 File Upload Limits
Controls max file size and which file types users can upload. Frontend validates before any network request — backend re-validates server-side for security. Both layers must agree.
Default: 10MB. Maximum: 50MB.
Comma-separated extensions with dot. Shown in upload hint.
Admin Users
Manage admin accounts — create, edit, change passwords and deactivate
All Admin Accounts
Loading admin users...
🗄️ Database Manager
Browse, edit, export and restore all 49 database tables
🔒 Full Database Backup
⬆ Restore from Backup
—
Tables
—
Page Rows
—
Page
—
Total Rows
Loading tables...
—
→
Select a table from the left
Export Table
Import / Restore Table
Rows are upserted — existing rows updated, new rows inserted
Edit Row
Connections
Manage database, deployment and source control credentials — stored securely in your database
Supabase Database
PostgreSQL database — URL, anon key and service key
⏳ Not tested
Loading...
⚠️ Changing these keys requires redeploying your Vercel project to take full effect. Current running instance will use the new values after the next cold start.
▲
Vercel Deployment
API token, team ID and project for deployment management
⏳ Not tested
Loading...
Create at vercel.com → Settings → Tokens
GitHub
Personal access token for repo access and deployments
⏳ Not tested
Loading...
Create at github.com → Settings → Developer Settings → Personal access tokens
Cache Settings
View and clear server-side caches. Useful after changing settings that don't take effect immediately.
Clear All Caches
Forces all server caches to reload from the database on next request.
Active Caches
Loading...
⏰ Cron Job Manager
Manage and monitor all scheduled background tasks
📡
External Pinger Required
Register these trigger URLs at cron-job.org (free) to run jobs automatically.
Each URL includes your CRON_SECRET for security.
Base trigger URL: https://erp-ai-backend.vercel.app/cron/trigger
—
Total Jobs
—
Enabled
—
Last Run OK
—
Total Errors
Scheduled Jobs
Loading...
Add Cron Job
Format: minute hour day month weekday · crontab.guru
Enabled
▶ Run Result
Quota Override
⚡ Leave any field blank to use the global default for that limit. Global defaults shown below each field.
Create Project
✏️ Edit Project
Task
Team Member
Meeting
Edit Document
Editing content will increment the version number automatically.