FAQ
Expand each item for a short explanation and a step-by-step how-to guide for that feature.
What is an AI support widget?
An AI support widget is a floating chat button on your website that lets visitors ask questions. The widget uses AI to answer instantly from your knowledge base. When the AI cannot help or the visitor asks for a person, the conversation becomes a ticket for your team with full context. OperatorOne is one example: one script tag, AI replies, and human handoff in one dashboard.
How does AI human handoff work?
When a visitor requests a human, or the AI hits an escalation trigger, or an agent takes over, the conversation is converted into a support ticket. The full thread—every message from the visitor and the AI—is preserved. Your team sees everything in one place and replies with full context. No starting from scratch, no broken threads.
Booking handovers – Calendly, Acuity, and more
Connect Calendly, Acuity Scheduling, Square Appointments, Microsoft Bookings, and other booking platforms. When a visitor asks to book, schedule a call, or make an appointment, the AI includes the right booking link in its reply. Add multiple integrations per site (e.g. sales calls, support demos). The AI directs visitors to the correct link so they can pick a time without leaving the chat.
How to use
2. Click Add booking integration. Select the widget site, enter a name (e.g. Sales calls, Demo booking), choose the platform (Calendly, Acuity, etc.), and paste your booking page URL.
3. Save. The AI is automatically instructed to include these links when visitors ask to book, schedule, or make an appointment.
4. Add more integrations as needed—each site can have multiple booking links for different purposes.
5. When a visitor says they want to book a call or schedule a meeting, the AI will include the appropriate link in its reply.
---
How to find your booking link for each platform:
• Calendly: Click your profile dropdown (top right) → My Link. Or go to Event Types and click the three dots on an event type → Copy link. Your link looks like calendly.com/yourusername or calendly.com/yourusername/event-type.
• Acuity: Go to Scheduling Page → Link. Find your General Scheduling Page link and click Copy. For a specific service, use the dropdown to select it, then Copy. Do not add "www." to the link.
• Square Appointments: Go to Square Dashboard → Appointments → Online Booking to find your shareable URL. Or in the Appointments app: More → Online Booking → Square Online website → Share.
• Microsoft Bookings: Sign in at microsoft365.com → Bookings. Open the booking page you want, then click the copy button next to the booking page heading to copy the link.
• Zoho Bookings: In your Zoho Bookings dashboard, go to Booking Pages. Each booking page has a unique URL you can copy and share.
• Fresha: Go to Online booking → Link builder. Create a link (e.g. Link to services) and click Create link, then copy. Your profile must be listed on the Fresha marketplace first.
• Custom / other: Paste the full URL of any booking or scheduling form page (e.g. from Typeform, Google Forms, or your own website).
Is OperatorOne GDPR compliant?
OperatorOne is designed to support GDPR-aware workflows. You control where data lives, retention, and access. You can export and delete customer data. Configure PII controls, use your own SMTP and hosting, and define retention policies. We do not sell or share your data with third parties for marketing. See our Security page for details.
Can I embed support on multiple sites?
Yes. OperatorOne supports multi-site helpdesk management. Each site has its own widget snippet (site key and allowed domains). You can run one widget per brand, client, or domain. The dashboard filters tickets by site. Plan limits on the number of sites apply depending on your subscription.
Is OperatorOne an Intercom alternative?
Yes. OperatorOne is a lightweight Intercom alternative focused on AI support and human handoff. No product tours or marketing automation—just an embedded support widget, tickets, knowledge base, and one dashboard. Pricing is based on conversations and sites, not per seat. See our Intercom comparison page for a full breakdown.
How do I add a CNAME to point my domain to OperatorOne?
You can use your own domain (e.g. support.yourcompany.com) for your support site instead of the default subdomain we assign. To do that, you add a CNAME record in your DNS that points your domain to your OperatorOne support URL (e.g. yoursubdomain.operatorone.co.uk). Once DNS has propagated, visitors can reach your support widget at your custom domain.
How to use
2. Log in to your domain’s DNS provider (e.g. your registrar, Cloudflare, GoDaddy, Namecheap). Find the DNS or DNS management section.
3. Add a new CNAME record:
• Name / Host: the subdomain you want to use (e.g. support if you want support.yourcompany.com, or leave blank for the root in some panels).
• Target / Points to / Value: your OperatorOne support hostname only, without https:// (e.g. yoursubdomain.operatorone.co.uk). Do not include a trailing dot unless your provider requires it.
• TTL: 300 or 3600 is fine; leave default if unsure.
4. Save the record. DNS can take from a few minutes up to 48 hours to propagate.
5. Once propagation is complete, open https://your-custom-domain.com (e.g. https://support.yourcompany.com) in a browser. You should see your OperatorOne support site. Add this custom domain in your OperatorOne account (signup step 2 or in your account settings) so we can associate it with your support instance.
If it doesn’t work: double-check the CNAME target is exactly your support hostname (no https://, no path). Ensure you didn’t create an A record by mistake; CNAME is required. Some root domains (e.g. yourcompany.com) don’t support CNAME; use a subdomain like support.yourcompany.com instead.
Embeddable widget
Add support to any website with a single script tag. The widget shows a floating button that opens a chat panel. Visitors can start a conversation without leaving your site. You control which domains can embed the widget (CORS) and can run multiple widget "sites" (e.g. one per brand).
How to use
2. Create or select a widget site and set its name, site key, and allowed domains (the exact domains that may load the widget, e.g. yoursite.com).
3. Copy the widget code snippet (one script tag with data-support-base and data-site-key).
4. Paste it into your website just before the closing </body> tag.
5. The floating button will appear on your site; visitors can click it to open the chat and start a conversation.
Conversations (tickets)
Every chat is a ticket with a status: open, pending, or closed. The admin dashboard lists all conversations with filters by status, widget site, department, and search. Agents see the full thread and can reply, change status, assign, and set priority or due dates.
How to use
2. Use the filters at the top: status (open/pending/closed), site, department, or search by email, name, or message text.
3. Click a row to open the ticket and see the full thread.
4. Type your reply in the message box and click Send. Use the status dropdown to set open, pending, or closed, and optionally set assignment, priority, due date, or department.
5. All messages (visitor, agent, and AI) appear in order in the thread.
Assignment & workload
Assign conversations to specific agents. Use quick views for "Unassigned", "Mine", "Past due", or "High priority" so nothing slips through. Past-due and due-soon are based on a configurable response-time or manual due date.
How to use
2. Open a ticket and use the "Assigned to" dropdown to assign it to an agent (or leave unassigned).
3. "Mine" shows only tickets assigned to you; "Unassigned" shows tickets no one has taken.
4. Set "Response time (hours)" in Admin → Settings so that tickets with no reply within that time appear as past due.
5. Optionally set a due date on individual tickets for SLA tracking.
Departments
Organise tickets by department (e.g. Sales, Technical). Filter the ticket list by department and assign conversations to a department when replying or editing the ticket.
How to use
2. Add departments (e.g. Sales, Technical Support) and save.
3. On the Tickets list, use the department filter to see only tickets in a given department.
4. When viewing a ticket, use the Department dropdown to assign or change the department for that conversation.
5. Departments help route work and report by area.
Priority & due dates
Set priority (low, medium, high) and an optional due date on each ticket. Combined with a configured "response time" in Settings, the dashboard highlights past-due and due-soon conversations so you can meet SLAs.
How to use
2. Set Priority to Low, Medium, or High.
3. Set Due date to a calendar date if the ticket has an SLA or deadline.
4. In Admin → Settings, set "Response time (hours)" so tickets with no first reply within that time are treated as past due.
5. Use the "Past due" and "High priority" views on the Tickets list to focus on urgent work.
AI reply suggestions
When replying to a ticket, the admin can request an AI-suggested reply. The suggestion is based on the conversation and your knowledge base, using an OpenAI-compatible API. You can edit the suggestion before sending.
How to use
2. Open a ticket and scroll to the reply box.
3. Click the "AI suggest" or "Suggest reply" button (if available in your admin UI).
4. Wait for the AI to generate a suggestion based on the thread and KB; it appears in the reply box or a preview area.
5. Edit the suggestion as needed, then send the reply as usual.
AI auto-reply
Optionally enable automatic AI replies to visitor messages. The AI uses your knowledge base and system prompt so common questions get instant answers. You can limit what the AI is allowed to ask (e.g. never ask for passwords) and use escalation triggers.
How to use
2. Add Knowledge base articles so the AI can use them in answers.
3. Turn on "AI auto-reply" (or "Auto-reply") in the AI Agent or Settings page.
4. Optionally set safety options (e.g. never ask for passwords) and escalation triggers so the AI hands off to a human when needed.
5. New visitor messages will receive an AI reply automatically; agents can still reply and take over the conversation.
AI Agent configuration
Configure the AI agent: system prompt, model choice, and safety options (e.g. never ask for sensitive data, PII rules). Optionally request custom fields from the visitor (customer ID, phone, account number, order ID). Test the connection from Settings.
How to use
2. Enter your OpenAI-compatible API base URL and API key, and choose a model (e.g. gpt-4o-mini).
3. Write the system prompt that defines the AI's role and tone.
4. Set safety options: e.g. never ask for sensitive data, PII rules, and escalation trigger phrases.
5. Optionally enable request fields (customer ID, phone, account number, order ID) so the widget can send them with messages. Use "Test AI connection" to verify the setup.
Knowledge base
Create articles that the AI uses for context and suggestions. Add entries from the Knowledge base admin page or from conversations. Entries are matched to the user's message so relevant help is included in AI replies and agent suggestions.
How to use
2. Add a new entry: give it a title and content (plain text or simple formatting). Save.
3. The AI and "suggest reply" feature use these entries: they search for relevant articles based on the visitor's message and include them in the context.
4. You can also add or link KB entries from a ticket (if your admin supports "add to KB" from a conversation).
5. Keep titles and content clear and up to date so the AI gives accurate answers.
File attachments
Visitors can attach files when sending a message in the widget; agents can attach files when replying in the admin. Attachments are stored securely and shown in the conversation thread.
How to use
2. In the admin: open a ticket and use the attachment option in or near the reply box to attach a file to your reply.
3. Attachments appear in the thread with the message; visitors and agents can download them.
4. File types and size limits depend on your server and support app configuration; check Admin → Settings or your host if uploads fail.
Email notifications
Notify admins when a new ticket is created and notify the visitor when an agent (or AI) replies. Use the built-in mail() or configure SMTP in Settings for reliable delivery.
How to use
2. Enable "Notify admins on new ticket" and/or "Notify visitor on reply" as needed.
3. For reliable delivery, configure SMTP: enable SMTP, then set host, port, encryption, username, password, and from address.
4. Save settings. New tickets will trigger admin notifications, and replies will trigger visitor notifications, using SMTP when configured or the server's mail() otherwise.
5. If emails don't arrive, check spam folders and SMTP credentials; some hosts require "Less secure app" or app passwords.
Multi-tenant widget sites
Run multiple widget "sites" (e.g. one per brand or domain), each with its own site key and allowed domains. CORS and rate limits are applied per site. Widget code is unique per site so you can embed different instances on different domains.
How to use
2. Create a new site: enter a name, a unique site key (e.g. brand-a), and allowed domains (e.g. branda.com, www.branda.com). Save.
3. Copy the widget code for that site (it will include the site key). Embed it only on the domains you listed.
4. Create another site for another brand or domain with a different site key and allowed domains.
5. Each site has its own conversations and its own rate limits; CORS ensures only your allowed domains can load the widget.
Admin users & access
Add staff accounts so multiple agents can log in. Some areas (e.g. AI Agent, Settings, Integration) can be restricted to admins. Each agent can have a profile and default avatar.
How to use
2. Add a user: enter email and password (or send an invite if your app supports it). Set role to Agent or Admin.
3. Admins can access AI Agent, Settings, Integration, and user management; agents typically see only Tickets, Knowledge base, and their profile.
4. Each user can log in and work on assigned tickets; use Admin → Profile (or Settings) to set name and avatar.
5. Remove or deactivate users when they leave so they can no longer access the admin.
Widget themes & branding
Choose a theme (Blue, Purple, Green, Teal, Orange, Red, Slate) for the widget. Upload a company logo and pick a default avatar for agents so the chat matches your brand.
How to use
2. Under "Widget appearance" or "Messenger theme", select a theme (Blue, Purple, Green, Teal, Orange, Red, Slate). Save.
3. Upload a company logo if the option is available (e.g. under "Company logo" or "Branding"); it may appear in the widget header or admin.
4. Choose a default avatar for agents so agent replies show a consistent image when no custom avatar is set.
5. The widget will reflect the new theme and branding on the next load; visitors may need to refresh the page.
Installable admin (PWA)
The support admin can be installed as a Progressive Web App on desktop or mobile. Agents get a dedicated app icon and can work offline with cached assets.
How to use
2. Look for an "Install" prompt in the address bar or browser menu (e.g. "Install Support Admin" or an install icon).
3. Click Install; the app is added to your home screen or applications.
4. Open the admin from the new icon for an app-like experience; some pages may work offline with cached content.
5. Updates are applied when you reload the app while online.
Control API (optional)
For central monitoring, enable the Control API with a secret key. A separate control site can call the status endpoint to get ticket counts, AI usage, user-agent stats, and limits (users/sites) without exposing your admin.
How to use
2. On the control/monitoring site, configure the support API URL (your support site base URL) and the same control_api_key.
3. The control site can call GET your-support-url/api/control_status.php with the key in the Authorization header (Bearer <key>) or X-API-Key.
4. The response includes ok, online, ticket counts, AI usage (24h and 7d), user-agent stats, and users/sites counts and limits.
5. Do not expose the control API key in the widget or to customers; use it only from a trusted server or admin tool.
Agent activity
See who's been active: sessions, IP, OS, location, and hours logged in over a chosen period. Helps with auditing and understanding support coverage.
How to use
2. Select a date range or period (e.g. last 7 days) and optionally filter by user.
3. View the list or chart of sessions: login time, IP address, device/OS, and location if available.
4. Use the data to see who was active when, and total hours or sessions per agent.
5. Helps with shift planning, auditing, and ensuring coverage during business hours.
Ticket notes & audit
Add internal notes to a ticket (visible only to staff) and view an audit log of changes (assignment, status, priority, due date) with who made the change and when.
How to use
2. Add a note: type your comment and save. Notes are visible only to staff, not to the visitor.
3. Use notes for handoff info, internal context, or follow-up reminders.
4. Open the "Audit" or "History" section (if available) to see a log of changes: who assigned the ticket, who changed status or priority or due date, and when.
5. Audit helps with accountability and debugging workflow issues.
Auto-close after AI
When AI auto-reply is enabled, you can automatically close conversations after the AI has replied and no follow-up is received within a set number of minutes. Reduces clutter for resolved queries.
How to use
2. In Admin → Settings, find "Auto-close after AI" or "Close conversation after AI reply".
3. Set the delay in minutes (e.g. 60): if the visitor does not send another message within that time after an AI reply, the conversation is automatically closed.
4. Save settings. New conversations that get an AI reply and no follow-up will close after the delay.
5. Visitors can still start a new conversation later; this only closes the current thread to keep the ticket list tidy.
Security & rate limiting
CSRF and XSS protections, CORS allowlists, and configurable rate limits on widget and API requests. Optional login rate limiting by IP. Passwords are hashed; config files are protected.
How to use
2. Rate limits: in Admin → Settings (or config), adjust rate limit level or per-site limits to avoid abuse while allowing normal traffic.
3. Login rate limiting: in includes/config.php set login_rate_limit to a number (e.g. 5) to limit failed login attempts per IP; helps prevent brute force.
4. Keep includes/config.php outside the web root or protected by .htaccess so the API key and secrets are not downloadable.
5. Use HTTPS in production; the app uses CSRF tokens and escaped output to reduce XSS and CSRF risks.