This is the complete documentation for OpsIQ. Use it to set up the product, run support, configure AI, manage your CRM, install the widget, connect sites, build connectors, call the REST API, receive webhooks, package marketplace apps, and operate self-hosted deployments. Every feature is covered with detailed examples so you can operate OpsIQ without contacting support.
Track sessions, countries, pages, leads, conversions and support intent in real time.
AI reply drafted
OpsIQ can help write ticket replies, chat answers, summaries and customer notices.
Webhook action ready
Connect approved platform actions to secure triggers with confirmation and audit history.
Start here
What OpsIQ does for your business
OpsIQ is a complete AI-first business operating platform. It replaces your analytics, live chat, helpdesk, CRM, SEO toolkit, integration middleware, and developer platform with a single unified admin where every tool shares the same customer context. Instead of stitching together 8-12 separate SaaS products, you install OpsIQ once and operate everything from one screen.
The platformOpsIQ is one platform with one shared customer context — every tool feeds, and is powered by, the same AI brain.
Everything OpsIQ does — in detail
Website analytics and visitor intelligence
Real-time visitor tracking
Every page load, click, scroll, and navigation event is captured in real time. See who is on your site right now, what pages they are viewing, how long they spend, and where they came from — all without third-party cookies.
Visitor log and sessions
Full history of every visitor with device, browser, operating system, country, city, referrer, UTM parameters, landing page, and identity resolution. Sessions group page views into journeys so you can see the entire path a visitor takes.
Session replay
Timeline-style playback of captured visitor sessions. See exactly what users did — mouse movements, clicks, scrolls, page transitions, and form interactions. Use it to diagnose UX issues, understand drop-off points, and verify conversion flows.
Live feed
A real-time stream of visitor activity as it happens. See page views, chat starts, form submissions, and intent signals updating every few seconds. Filter by country, device, or referrer to focus on specific traffic segments.
Top pages
Pages ranked by visits, engagement time, bounce rate, conversions, and support activity. Identify your highest-performing content and pages that need improvement.
Geo intelligence
Country, city, and region breakdowns with maps. Device and browser distribution, traffic source analysis, search engine referrer tracking, and market penetration insights.
Intent funnel
Track visitor intent signals — pricing page visits, repeated returns, documentation browsing patterns, and support interactions — to identify visitors who are likely to buy, churn, or need help.
A/B experiments
Run split tests on your website directly from OpsIQ. Create variants, set traffic allocation, define conversion goals, and measure statistical significance. No external testing tool needed.
JavaScript error tracking
Capture client-side JavaScript errors from your website automatically. See error messages, stack traces, affected browsers, frequency counts, and which pages trigger them. Debug frontend issues without separate error monitoring.
Events log
Every tracked event — page views, custom events, chat interactions, form submissions, purchases — in a searchable, filterable log with full metadata.
Sales and conversions
Track orders, revenue, refunds, subscription renewals, and attribute conversions to traffic sources, campaigns, and visitor journeys. Revenue dashboards with period comparison and trend analysis.
Leads
High-intent visitors identified by behavior patterns. Score leads based on page visits, time on site, return frequency, support interactions, and custom signals. Feed leads directly into the CRM pipeline.
Site Intelligence (SEO and content analysis)
Site crawls
Automated crawling of your entire website to discover pages, detect broken links, find missing meta tags, check image alt text, validate canonical URLs, and map your site structure. Schedule crawls to run daily, weekly, or on demand.
Technical SEO audit
Comprehensive technical analysis: page speed scores, mobile responsiveness, Core Web Vitals, SSL certificate status, redirect chains, duplicate content detection, crawl depth analysis, and structured data validation.
Content audit
Evaluate every page for content quality, word count, readability score, keyword density, heading structure, internal/external link ratio, and freshness. Identify thin content, duplicate pages, and content gaps.
AI-powered search
Semantic search across your entire site content. Ask natural language questions about your content and get AI-synthesized answers with source page references.
SERP rank tracking
Monitor your search engine rankings for target keywords across Google and other engines. Track position changes over time, compare against competitors, and see which pages rank for which terms.
Keyword research
Discover keyword opportunities based on your content, competitor analysis, and search volume data. Get suggestions for new content topics, long-tail variations, and content optimization targets.
Backlink analysis
Monitor your inbound link profile. See which sites link to you, track new and lost links, analyze anchor text distribution, and identify link-building opportunities.
Local SEO grid
For businesses with physical locations: visualize your local search visibility across a geographic grid. See how your rankings vary by location, distance from your business, and search intent.
Google Business Profile sync
Connect your Google Business Profile to OpsIQ. Sync reviews, posts, Q&A, photos, and business information. Manage your GBP listing from inside OpsIQ. Respond to reviews, publish posts, and monitor insights.
Scheduled reports
Automated SEO and analytics reports generated on your schedule (daily, weekly, monthly). Reports include ranking changes, traffic trends, technical issues found, and content performance. White-label output available for agencies.
AI-powered support
Customer AI chat
AI answers customer questions on your website 24/7 using your knowledge base, connected platform data (orders, accounts, subscriptions), and custom training prompts. Supports multiple AI providers: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), and Grok (xAI).
Admin AI assistant
An AI copilot inside your admin panel that helps you write ticket replies, draft customer communications, analyze support trends, look up customer data across connected platforms, and execute actions through the connector system.
AI knowledge grounding
The AI is grounded in your knowledge base articles, FAQ entries, product documentation, and connected platform data. It does not hallucinate — it answers from your actual business information or escalates when uncertain.
Auto-handoff to humans
When the AI cannot resolve a question, detects frustration, or the customer asks for a human, it automatically hands off to your team with full conversation context. Configurable decline/timeout auto-revert back to AI.
AI training prompts
Write separate instruction prompts for customer-facing AI and admin-facing AI. Control tone, boundaries, escalation rules, prohibited topics, and business-specific behavior. Per-workspace configuration supported.
AI history and audit
Every AI conversation is logged with full request/response details, token usage, cost tracking, provider used, and model version. Review conversations to identify training gaps and improve AI accuracy.
AI insights
Automated analysis of AI conversation patterns. See common questions, resolution rates, handoff frequency, customer satisfaction by topic, and areas where the AI needs better training.
Per-workspace AI config
Each connected site/workspace can use its own AI provider, model, temperature, token budget, and training prompts. A SaaS company can use Claude for the main product and GPT-4o for a secondary brand.
Managed AI and BYOK
Two AI modes: Managed AI (included in your plan, no API key needed) or Bring Your Own Key (use your own OpenAI/Anthropic/Google/xAI API key for full control over model selection and costs). Both are first-class — every feature works with either mode.
AI token budgets and cost controls
Set monthly token budgets, per-conversation limits, and low-balance alerts. Track spending per provider, per workspace, and per conversation. Prevent runaway costs with hard ceilings.
Tickets and helpdesk
Native ticket system
Full helpdesk with departments, priorities (low/medium/high/urgent), statuses, SLA tracking, internal notes, customer replies, file attachments, and threaded conversations. No external helpdesk needed.
AI triage and auto-reply
AI automatically triages incoming tickets by department and priority. Enable auto-reply for safe departments — the AI drafts and sends a response after a configurable delay (default: 2 minutes) so humans can intervene first.
Email ingestion
Connect a mailbox (Gmail, IMAP, or provider-specific) to automatically create tickets from inbound emails. Replies to ticket notification emails update the ticket thread.
Ticket portal embed
Embed a customer-facing ticket portal on your website. Customers can submit tickets, view their history, reply to open tickets, and check status — all branded to your design.
Ticket merging
Merge duplicate tickets into a single thread. Merged tickets show [Merged] on the subject line. All conversation history is preserved in the surviving ticket.
Return to AI
After a human agent takes over a ticket, use "Return to AI" to let the AI resume auto-reply on that ticket. Useful when the human-required portion is resolved but the customer has follow-up questions the AI can handle.
Inbox copilot
AI-assisted ticket management from the inbox view. The copilot suggests replies, summarizes conversation history, recommends priority/department assignments, and can execute actions on connected platforms.
Chat and real-time support
Chat inbox
Real-time customer chat managed from a unified inbox. See all active conversations, customer identity, conversation history, and AI suggestions. Multiple agents can collaborate on a conversation.
Proactive chat rules
Trigger chat messages based on visitor behavior: time on page, specific URL visited, scroll depth, return visit count, exit intent, or custom events. Example: show a help message after 60 seconds on the pricing page.
Chat widget
A customizable chat widget embedded on your website. Supports AI chat, live agent chat, ticket submission, knowledge base search, and visitor identity. Responsive, accessible, and brandable.
CSAT surveys
Collect customer satisfaction ratings after chat and ticket interactions. Design surveys with your own questions, rating scales, and follow-up prompts. Results feed into team performance and AI insights.
Writing AI
Separate AI writing assistant for composing email drafts, ticket replies, announcements, and customer communications. Uses its own prompt (not the chat brain) for professional business writing.
AI-First CRM
CRM Command Center
A single screen showing your entire CRM state: pipeline value, deal velocity, upcoming tasks, at-risk deals, agent activity, and AI recommendations. The CRM home page is your daily starting point.
Contacts and companies
Manage customer contacts with full profiles: name, email, phone, company, tags, lifecycle stage, conversation history, ticket history, purchase history, and custom fields. Link contacts to companies for B2B relationship management.
Deals and pipeline board
Visual Kanban-style deal board with customizable stages. Drag deals between stages, set values, assign owners, track close dates, and see pipeline value at each stage. Multiple pipelines supported.
AI deal coaching
The AI analyzes each deal and provides coaching: risk signals (gone quiet, competitor mentioned, budget concerns), next-best-action recommendations, win probability, and suggested follow-up timing.
Forecast and reports
Revenue forecasting based on pipeline data, historical close rates, and deal velocity. Reports include pipeline by stage, by owner, by source, conversion rates, average deal size, and sales cycle length.
Prospecting agent (SDR)
AI-powered prospecting that identifies potential customers from your visitor data, lead signals, and connected platform activity. Suggests outreach targets, drafts initial messages, and scores lead quality.
Follow-up sequences
Automated multi-step follow-up sequences: email, wait, email, check response, escalate. Define sequences for new leads, stalled deals, post-purchase check-ins, and re-engagement campaigns.
Lifecycle and retention
Track customer lifecycle stages (lead, prospect, customer, churned) with automated transitions. The retention agent monitors for churn signals and suggests interventions.
Data steward agent
AI agent that continuously cleans and enriches your CRM data: deduplicates contacts, fills missing fields, validates emails, standardizes company names, and flags stale records.
Build my CRM
Natural language CRM configuration: tell the AI what your sales process looks like and it builds your pipeline stages, custom fields, deal templates, and automation rules.
CRM health check
Automated audit of your CRM data quality: duplicate contacts, deals without next steps, stale pipelines, missing contact information, and data completeness scoring.
Trust Dial
Three-level autonomy control for each CRM AI agent: Autopilot (AI acts independently), Copilot (AI suggests, human approves), and Manual (AI observes only). Set the dial per agent, per action type, and per deal value threshold.
Four AI agents
The CRM runs four specialized AI agents: Steward (data quality), SDR (prospecting), Retention (churn prevention), and Analyst (reporting and insights). Each agent has its own Trust Dial setting.
Connectors and integrations
Pre-built connectors
Ready-to-use connectors for Shopify, WooCommerce, BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, and Google Business Profile. Each connector brings platform-specific AI actions, knowledge, and data sync.
Connector Builder
Build custom connectors for any platform — no code, AI-assisted, or full code. The builder supports REST and GraphQL APIs, OAuth authorization code flow, webhook auto-registration with Stripe and simple signature schemes, pagination (offset, page, cursor, and link-header), list/error transforms, multi-action context, and marketplace packaging.
AI-assisted connector authoring
The ConnectorBuilderAI helps you build connectors: describe what you want and it suggests actions, writes request handlers, and maps API responses. Handles authentication, pagination, and error handling automatically.
OAuth flow for any connector
Generic in-app OAuth authorization flow that works with any connector. PKCE support, site-scoped state management, automatic token refresh. Connectors define their OAuth parameters and OpsIQ handles the flow.
Capability buses (platform-wide extension)
Connectors don't just add platform actions — they can power core features through capability "buses". A connector declares a capability (calendar, enrichment, esign in CRM; local_listing, rank_data in Site Intelligence; web_analytics in Analytics; payment_provider in Payments; email_sync in Mailbox; video_meeting in Comms) and implements its small method set; OpsIQ discovers it via CapabilityRegistry and wires it into the UI, the Customer 360 timeline, and the AI actions. Several connectors can offer the same capability with no lock-in. See connectors/PLATFORM_CONNECTORS.md.
Pre-installed vs marketplace tier
Connectors live in one of two tiers. Pre-installed connectors (connectors/) are registry-active out of the box — kept lean to just the keyless reference and the most-used provider per capability (e.g. Google Calendar, Gmail, Google Business Profile). Marketplace connectors (marketplace_connectors/) are discoverable but inert until installed — e.g. Microsoft 365 Calendar, Outlook, DocuSign, Stripe, GA4, SerpApi, Zoom. Every bridge surfaces a marketplace list so the UI and the AI can prompt "install from the marketplace" (notify-to-install) when a capability has no ready provider — never a broken button.
Connector marketplace
Publish your connectors to the OpsIQ marketplace. Package connectors with profile.json, knowledge.json, workflow_recipes.json, and signed archives. Marketplace supports free and paid connectors with multi-source billing.
Connector signing
All connectors are cryptographically signed for integrity verification. Signing is checked at install time. Use the resign_all_connectors tool to re-sign after updates.
SmartLookup
Declarative fuzzy-matching system for connector actions. Define lookup rules and OpsIQ matches user queries to platform entities using fuzzyScore and smartRank algorithms. Example: find_country("germ") matches Germany with 88.9% confidence.
Action contracts
Connectors declare actions with typed parameters, authentication requirements, pagination rules, and response transforms. Over 1,200 HTTP actions across all connectors, all executable through the unified ActionExecutor.
Connector recipes
Pre-built workflow recipes that combine multiple connector actions into common business workflows. Example: "When a new order comes in on Shopify, create a ticket, update the CRM, and send a Slack notification."
Knowledge sync
Connectors declare knowledge topics that sync to the AI knowledge base. Platform-specific help articles, setup guides, and troubleshooting steps are automatically available to the AI without manual knowledge entry.
Developer platform
REST API
Full API for visitors, events, tickets, contacts, settings, and connector operations. API key authentication, rate limiting, and JSON request/response format. OpenAPI specification available.
Webhooks
Outbound webhooks for all major events: orders, invoices, subscriptions, tickets, chats, leads, user registrations, and cart abandonment. Async delivery via job queue, exponential backoff retry, SSRF protection, and auto-disable after 15 consecutive failures.
Webhook signing
Every outbound webhook is signed with HMAC-SHA256. Verify signatures on your receiving end to ensure webhook authenticity. Stable event_id for idempotent processing.
Widget SDK
JavaScript SDK for the tracking widget with identity resolution, custom event tracking, programmatic chat control, and page-specific configuration. Install recipes for React, Vue, Next.js, WordPress, Shopify, and static HTML.
Plugins and SDKs
Server-side SDKs and plugins for common frameworks. WordPress plugin, WHMCS module, and generic PHP/Node.js integration libraries.
Events API
Push custom events into OpsIQ from your backend: purchases, signups, feature usage, errors, or any business event. Events appear in the visitor timeline and feed into analytics and AI context.
Triggers cookbook
Build automated workflows triggered by events: new ticket, chat started, visitor identified, deal stage changed, or custom event. Triggers execute connector actions, send webhooks, update records, or notify your team.
API builder
Visual API and webhook builder inside the admin. Configure endpoints, test requests, inspect responses, and debug integrations without leaving OpsIQ.
Team and administration
Role-based access control
Three roles: Owner (full access, billing, danger zone), Full Admin (all operations except billing and danger zone), and Agent (only assigned departments, no settings access). All sensitive pages are hard-gated by role.
Team performance dashboard
Owner and Full Admin-only dashboard showing resolution times, workload distribution, handle depth, channel breakdown, trend analysis, SLA compliance, CSAT by agent, reopen rates, team rollups, and busiest hours. Updated in real time.
Admin presence and online tracking
Real-time who-is-online widget in the admin navigation. Heartbeat-based presence detection (60-second ping, 300-second extend, auto-prune after 120 days). See which admins are currently active and on which pages.
Per-workspace settings
Each connected site (workspace) can have its own AI configuration, connector settings, ticket departments, branding, and operational rules. Global defaults cascade to workspaces that do not override them.
Multi-site management
Manage multiple websites from one OpsIQ admin. Each site has its own tracking snippet, visitor data, and configuration. Switch between sites from the admin navigation.
Email template system
Registry-driven email templates for all automated communications: ticket notifications, chat transcripts, welcome emails, password resets, and system alerts. Edit HTML templates with live preview, variable chips ({{customer_name}}, {{ticket_id}}), and global layout control.
Import and export
Import contacts, tickets, and knowledge articles from CSV/JSON. Export visitor data, analytics reports, and CRM records. Data portability for migration between systems.
Security, compliance, and operations
Enterprise SSO
OIDC (OpenID Connect) single sign-on with full runtime: discovery, authorize, callback, JWKS signature verification, userinfo, domain allow-listing, JIT provisioning, and status guards. SAML configuration support.
GDPR and data compliance
Built-in DSAR (Data Subject Access Request) handling: export and delete customer data across all systems. Contact-level data erasure covering sessions, tickets, chats, CRM records, and email logs. Consent management and retention policies.
IP blocking and brute-force protection
Block specific IPs or ranges from accessing your site or admin. Automatic lockout after configurable failed login attempts. Failed login log with IP, timestamp, and user agent.
HSTS and security headers
HTTP Strict Transport Security, Permissions-Policy headers, and secure cookie configuration. Self-hosted deployments can add CSP headers through server configuration.
Outbound webhook hardening
SSRF guard blocks webhooks to private/metadata IP ranges. Async delivery prevents slow endpoints from blocking your application. Auto-disable after 15 consecutive failures prevents resource waste on dead endpoints.
Workspace isolation
Strict data isolation between workspaces. Visitors, tickets, chats, CRM records, and AI conversations are scoped to their workspace. Cross-workspace data leaks are prevented at the query layer.
Billing cycle management
Support for monthly, quarterly, semi-annual, yearly, biennial, and lifetime billing cycles. Currency normalization for multi-currency gateways. FX conversion on payment receipt for accurate revenue reporting.
Cron and scheduled automation
Built-in cron system for scheduled tasks: report generation, data cleanup, subscription renewals, AI training updates, connector syncs, and webhook retries. Health diagnostics with warning indicators.
Data retention policies
Configure how long visitor sessions, chat transcripts, AI conversation history, and event logs are retained. Automatic cleanup of aged data to manage storage and comply with retention policies.
Diagnostics and health
System health dashboard showing cron status, database connectivity, AI provider status, connector health, webhook delivery rates, and storage usage. Warnings for configuration issues and performance bottlenecks.
Who OpsIQ is for
E-commerce stores
Stores
Track every visitor from landing to purchase. Let AI answer "Where is my order?" using live Shopify/WooCommerce/BigCommerce data. Manage support tickets with AI auto-reply. Run a deal pipeline for wholesale and B2B leads. Attribute revenue to traffic sources and campaigns. Monitor cart abandonment with recovery workflows.
SaaS and software companies
SaaS
Monitor trial signups and feature adoption with session replay. Track which documentation pages convert. Automate support with AI grounded in your API docs. Manage subscription revenue and expansion deals in the CRM. Connect your billing platform (Stripe, WHMCS) for real-time MRR tracking. Use the CRM lifecycle agent to detect and prevent churn.
Agencies and freelancers
Agency
Offer white-label analytics and support portals to clients. Track leads across multiple client sites from one admin. Use the CRM pipeline to manage prospects and project leads. Build custom connectors for client platforms using the Connector Builder. Generate branded SEO reports with Site Intelligence. Resell marketplace connectors as value-add services.
Hosting and infrastructure
Hosting
Deep WHMCS integration with 80+ AI actions for order lookup, service management, DNS, and provisioning. Auto-reply to common hosting questions using knowledge base articles. Track server status page engagement. Manage technical support tickets with AI triage. Use the billing cycle ladder for monthly through lifetime hosting plans.
Support-heavy businesses
Support
Deflect 40-70% of repetitive questions with AI chat grounded in your knowledge base. Route tickets to the right department with AI triage. Track team performance with resolution times, SLA compliance, and CSAT by agent. Use the writing AI for professional reply drafting. Monitor support trends with AI insights.
Marketing and SEO teams
Marketing
Full Site Intelligence suite: crawls, technical SEO audits, content analysis, SERP rank tracking, keyword research, backlink monitoring, and local SEO grid. Google Business Profile management. Scheduled white-label reports for clients. A/B testing built into the tracking widget. Campaign attribution across all channels.
Solo founders and small teams
Startups
Start with just tracking and chat — free to add. Then add tickets when you get support volume. Turn on the CRM when you start selling. Connect platforms as you adopt them. OpsIQ scales from one person doing everything to a 50-person operations team with RBAC, departments, and per-agent performance tracking.
Enterprise and multi-brand
Enterprise
Enterprise SSO with OIDC for centralized authentication. Multi-workspace isolation for separate brands or divisions. Per-workspace AI configuration with different providers and models. Custom connector development with marketplace distribution. Audit trails, GDPR compliance tools, and data retention policies.
What OpsIQ replaces
Google Analytics + Hotjar + Plausible
Full website analytics with visitor tracking, session replay, page rankings, geo intelligence, intent funnels, conversion attribution, events, A/B experiments, and JS error tracking — all privacy-friendly, all in one platform.
Intercom + Drift + Tidio
AI-powered customer chat with knowledge grounding, multi-provider AI support, auto-handoff to humans, proactive chat rules, conversation history, CSAT surveys, and ticket creation from chat.
Zendesk + Freshdesk + Help Scout
Native ticket system with departments, priorities, SLA, AI triage, auto-reply with configurable delay, email ingestion, ticket embed, ticket merging, inbox copilot, and Return to AI capability.
HubSpot + Pipedrive + Salesforce
AI-first CRM with four specialized AI agents (Steward, SDR, Retention, Analyst), Trust Dial autonomy control, pipeline board, deal coaching, forecasting, sequences, lifecycle management, and natural language CRM configuration.
Ahrefs + SEMrush + Moz
Site Intelligence with automated crawls, technical SEO audits, content analysis, AI search, SERP rank tracking, keyword research, backlink analysis, local SEO grid, and scheduled white-label reports.
Zapier + Make + custom middleware
Connector SDK with 25+ pre-built connectors, Connector Builder (no-code/AI-assisted/full-code), OAuth flow, webhook auto-registration, 1,200+ executable actions, SmartLookup, marketplace, and signed packages.
Google Business Profile manager
Full GBP connector: review management, post publishing, Q&A management, photo uploads, business info sync, insights tracking, and AI-powered review responses — all from inside OpsIQ.
Separate email template tools
Registry-driven email templates with visual editor, live preview, variable chips, global layout control, and per-event customization for all automated communications.
Team management dashboards
Built-in team performance: resolution times, workload, SLA compliance, CSAT by agent, reopen rates, busiest hours, real-time presence tracking, and per-department breakdowns.
GDPR compliance tools
Native DSAR handling, data erasure across all systems, consent management, retention policies, and audit trails — built into the platform, not bolted on.
Two editions
Cloud edition
Hosted by OpsIQ. Sign up, connect your website, and start using immediately. Updates, infrastructure, managed AI, and backups are handled for you. Ideal for teams that want zero server management.
Self-hosted module
Install OpsIQ on your own server for full control over data, branding, updates, and integrations. Requires PHP 8.1+, MySQL 5.7+, HTTPS, and cron. Supports WHMCS integration as an addon module. Full data sovereignty.
Recommended reading order
1
Quick start
Follow the 30-minute setup guide to get tracking, chat, and basic AI working on your website.
2
Dashboard and analytics
Learn how to read your visitor data, set up session replay, identify leads, and understand traffic patterns.
3
Site Intelligence
Run your first SEO crawl, check your technical health, and set up SERP rank tracking for your target keywords.
4
Tickets and support
Set up departments, configure auto-reply with AI, connect email ingestion, and train your AI to handle common questions.
5
CRM
Organize contacts, build your pipeline, configure the AI agents, set Trust Dial levels, and let AI coach your deals.
6
Connectors and developer tools
Connect your e-commerce/billing platform, build custom connectors, set up webhooks, and integrate via the REST API.
💡
New to OpsIQ? Start with the Quick Start guide below. You can have tracking and basic AI chat running in under 30 minutes.
Start here
Quick start in 30 minutes
Follow these steps in order to get OpsIQ running. Each step builds on the previous one. By the end, you will have visitor tracking, AI chat, and basic ticket support.
SetupThe 30-minute path: install the widget, connect a platform, train your AI, invite the team, then go live.
The 30-minute setup
1
Activate your license
Enter your license key in the OpsIQ admin. If you are on the cloud edition, this is done automatically when you sign up. Self-hosted users: go to Settings, enter your license key, and click Activate. You should see a green "Active" badge.
2
Set your business identity
Go to Settings and fill in your business name, industry, timezone, default currency, and support hours. This information is used by the AI when answering customer questions and by analytics for timezone-aware reports.
3
Choose an AI provider
Go to AI Configuration and select your provider. Options: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), or Grok (xAI). Enter your API key if using your own key, or use Managed AI if available on your plan. Click "Test connection" to verify.
4
Install the tracking widget
Go to Connected Sites, copy the tracking snippet, and paste it before the closing </body> tag on your website. Visit your site in a private browser, then check the Live Feed in OpsIQ — you should see yourself as a visitor within 15 seconds.
5
Connect your platform
If you use Shopify, WooCommerce, WHMCS, or another supported platform, go to Connectors, find your platform, enter credentials, and click Test Connection. This gives the AI access to order data, customer profiles, and support context.
6
Invite your team
Go to Team, click Invite, enter their email and role (Owner, Full Admin, or Agent). Agents can only access departments you assign them to. Owners and Full Admins see everything.
The fastest possible path (5 minutes)
Step 1: Install widget
Copy the snippet from Connected Sites and paste it on your website. This gives you tracking immediately.
Step 2: Enable AI
Go to AI Configuration, pick a provider, enter your key, and save. AI chat is now active on your website.
Done
You now have visitor tracking and AI chat. You can add tickets, CRM, and connectors later.
Day 2: Make it useful
Add knowledge
Go to Knowledge Base and add 5-10 articles about your most common questions. The AI uses these to answer customers accurately.
Create departments
Go to Tickets and create at least 2 departments (e.g., "Sales" and "Support"). Assign team members to each.
Write your AI prompt
Go to AI Training and write a Customer AI prompt that describes your business, tone, and escalation rules.
Test a conversation
Open your website in a private browser and chat with the AI as a customer. Check that answers are accurate and tone is right.
Week 1: Build your operations
Connect email
Set up a mailbox (Gmail, IMAP, or a provider connector) so customer emails automatically create tickets.
Set up auto-reply
Enable ticket auto-reply for safe departments. Set a 2-minute delay so humans can intervene first.
Review analytics
Check Dashboard daily. Look at visitor count, bounce rate, top pages, and sales if tracking is connected.
Start your CRM
Open AI CRM and let OpsIQ import contacts from your connected platforms. Review the pipeline board.
Month 1: Optimize
Review AI history
Check AI History weekly. Look for wrong answers, missed questions, and opportunities to add knowledge.
Add proactive rules
Create a rule: if a visitor is on the pricing page for 60+ seconds, show a chat message asking if they need help.
Build a connector
If you use a platform that does not have a built-in connector, use the Connector Builder to create one.
Set up webhooks
Connect OpsIQ to your internal tools using outbound webhooks for ticket, chat, and sales events.
Can I skip the AI and just use tracking?+
Yes. The AI provider is optional. OpsIQ works as a pure analytics and ticketing platform without AI. You can enable AI later when you are ready.
Can I skip connectors and add them later?+
Yes. Connectors enrich the AI with platform-specific data, but OpsIQ works without them. Start with tracking and chat, then connect platforms when needed.
What if I do not have a website yet?+
You can still use OpsIQ for tickets, CRM, and team collaboration. The tracking widget is optional. Add it when your website is ready.
How do I know if the widget is installed correctly?+
Visit your website in a private/incognito browser. Then check OpsIQ Live Feed. You should see your visit appear within 15 seconds. If not, check: (1) is the snippet pasted correctly, (2) is the site key correct, (3) are ad blockers or CSP headers blocking the script.
Start here
Complete product map
OpsIQ is not one feature. It is an operator admin, a website widget, an AI support layer, a ticket/helpdesk system, a full CRM with four AI agents, a Site Intelligence suite, a connector platform with marketplace, and a developer surface. Here is every component it contains.
Operator admin
Dashboard, live feed, visitor log, sessions, session replay, top pages, geo intelligence, intent funnel, events log, A/B experiments, JS error tracking, sales and conversions, leads, AI CRM (command center, contacts, companies, deals, pipeline board, deal coaching, forecast, prospecting, sequences, lifecycle, data steward, Build my CRM, CRM config, CRM health, CRM API), tickets, chat inbox, proactive rules, CSAT surveys, email drafts, mailboxes, AI configuration, AI training, AI history, AI insights, knowledge base, connectors, Connector Builder, marketplace, connected sites, team management, team performance, settings, diagnostics, and license.
Customer-facing surfaces
Website tracking widget (analytics beacon + chat + ticket embed + knowledge base search), client AI chat, ticket submission portal, visitor identity token handling, file uploads, CSAT survey widget, and customer-facing help center.
AI-First CRM
Command center, contacts, companies, deals, pipeline board with drag-and-drop, AI deal coaching (risk signals, next-best-action, win probability), revenue forecasting, prospecting agent (SDR), automated follow-up sequences, lifecycle and retention management, data steward agent (dedup, enrich, validate), Build my CRM (natural language setup), CRM configuration, CRM health check, Trust Dial (Autopilot/Copilot/Manual per agent), four specialized agents (Steward, SDR, Retention, Analyst), and CRM API with webhooks.
Site Intelligence suite
Automated site crawls, technical SEO audit (speed, mobile, Core Web Vitals, SSL, redirects, structured data), content audit (word count, readability, keyword density, heading structure), AI-powered semantic search, SERP rank tracking across engines, keyword research with opportunity scoring, backlink analysis and monitoring, local SEO grid visualization, Google Business Profile sync (reviews, posts, Q&A, photos, insights), scheduled reports (daily/weekly/monthly), and white-label PDF output for agencies.
AI and automation
Customer AI chat (multi-provider: Claude, GPT-4o, Gemini, Grok), admin AI assistant, AI knowledge grounding, auto-handoff with configurable revert, per-workspace AI configuration, managed AI and BYOK modes, token budgets and cost controls, AI history audit trail, AI insights analysis, ticket AI triage, ticket auto-reply with delay, writing AI (separate prompt), and admin inbox copilot.
Connectors and integrations
25+ pre-built connectors (Shopify, WooCommerce, BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, Google Business Profile), Connector Builder (no-code/AI-assisted/full-code), generic OAuth flow with PKCE, connector marketplace with paid distribution, connector signing and verification, SmartLookup fuzzy matching, 1,200+ executable HTTP actions, knowledge sync, and workflow recipes.
Developer platform
REST API (visitors, events, tickets, contacts, settings, connectors), OpenAPI spec, API key management, outbound webhooks (async, signed, retried, SSRF-guarded, auto-disable), Events API for custom event ingestion, widget SDK with identity resolution, triggers cookbook, action contracts, connector SDK, marketplace packaging, server-side SDKs (PHP, Node.js), WordPress plugin, and WHMCS module.
Settings and operations
Business identity, AI configuration per workspace, tracking settings, security (HSTS, Permissions-Policy, IP blocking, brute-force protection), RBAC (Owner/Full Admin/Agent), team management and invitations, team performance dashboard, admin presence tracking, email template system (registry-driven, visual editor, variable chips), survey designer, domain knowledge, ticket embed configuration, branding, data retention policies, billing cycle management (monthly through lifetime), currency normalization, import/export, diagnostics, cron automation, and danger zone.
Security and compliance
Enterprise SSO (OIDC with JWKS verification, JIT provisioning), SAML configuration, GDPR/DSAR handling (export and delete across all systems), data erasure per contact, consent management, workspace isolation (strict query-layer scoping), audit trails, failed login tracking, IP blocking, outbound webhook SSRF guard, and data retention policies.
Provider bridge
Managed AI proxied through OpsIQ provider URL, Site Intelligence provider calls, license validation, health reports, PDF rendering, and data exports — all routed through the configured provider endpoint, not direct vendor API calls from your server.
Every admin page
Dashboard
Core
Daily command center: traffic overview, live visitor count, sales summary, support queue depth, AI activity alerts, and quick-action shortcuts.
Live feed
Analytics
Real-time visitor stream: page views, chat starts, form submissions, and intent signals updating every few seconds with country, device, and referrer filters.
Visitor log
Analytics
Complete visit records: device, browser, OS, country, city, referrer, UTM params, landing page, identity, and full page-view history.
Sessions
Analytics
Journey-grouped view: page flow, time on page, scroll depth, conversion path, and exit page for each visitor session.
Session replay
Analytics
Timeline playback of captured events: mouse movement, clicks, scrolls, page transitions, and form interactions for UX diagnosis.
Top pages
Analytics
Page performance ranking: visits, engagement time, bounce rate, conversions, support interactions, and trend direction.
Geo intelligence
Analytics
Geographic reports: country/city breakdown with maps, device distribution, browser share, traffic sources, and market penetration.
Intent funnel
Analytics
Behavioral intent tracking: pricing visits, return frequency, doc browsing, support interactions, and custom signals with conversion probability.
Events log
Analytics
Searchable event history: page views, custom events, chats, purchases, form submissions with full metadata and filtering.
A/B experiments
Analytics
Split testing: create variants, allocate traffic, define goals, measure significance, and declare winners — all from inside OpsIQ.
Revenue dashboard: orders, renewals, refunds, attribution by source, campaign performance, period comparison, and trend analysis.
Leads
Sales
Lead management: scoring, source attribution, CRM status, contact details, behavioral signals, and pipeline routing.
AI CRM
CRM
Full CRM: command center, contacts, companies, deals, pipeline board, coaching, forecast, prospecting, sequences, lifecycle, data steward, and health.
Tickets
Support
Support inbox: departments, priorities, SLA tracking, AI triage, auto-reply, internal notes, file attachments, merging, and status management.
Chat inbox
Support
Live conversations: AI and human chat, handoff, collaboration, conversation history, customer identity, and CSAT collection.
Email drafts
Support
Email management: inbound mail to tickets, AI-assisted reply composition, template selection, and mailbox configuration.
AI config
AI
Provider setup: select Claude/GPT-4o/Gemini/Grok, enter API key or enable managed AI, set model, temperature, and token budgets per workspace.
AI training
AI
Prompt authoring: customer-facing and admin-facing prompts, escalation rules, tone guidelines, prohibited topics, and boundary configuration.
AI history
AI
Conversation audit: full request/response logs, token usage, cost per conversation, provider, model version, and resolution outcome.
AI insights
AI
Pattern analysis: common questions, resolution rates, handoff frequency, satisfaction by topic, and training gap identification.
Knowledge base
AI
AI training content: articles, FAQ entries, product docs, connector knowledge, and custom entries. Semantic and keyword search for AI grounding.
Connectors
Integrations
Integration hub: installed connectors, health status, action inventory, credential management, marketplace browser, and Connector Builder.
Connected sites
Settings
Site management: tracking snippet, site key, widget configuration, domain settings, and per-site workspace isolation.
Team
Settings
User management: invite members, assign roles (Owner/Full Admin/Agent), set department access, and manage permissions.
Team performance
Settings
Ops metrics: resolution times, workload, SLA compliance, CSAT by agent, reopen rates, busiest hours, and trend analysis.
Settings
Settings
Configuration: business identity, AI setup, tracking, security, branding, retention, email templates, billing, import/export, diagnostics, and danger zone.
License
Settings
Plan management: license status, plan features, usage metrics, renewal date, and upgrade/downgrade options.
Analytics
The Dashboard
The Dashboard is your daily command center. It shows traffic, sales, support load, AI activity, and conversion indicators in one view. Open it every morning to understand what happened overnight and what needs attention today.
DashboardThe real Overview screen: the OpsIQ Intelligence panel up top — pick an analysis and it writes it — above the KPI widgets you arrange yourself.
Dashboard cards explained
Live visitors
The number of people on your website right now. This updates every 15 seconds (configurable). A visitor is "active" if they loaded a page within the active threshold (default: 90 seconds).
Unique visitors
How many different people visited your website in the selected date range. OpsIQ identifies visitors by a combination of browser fingerprint, cookies, and (if available) authenticated identity.
New vs returning
New visitors are seeing your site for the first time. Returning visitors have been seen before. A high returning ratio means your content brings people back. A very low returning ratio might mean you are not retaining interest.
Bounce rate
The percentage of visitors who left after viewing only one page. A bounce rate above 70% on landing pages usually means the page is not meeting visitor expectations — wrong content, slow load, or poor mobile experience.
Average time on page
How long visitors spend on each page on average. Very short times (under 10 seconds) on content pages suggest the content is not engaging. Very long times on checkout pages might indicate confusion.
Threats blocked
IP addresses that OpsIQ identified as potentially malicious based on threat scoring, brute force attempts, or manual blocks. Click to see the blocked IPs list.
Sales today / this week / this month
Revenue from connected sales sources (Shopify, WooCommerce, Stripe, etc.). If sales show zero, check that your platform connector is connected and syncing.
Trend chart
A line graph showing visitor count over the selected date range. Look for patterns: traffic spikes (campaigns, press mentions), dips (weekends, holidays), and sustained trends.
Top sources
Where your visitors come from: direct, Google, social media, email campaigns, referral sites. Use this to understand which marketing channels are working.
Top browsers
Chrome, Safari, Firefox, Edge, and others. If a browser has unusually high bounce rate, you might have a CSS or JavaScript compatibility issue.
Hourly heatmap
A grid showing visitor activity by hour of day and day of week. Use this to decide when to schedule support shifts, when to send announcements, and when to run promotions.
Recent visitors
The last few visitors with country, page, device, and source. Useful for quick spot-checks during campaigns.
Using the date range filter
Click the date picker at the top right of the Dashboard. Presets: Today, Yesterday, Last 7 days, Last 30 days, This month, Last month, Custom range. All dashboard cards and charts update when you change the range. The date range is in your configured timezone (set in Settings).
Worked examples
Bounce rate spike investigation
Scenario:
Your bounce rate jumped from 45% to 78% this week. What happened?
What to do:
Check: (1) Did a specific landing page change? Go to Top Pages and sort by bounce rate. (2) Did a campaign send traffic to the wrong page? Check Top Sources for new referrers. (3) Did the site break on mobile? Check browser breakdown for mobile bounce rate. (4) Is it bot traffic? Check the Threats counter and visitor details for suspicious patterns.
Zero visitors on dashboard
Scenario:
The dashboard shows 0 live visitors even though your website is getting traffic.
What to do:
Check: (1) Is the tracking widget installed? View your website source code and search for the OpsIQ script. (2) Is the site key correct? Compare the data-site-key in the script with the key in Connected Sites. (3) Is a CDN or cache serving a stale page without the script? Clear your CDN cache. (4) Is an ad blocker or CSP header blocking the script? Check the browser console for blocked requests.
Reading the hourly heatmap
Scenario:
Your heatmap shows heavy activity between 10am-2pm on weekdays but nothing on weekends.
What to do:
This is a B2B traffic pattern. Your visitors are working professionals browsing during business hours. Implications: (1) Schedule support staff for weekday business hours. (2) Send email campaigns Tuesday-Thursday morning. (3) Weekend maintenance windows are safe. (4) Consider offering live chat only during peak hours.
Traffic spike from unknown source
Scenario:
You see a sudden spike of 500 visitors in one hour from an unknown referrer.
What to do:
Go to Visitors and filter by the time window. Check: (1) Are they real visitors or bots? Look at session duration, pages viewed, and browser diversity. (2) If real, what page are they landing on? (3) Check the referrer URL — someone might have linked to you from Reddit, Hacker News, or a popular blog. (4) If it is bot traffic, check Threats and consider blocking the IP range.
Why does my visitor count differ from Google Analytics?+
OpsIQ counts visitors differently. It uses browser fingerprinting and cookies, while GA uses a different cookie model. Bot filtering, ad blocker rates, and script loading order can also cause differences. A 10-20% variance is normal.
Can I embed the dashboard in another tool?+
The dashboard is designed for the OpsIQ admin. For external reporting, use the REST API to pull analytics data and display it in your own dashboard or BI tool.
What does the "threats" counter mean?+
It counts IP addresses that OpsIQ has flagged or blocked based on threat scoring, repeated failed logins, or manual blocks. Click the counter to see details and manage blocks.
Analytics
Visitor log
The Visitor Log shows every visit to your tracked websites. Each row is one page load from one visitor. Use it to investigate individual visitor behavior, find campaign traffic, and diagnose tracking issues.
Visitor logThe real Visitor Log: filter by date, search and device, then read every visit by IP/email, location, source, device and time — threats flagged in red.
What each row shows
IP address
The visitor's IP address. Anonymized if IP anonymization is enabled in Settings. Click to see all visits from this IP.
Country and city
Detected from the IP address using GeoIP data. Requires MaxMind GeoLite2 database or Cloudflare geo headers. Shows "Unknown" if GeoIP is not configured.
Page URL
The page the visitor loaded. Click to see the full URL. Long URLs are truncated in the table view.
Referrer
Where the visitor came from before landing on your site. "Direct" means no referrer (bookmarks, typed URLs, some app links).
Device and browser
The visitor's device type (desktop, mobile, tablet) and browser (Chrome, Safari, Firefox, etc.). Parsed from the User-Agent header.
Date and time
When the page was loaded, in your configured timezone.
Customer identity
If the visitor is identified (via identity token or login), their name or email appears. Otherwise shows as anonymous.
Filters
Date range
Filter visits to a specific time period. Default: last 7 days.
Search
Search by IP address, page URL, referrer, country, or customer email.
Source
Filter by traffic source: Direct, Organic, Social, Referral, Paid, Email.
Device
Filter by Desktop, Mobile, or Tablet.
New only
Show only first-time visitors who have never been seen before.
Worked examples
Find visitors from a specific campaign
Scenario:
You launched a Google Ads campaign with UTM parameter utm_source=google&utm_medium=cpc&utm_campaign=summer-sale. How do you find those visitors?
What to do:
In the Visitor Log, use the Search field and type "summer-sale". The search checks referrer URLs and page URLs, so UTM parameters will match. You can also filter by Source = Paid to narrow down further.
Find a customer who reported a problem
Scenario:
A customer emailed saying "your checkout page was broken yesterday around 3pm." How do you find their session?
What to do:
Search by their email address in the Visitor Log. If they were logged in, their identity will appear. Set the date range to yesterday. Look for visits to checkout pages around 3pm. Click their session to see the full page flow and any JavaScript errors.
Detect a loop hitter or scraper
Scenario:
You notice an IP address has 500+ visits in one hour, all to the same page.
What to do:
This is likely a bot, scraper, or broken script. Go to the Visitor Log and search by that IP. Check: (1) Are all visits to the same page? (2) Is the user agent a known bot? (3) Is the session duration always 0 seconds? If confirmed as a bot, go to Security and block the IP.
Visitor log vs Sessions vs Live feed
Visitor log
Raw page loads. One row per page view. Best for: investigating specific pages, finding traffic from specific sources, diagnosing tracking issues.
Sessions
Groups page views into journeys. One row per visit session. Best for: understanding user flow, measuring session duration, identifying conversion paths.
Live feed
Real-time activity. Shows visitors currently on your site. Best for: monitoring campaigns in progress, spotting high-intent visitors, watching support opportunities.
Why do I see my own visits in the log?+
OpsIQ tracks all visits by default. To exclude your own traffic, add your IP address to the excluded IPs list in Settings > Tracking.
Why does a visitor show "Unknown" country?+
GeoIP lookup requires either Cloudflare geo headers (automatic if using Cloudflare) or a MaxMind GeoLite2 database file. Check Settings > GeoIP Path to ensure the database file exists and is readable.
How long is visitor data kept?+
Visitor data is kept for the retention period configured in Settings (default: 90 days). After that, old records are automatically cleaned up by the cron retention job.
Analytics
Sessions
Sessions group multiple page views from the same person into a single journey. While the Visitor Log shows individual page loads, Sessions show you how people move through your website from landing to exit.
SessionsThe real Session Log: every visitor journey as a row — IP, country, device, source, duration and pages — with risky sessions flagged in red.
How sessions work
A session starts when a visitor loads their first page. It continues as they navigate to more pages. A session ends when the visitor is inactive for the session timeout period (default: 30 minutes) or closes their browser. The same person returning after the timeout creates a new session.
What each session shows
First page
The landing page — where the visitor entered your site. This tells you which content is attracting people.
Last page
The exit page — where the visitor left. If the exit page is often the pricing page, visitors might be comparing you with competitors.
Page count
How many pages the visitor viewed in this session. More pages usually means more engagement, but it can also mean the visitor is lost.
Duration
Total time from first page load to last activity. Sessions with 0 seconds are bounces (single page view, no further interaction).
Source
The traffic source for this session (Direct, Google, social, referral, etc.).
Country
Detected country from the visitor's IP address.
Bounce
Whether the visitor left after viewing only one page. Bounced sessions have a red indicator.
Conversion
Whether the visitor completed a tracked conversion event (purchase, signup, form submission) during this session.
Filters
Search
Search by IP, email, page URL, or referrer within sessions.
Type
Filter by New visitors (first session ever) or Returning visitors.
Source
Filter by traffic source.
Country
Filter by country to see sessions from a specific region.
Threats/Bounced
Filter to show only bounced sessions or sessions flagged as threats.
Worked examples
Profile a high-value customer
Scenario:
A customer just made a large purchase. You want to understand their journey before buying.
What to do:
Search for their email in Sessions. Look at all their sessions: (1) How many times did they visit before buying? (2) Which pages did they view? (3) Did they use chat or open a ticket? (4) What was the total time from first visit to purchase? This tells you the typical buying journey for high-value customers.
Detect login from a new location
Scenario:
A customer usually logs in from Nigeria but you see a session from Russia.
What to do:
Search for the customer email in Sessions. Compare the country of recent sessions. If a session suddenly appears from an unusual country, it could be legitimate travel or a compromised account. Check: (1) Was there a failed login attempt before the successful one? (2) Did the IP change within the same session? Flag it for review if suspicious.
What is the difference between a session and a visitor?+
A visitor is a person (or browser). A session is one visit from that person. The same visitor can have many sessions over time. Sessions expire after the timeout period.
How does OpsIQ identify returning visitors?+
OpsIQ uses a combination of cookies, browser fingerprinting, and authenticated identity tokens. If a visitor clears their cookies and is not logged in, they will appear as a new visitor.
Analytics
Live feed
The Live Feed shows visitors currently on your website in real time. It updates automatically every 15 seconds (configurable). Use it during campaigns, product launches, and busy support periods to see what is happening right now.
Live feedSee who is on your site this second and what they are doing — refreshing automatically every 15 seconds.
How it works
The Live Feed polls your server at the configured refresh interval. Each row shows a visitor currently on your site: their current page, country, device, source, session duration, and page count. Green highlights indicate new activity since the last refresh. Click any visitor row to see their full session details.
Settings
Refresh interval
How often the live feed updates. Default: 15 seconds. Lower values (5-10s) give faster updates but use more server resources. Higher values (30-60s) are easier on the server but less real-time.
Active threshold
How long a visitor is considered "active" after their last page load. Default: 90 seconds. If a visitor loads a page and then reads it for 2 minutes without clicking, they disappear from the live feed after the threshold.
Pause button
Click Pause to stop auto-refresh. Useful when you want to read details without the list updating. Click Resume to restart.
Worked examples
Spot a hot lead during a campaign
Scenario:
You are running a product launch. A visitor just viewed your homepage, then features, then pricing, and is now on the checkout page.
What to do:
This is high-intent behavior. In the Live Feed: (1) Click the visitor to see their session. (2) If they start a chat, the AI will have their full journey context. (3) If they leave without buying, they become a lead in the Leads page. (4) Consider creating a proactive rule to show a chat message when visitors reach checkout.
Too many visitors from the same IP
Scenario:
You see 20 visitors from the same IP address, all on different pages.
What to do:
This could be: (1) An office with shared internet — check if the visits look like real humans (different pages, reasonable session durations). (2) A bot or scraper — check if sessions are very short (0-1 seconds) or hitting pages systematically. (3) A load test — if you are running automated tests, exclude the IP from tracking.
Why does the live feed show 0 visitors when my site has traffic?+
Check: (1) Is the widget script installed on your site? (2) Is the site key correct? (3) Has the active threshold passed? (4) Are visitors using aggressive ad blockers that block the tracking script?
Can I filter the live feed by country or device?+
The live feed shows all active visitors. For filtered views, use the Visitor Log or Sessions pages with their filter options. The live feed is intentionally simple for real-time monitoring.
Analytics
Top pages
Top Pages shows which pages on your website get the most traffic. It ranks pages by visits, engagement, conversions, and support activity. Use it to identify your best content, find underperforming pages, and discover pages that generate support questions.
Top pagesYour pages ranked by traffic and engagement, so you can spot top content and pages that generate support.
What each page shows
Page URL
The full URL path. Similar pages (e.g., product variants) are grouped if grouping is enabled.
Views
Total number of times this page was loaded in the selected date range.
Unique visitors
How many different people viewed this page (a person viewing the same page twice counts as 1 unique).
Bounce rate
Percentage of visitors who left your site after viewing only this page. High bounce on landing pages = problem. High bounce on "thank you" pages = normal.
Average time
How long visitors spend on this page on average. Very short = not reading. Very long on a form page = confusion.
Chat starts
How many chat conversations were started from this page. High chat starts on a product page means the product description might be unclear.
Support tickets
How many support tickets were created by visitors who were on this page. High ticket count = potential UX or content problem.
Worked examples
Find pages that drive support questions
Scenario:
Your support team keeps getting questions about shipping. Which page is failing?
What to do:
Sort Top Pages by "Support tickets" or "Chat starts" descending. Look for product or shipping pages with high counts. The page with the most support questions probably has unclear information. Fix the page content and monitor whether support questions decrease.
Find pages with high exit rate
Scenario:
You want to know where people leave your site most often.
What to do:
Sort by bounce rate descending. Ignore pages that are naturally exit points (thank you pages, confirmation pages). Focus on pages that should keep visitors engaged: product pages, pricing, features. These need better calls-to-action or clearer content.
Why does a page show 0 views even though I know it gets traffic?+
Check: (1) Is the tracking widget installed on that specific page? Single-page apps might not fire page views on route changes. (2) Is the page excluded in tracking settings? (3) Is a CDN serving a cached version without the tracking script?
Analytics
Geo intelligence
Geo Intelligence shows where your visitors come from by country, city, device, and source. Use it to understand your geographic markets, decide on language support, plan regional marketing, and detect suspicious traffic patterns.
GeoWhere your visitors come from — by country, city and device — to size markets and spot unusual traffic.
What you see
Top countries bar chart
The top countries ranked by visitor count. Click a country to drill down to city-level data.
Country doughnut
Visual breakdown of traffic by country. Hover for percentages.
Full country table
Every country with visitors in the selected period, showing visitor count, session count, bounce rate, and conversion rate.
City drill-down
Click a country to see which cities within that country have the most visitors.
How GeoIP detection works
OpsIQ detects visitor location in two ways: (1) Cloudflare geo headers — if your site is behind Cloudflare, country detection is automatic and accurate. (2) MaxMind GeoLite2 database — download the free database and configure the path in Settings. City-level detection requires the GeoLite2-City database, not just the Country database.
VPN and proxy traffic
Visitors using VPNs will appear to come from the VPN server's location, not their real location. This is by design — OpsIQ cannot and should not try to bypass VPNs. If you see unusual country patterns, consider that 10-20% of visitors may be using VPNs.
Worked examples
Unexpected country traffic
Scenario:
You run a US-only business but 30% of traffic is from India.
What to do:
Check: (1) Are these real visitors? Look at session duration and pages viewed. Very short sessions with high bounce = likely bots. (2) Are they finding you through Google? Check the referrer. (3) Could they be potential customers in a new market? If the traffic is genuine and engaged, consider adding India-specific pricing or content.
Deciding on language support
Scenario:
You want to know if you should translate your site into Spanish.
What to do:
Look at the Geo Intelligence page. If Spanish-speaking countries (Spain, Mexico, Colombia, Argentina, etc.) together represent more than 10% of your traffic with low bounce rates, translation is worth considering. Also check: do visitors from these countries convert at similar rates to your primary market?
Regional support shift planning
Scenario:
You need to decide support team hours for different time zones.
What to do:
Use the hourly heatmap (on Dashboard) combined with Geo Intelligence. If 40% of your traffic is from Europe and 35% from the US, you need coverage for both time zones. The heatmap shows exactly when each region is most active.
Country with visits but no orders
Scenario:
Germany shows 500 visitors this month but zero sales.
What to do:
Investigate: (1) Are they bouncing on the pricing page? Maybe your pricing is not competitive for that market. (2) Do you ship to Germany? Check if your shipping page mentions Germany. (3) Is your checkout available in EUR? Currency mismatch causes abandoned checkouts. (4) Are these visitors from a single source that might be low-intent traffic?
Why does a visitor show "Unknown" country?+
GeoIP is not configured. Either set up Cloudflare (which adds geo headers automatically) or download the MaxMind GeoLite2 database and set the file path in Settings > GeoIP Path.
Can I block traffic from specific countries?+
OpsIQ does not block by country. Use your web server or Cloudflare firewall rules for country-based blocking. OpsIQ focuses on visibility, not access control at the network level.
Analytics
Intent funnel
The Intent Funnel classifies visitor sessions by what they seem to be trying to do: browse, research, compare, buy, get support, or leave. Use it to understand the balance of intent on your site and identify where visitors drop off.
Intent funnelSessions classified by intent — browse, research, compare, buy — so you can see exactly where people drop off.
Intent categories
Browsing
Visitors casually looking around. Short sessions, few pages, no specific goal detected.
Researching
Visitors reading product/feature pages, docs, or blog content. Longer time on page, multiple content pages.
Comparing
Visitors viewing pricing, plan comparison, or feature tables. Often returning visitors.
Buying
Visitors on checkout, cart, or signup pages. High intent — these are your conversion opportunities.
Support-seeking
Visitors on help pages, contact pages, or starting chat. They need assistance.
Bouncing
Visitors who left after one page. Low engagement.
How to read the funnel
Interpreting your funnel
Scenario:
1,000 visitors viewed Pricing. 270 opened chat. 92 started checkout. 64 paid. 18 opened support tickets.
What to do:
Pricing page is strong enough to create intent. Chat is important in the buying path — 27% of pricing visitors engage with chat before buying. Support tickets after checkout may indicate activation or payment confusion. Action: (1) Ensure AI chat answers pricing questions well. (2) Investigate the 18 post-checkout support tickets for common issues.
Time filters
Use the date range filter to compare intent patterns across periods. For example, compare Black Friday week to a normal week — you should see a spike in "Buying" intent and possibly "Support-seeking" if your promotions created confusion.
How does OpsIQ classify intent?+
OpsIQ looks at page URLs, session behavior, and time patterns. Pricing pages signal comparison intent. Checkout pages signal buying intent. Help/contact pages signal support intent. The classification is heuristic-based, not AI-driven.
Can I customize the intent categories?+
Not currently. The categories are built-in based on common web behavior patterns. Custom intent classification is on the roadmap.
Analytics
Session replay
Session Replay lets you watch a timeline of what a visitor did on your site: which elements they clicked, how they scrolled, where they hovered, and what they typed (with sensitive fields masked). Use it to diagnose UX problems, verify bug reports, and understand customer confusion.
Session replayReplay exactly what a visitor did — clicks, scrolls, typing (sensitive fields masked) — on a timeline scrubber.
Finding the right session
From the Sessions page, look for sessions with reported issues, high page counts with no conversion, or sessions from customers who filed support tickets. Click the replay icon to open the timeline view.
What replay shows
Timeline
A horizontal bar showing events over time. Click anywhere on the timeline to jump to that moment.
Page navigation
Each page load appears as a segment on the timeline. You can see the exact path the visitor took.
Clicks
Click events are shown as dots on the timeline and as highlights on the page reconstruction.
Scrolling
Scroll depth is tracked so you can see how far down the visitor read.
Form interaction
Field focus and typing events are recorded. Text input in password and sensitive fields is masked by default.
Privacy and masking
Session replay masks sensitive form fields by default. Password fields, credit card inputs, and fields marked with data-opsiq-mask are never recorded. You can configure additional masking rules in Settings > Tracking. If your compliance policy requires it, you can disable replay entirely.
Diagnosing a broken checkout
Scenario:
A customer says "I tried to buy but the button did nothing."
What to do:
Find their session in the Sessions page (search by email). Open the replay. Watch the checkout page segment. Look for: (1) Did they click the right button? (2) Did a JavaScript error occur? (Check the JS Errors page for that time.) (3) Did the page reload or show an error message? (4) Was a required field empty? The replay shows exactly what happened.
How much storage does session replay use?+
Replay data grows with traffic volume. Use retention settings to automatically clean up old replay data. For high-traffic sites, consider a shorter replay retention period (e.g., 30 days) to manage storage.
Can visitors opt out of replay?+
If "Respect Do Not Track" is enabled in Settings, visitors with DNT headers are not recorded. You can also exclude specific pages from replay in the tracking settings.
Analytics
Events log
The Events Log shows every event that OpsIQ has recorded: page views, clicks, chat starts, ticket creations, sales, and custom events. Use it to debug integrations, verify webhook delivery, and understand the sequence of actions.
Events logA timeline of everything OpsIQ records — pageviews, chats, sales, webhooks, custom events — for debugging and audit.
Built-in events (automatic)
pageview
Fired every time a tracked page loads. Includes URL, title, referrer, and timestamp.
chat.started
Fired when a visitor opens the chat widget and sends their first message.
chat.message
Fired for each message in a chat conversation (both visitor and AI/agent).
ticket.created
Fired when a new support ticket is created (from chat, email, widget, or admin).
ticket.replied
Fired when a reply is added to a ticket.
order.completed
Fired when a purchase is completed through a connected platform.
form.submitted
Fired when a tracked form is submitted (if form tracking is enabled).
identify
Fired when a visitor is identified via an identity token.
security.login_failed
Fired when a login attempt fails.
Custom events
You can send custom events from your website or server to OpsIQ. Custom events are useful for tracking actions specific to your business: button clicks, feature usage, video plays, downloads, etc.
JavaScript — custom event from browser
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
plan: "pro",
billing: "annual",
value: 99
}]);
Filter by specific event names: pageview, chat.started, ticket.created, etc.
Date range
Show events from a specific time period.
Search
Search event data by keyword (URL, email, event property values).
How long are events kept?+
Events follow the retention policy set in Settings. Default: 90 days. High-value events (purchases, security events) can be configured with longer retention.
Can I use events in A/B experiments?+
Yes. When creating an experiment, you choose a conversion event. Any built-in or custom event can be used as the conversion goal.
Analytics
A/B experiments
Experiments let you test two versions of a page or feature and measure which one performs better. OpsIQ tracks impressions, conversions, and statistical significance.
A/B experimentsRun two variants, watch conversions and statistical significance, and declare the winner.
How experiments work
1
Create an experiment
Give it a name, define your primary metric (conversion event), and set the variants (control and test).
2
Run it
OpsIQ randomly assigns visitors to variants and tracks their behavior. Do not change the experiment while it is running.
3
Read the results
After enough data is collected, check confidence level. 95% confidence means you can be 95% sure the difference is real, not random chance.
Experiment states
Draft
Created but not yet started. You can still edit variants and metrics.
Running
Actively assigning visitors to variants. Do not edit while running.
Completed
Reached statistical significance or was manually stopped. Results are final.
Archived
Results have been reviewed and the experiment is no longer needed in the active list.
Best practices
Define your metric before launch
Decide what you are measuring before starting. Choosing a metric after seeing results introduces bias.
Exclude internal traffic
Add your team's IP addresses to the exclusion list so staff visits do not skew results.
Run long enough
Do not stop an experiment after 100 visitors. You need hundreds or thousands of visitors per variant for reliable results.
Test one change at a time
If you change the headline AND the button color, you will not know which change caused the improvement.
Record your decision
After the experiment ends, note which variant won and why you chose to implement it.
How many visitors do I need for a valid experiment?+
It depends on the baseline conversion rate and the effect size you want to detect. As a rule of thumb: at least 500 visitors per variant for a 20% effect size. For smaller effects, you need thousands.
Can I run multiple experiments at the same time?+
Yes, but be careful. If two experiments affect the same page, their results may interact. It is safer to run experiments on different pages or features simultaneously.
Analytics
JavaScript errors
JavaScript Errors collects client-side errors from your website visitors. A broken button, a failed API call, or a missing resource shows up here. Use it to find and fix bugs that affect real customers.
JS errorsReal visitors hitting broken code surface here — message, source, browser and how often — so you can fix what matters.
What each error shows
Error message
The JavaScript error text (e.g., "TypeError: Cannot read properties of undefined").
Page URL
Which page the error occurred on.
Browser and device
Which browser and device type saw the error. Some errors are browser-specific.
Stack trace
The code location where the error occurred. Click to expand the full stack trace.
First seen
When this error first appeared.
Last seen
When this error most recently occurred.
Count
How many times this error has been recorded.
Affected sessions
How many different visitor sessions experienced this error.
Prioritizing errors
Not all JavaScript errors need immediate attention. Prioritize by: (1) errors on critical pages (checkout, signup, login), (2) errors with high session counts, (3) errors that appeared recently (possible regression from a code change), (4) errors on your own code (not third-party scripts).
Fixing a broken checkout button
Scenario:
The JS Errors page shows "TypeError: Cannot read properties of undefined (reading submit)" on /checkout, affecting 45 sessions this week.
What to do:
This means 45 real customers could not complete checkout. Steps: (1) Open the page in the same browser/device combination. (2) Open browser console and reproduce the error. (3) Check the stack trace to find the exact line of code. (4) Fix the bug, deploy, and monitor the error count going to zero.
Does OpsIQ capture errors from third-party scripts?+
Yes, OpsIQ captures all JavaScript errors on the page, including errors from analytics scripts, chat widgets, and ad scripts. Filter by URL in the stack trace to focus on your own code.
How do I exclude known harmless errors?+
You cannot suppress specific errors in OpsIQ, but you can filter the list by page URL or error message. Fix or ignore errors from browser extensions (they often show as errors from unknown sources).
Sales
Sales and conversions
Sales tracking connects your store or billing platform to OpsIQ so you can see revenue alongside visitor behavior. Every purchase is attributed to a visitor journey so you know which pages, campaigns, and channels drive revenue.
SalesThe real Sales screen — revenue up top, then Recent Purchases (date, customer, platform, amount), each attributed to its traffic source.
Sales dashboard
Today's sales
Revenue from orders completed today. Refreshes with each new order event from your connected platform.
This week / this month / total
Revenue aggregated over the period. Refunds are subtracted from these totals.
Trend chart
Line graph showing daily revenue over the selected date range. Look for spikes (promotions, campaigns) and dips (issues, seasonal).
Top converting sources
Which traffic sources lead to the most purchases. "Direct" buyers often bookmarked your site. "Google" buyers found you through search.
Recent purchases
The latest orders with customer email, amount, currency, and items purchased.
Platform setup guides
Shopify
Go to Connectors > Shopify. Create a custom app in your Shopify admin (Settings > Apps and sales channels > Develop apps). Grant scopes: read_orders, read_customers, read_products. Copy the Admin API access token. In OpsIQ, enter your store domain (e.g., your-store.myshopify.com) and the access token. Click Test Connection. If successful, enable webhook sync for real-time order notifications.
WooCommerce
Go to Connectors > WooCommerce. In your WordPress admin, go to WooCommerce > Settings > Advanced > REST API. Create a key with Read/Write permission. Copy the consumer key and consumer secret. In OpsIQ, enter your site URL, consumer key, and consumer secret. Click Test Connection.
BigCommerce
Go to Connectors > BigCommerce. In your BigCommerce admin, go to Advanced Settings > API Accounts. Create a V2/V3 API Account with read scope for Orders, Customers, and Products. Copy the access token, client ID, and API path. Enter them in OpsIQ and test.
Magento 2
Go to Connectors > Magento. In your Magento admin, go to System > Integrations. Create a new integration with API resource access to Sales, Customers, and Catalog. Activate the integration and copy the access token. Enter it in OpsIQ with your Magento base URL.
PrestaShop
Go to Connectors > PrestaShop. In your PrestaShop admin, go to Advanced Parameters > Webservice. Enable the webservice and create a new key. Grant access to orders, customers, and products. Copy the key and enter it in OpsIQ with your store URL.
OpenCart
Go to Connectors > OpenCart. Generate API credentials from your OpenCart admin panel. Enter the API URL, username, and key in OpsIQ. The connector uses OpenCart's REST API for order and customer data.
osCommerce
Go to Connectors > osCommerce. Configure database access or API credentials as documented in the connector settings. osCommerce integration typically requires direct database access or a custom API module.
Stripe
Go to Connectors > Stripe. Copy your Stripe restricted API key from the Stripe Dashboard (Developers > API keys). The key needs read access to Customers, Charges, Invoices, and Subscriptions. Enter it in OpsIQ. Configure webhook endpoint for real-time events.
Paystack
Go to Connectors > Paystack. Copy your Paystack secret key from the Paystack Dashboard. Enter it in OpsIQ. Configure webhook URL for transaction notifications.
Custom / other platforms
Use the REST API or webhooks to send sales events from any platform. Send order.completed events with customer email, amount, currency, and items. See the Events API section for the payload format.
Understanding your sales funnel
Top converting sources
Shows which channels bring paying customers. If Google brings 1000 visitors and 50 sales, that is a 5% conversion rate. If email brings 200 visitors and 30 sales, that is 15% — email is more effective per visitor.
Refunds
Refunded orders are tracked separately. They reduce your net revenue totals. If refund rates are high from a specific source, the traffic might be low quality.
Currency handling
OpsIQ stores the original transaction currency and amount. Multi-currency businesses see revenue in each currency. Normalized reporting uses the configured exchange rate.
Worked examples
100 visitors, zero sales
Scenario:
Your pricing page gets 100 visitors per day but zero conversions.
What to do:
Investigate: (1) Use Session Replay on pricing page visitors. Watch how they interact with the pricing table. (2) Check Top Pages for the pricing page bounce rate and time-on-page. (3) Check Chat conversations from pricing page visitors — what questions do they ask? (4) Compare your pricing page to competitors. (5) Try an A/B experiment with different pricing layouts.
Attribution for a marketing campaign
Scenario:
You sent an email campaign with UTM tags. How do you measure its revenue impact?
What to do:
Go to Sales and filter by source. Search for the campaign UTM parameter. You will see: (1) How many visitors came from the email. (2) How many converted to sales. (3) Total revenue attributed to the campaign. (4) Compare to the same period before the campaign.
Why does Sales show zero even though my store has orders?+
Check: (1) Is the platform connector connected and healthy? Go to Connectors and check the status. (2) Is webhook sync enabled? If using polling, is the cron job running? (3) Does the connector have the right API scopes? For Shopify, you need read_orders.
How does OpsIQ attribute a sale to a visitor?+
When an order comes in via the connector, OpsIQ matches the customer email to a known visitor. If the visitor was tracked before the purchase, the sale is attributed to their visitor journey, including the traffic source, landing page, and session history.
Can I manually add sales?+
You can send sales events via the REST API or webhooks from any system. The event format is documented in the Events API section.
Sales
Leads
Leads are visitors or customers who show buying or support intent. OpsIQ automatically detects leads based on behavior: pricing page visits, return visits, chat interactions, checkout starts, and high engagement. Use the Leads page to prioritize follow-up and feed your CRM pipeline.
LeadsThe real Leads screen — high-intent visitors as a searchable table (IP/email, location, device, source, time on site) with top sources and countries.
What makes a lead
Pricing page visits
Visitors who view your pricing or plans page are actively considering a purchase.
Return visits
Visitors who come back multiple times are engaged but not yet converted.
Chat interactions
Visitors who start a chat are actively seeking help — either pre-purchase or post-purchase.
Checkout starts
Visitors who reach the checkout page but do not complete the purchase.
Form submissions
Visitors who submit a contact form, demo request, or signup form.
High page engagement
Visitors who view many pages with long session duration are deeply researching.
Lead detail panel
Click any lead to see their full profile:
Identity
Name, email, company if known. Anonymous leads show IP and location.
Sessions
All sessions from this lead with page flow, duration, and source.
Pages viewed
Every page they visited, ordered by recency.
Source
How they found you: organic, paid, social, referral, direct.
Lead score
A 0-100 score based on behavior intensity, recency, and page intent.
CRM status
Whether this lead has been added to the CRM as a contact or deal.
Sales tip
AI-generated suggestion on what to do next (e.g., "Visited pricing 3 times — consider proactive outreach").
High-value lead badge
Leads with a score above 80 get a "High Value" badge. These are your hottest prospects. Prioritize them for outreach, proactive chat, or CRM pipeline entry.
Worked examples
Working a hot lead
Scenario:
A lead viewed your pricing page 3 times in 2 days, started a chat asking about enterprise plans, but has not purchased.
What to do:
This is a high-intent lead. Steps: (1) Check their lead detail for company and role information. (2) Review the chat transcript for specific needs and objections. (3) Create a deal in the CRM with the information gathered. (4) Assign a follow-up task for a sales team member. (5) If they return to the pricing page, the proactive chat rule can trigger a personalized message.
Converting anonymous leads to CRM contacts
Scenario:
You have 50 anonymous leads with high scores but no email addresses.
What to do:
Options: (1) Create a proactive rule that offers a discount or resource download in exchange for email on high-intent pages. (2) Use the chat widget to ask for email when anonymous visitors start a conversation. (3) Add an identity token to your login/signup pages so returning visitors are automatically identified.
How is the lead score calculated?+
The score considers: recency of visits (recent = higher), frequency of visits (more = higher), pages viewed (pricing/checkout = higher), session duration (longer = higher), chat interactions (engaged = higher), and return visits (multiple sessions = higher).
Can I customize lead scoring rules?+
Yes. In CRM Configuration, you can add lead-scoring rules that boost the score based on specific keywords, events, sources, or page patterns.
CRM
Your CRM — start here
OpsIQ ships a full AI-first CRM that captures customer truth, cleans data, scores leads, coaches deals, forecasts revenue, and acts — with website intelligence, support, tickets, products and payments as one live graph. Every AI action is sourced, explainable, reversible and approval-controlled.
AI CRMAn AI-first CRM run by four specialist agents — and a Trust Dial that decides how much they do on their own.
CRM pages overview
AI CRM (Command Center)
Start here
Your daily home screen: revenue pulse, what AI found, what it did, approval queue, next moves, agent health, and ROI.
Contacts
Core
People and companies in your CRM. Search, filter, score, and manage profiles.
Pipeline
Core
Visual deal board with drag-and-drop stages, win probability, and AI coaching.
Forecast and Reports
Core
Board-grade forecasting: committed, likely, best case, with confidence intervals and accuracy tracking.
Lifecycle
Core
Where every customer stands: active, at risk, expansion ready, renewal due, or churning.
Build my CRM
Config
Describe your CRM setup in plain English. OpsIQ generates a reversible plan and applies it on approval.
CRM Health
Ops
Self-check page: schema, agents, routes, AI actions, and live data counts.
How OpsIQ keeps you safe
Ask before acting
AI proposals go to the approval queue. You approve, edit, or reject each one. Nothing happens without your say.
Never overwrite
When AI suggests a change, it shows the current value and the proposed value. Human-entered data has provenance protection.
Everything is reversible
Every AI action is recorded in the journal. You can undo any change with one click.
Explainable
Every AI recommendation shows its reasoning and the data sources it used. No black box.
Brand new? Start here
1
Open AI CRM
Click AI CRM in the left navigation. The Command Center shows your current state.
2
Check CRM Health
Open CRM Health to verify the schema, agents, and routes are ready.
3
Import contacts
If a connector is active (Shopify, WHMCS, etc.), contacts are imported automatically. Otherwise, import via CSV or create manually.
4
Create a pipeline
Go to Pipeline and create your first pipeline with stages (e.g., Lead, Qualified, Proposal, Negotiation, Won, Lost).
5
Add your first deal
Create a deal from a contact, set the amount and stage, and let the Deal Coach guide you.
Do I need to use the CRM?+
No. The CRM is optional. OpsIQ works perfectly as a tracking + support + AI platform without the CRM. Enable it when you are ready to manage sales and customer relationships.
Can the CRM work without connectors?+
Yes. You can create contacts and deals manually. Connectors enrich the CRM with platform data (orders, subscriptions, tickets) but are not required.
What is the Trust Layer?+
The Trust Layer is the safety system that controls what the AI can do. Copilot mode (default): AI proposes, human approves. Autopilot mode (opt-in): AI acts automatically on low-risk, reversible operations.
CRM
The AI CRM home screen
The Command Center is your daily briefing. Open it every morning to see what happened, what needs attention, and what to do next.
Command CenterThe real Command Center: switch between Forecast, Win rate and Pipeline, and work the AI proposal queue — approve or dismiss the deals, stage moves and tasks it suggests.
What the Command Center shows
Today's numbers
Pipeline value, deals won/lost, new leads, active deals, and revenue trend — a snapshot of your current state.
What OpsIQ found
AI-discovered insights: stalled deals, at-risk accounts, new opportunities, data quality issues, and market signals.
What OpsIQ did
Actions the AI has taken (in Autopilot) or proposed (in Copilot): stage advances, score updates, contact enrichment, and task creation.
Needs approval
Queue of AI proposals waiting for your decision. Each shows the proposed action, reasoning, and evidence. Approve, edit, or reject.
Next moves
AI-ranked list of the 10 most important things to do today: follow up on a hot deal, check an at-risk account, research a new lead, etc.
Helper status
Health of AI agents: Capture, Data Steward, Deal Intelligence, Deal Coach, SDR, Retention. Green = running, amber = needs attention, red = error.
Results
ROI tracking: deals influenced by AI, time saved, accuracy of predictions, and comparison to manual CRM work.
Morning briefing workflow
1
Read today's numbers
Check pipeline health and revenue trend. Are you on track this month?
2
Clear the approval queue
Review each AI proposal. Approve safe actions, edit where needed, reject bad suggestions.
3
Check what OpsIQ found
Read AI insights. Are any deals at risk? Are there new opportunities?
4
Work the next moves list
Start with the top priority. The AI has ranked these by urgency and potential impact.
Catching up after time off
Scenario:
You were away for a week. What happened while you were gone?
What to do:
Open the Command Center and check: (1) "What OpsIQ did" shows all AI actions during your absence. (2) "Needs approval" shows proposals waiting for your review. (3) "What OpsIQ found" highlights urgent items. (4) Set the dashboard date range to your absence period to see the trend.
CRM
Contacts, companies and deals
The CRM organizes your business relationships into four objects: Contacts (people), Companies (organizations), Deals (revenue opportunities), and Tasks (follow-up actions).
CRM objectsFour core objects — contacts, companies, deals and tasks — linked into one connected customer graph.
Contacts
What is a contact
A person in your CRM. They might be a customer, a prospect, a partner, or a lead. Contacts have an email, name, company, tags, lifecycle stage, and hotness score.
Finding contacts
Use the search bar to find by name, email, company, or tags. Use filters: lifecycle stage, lead score, source, country, last activity date, assigned owner.
Contact profile
Click a contact to see their full profile: personal info, company, deals, activities, tickets, chats, website visits, lead score, and AI insights.
Hotness score
A 0-100 score calculated from behavior signals: website visits, email engagement, chat interactions, purchase history, and recency. Higher = hotter.
Companies
What is a company
An organization that one or more contacts belong to. Companies have a name, domain, industry, size, and health score.
Contact-company linking
Contacts are linked to companies by email domain or manual assignment. One company can have many contacts.
Deals
What is a deal
A revenue opportunity. Deals have a title, amount, pipeline, stage, win probability, close date, assigned owner, and associated contacts/company.
Win probability
A percentage chance of winning the deal. Set manually or calculated by AI based on your historical win data. Drives the weighted forecast.
Deal health
Green (healthy), amber (at risk), or red (stalled). Based on activity recency, stage duration, and engagement signals.
Tasks
What is a task
A follow-up action assigned to a person. Tasks have a title, due date, priority, type (call, email, meeting, other), and linked contact/deal.
AI-generated tasks
The AI creates tasks automatically when it detects something needs attention: follow up on a stalled deal, respond to an at-risk account, research a new lead.
Finding hot leads
Scenario:
You want to see all high-score contacts in the UK who have not been contacted recently.
What to do:
Go to Contacts. Filter by: Lead score > 80, Country = United Kingdom, Last activity > 7 days ago. Sort by lead score descending. These are your hottest neglected leads — prioritize outreach.
Creating a deal from a contact
Scenario:
A contact just expressed interest in your enterprise plan during a chat.
What to do:
Open the contact profile. Click "Create deal." Enter the deal title (e.g., "Acme Corp - Enterprise Plan"), amount, pipeline, and stage (e.g., "Qualified"). Set the close date and assign it to yourself. The Deal Coach will begin tracking this opportunity.
CRM
The pipeline (your deal board)
The Pipeline is a visual board where deals move through stages from left to right. Drag and drop cards to advance deals. Each card shows the deal amount, win probability, and health status.
PipelineThe real pipeline screen: live stats (open value, weighted forecast), an AI Approve queue for proposed deals, and the drag-and-drop board.
Using the pipeline board
1
View your deals
The pipeline shows all active deals as cards arranged in columns (stages). Each column header shows the total value of deals in that stage.
2
Drag to advance
Drag a card to the next stage. The win probability and counts update instantly. If the move fails (validation error), the card snaps back to its original position.
3
Check card badges
Green badge = healthy (recent activity, on track). Amber = at risk (slowing down, needs attention). Red = stalled (no activity for too long).
4
Click for details
Click a card to open the deal detail panel with contacts, activities, Deal Coach brief, and quick actions.
The approval queue
AI proposals appear in the approval queue at the top of the pipeline page. Each proposal shows what the AI wants to do, why, and the evidence. You can:
Approve
Accept the proposal as-is. The action runs through the Trust Layer and is recorded in the journal.
Edit
Modify the proposal before approving. For example, change the suggested stage or adjust the amount.
Reject
Decline the proposal. The AI learns from rejections to make better suggestions in the future.
Win probability explained
Win probability can be set manually or calculated by AI. When AI calculates it, it uses a model trained on your own closed deals (won and lost). If you don't have enough historical data, the AI uses the stage default probability. The probability drives the weighted forecast: a ₦12,000,000 deal at 30% probability contributes ₦3,600,000 to the "likely" forecast.
Moving a deal to Won
Scenario:
A customer signed the contract and paid.
What to do:
Drag the deal card to the "Won" stage. OpsIQ will: (1) Mark the deal as closed-won. (2) Update the forecast. (3) Add a "Won" activity to the timeline. (4) If configured, trigger a webhook event (crm.deal.won). (5) Update the contact lifecycle stage to "Customer."
Spotting stuck deals
Scenario:
You want to find deals that have been in the same stage for too long.
What to do:
Look for red (stalled) badges on the pipeline board. These deals have had no activity for longer than the configured rotting threshold (set in CRM Configuration > Pipelines). Click each stalled deal to see the Deal Coach's recommendation for reactivation.
Can I have multiple pipelines?+
Yes. Go to CRM Configuration > Pipelines to create additional pipelines. Common use cases: separate pipelines for new business vs. renewals, or for different products/services.
What happens when I drag a deal to "Lost"?+
The deal is marked as closed-lost. You will be asked for a loss reason. The deal is removed from the active board but can be found in the closed deals filter. The contact remains in the CRM.
CRM
Deal coaching
The Deal Coach analyzes each deal and gives you a brief with health status, risk signals, key people, a qualification checklist, meeting prep, and suggested next actions. Everything is sourced — the coach shows which ticket, chat, or activity each claim comes from.
Deal coachThe coach flags why a deal might slip — each signal cites its source — and hands you the next move to take.
What the coach tells you
Health explanation
Why the deal is healthy, at risk, or stalled. Specific signals: days in stage, last contact date, activity frequency, competitor mentions, objection patterns.
Signals
Categorized into: objections raised, competitor mentions, pricing discussions, support risk indicators, renewal/expansion signals. Each signal links to its source (chat transcript, ticket, email, activity).
Champion and blocker map
Who is helping the deal (champion) and who is resisting (blocker). Based on interaction analysis and contact roles.
Qualification checklist
MEDDICC or BANT checklist (configurable) showing which qualification criteria are met and which are missing. Grade: A, B, C, D, or F.
Meeting prep
Before a scheduled meeting, the coach generates a brief: agenda, key points to cover, questions to ask, risks to address, and materials to prepare.
Reply and call plans
Suggested next message or call script based on the current deal state and recent interactions.
Evidence timeline
Every claim the coach makes links to a source: a ticket number, chat transcript ID, activity date, or website visit.
How to use the coach
1
Read the brief
Open any deal and scroll to the Deal Coach section. Read the health status and key signals.
2
Close qualification gaps
Check the qualification checklist. If "Economic Buyer" is missing, plan to identify and engage the budget holder.
3
Act on suggestions
The coach suggests concrete next actions. Click to create a task, draft an email, or schedule a meeting — all routed through the approval queue.
Preparing for a big meeting
Scenario:
You have a meeting with a prospect tomorrow about a $50,000 deal.
What to do:
Open the deal and read the Meeting Prep section. It shows: (1) Key talking points based on recent interactions. (2) Objections they raised in chat last week. (3) Competitor they mentioned in a support ticket. (4) Questions to ask about their timeline. (5) Risk factors to address proactively. Use this brief to prepare a focused, evidence-based agenda.
Understanding why a deal is at risk
Scenario:
The pipeline shows a red badge on a deal you thought was going well.
What to do:
Click the deal and read the Deal Coach health explanation. It might say: "This deal has been in Proposal stage for 22 days (threshold: 14). Last contact was 11 days ago. The primary contact opened a support ticket about data migration concerns 5 days ago (ticket #T-892). Suggestion: address the migration concern and schedule a follow-up call." Now you know exactly what to fix.
CRM
Forecast and reports
Board-grade forecasting with a defensible range, deal-level change explanations, and accuracy tracking so you can prove and explain your numbers.
ForecastCommit, best-case and pipeline at a glance — AI-weighted by deal health, with accuracy tracked so you can defend it.
Forecast categories
Committed
Deals with 80% or higher win probability. These are your most likely wins. This should be your minimum expected revenue.
AI-weighted likely
All open deals weighted by their AI-calculated win probability. This is the most realistic prediction of what you will close.
Best case
All open deals at full value. This is the maximum possible revenue if everything goes perfectly (it rarely does).
Confidence interval
An 80% probability band showing the realistic range. Example: "You will likely close between ₦54,000,000 and ₦86,400,000 this quarter."
What changed and why
The forecast includes week-over-week change attribution. When your forecast drops by ₦18,000,000, the report explains exactly which deals caused the change: "Deal A slipped to next quarter (₦9,600,000), Deal B lost (₦6,000,000), Deal C reduced in value (₦2,400,000)."
Accuracy tracking
Forecast MAPE
Mean Absolute Percentage Error — how far off your forecasts have been historically. Lower is better. A MAPE of 15% means your forecasts are typically within 15% of actual results.
Win probability calibration
Brier score measuring how well win probabilities match actual outcomes. If deals at 70% probability actually win 70% of the time, calibration is good.
Weekly snapshots
OpsIQ captures a snapshot of your forecast each week (via cron). Over time, you can see how your forecast accuracy improves.
Rollups and warnings
Per-stage conversion
How many deals move from each stage to the next. If 80% pass from Qualified to Proposal but only 20% go from Proposal to Negotiation, your proposals might need work.
Per-source win rate
Which lead sources produce the most wins. Invest more in high-win-rate sources.
Per-owner performance
How each sales team member is performing: deals won, pipeline value, average deal size, win rate.
Your quarterly forecast dropped from $180,000 to $155,000 since last week.
What to do:
Open the Forecast page and check "What changed." The report shows: "Acme Corp deal (₦18,000,000) moved to Lost — competitor chosen. Beta Inc deal (₦9,600,000) close date pushed to next quarter. New deal with Gamma LLC (₦3,600,000) added this week." The net change is -₦24,000,000 + ₦3,600,000 = -₦20,400,000, explaining the drop from ₦216M to ₦195.6M (with the remaining ₦9.6M explained by probability adjustments on other deals).
CRM
Finding new business
The Prospecting Agent helps you find and research potential customers. Describe your ideal customer, add target companies, and let the AI research, score, and draft first-touch outreach.
ProspectingThe SDR agent finds target companies, scores them on fit, and drafts the first-touch outreach for your review.
One-time setup
1
Describe your ideal customer
Go to CRM Configuration > Prospecting. Describe your ideal customer profile (ICP): target industries, company sizes, job titles, geographic focus, product-match terms, and minimum fit score. Example: "B2B SaaS companies with 50-500 employees in the US/UK, selling developer tools, with a VP of Sales or Head of Growth as the primary contact."
2
Add target companies
Enter company domains or names you want to research. You can also let the AI suggest companies based on your ICP.
3
Review research results
The AI enriches each company with available data: size, industry, tech stack, recent news, and fit score with explanation.
4
Approve outreach
For good-fit companies, the AI drafts a personalized first-touch message. Review and approve in the queue.
Fit scoring
Each prospect gets a 0-100 fit score based on five factors:
ICP fit
How well the company matches your ideal customer profile (industry, size, location).
Urgency signals
Is there evidence they need your product now? Job postings, tech changes, complaints about competitors.
Budget proxy
Company size, funding stage, and revenue indicators suggest budget availability.
Product match
How relevant your product is to their business based on industry and technology.
Support fit
Whether you can effectively serve this customer (timezone, language, complexity).
Researching a target company
Scenario:
You want to evaluate whether acme.com is worth pursuing.
What to do:
Add acme.com to the prospecting list. The AI returns: Fit score 78/100 (good fit). Reasons: B2B SaaS, 120 employees, US-based, recently hired a VP of Sales (urgency signal), uses competitor X (product match). Buying signals: visited your pricing page twice last month (from website tracking). Best contact: [email protected] (VP of Sales). Drafted opener references their recent hiring and pricing page visits.
CRM
Automatic follow-up sequences
Sequences automate multi-step follow-up: a mix of email, wait, task, call, and webhook steps that run automatically after you approve the initial send.
SequencesAutomated multi-step follow-up — email, wait, email, task — that you approve first and a reply stops automatically.
How sequences work
1
Create a sequence
Define the steps: email, wait 3 days, email, wait 5 days, task (call if no reply), email. Each email step has a template you can customize.
2
Enroll contacts
Add contacts to the sequence. The AI may also propose enrollment from prospecting results.
3
Automatic execution
Steps run automatically on schedule. If a contact replies at any point, the sequence pauses automatically.
4
Track results
See open rates, reply rates, conversion rates, and unsubscribes per step. Use this to optimize your sequence.
Reply understanding
When a contact replies, the AI classifies the reply:
Positive
Interested, wants to talk. Sequence pauses, task created for follow-up.
Objection
Has concerns but not rejecting. Sequence pauses, task created with objection details.
Unsubscribe
Wants to stop receiving messages. Contact is suppressed permanently.
Not now
Interested but timing is wrong. Sequence pauses, snooze task created.
Wrong person
Not the right contact. Sequence stops, contact flagged for review.
Support
A support question, not a sales response. Sequence pauses, ticket created.
Anti-spam protections
Opt-out handling
Unsubscribe requests are honored immediately and the contact is suppressed from all future sequences.
Daily send cap
Workspace-level daily limit (default: 1,000 emails). Prevents mass sends that trigger spam filters.
Per-contact limit
Maximum 1 message per contact per day. Prevents overwhelming individual people.
Over-cap handling
Steps that exceed the daily cap are deferred to the next day. They are never dropped or skipped.
What happens if a contact opens a support ticket during a sequence?+
The sequence pauses automatically. Support takes priority over outreach. The sequence can be manually resumed after the support issue is resolved.
Can I A/B test sequence steps?+
Not directly within sequences, but you can create two sequences with different messaging and compare their results.
CRM
Keeping and growing customers
Lifecycle management helps you protect existing revenue. Each account gets a churn risk score, a health score, an expansion score, and a recommended success playbook.
LifecycleCustomers move through onboarding, active, at-risk and renewal — each scored for health and expansion with a playbook.
The lifecycle board
Stage map
Visual board showing where every account stands: Lead, Prospect, Opportunity, Customer, Expansion, Renewal, At Risk, Churned.
At-risk accounts
Accounts flagged with high churn risk. Each shows the top driver (support spike, inactivity, payment failure) and a recommended save play.
Expansion opportunities
Accounts that show signals of readiness to buy more: high usage, feature requests, plan inquiries.
Renewals due
Accounts with upcoming renewal dates. Sorted by risk level and revenue value.
How OpsIQ detects churn risk
Churn risk is calculated from multiple signals fused together:
For underutilizing accounts: offer training, share best practices, enable features they are not using.
Spotting churn before it happens
Scenario:
A customer who normally logs in daily has not logged in for 2 weeks, and they opened 3 support tickets this month.
What to do:
The Lifecycle board flags this account as "At Risk" with drivers: inactivity (14 days since last login) and support spike (3x normal ticket volume). Recommended play: proactive outreach call to understand what is happening. Is there a product issue? Are they evaluating competitors? Early intervention can save the account.
CRM
Keeping your data clean
The Data Steward agent automatically finds and fixes data quality issues: duplicates, missing fields, inconsistencies, and stale records.
Data stewardThe Steward agent keeps your CRM clean — finding duplicates, gaps, stale records and bad formats, fixing on approval.
The steward proposes merging: keep the record with more activity, merge the other record's deals and activities. Review the proposal, adjust the surviving display name if needed, and approve. Both records' history is preserved in the merged contact.
CRM
Build my CRM
Build My CRM lets you describe your CRM setup in plain English. OpsIQ generates a validated, reversible plan and applies it on approval. No coding, no manual configuration clicking.
Build my CRMDescribe your business in plain English; OpsIQ drafts the whole CRM — stages, fields, segments — and applies it on approval.
How it works
1
Describe what you want
Type a plain-English description of your CRM setup. Example: "Create a renewal pipeline with stages: Upcoming, Contacted, Negotiating, Renewed, Lost. Score leads higher when they view pricing twice."
2
Review the plan
OpsIQ shows a preview of what it will create: pipeline, stages, stage probabilities, scoring rules, lifecycle rules. Review each item.
3
Apply
Click Apply to execute the plan. Every change is recorded as a bundle you can undo in one click.
4
Roll back if needed
If something is not right, click Undo to revert the entire bundle. Your CRM returns to its previous state.
What you can build
Pipelines and stages
Create named pipelines with custom stages, default probabilities, and rotting thresholds.
Scoring rules
Boost lead scores based on behavior: "Score higher when they view pricing," "Score lower when they visit careers page."
Lifecycle rules
Automatically advance lifecycle stages: "Move to SQL when they request a demo," "Move to Customer when deal is won."
Custom fields
Add fields to contacts, deals, or companies: text, number, date, select, checkbox, URL, email.
Qualification checklist
Define the MEDDICC or BANT checklist the Deal Coach grades against.
Setting up a renewal pipeline
Scenario:
You manage SaaS subscriptions and need a pipeline for renewals.
What to do:
Type: "Create a renewal pipeline. Stages: 90 Days Out (10%), 60 Days Out (25%), Contacted (40%), Negotiating (60%), Renewed (100%), Churned (0%). Set the rotting threshold to 14 days." OpsIQ generates the plan, you review it, and click Apply. The pipeline appears on your Pipeline page immediately.
What if I describe something that is not possible?+
The builder only generates actions it knows how to validate. If you ask for something outside its capabilities (e.g., "Integrate with my custom API"), it will reject the request and explain what it can do instead.
Can I undo changes?+
Yes. Every Build My CRM action is captured as a reversible bundle. Go to CRM Health > Change History to see all bundles and undo any of them.
CRM
Setting up your CRM your way
Manual CRM configuration for teams that prefer clicking over typing. All settings that Build My CRM can create are also available as traditional form fields.
Pipelines and stages
Create, rename, reorder, and delete pipelines and stages. Set default win probability per stage. Set the rotting threshold (days without activity before a deal is marked "stalled").
Custom fields
Add fields to deals, contacts, or companies. Field types: text, number, date, select (dropdown with predefined options), checkbox, URL, email. Custom fields appear on the object profile and in filters.
Qualification checklist
Define the checklist the Deal Coach uses to evaluate deals. Choose MEDDICC, BANT, or a custom set of criteria. Each item can be marked required or optional.
Lifecycle stage rules
Define automatic stage transitions: when a contact meets a condition (views pricing, submits a form, makes a purchase), their lifecycle stage advances automatically.
Lead-scoring rules
Boost or reduce lead scores based on behavior. Examples: "Viewed pricing page = +15 points," "Downloaded whitepaper = +10 points," "Visited careers page = -5 points." Minimum count can be set (e.g., "must view pricing at least 2 times").
Saved views
Create named filter+sort combinations for contacts, deals, or companies. Share views with your team. Set a default view per object type.
Adding a lead scoring rule
Scenario:
You want contacts who view your pricing page twice or more to get a higher score.
What to do:
Go to CRM Configuration > Lead Scoring Rules. Click Add Rule. Set: Event = "pageview", URL contains = "/pricing", Minimum count = 2, Score boost = +20. Save. The next time the scorer runs, contacts matching this rule will get +20 to their lead score.
CRM
CRM Health check-up
CRM Health is a self-diagnostic page that verifies your CRM is set up correctly and running smoothly.
Health checkA one-page CRM audit: an overall health score plus a checklist of what is set up right and what still needs attention.
What it checks
Schema
Database tables exist and have the correct columns. If a migration was missed, CRM Health will flag it.
AI agents
All CRM agents (Capture, Data Steward, Deal Intelligence, etc.) are registered and healthy. Green = running, amber = needs attention, red = error.
Routes
CRM API routes and AJAX endpoints are registered and callable.
AI actions
The CRM action catalog is registered in the Action Registry. If actions are missing, CRM Health self-heals by re-registering them.
Live data counts
Total contacts, companies, deals, tasks, activities, and events. Useful for verifying imports and ongoing data capture.
After setup check
After first-time CRM setup, open CRM Health and verify all checks are green. If any are amber or red, click the item for a diagnostic explanation and suggested fix.
How often should I check CRM Health?+
Check after initial setup, after major updates, and whenever CRM behavior seems wrong. CRM Health self-heals many issues (like missing action registrations) just by opening the page.
CRM
CRM connections for developers
The CRM exposes a complete public REST API and outbound webhooks so it fits any stack without manual exports.
API endpoints
Authentication
API key (Authorization: Bearer opq_...) with scope crm.read or crm.write. POST to /api/v1.php with action and site_key.
Fired when a new task is created (manual or AI-generated).
crm.outreach.reply
Fired when a prospect replies to a sequence email.
crm.agent.proposal_created
Fired when an AI agent creates a proposal for the approval queue.
All webhook events are HMAC-signed and retried on failure. Subscribe a URL in Settings > Webhooks, or poll crm.events.list with since_id for a durable change feed.
Syncing CRM contacts to Google Sheets
Scenario:
You want every new CRM contact to appear in a Google Sheet for your marketing team.
What to do:
Set up a webhook subscriber for crm.contact.created. Point it to a Google Apps Script web app or a Zapier webhook URL. The payload includes the contact name, email, company, lead score, and source. Your script appends a row to the Google Sheet for each new contact.
Support
Tickets
Tickets are your formal support channel. They have departments, priorities, SLA targets, attachments, internal notes, and full conversation threading. Tickets can arrive from the admin, customer portal, email ingestion, chat escalation, or API.
TicketsEvery ticket carries its priority, department, SLA timer and full thread — and the AI can draft the reply for you.
How a ticket flows
1
Ticket arrives
A customer sends a message via email, chat escalation, ticket embed, or the admin creates one. The ticket gets a unique ID (e.g., T-12345).
2
Triage
AI reads the subject and body, assigns priority (Low/Normal/High/Urgent), suggests a department, and detects sentiment. This happens automatically if triage is enabled.
3
Reply
An agent opens the ticket, reads the context (customer profile, platform data from connectors, previous tickets), and writes a reply. AI can draft the reply, and the agent edits before sending.
4
Close
When the issue is resolved, the agent closes the ticket. The customer is notified. If the customer replies after closing, the ticket reopens automatically.
Per-ticket actions
Change department
Move the ticket to a different department (e.g., from General to Billing). Useful when the initial routing was wrong.
Assign to agent
Assign the ticket to a specific team member. The assigned agent sees the ticket in their "My tickets" view.
Add internal note
Write a note visible only to staff. Use for: investigation findings, refund reasons, engineering context, previous commitments. Internal notes never appear to customers.
Merge tickets
Combine duplicate tickets from the same customer. The merged ticket subject gets a [MERGED] tag. All messages from both tickets are preserved in the surviving ticket.
Canned response
Insert a pre-written reply template. Variables like {{customer_name}} and {{ticket_id}} are automatically replaced.
AI rewrite
Let AI improve your draft reply: adjust tone, shorten/lengthen, fix grammar, or translate. You review the result before sending.
Change priority
Set to Low, Normal, High, or Urgent. Priority affects SLA timers and sort order.
Change status
Set to Open, Pending, Waiting on Customer, Resolved, or Closed.
Worked example: handling an unhappy customer
Customer email: "I was charged twice for my subscription"
Scenario:
Subject: Double charge on my account
Body: Hi, I just checked my bank statement and I see two charges of $49.99 from your company dated June 3. I only have one subscription. Can you please refund the duplicate charge? This is really frustrating.
What to do:
Step 1: AI triage assigns Priority: High, Department: Billing, Sentiment: Frustrated.
Step 2: Agent opens the ticket. The connector panel shows the customer's Stripe charges — confirmed two charges on June 3.
Step 3: Agent adds an internal note: "Confirmed duplicate charge in Stripe. Transaction IDs: ch_xxx and ch_yyy."
Step 4: Agent drafts a reply: "Hi [Name], I can see the duplicate charge and I'm processing a refund for the second transaction right now. You should see ₦59,988 back in your account within 3-5 business days. I'm sorry for the inconvenience."
Step 5: Agent triggers the refund action through the Stripe connector (with confirmation).
Step 6: Agent sends the reply and sets status to Resolved.
Departments
Create departments in Settings > Tickets > Departments. Common departments: General, Billing, Technical, Sales, Abuse, Onboarding. Each department can have different auto-reply rules, AI knowledge, and team assignments.
Canned responses
Create reusable reply templates in Settings > Tickets > Canned Responses. Good canned responses include:
Example canned response template
Hi {{customer_name}},
Thanks for reaching out. I checked the details and here is what I found:
{{response_details}}
If you need anything else, just reply to this ticket and I will be happy to help.
Best regards,
{{agent_name}}
{{department_signature}}
Merging tickets
When a customer sends the same question multiple times (via email and chat, or two separate emails), you can merge the duplicates. Go to the ticket, click Merge, select the other ticket to merge. The surviving ticket gets all messages from both tickets. The merged ticket's subject gets a [MERGED] tag to indicate it was combined.
Priority and SLA
Low
Non-urgent questions, feature requests, general feedback. Target first response: 24 hours.
Normal
Standard support questions. Target first response: 8 hours.
High
Impacting the customer's business. Target first response: 4 hours.
Urgent
Service down, security incident, data loss, billing error. Target first response: 1 hour.
SLA timers start when the ticket is created and pause when the status is "Waiting on Customer." If the SLA target is missed, the ticket is highlighted and optionally escalated.
Can customers see internal notes?+
Never. Internal notes are strictly staff-only. They do not appear in the customer ticket portal, email notifications, or any customer-facing surface.
What happens when a closed ticket is replied to?+
The ticket automatically reopens and returns to the active queue. The team is notified of the new reply.
Can I lock a ticket to prevent further replies?+
Yes. Use the Lock Thread option to prevent both customer and AI from adding new replies. Useful for resolved disputes or closed investigations.
Support
Ticket auto-reply and escalation
Auto-reply lets the AI respond to new tickets automatically. Escalation moves tickets to a different department when the AI detects specialized needs. Both features work across native tickets and email-created tickets.
Auto-replyNew tickets get a short delay (so humans can jump in), then an AI reply from your knowledge — sent or queued as a draft.
How auto-reply works
1
Ticket appears
A new ticket is created from any source (email, chat, portal, API).
2
Schedule reply
OpsIQ waits for the configured delay (default: 2 minutes). This gives human agents a chance to respond first.
3
First reply wins
If a human agent replies during the delay, auto-reply is cancelled. If not, the AI generates a reply.
4
Generate and send
The AI reads the ticket, checks knowledge base, connector context, and customer history, then writes a reply. The reply is sent (or queued as a draft for review, depending on settings).
How escalation works
1
Configure departments
Set which departments can receive escalations (e.g., Billing can be escalated from General, Technical can be escalated from General).
2
Classify the ticket
Before auto-replying, the AI classifies the ticket intent: billing, technical, refund, abuse, etc.
3
Move if needed
If the ticket intent matches an escalation department, the ticket is moved. An internal note explains why.
4
Generate in new voice
The reply is generated using the destination department's knowledge and AI training.
Settings reference
Auto-reply enabled
Master switch. Turn on to enable AI auto-reply for tickets.
Allowed departments
Which departments can receive auto-replies. Start with low-risk departments (General, Sales) before enabling billing.
Delay
How long to wait before the AI replies (in seconds). Default: 120 seconds (2 minutes). Set to 0 for instant replies.
Delay schedule
Optionally set different delays for business hours vs. after hours.
Stop on admin reply
If a human agent replies first, cancel the auto-reply. Default: on.
Escalation enabled
Enable automatic department routing based on ticket intent.
Escalation departments
Which departments tickets can be escalated to.
Escalation status
What status to set when escalating (e.g., Open, Pending).
Escalation note
Whether to add an internal note explaining the escalation reason.
Email-created tickets
Tickets created from email (via mailbox polling or MX-piped delivery) follow the same auto-reply and escalation rules. The AI reply is sent as an email response to the customer. Email drafts go to the drafts queue for review if configured.
Will the AI auto-reply to billing questions?+
Only if you enable auto-reply for the Billing department. We recommend starting with auto-reply off for billing and enabling it only after you have trained the AI with comprehensive billing knowledge and tested thoroughly.
What if the AI gives a wrong answer?+
If a customer replies saying the answer was wrong, a human agent should intervene. Review AI History to understand why the AI gave the wrong answer, then update the knowledge base or AI training to prevent it from happening again.
Can I review auto-replies before they are sent?+
Yes. Set the delivery mode to "Draft" instead of "Auto-send." Auto-reply drafts will appear in the Drafts queue for human review before sending.
Support
Ticket portal embed
The ticket portal embed lets you add a ticket management interface to any website. Customers can view their tickets, create new ones, and reply — all without entering the OpsIQ admin.
How it worksTicket portal embed
Three embed flavors
Inline embed
Renders the ticket portal inside a div on your page. The portal takes the full width of its container.
Floating widget
Shows a floating button that opens the ticket portal in a panel. Similar to a chat widget.
Authenticated
Requires a signed identity token. Customers see only their own tickets.
For authenticated mode, your server must generate a signed identity token. This token tells OpsIQ who the customer is so they see only their own tickets.
Searchable, status-filtered list. An "Awaiting you" highlight flags tickets the team has answered.
Threaded conversation
Full conversation view with rich text, attachments, and timestamps.
Draft autosaving
Customer draft replies are auto-saved so they do not lose work if they navigate away.
Live polling
The widget polls for new replies every ~12 seconds.
Resolve / reopen
Customers can resolve or reopen their own tickets with one click.
✅
Internal staff notes are NEVER shown to customers in the ticket embed. This is a hard security boundary.
Support
Chat inbox
The Chat Inbox is where your team manages live customer conversations. It shows active chats, assigned conversations, AI-handled chats, and archived history.
Chat inboxOne inbox for every live chat — conversation list, the thread with AI draft on tap, and full visitor + CRM context.
Managing conversations
Active chats
Conversations currently in progress. Green dot = customer is typing or recently active.
AI-handled
Conversations where the AI is responding. You can take over at any time by clicking "Join."
Assigned to me
Conversations assigned to you specifically.
Waiting
Conversations where the customer is waiting for a response.
Archive
Completed conversations. Searchable by keyword, date, and customer.
Handoff from AI to human
When you take over a conversation from the AI, follow these three rules:
1
Greet personally
Introduce yourself by name. "Hi, this is Sarah from the support team."
2
Reference context
Show you read the conversation. "I can see you asked about your order status."
3
Set expectations
Tell the customer what happens next. "I am looking into this now and will have an answer for you in a few minutes."
Switching AI on/off per conversation
Use the AI toggle at the top of each conversation. When AI is on, the AI generates responses. When off, only human agents can reply. The AI remembers the conversation context even when turned off and back on.
Away mode / out of hours
Configure business hours in Settings. Outside business hours, the AI can: (1) Continue responding to customers, (2) Show an "away" message and create a ticket for follow-up, or (3) Disable chat completely and show the ticket form. Choose the behavior that fits your support model.
Handling tough conversations
1
Stay calm
Do not match the customer's emotional intensity. Acknowledge their frustration without being defensive.
2
Collect facts
Before responding, gather the relevant information: order details, account status, previous tickets.
3
Escalate early
If the situation involves refunds, legal threats, abuse, or security, escalate to a senior team member rather than trying to handle it alone.
Can I have team chat (agent to agent)?+
Yes. Use internal notes within a conversation to communicate with other agents. These notes are never visible to the customer.
What happens when I close a chat?+
The conversation moves to the Archive. If the customer sends a new message later, a new conversation is created.
Support
Real chat conversations
These examples show how a well-trained Customer AI should handle common scenarios. Use them to test your AI training and identify gaps.
10 conversation examples
1. Returning customer asking about order
Scenario:
Customer: Hi, I placed an order 3 days ago and haven't received any shipping notification yet. Order #ORD-5523.
What to do:
The AI should: (1) Look up order #ORD-5523 through the connector. (2) Report the current status and tracking info if available. (3) If the order is delayed, acknowledge the delay and provide an estimated timeline. (4) Do NOT invent a shipping status if the connector does not have one.
2. Prospect asking about pricing
Scenario:
Customer: How much does your Pro plan cost? Do you offer annual billing?
What to do:
The AI should: (1) Answer from the knowledge base with current pricing. (2) Explain the difference between monthly and annual billing. (3) If the answer is not in the knowledge base, say so and offer to connect them with sales. (4) Do NOT invent pricing that is not in the knowledge base.
3. Angry customer demanding refund
Scenario:
Customer: This is ridiculous! Your product does not work and I want my money back NOW.
What to do:
The AI should: (1) Acknowledge the frustration calmly. (2) Ask for the order number or account email. (3) Explain the refund process. (4) Create a support ticket or escalate to a human agent. (5) Do NOT promise a refund — that requires human approval.
4. Double billing edge case
Scenario:
Customer: I was charged twice this month. My bank shows two charges of $29.99.
What to do:
The AI should: (1) Acknowledge the concern. (2) Collect the relevant details (email, dates of charges). (3) Explain that billing issues require human review. (4) Create a Billing department ticket with the details. (5) Set priority to High.
5. Multi-language customer
Scenario:
Customer: Bonjour, je voudrais savoir si vous livrez en France?
What to do:
The AI should: (1) Respond in the customer's language if that language is supported. (2) Answer the question about delivery to France from the knowledge base. (3) If the language is not supported, respond in the default language and mention which languages are available.
6. After-hours conversation
Scenario:
Customer: Hello, is anyone there? I need help with my account.
What to do:
The AI should: (1) If configured for after-hours AI, respond and assist. (2) If after-hours creates tickets, say: "Our team is currently offline. I have created a support ticket for you and someone will follow up during business hours." (3) Provide the ticket number.
7. Pre-purchase comparison shopper
Scenario:
Customer: How does your product compare to [Competitor X]?
What to do:
The AI should: (1) Describe your product's strengths factually. (2) Do NOT badmouth the competitor. (3) If there is a comparison page in the knowledge base, link to it. (4) If the customer asks about features you do not have, be honest.
8. Customer wants a recommendation
Scenario:
Customer: I run a small online store with about 100 orders per month. Which plan is right for me?
What to do:
The AI should: (1) Ask clarifying questions if needed (e.g., what features matter most). (2) Recommend a plan based on the knowledge base. (3) Explain why that plan fits their needs. (4) Mention that they can start with a smaller plan and upgrade later.
9. Customer trying to get an unauthorized discount
Scenario:
Customer: I saw online that you give 50% discounts. Can I have one?
What to do:
The AI should: (1) Politely explain current promotions if any exist. (2) Do NOT create or promise discounts that are not in the knowledge base. (3) If the customer persists, offer to connect them with the sales team.
10. Customer needs help with a feature
Scenario:
Customer: How do I export my data? I can't find the export button.
What to do:
The AI should: (1) Provide step-by-step instructions from the knowledge base. (2) Include the exact page path and button location. (3) If the feature requires a specific plan, mention that. (4) If the feature does not exist, be honest and suggest alternatives.
Support
Email mailboxes and drafts
OpsIQ can connect to email mailboxes to automatically create tickets from incoming email and send replies as email. It also provides AI-drafted replies for human review.
EmailPull email in over IMAP (or forwarding), turn each into a threaded ticket, and let the AI draft the reply for review.
Connecting a mailbox
Protocol
IMAP (most providers), Gmail API (Google Workspace), or Microsoft Graph (Outlook 365).
In cPanel > Email Accounts, click your email account for IMAP settings.
2
Enter in OpsIQ
Host: usually mail.yourdomain.com or your server hostname, port: 993 (SSL) or 143 (STARTTLS), username: full email address.
AI email drafts
When auto-reply is set to "Draft" mode, the AI generates reply drafts that appear in the Drafts queue. You can:
Review
Read the draft and check for accuracy.
Edit
Modify the text, tone, or content before sending.
Send
Approve the draft and send it as an email reply.
Discard
Delete the draft if it is not appropriate.
Auto-send
If confidence is high enough and auto-send is enabled, drafts are sent automatically after a configurable delay.
Why are emails not being converted to tickets?+
Check: (1) Is the mailbox connected and healthy? Look for green status in Email > Mailboxes. (2) Is the cron job running? Email polling requires cron. (3) Is the email being filtered or moved to a folder other than INBOX?
AI Configuration is where you choose your AI provider, model, and cost controls. OpsIQ supports multiple providers: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), and Grok (xAI). You can use your own API key (BYOK) or Managed AI if available on your plan.
Set up AIChoose Managed AI or your own key, pick a model for speed vs depth, and cap monthly spend with a token budget.
Choosing a provider
Claude (Anthropic)
Strong reasoning, careful with facts, good at following complex instructions. Models: claude-sonnet-4-20250514, claude-3.5-sonnet. Best for: support conversations, technical questions, detailed analysis.
GPT-4o (OpenAI)
Fast, creative, good general knowledge. Models: gpt-4o, gpt-4o-mini. Best for: quick responses, creative writing, broad knowledge questions.
Gemini (Google)
Good at factual questions, multi-language support. Models: gemini-2.0-flash, gemini-1.5-pro. Best for: multi-language support, factual lookups.
You provide your own API key from the provider. You pay the provider directly. Full control over model selection and usage.
Managed AI
AI is provided as part of your OpsIQ plan. No API key needed. Usage is metered against your plan's AI credit balance.
Step-by-step setup
1
Go to AI Configuration
In the OpsIQ admin, navigate to Settings > AI Configuration.
2
Select provider
Choose your AI provider from the dropdown.
3
Enter API key
If using BYOK, enter your API key. For Managed AI, this is handled automatically.
4
Choose model
Select the specific model to use. Smaller models are faster and cheaper. Larger models give better quality answers.
5
Test connection
Click "Test connection" to verify the API key and model are working. A green checkmark means success.
6
Save
Click Save to activate your AI configuration.
Cost controls
Monthly budget
Set a maximum monthly spend on AI tokens. When the budget is reached, AI features gracefully degrade (shorter responses, no auto-reply) rather than stopping entirely.
Per-conversation token limit
Maximum tokens per single conversation. Prevents runaway conversations from consuming excessive credits.
Low balance alert
When your AI credit balance drops below the threshold (default: 50,000 tokens), a warning appears in the admin. Set this in AI Configuration.
Per-workspace configuration
AI configuration is per-workspace. If you manage multiple sites, each workspace can use a different provider, model, and budget. The workspace inherits global defaults unless overridden. To configure per workspace: switch to the workspace, then go to AI Configuration and save settings there.
Getting API keys
Anthropic (Claude)
Go to console.anthropic.com > API Keys > Create Key. Copy the key starting with "sk-ant-".
OpenAI (GPT)
Go to platform.openai.com > API Keys > Create new secret key. Copy the key starting with "sk-".
Google (Gemini)
Go to aistudio.google.com > Get API Key. Create a key for your project. Copy the key.
xAI (Grok)
Go to console.x.ai > API Keys. Create and copy your key.
Testing your AI setup
Scenario:
After entering your API key, click "Test connection." You should see a green checkmark and a sample response from the AI.
What to do:
If the test fails: (1) Check that the API key is correct (no extra spaces). (2) Check that your account has billing set up with the provider. (3) Check that the model name is valid. (4) If using Managed AI, verify your license is active.
Which provider is best?+
There is no single best provider. Claude is excellent for support conversations. GPT-4o is fast and versatile. Gemini handles multiple languages well. Try each one and see which produces the best results for your specific use case.
Can I switch providers later?+
Yes. Change the provider and API key at any time. Existing conversation history is preserved. The AI will use the new provider for all future conversations.
What happens when I run out of credits?+
The AI degrades gracefully: responses become shorter, auto-reply pauses, and the admin shows a low-balance warning. Core tracking, tickets, and CRM continue working without AI.
AI
Smarter & cheaper customer chat
A set of opt-in controls that make your customer chat either smarter (it reasons across a customer's account like a human agent) or cheaper (it sends the AI less, or answers in fewer steps). Every control is off by default and independent — turning one on never changes any other behaviour. Most live under Settings > Client Chat > Behaviour; a few are on Set up your AI and Train your AI.
Smarter Answers (agent mode)
A normal chatbot answers one question from one lookup. With Agent mode on, the assistant can make several read-only account checks in a single turn and cross-reference them — e.g. "do I have open tickets, and is my balance enough for my next renewal?" is answered in one reply with the maths done. It only engages for verified customers on account or refund questions; everything else runs the normal single-answer path.
Agent mode
Up to a few read-only lookups per turn, cross-referenced before answering. Turn on when you have a connected platform (WHMCS, Shopify, Stripe, Zendesk, etc.). Off = today's single-lookup behaviour, unchanged.
Thinking depth for agent answers
How hard the model reasons on complex turns (low/medium/high). Start on Low; most support questions are handled well there.
Agent model
Pins a stronger model just for complex agent turns, so everyday chat stays on a light, cheap model and only the hard turns pay for depth. Blank = your normal customer-chat model.
Plan ahead — one-pass answers (beta)
A tiny planning step decides which lookups to pull and whether the knowledge base is needed, then answers in ONE main call instead of several steps. A sub-toggle under Agent mode — it cannot be enabled unless Agent mode is on. Same answer quality, fewer calls on multi-part questions.
Conversation & understanding
Long-conversation memory (beta)
Keeps a short running summary of older messages (names, ticket/invoice numbers, amounts, decisions) so the assistant stays consistent across very long chats without resending the whole transcript. Best for support-heavy, long threads; pairs with Agent mode.
Typo tolerance
Reads small typos ("my open ticketts", "unpaid invocies") as the intended words so the right information is found instead of missed. Works with every connected platform. Off by default; useful for mobile-heavy chat.
Lean account context
Only attaches the customer's account snapshot when the question is actually about their account (balance, invoices, tickets, services), skipping it on general questions. Cuts cost with no quality loss — the assistant can still fetch the account live when a turn needs it.
Cost saving
Skip knowledge search for greetings (beta)
"Hi", "thanks" and "ok" don't trigger a knowledge-base search — those replies never use it. Any message with real content still searches as normal.
Longest reply allowed (tokens)
Caps how long a single reply can be. Reply length is the most expensive part of a call, so a sensible cap (around 500 for support) is the single most effective chat cost control. Only lowers your global limit, never raises it.
On Set up your AI
Thinking depth (customer & admin chat)
How much the model thinks before answering (minimal to high). Keep customer chat on minimal/low for speed; reserve higher settings for analysis and the admin copilot.
Per-AI model (per job)
Every AI surface — live chat, ticket drafts, summaries, analysis, admin copilot, promotions, Site Intelligence and more — can run on its own model. Light where speed matters, strong where quality matters. Blank on a surface = provider default for that job.
Admin chat cost controls
The admin copilot can keep a bounded working memory and load only the tools a question needs (lean tools) instead of every tool every turn.
On Train your AI
Compress instructions
Your instructions are sent on every turn, so their length is a recurring cost. The Compress button rewrites a slot to say the same thing in fewer words. It refuses the rewrite if it would drop any {variable} or rule, and reports what it protected — so it never silently changes meaning.
"What's already in the brain" (ℹ️)
Shows what OpsIQ already knows about your business per slot, so you can delete anything you were repeating in your own instructions.
💡
Where does the money go? For short support chat the input (instructions + account data + history, sent each turn) usually costs more than the short reply — caching and lean context help most there. For long generated content the output dominates — the reply-length cap and a lower thinking depth pay off there. See Set up your AI to keep prompt caching on, which makes the big repeated part of each turn cheap.
Do these change how the chat already answers?+
No. Every control is off by default and independent. Turning one on only adds its behaviour; turning it off returns the chat to exactly how it worked before.
What order should I turn them on?+
Run everyday chat on a light model and pin a stronger Agent model. Then, if you have a connected platform, enable Agent mode, then Plan ahead, then Long-conversation memory. Then lean context, skip-KB-for-greetings, and a reply cap. Finally compress your instructions. Watch a few real chats after each change.
The Admin Agent kit: web search, runbooks, missions, file transfer
The Admin AI chat is a working engineer, not just a question box. It can research fixes on the web, keep a library of your operating procedures, patrol your servers on a schedule, and move files. Most of this is driven by asking for it in chat; the one thing you configure up front is which web search provider it uses, on the Set up your AI page.
Web search
Built in
The agent searches the web for docs, error messages and current information while it works. Out of the box this uses DuckDuckGo, which needs no key and no setup.
Runbooks
In chat
A saved library of your procedures ("how we do X here"). The agent writes one down after nailing a tricky job and follows it next time, so the know-how survives the end of the chat.
Missions
Scheduled
Scheduled read-only patrols. "Every morning, check disk space and the error logs and tell me." Findings arrive on your admin bell.
File transfer
In chat
Ask for a log file and get a private download link, or have one file copied from one connected server to another. Both capped at 5 MB.
Admin Agent web search (on Set up your AI)
Search provider
What the agent web search uses. The default is DuckDuckGo: keyless, free, works on every install. Brave Search, Tavily and Serper.dev (Google results) usually return better results but each needs an API key from that provider. If a keyed provider fails for any reason (bad key, quota used up, network trouble), that search falls back to DuckDuckGo automatically, so search never goes dark.
Search API key
The key for your chosen provider, only needed for Brave, Tavily or Serper. Once saved it is masked and never shown on the page again; paste a new one to replace it. A keyed provider becomes active only when both the provider and its key are saved.
Runbooks
When the agent has just worked through a job you will want done the same way again, say "save that as a runbook called nightly-cleanup". From then on it sees the runbook by name in every session, and when you ask for the job by name (or describe it) it pulls up the steps and follows them. You can ask it to list, update or delete runbooks any time.
💡
A runbook is guidance, not a free pass. When the agent follows one, every step that would change a server still goes through your current permission mode and shows the usual approval cards. A runbook can never bypass an approval.
Missions
A mission is a recurring job the agent runs on its own: hourly, daily at a set hour, or weekly on a set day. Missions are read-only by design. They can read servers, data and the web, but they can never change anything; they investigate and report. When a mission finishes, the findings land as a notification on your admin bell. Say "run the morning patrol now" to trigger one on demand, or ask the agent to list, pause or remove missions.
⚠️
Missions run off the OpsIQ cron, so it needs to be set up (see Cron and automation). A one-off "run it now" from the chat works even between cron runs on most servers.
Moving files
Ask for a file ("get me today's error log from the web server") and the agent stages it and replies with a private download link. The link only works for signed-in admins and expires after about a day. Files are capped at 5 MB; for anything bigger, ask the agent to compress or trim it on the server first.
The agent can also copy a single file between two connected servers, again up to 5 MB. The write on the destination is treated like any other change it makes: in ask mode you get an approval card first, the existing file is backed up, and the copy is reversible. For safety, the file content is re-read from the source at the moment the copy is applied, not taken from the chat.
AI
Train your AI
AI Training is where you teach OpsIQ how to behave. You write prompts that define personality, boundaries, knowledge focus, and escalation rules. Think of it as writing a training manual for a new support agent.
Train AITrain the AI like a new hire — Customer and Admin manuals written in plain English (tone, always, never), grounded in your KB.
Two training areas
Customer AI prompt
Controls how the AI talks to your customers in the chat widget. This is the most important prompt to get right.
Admin AI prompt
Controls how the AI assists your admin team in the operator dashboard. This handles internal queries and action execution.
Writing a great customer AI prompt
Your customer AI prompt should cover these areas:
1
Identity
Who is the AI? Give it a name, role, and personality. Example: "You are Luna, a friendly and knowledgeable customer support assistant for Acme Store."
2
Tone and style
How should it communicate? Example: "Be professional but warm. Use simple language. Avoid jargon. Keep responses concise (2-3 paragraphs max)."
3
Knowledge boundaries
What should it know and not know? Example: "You know about our products, pricing, shipping, and return policy. You do NOT know about competitor products or internal company decisions."
4
Escalation rules
When should it hand off to a human? Example: "Escalate to a human agent when: the customer asks for a refund, mentions legal action, reports a security issue, or asks the same question three times."
5
Things to never do
Hard boundaries. Example: "Never promise refunds. Never share internal pricing formulas. Never make up product features that do not exist. Never give medical, legal, or financial advice."
Example prompts
Example customer AI prompt — online store
You are Aria, a friendly customer support assistant for TechGear.
PERSONALITY:
- Warm and professional
- Concise (2-3 paragraphs max per response)
- Use simple language, no jargon
- If unsure, say so honestly
KNOWLEDGE:
- Our products: laptops, accessories, software subscriptions
- Pricing: as listed in the knowledge base
- Shipping: free over $50, 3-5 business days standard, 1-2 days express ($12)
- Returns: 30-day money-back guarantee, must be in original condition
ESCALATION (hand off to human):
- Refund requests over $100
- Account security concerns
- Legal threats or complaints
- Customer explicitly asks for a human
NEVER DO:
- Promise specific delivery dates (say "estimated")
- Share discount codes not in the knowledge base
- Make up product specifications
- Give financial or legal advice
Example customer AI prompt — hosting company
You are Atlas, an AI assistant for CloudHost web hosting.
TONE: Technical but accessible. Assume the customer has basic web knowledge.
KNOWLEDGE:
- Shared hosting, VPS, dedicated servers
- cPanel, DNS, SSL, email configuration
- WordPress, Joomla, Drupal installation
- Common error codes and troubleshooting
ESCALATION:
- Server outages affecting multiple customers
- Data loss or security breach reports
- Billing disputes over $50
- Complex migration requests
BOUNDARIES:
- Do NOT access customer servers or databases
- Do NOT change DNS records or passwords
- Always recommend the customer makes changes themselves
- For code issues, suggest steps but clarify you cannot debug their application
Refining your prompt over time
1
Launch with basics
Start with identity, tone, and key boundaries. Do not try to cover everything on day one.
2
Review AI History weekly
Read conversations where the AI gave wrong or suboptimal answers.
3
Update the prompt
Add specific rules for recurring issues. Example: if the AI keeps promising refunds, add "Never promise a refund — say you will escalate to the billing team."
4
Add knowledge
If the AI cannot answer a question, add the answer to the Knowledge Base rather than trying to fit everything in the prompt.
⚠️
Keep your prompt under 2,000 words. Overly long prompts can confuse the AI and increase token costs. Put detailed information in the Knowledge Base instead.
What is the difference between the prompt and the knowledge base?+
The prompt defines personality, boundaries, and rules. The knowledge base provides factual information (product details, pricing, policies). The AI reads both, but the prompt shapes behavior while the KB provides answers.
Can I have different prompts for different departments?+
The prompt is per-workspace. If you need different AI behavior for different departments, use the knowledge base to provide department-specific information and mention the department context in your prompt.
AI
AI history
AI History shows every conversation the AI has had with customers and admins. Use it to audit AI performance, find wrong answers, and identify training gaps.
AI historyEvery AI turn — chat, ticket draft, admin action — logged with the exact prompt, reply, duration and outcome.
What each conversation shows
Date and time
When the conversation happened.
Customer identity
Name and email if known, otherwise IP and country.
Channel
Chat widget, ticket auto-reply, email draft, or admin AI.
Messages
Full transcript of the conversation: customer messages and AI responses.
Token usage
How many tokens the conversation consumed. High token usage may indicate the AI is giving overly verbose answers or the conversation went in circles.
Actions taken
Any actions the AI executed during the conversation (looked up order, created ticket, etc.).
Rating
If CSAT is enabled, the customer's satisfaction rating for this conversation.
Finding problems
Search by keyword
Search for specific topics to see how the AI handles them. Example: search for "refund" to check if the AI is following your refund policy.
Filter by rating
Show only low-rated conversations to focus on dissatisfied customers.
Filter by channel
Show only ticket auto-replies to audit automated responses separately from chat.
Sort by token usage
High-token conversations may indicate problems: the AI rambling, going in circles, or failing to answer the question.
Weekly audit routine
1
Check low-rated conversations
Read the full transcript. What went wrong? Was it a knowledge gap, a tone issue, or a wrong answer?
2
Check high-token conversations
These might indicate confusion. Was the AI repeating itself? Did it fail to understand the question?
3
Update training
For knowledge gaps, add articles to the Knowledge Base. For behavior issues, update the AI prompt. For recurring wrong answers, add explicit correction rules.
Finding knowledge gaps
Scenario:
You search AI History for "installation" and find 15 conversations where the AI said "I do not have specific installation instructions for this product."
What to do:
This means your Knowledge Base is missing installation guides. Create knowledge base articles for each product's installation steps. After adding them, test by asking the AI installation questions.
AI
AI insights
AI Insights automatically analyzes conversation patterns and surfaces actionable findings: common questions, satisfaction trends, knowledge gaps, and escalation patterns.
AI insightsThe real Intelligence Hub: an AI-written Today's Brief, Smart Alerts for anomalies, on-demand lead scoring and page analysis, and the 14-day traffic pattern.
What insights show
Top questions
The most frequently asked questions. If "How do I reset my password?" is #1, your knowledge base needs a prominent password reset guide.
Satisfaction trends
CSAT scores over time. Is AI satisfaction improving or declining? Sudden drops may indicate a knowledge base change that broke something.
Resolution rate
What percentage of conversations does the AI resolve without human intervention? A rate above 70% is good. Below 50% means the AI needs more training.
Escalation reasons
Why conversations get handed off to humans. Common reasons: customer requested human, AI could not answer, sensitive topic, billing issue.
Knowledge gaps
Topics where the AI frequently says "I don't know" or gives low-confidence answers.
Average conversation length
How many messages per conversation. Very long conversations (10+ messages) might indicate the AI is not understanding the question.
Using insights to improve
Scenario:
AI Insights shows that 23% of escalations are "Customer asked about warranty" and the AI could not answer.
What to do:
This is a clear knowledge gap. Steps: (1) Write a comprehensive warranty article in the Knowledge Base covering all warranty terms, claim process, and exclusions. (2) Update the AI prompt to reference warranty information. (3) Monitor AI Insights next week to see if warranty escalations decrease.
AI
Admin AI playbook
The Admin AI (Ask OpsIQ) helps your team manage OpsIQ from within the admin dashboard. You can ask it to look up data, explain features, summarize tickets, and execute platform actions.
Admin AITell the admin AI what you want in plain English; it proposes the exact action — scoped, reversible, audited — and waits for your confirm.
What the admin AI can do
Look up data
Ask: "Show me all tickets from [email protected]" or "What is the status of order #ORD-5523?"
Summarize
Ask: "Summarize the last 10 tickets" or "What are the top support issues this week?"
Explain features
Ask: "How do I set up auto-reply?" or "What does the bounce rate card mean?"
Execute actions
Ask: "Create a ticket for [email protected] about billing" or "Close ticket T-12345"
Platform queries
Ask: "How many visitors did we get yesterday?" or "What is our revenue this month?"
Example conversations
Looking up a customer
Scenario:
Admin asks: "Find customer [email protected] and show me their recent activity"
What to do:
The AI looks up the customer across all connected data sources: visitor sessions, tickets, chat conversations, orders, and CRM contacts. It returns a summary of recent activity with links to each item.
Getting a daily summary
Scenario:
Admin asks: "What happened today?"
What to do:
The AI summarizes: "Today you had 245 visitors (up 12%), 8 new tickets (3 resolved by AI), 2 new orders totaling ₦237,600, and 1 chat escalation about a shipping delay."
Executing an action
Scenario:
Admin asks: "Change ticket T-5523 priority to Urgent"
What to do:
The AI confirms: "I will change ticket T-5523 priority from Normal to Urgent. This will affect the SLA timer. Confirm?" You confirm, and the action is executed.
💡
The Admin AI only executes actions that are registered in the Action Registry. It cannot invent actions or access systems outside OpsIQ.
AI
Customer AI scenarios
This section covers common customer-facing AI scenarios with expected behavior and training tips.
Customer AIA library of real customer questions and exactly how the AI should handle each — to test your training and find gaps.
Scenario library
Order status inquiry
Scenario:
Customer: "Where is my order #12345?"
What to do:
Expected AI behavior: (1) Look up the order through the platform connector. (2) Report current status (processing, shipped, delivered). (3) Include tracking number if available. (4) If the order is delayed, acknowledge and provide estimated timeline. (5) Never invent tracking information.
Password reset request
Scenario:
Customer: "I forgot my password and cannot log in"
What to do:
Expected AI behavior: (1) Provide the password reset steps from the knowledge base. (2) Include the reset link or page path. (3) Mention that the reset email may take a few minutes. (4) Suggest checking spam folder. (5) If the customer still cannot reset, escalate to a human.
Feature request
Scenario:
Customer: "Can you add dark mode to the mobile app?"
What to do:
Expected AI behavior: (1) Thank them for the suggestion. (2) Explain how feature requests are handled (logged, reviewed, prioritized). (3) Do NOT promise the feature will be built. (4) If a similar feature exists, mention it.
Billing dispute
Scenario:
Customer: "I was charged but my service is not working"
What to do:
Expected AI behavior: (1) Acknowledge the frustration. (2) Check the service status if possible. (3) Escalate to the billing department with all details. (4) Do NOT promise a refund. (5) Set ticket priority to High.
Off-topic question
Scenario:
Customer: "What is the weather like in London today?"
What to do:
Expected AI behavior: (1) Politely redirect. "I am your [Company] support assistant and can help with questions about our products and services. For weather information, try a weather service." (2) Ask if they have a product question.
How do I test customer AI behavior?+
Open your website in a private/incognito browser and chat with the AI as a customer. Try common questions, edge cases, and adversarial scenarios. Check that the AI follows your prompt rules and uses knowledge base content correctly.
AI
AI knowledge base
The Knowledge Base is a library of articles that the AI uses to answer questions. When a customer asks something, the AI searches the knowledge base for relevant articles and uses them to generate an accurate, grounded response.
Knowledge baseCrawl your site and import docs into the knowledge base; the AI retrieves the right pieces and answers, grounded and cited.
How it works
1
Customer asks a question
"What is your return policy?"
2
AI searches the knowledge base
OpsIQ finds the "Return Policy" article by matching keywords and semantic meaning.
3
AI generates a response
The AI reads the article and writes a natural-language answer based on the article content.
4
Customer gets an accurate answer
The response is grounded in your actual policy, not the AI's general training data.
Creating good articles
One topic per article
Write a separate article for each topic: return policy, shipping rates, account setup, password reset. Do not combine unrelated topics.
Write like a FAQ
Start with the question customers ask, then provide the answer. This helps the AI match questions to articles.
Be specific
"Returns must be initiated within 30 days of delivery" is better than "We have a return policy."
Include edge cases
What about international returns? What about digital products? What about items bought on sale? Cover the exceptions.
Keep it current
Review articles quarterly. Delete outdated information. Update pricing, policies, and procedures when they change.
Starter articles you should write
Shipping and delivery
Shipping costs, delivery times, tracking, international shipping, and handling delays.
Returns and refunds
Return window, conditions, process, refund timeline, and exceptions.
Account management
Password reset, email change, account deletion, and data export.
Pricing and billing
Plan descriptions, billing cycle, payment methods, invoices, and currency.
Product guides
How to use each product or feature. Step-by-step instructions with screenshots.
Troubleshooting
Common problems and solutions. Error messages and their fixes.
Contact information
Business hours, support channels, response times, and escalation paths.
Legal and compliance
Privacy policy summary, terms of service summary, GDPR data requests.
Connector knowledge
Each connector can contribute knowledge to the AI. When a connector is enabled, its built-in knowledge articles (product catalog, common questions, platform-specific troubleshooting) are automatically available to the AI. You can toggle connector knowledge on or off per connector in the Connector settings.
Token budget
The knowledge base has a configurable token ceiling (default: 32,000 tokens) that controls how much knowledge context is sent to the AI per conversation. If your knowledge base is very large, the AI selects the most relevant articles within this budget. Increase the ceiling if the AI is not finding relevant articles; decrease it if you want to reduce token costs.
How many articles should I have?+
Start with 5-10 articles covering your most common questions. Add more as you identify gaps through AI History and AI Insights. Most businesses need 20-50 articles for comprehensive coverage.
Can I import articles from another system?+
Currently, articles are created manually in OpsIQ. You can copy-paste content from existing FAQs, help centers, or documents.
What format should articles be in?+
Plain text works best. The AI understands natural language better than structured HTML or markdown. Write as you would explain to a customer.
Support
Help center
Your Help Center is a self-serve help site built from the articles you publish. Customers can read and search it on its own public page, and right inside the chat widget, so they can find answers on their own before they ever open a conversation. Everything in it comes from your knowledge base, so the same content that grounds your AI also powers your public help.
Where your customers see it
Its own public page
A clean, searchable help site at <code>/help.php</code>. Customers browse by category, search, and open any article. You can give it your own name and style.
Inside the chat widget
A help link in the chat widget so customers can search your articles without leaving the chat. If they still need a person, they are one tap away from starting a conversation.
Turn it on
1
Open the Help Center page
Go to <code>Config, then Help Center</code> in your admin and switch on <strong>Enable public Help Center</strong>.
2
Give it a name and a look
Set the Help Center name, which shows in the header and the browser tab, and pick a visual style. You can turn the top navigation off for a clean page with no menu.
3
Publish some articles
Nothing shows until you publish articles to it. The next part covers how.
Publish articles to the Help Center
Articles live in your knowledge base. An article appears in the Help Center once it is published and marked public. There are a few ways to do this:
Publish one article
Open the article, mark it published, and turn on the option to show it in the Help Center.
Publish everything at once
Use the <strong>Publish All</strong> button to push your whole published set to the Help Center in one click, instead of doing them one at a time.
Turn FAQs into articles
Already have FAQs? Use <strong>Publish all to Help</strong> to turn them into help articles so they sit alongside everything else.
Organize with AI
A tidy help center is easy to browse and easier to search. The Organize with AI button does the tidying for you. In one click it reads your published articles, sorts them into sensible categories, and adds tags. It creates a category when it needs one, reuses a category that already fits, and skips anything you have already organized, so you can run it again any time you add new articles.
💡
Categories give customers a way to browse, and tags sharpen search on both the public page and in the widget. You can rename or move things afterwards. The AI gives you a strong starting point, not a setup you are stuck with.
The Help Center inside your chat widget
You can show the Help Center right inside the chat widget so people search answers before they message you. In your chat widget settings, choose where the help link appears:
In the header
A small help icon at the top of the widget.
At the bottom
A text link under the message box, for example "Browse help center". You can change the wording.
Both places
Show it in the header and at the bottom for the most visibility.
The help link has its own color control under the widget Appearance settings. Leave it on None to match your launcher color, or pick a Solid color or a Gradient. The whole help experience follows your widget theme, so it always looks like part of your brand.
See which articles are working
Every article shows a Was this helpful? prompt. Each yes or no is counted per article, so you can see at a glance which articles answer questions well and which ones need a rewrite. Repeated votes from the same visitor are ignored, so the counts stay honest.
Text and labels
You can change the headings and labels on the Help Center to match your voice. Leave any field blank and it falls back to a sensible default, so you only edit the wording you actually want to change.
✅
The Help Center shares one library with your AI. Every article you publish here is the same content the AI uses to answer chats and tickets, so improving one improves the other.
Common questions
Do I need to write separate content for the Help Center?+
No. It is built from the same knowledge base articles the AI already uses. Publish an article once and it can serve both.
Can I keep some articles internal?+
Yes. Only articles you publish and mark public appear in the Help Center. Anything unpublished stays out of it.
Will customers still be able to reach a person?+
Yes. The widget help link sits a tap away from starting a conversation, so self-serve never traps anyone.
Growth & SEO
Site Intelligence (SEO suite)
Site Intelligence is OpsIQ's built-in SEO and search-visibility suite. It crawls your site like a search engine, tracks where you rank, researches keywords, watches backlinks and competitors, scans your local map presence, checks page speed, and turns it all into customer-ready reports — with an AI analyst that explains what to fix and can draft the fixes. It is a premium feature; when enabled it appears as Site Intelligence in the sidebar. Every domain's data stays separate — crawls, rankings and reports never mix between domains.
Site IntelligenceThe Site Intelligence overview: a site-health score from the latest crawl, live keyword rank tracking, an organic-clicks trend, and the three-step loop — crawl, track, let the AI draft the fixes.
Run a crawl — start here
A crawl is OpsIQ visiting your pages the way a search engine would, to find technical issues: broken links, missing titles, thin content, slow pages, indexing problems.
1
Start the crawl
On the Overview, click to start a crawl. OpsIQ queues it and works through your pages in the background; a status indicator shows progress.
2
Read the reports
When it finishes, open the issues and the page list. Each issue is grouped by severity so you tackle the biggest wins first.
3
Let the AI help
The AI analyst produces a plain-language brief of what is wrong and why it matters — and can generate suggested fixes you review before applying.
What Site Intelligence tracks
Crawls & site health
Scans your pages for technical SEO issues and lists every page with its problems. Re-run any time, or schedule it.
Rank tracking
Add the keywords you care about; OpsIQ checks where your site ranks and tracks movement over time.
Keyword research
Discover new keyword ideas to target, with the AI keyword coach to help prioritise.
Backlinks
See who links to you, refresh the list, and disavow links you do not want associated with your site.
Competitors
Add competitor domains and compare your visibility against theirs, with an AI competitor analysis.
Local (map) grid
Scan local-listing visibility across a geographic grid to see where you show up on the map, plus Google Business Profile tools.
Page speed
Run page-speed checks so you can fix slow pages that hurt rankings and conversions.
AI content
Generate content briefs and drafts aimed at the keywords you are targeting.
Reports
Build printable, customer-ready reports of everything above.
Connect Google for accurate data
Two Google connectors turn estimates into real numbers:
Google Search Console
Search
Pull the exact queries, clicks and impressions Google reports for your site, map your property, and surface ranking opportunities straight from Google's own data.
Google Analytics 4
Traffic
Bring your traffic and engagement data alongside your SEO data, so reports show visibility and behaviour together.
Scheduled refreshes & white-label reports
You do not have to run everything by hand. Scheduled refreshes re-run crawls, rank checks, keyword checks, backlink refreshes, local-grid scans and report generation on a cadence (daily or weekly depending on plan and volume). These run through the OpsIQ cron — see the Cron and automation section. Generated reports export as printable, customer-ready documents: agencies send each client a regular SEO update, and because every domain's data is separate, each client only ever sees their own.
✅
Some Site Intelligence features call external data providers and AI through OpsIQ's configured provider — they work out of the box when the suite is enabled for your plan. If a refresh does not run, confirm the OpsIQ cron is running (see Cron and automation).
Do I need to add anything to my site for SEO tracking?+
Crawls, rank tracking, keyword research and backlinks work without touching your site. For traffic and exact search data, connect Google Search Console and GA4.
Can I track more than one domain?+
Yes. Add each domain separately; their crawls, rankings and reports stay fully isolated from one another.
How often should I crawl?+
Weekly is plenty for most sites; crawl on demand after a big content or structure change. Set a schedule so you never forget.
Growth & SEO
Auto-Implement (SEO Agent)
Auto-Implement is the part of Site Intelligence that actually applies the fixes the crawl and AI analyst recommend, instead of only advising you. The agent works strictly from what Site Intelligence already found — it can never invent a change — and walks each fix through the same safe loop: a dry-run preview, your per-step approval, the live write, an automatic snapshot, and a re-crawl that proves the open-issue count went down. It is a Managed-AI-only feature; it appears as the Auto-Implement (rocket) action inside the Site Intelligence section, and it is off until you turn it on.
Auto-ImplementHow a session runs: the agent lists the fixes Site Intelligence already recommended, shows a dry-run diff of each one, applies the ones you approve over SSH or a hosted API, snapshots before every write, and re-crawls to prove the open-issue count dropped.
What it can change
The agent only ever applies fixes that Site Intelligence (or the AI analyst) already recommended for that domain. Across the supported platforms that covers:
Server config
sitemap.xml, robots.txt, and redirect, canonical and header rules in .htaccess (Apache / LiteSpeed) or the nginx config.
Redirect chains
Collapses a multi-hop redirect chain down to a single hop straight to the final URL, inside the same managed .htaccess block, so speed and link value stop leaking through the extra hops.
Page <head>
Missing or weak page titles, meta descriptions, canonical tags and structured-data (schema) blocks.
WordPress SEO
Yoast, Rank Math and SEOPress titles & meta, and image alt text, applied through WP-CLI on the SSH path or the REST API on the hosted path.
WordPress structured data
Adds JSON-LD (schema) to pages that are missing it. On the SSH path a small managed helper (a must-use plugin) prints the markup so it works with or without an SEO plugin; on the hosted path your SEO plugin carries it.
Internal links
Adds one relevant internal link inside existing WordPress content to rescue orphan pages and connect related posts. One link per page, never inside a heading, an existing link or a shortcode, and always approved by you first.
Thin-page content rewrites
Drafts full replacement content for thin pages (turned on by a crawl option, see below). Every draft is reviewed and approved by you before anything publishes, and the old content is kept so it can be restored.
Page cache (WordPress)
Turns on W3 Total Cache page caching when the crawl finds speed problems and that plugin is installed, so pages serve faster.
Shopify SEO
Product and collection SEO titles & descriptions, page and blog-article SEO, plus 301 redirects, through the Shopify Admin API.
Webflow SEO
Per-page SEO title and meta description through the Webflow Data API v2.
Prepare the fixes automatically (two crawl options)
The Site Intelligence Configure panel for a domain (its crawl settings) has two options that decide how much the agent lines up for you ahead of time. Both are off by default and both use AI credit, so you switch them on only when you want that work done for you.
Auto-prepare AI fixes after each crawl
Every crawl also writes the concrete fix content (titles, meta descriptions, alt text, schema, redirects) for what it found, so the fixes are ready to review and apply the moment the crawl finishes instead of being generated later on demand. Uses AI credit on each crawl.
AI content rewrites (thin pages)
The agent may draft full replacement content for thin pages. Nothing is ever published on its own: each draft appears as a change you review side by side and approve or reject, the previous content is kept so it is reversible, and it is limited to a few pages per pass. Uses AI credit per draft.
💡
Both options only prepare and draft work. Every change still goes through the same per-step approval, snapshot and rollback as any other fix, so turning them on never puts anything live by itself.
Two ways it connects
SSH / SFTP path
Self-managed
For sites on your own server, the agent connects over SSH/SFTP using credentials you store, edits the server config and page files directly, and runs WP-CLI for WordPress. Best when you have shell access and want full control of files.
Hosted-API path (no SSH)
No shell
For platforms that do not allow SSH, the agent works entirely through an official API connector — WordPress (REST + Application Passwords), Webflow (Data API v2) and Shopify (Admin API). Nothing is installed on the host.
💡
Wix and Squarespace have no public SEO-write API, so on those platforms Auto-Implement runs in advisory mode: it shows you the exact change to make (the precise title, meta or setting) for you to apply by hand. Everything else is read-only and safe.
Turn on the connectors
The agent reaches each platform through a connector:
Built in
Shopify and WordPress connectors ship with OpsIQ — just enable them under Connectors and add the store / site credentials.
From the Marketplace
Webflow, Wix and Squarespace install from Connectors → Marketplace, then connect the same way.
How a session runs
1
Pick the fixes
Open Auto-Implement (rocket) from the Site Intelligence section. It lists the issues Site Intelligence already found that it can fix on this domain.
2
Preview each change
For every fix the agent shows a dry-run diff — exactly what it will write — before anything touches the live site.
3
Approve step by step
You approve (or skip) each change individually. Nothing is applied without your explicit go-ahead on that step.
4
It writes, then snapshots
On approval the agent makes the live change over SSH or the hosted API and saves a snapshot first, so any change can be rolled back.
5
Prove it, live
As it applies each change the agent immediately re-checks that exact page and shows a per-step “fixed live” verdict, so you watch each fix land on the live page as it happens. At the end it re-crawls the whole site and confirms the open-issue count dropped.
Safety & billing
SEO-only
The agent can only do what Site Intelligence recommended for that domain — it cannot make arbitrary changes to your site or server.
Per-step approval
Every write is previewed as a diff and applied only after you approve that specific step.
Snapshot & rollback
A snapshot is saved before each write, so any change can be reverted.
Live per-step proof
Each changed page is re-checked the instant it is written and gets a “fixed live” verdict, so a fix is confirmed against the live page right away, not only in the closing re-crawl.
Content is never auto-published
Internal links and thin-page content rewrites are higher-impact, so they are always shown to you for approval and are never applied automatically, whatever mode you run.
Managed-AI only
Auto-Implement runs on Managed AI; it is blocked when a workspace is using its own (BYOK) keys.
Billing
AI tokens bill normally as you use them, plus one flat per-use fee per Auto-Implement session — both drawn from the same Managed-AI credit.
✅
Auto-Implement is off by default. Enable it on the AI configuration page (Auto-Implement card) and make sure the connector for your platform is connected first.
Does it change anything without asking?+
No. Every change is previewed as a dry-run diff and applied only after you approve that exact step. A snapshot is saved before each write so you can roll back.
Do I need SSH access?+
Not on WordPress, Shopify or Webflow — those work through their official APIs with no shell access. SSH is only one of the two paths, used when you want the agent to edit server config and files directly on your own server.
How do I know it worked?+
After applying the approved fixes the agent re-crawls the site and shows the open-issue count before and after, so you can confirm the fixes reduced the issues.
Will it rewrite or publish page content on its own?+
No. AI content rewrites are off until you turn them on in the crawl options, they are limited to a few thin pages per pass, and every draft is shown to you for side-by-side approval before anything publishes. The previous content is kept, so a rewrite can always be reverted.
Can I use it with my own AI keys?+
No. Auto-Implement is Managed-AI only and is blocked under BYOK. It bills AI tokens normally plus one flat per-use fee per session, from the same Managed-AI credit.
Growth & SEO
Promotion Studio
The Promotion Studio turns your website into a conversion engine. Design pop-ups, banners, slide-ins, top/bottom bars, full-screen takeovers, inline blocks and even country-based redirects — then show the right message to the right visitor at the right moment. Everything is delivered through the OpsIQ widget already on your site, so there is nothing extra to install. You design and save campaigns any time; they only show once you Publish them and the studio is switched on for your workspace.
Promotion StudioThe visual designer: a blocks palette on the left, your campaign on the canvas (here a personalised coupon pop-up using a {first_name} token), and the targeting + publish panel on the right.
The big picture
Campaign
What
One promotion — a pop-up, banner, bar, slide-in, full-screen, inline block or geo-redirect. Each has a goal: sales, lead, sign-up, chat, survey, announcement.
Design & versions
How
You build the look in the visual editor. Every save creates a new version, so you can always roll back — nothing is ever lost.
Targeting
Who
Who sees it: country, page, device, traffic source, returning vs new, schedule, and — with a connector — your logged-in customers.
Triggers
When
When it appears: instantly, on delay, on scroll, on exit-intent, when idle, on a click, after N pages, or from chat / ticket activity.
Analytics
Results
Live impressions, click-through, conversions, a drop-off funnel, country / page / device splits, A/B winners and an AI insight.
Launch your first promotion in 5 steps
1
Start from a template or blank
Open Promotion Studio and click New campaign, or pick a ready-made design from the Templates gallery. A draft opens in the designer.
2
Design it
Drag in blocks — headings, text, buttons, images, badges, stats, countdowns, forms, coupons, videos, ratings, spin-wheels. Style colours, gradients and 3D effects with the sliders. Preview Desktop / Tablet / Mobile, and use Free move to place anything anywhere.
3
Personalise it
Type tokens like {first_name}, {country} or {company} into any text. At show-time they become the visitor's real values.
4
Target & trigger
Choose who sees it (country, page, device, audience) and when it fires (delay, scroll, exit-intent). Leave a rule blank to mean everyone.
5
Check, then publish
Click Check for a quick pre-launch scan, then Publish. It goes live within seconds and starts collecting analytics.
Blocks you can build
Content
Core
Heading, paragraph, list, quote, image, icon, badge, stat, divider and spacer — the building blocks of any message.
Call to action
Core
Buttons with real actions: open a link, start a chat, create a ticket, copy a coupon, or jump to a page.
Urgency & capture
Premium
Countdown timers, forms (email / phone / text), coupon reveals and video embeds.
Gamified & feedback
Premium
Spin-to-win wheels, scratch cards, NPS / star ratings and multi-step funnels.
Layout & effects
Premium
Columns, progress bars, social share, social proof tickers, yes/no two-step, quizzes, and 3D effects — tilt, glow, parallax, glassmorphism.
Personalisation tokens
Type any of these in headings, paragraphs, buttons, badges, stats, lists or quotes. They are replaced with the visitor's live details the moment the promotion shows (always cleaned for safety):
Available tokens
From the visit: {country} {city} {device} {page_path} {utm_source} {referrer}
From your CRM: {first_name} {last_name} {email} {company} {segment} {lifecycle_stage}
From a connector: {balance_due} {unpaid_invoices} (logged-in customers only)
Targeting reference
Country & location
Show only in (or hide from) chosen countries, cities or timezones via GeoIP. Great for region-specific offers or a geo-redirect.
Pages & URLs
Limit to certain pages using equals / starts-with / contains / regex, and exclude pages too.
Device
Desktop, tablet or mobile — e.g. a slim bar on mobile, a modal on desktop.
Visitor type
New, returning, known (in your CRM) or anonymous; CRM segments, lifecycle stage, lead score or browser language.
Traffic source
By UTM (utm_source, utm_campaign) or referring site — e.g. only visitors from a specific ad.
Schedule & frequency
Start / end dates, time-of-day windows, and how often a person can see it (per session, per day, after they close / click / convert).
A/B traffic split
Show to a percentage of visitors and run variants head-to-head; the same person always sees the same variant.
Audiences (logged-in)
With a connector enabled, target by live account state — e.g. customers with unpaid invoices, or active subscribers.
Triggers
Pick how the promotion appears: Immediately, after a delay, on scroll depth, on exit-intent, when idle, on a click of an element, after a number of pages viewed, on form-abandon, or from chat / ticket activity. Developers can fire one from their own code with window.OpsIQPromo.fire('event').
Target logged-in customers (connectors)
This is what makes OpsIQ promotions special: connect a platform like WHMCS (or any connector that supports audiences) and the studio can target visitors by their live account state.
1
Enable an audience connector
Under Connectors, enable one that exposes audience facts (WHMCS does out of the box). Customers are recognised securely when logged into that platform — OpsIQ never trusts a typed-in email.
2
Add an audience rule
In the campaign's Targeting > Audience, require logged-in and add rules like unpaid invoices >= 1, subscription is past-due, or account credit > 0.
3
Personalise with their data
Use tokens such as {first_name} or {balance_due}. A "You have an overdue invoice" reminder writes itself.
✅
Audience targeting is fail-safe: if the connector cannot confirm a fact (or the visitor is not logged in), the promotion simply does not show — so a billing-targeted offer never reaches the wrong person. Building your own connector? See "Promotion audience targeting" below.
Connected commerce (the studio superpower)
Product cards from your store
Live data
A Product block pulls real items — name, price, sale price, image, link — straight from WHMCS, WooCommerce, Shopify or your OpsIQ billing. Tick "Keep fresh" and the card updates its price from the platform every hour while published.
Store-provisioned coupons
Coupons
A coupon block can create the real discount code in your store the moment you publish, so the code a visitor reveals always works at checkout.
Order-truth revenue
Attribution
Real orders from your platforms are matched back to campaigns hourly — by coupon code used or by the lead's email — so the revenue you see is from actual sales, not estimates.
Real social proof
Trust
The social-proof ticker can lead with genuine recent orders ("Ada ordered Starter Plan · 2h ago") — first name and item only, never emails or amounts.
Experiments & journeys
A/B variants & auto-winner
Split traffic across design variants; let the studio promote the statistical winner automatically, or hand traffic to the bandit optimiser which shifts visitors toward what converts as evidence comes in.
Holdout uplift
Reserve a slice of visitors who see nothing, so you can prove the campaign itself causes the lift.
Segment variants
Different content per audience on the SAME campaign — mobile visitors, big carts, returning customers — each segment gets its own version.
Trigger experiments
Variants can also test WHEN to appear: immediate vs delayed vs exit-intent, measured head-to-head.
Journeys (chaining)
Target by what someone did with another campaign — "saw campaign A but didn't convert" — to build multi-step promotion sequences.
Teasers
A small pill visitors can reopen after closing the campaign, so a closed pop-up is never gone for good.
Know what happened
Click heatmap
Designer
In the designer, toggle the heatmap to paint real visitor clicks over every block of your design.
Step funnel
Funnels
Multi-step campaigns show exactly where people drop off, screen by screen.
Compare campaigns
Studio
Put up to four campaigns side by side — impressions, clicks, conversions — best value highlighted.
Weekly story & digest
AI
Every Monday a digest lands in your notifications; the 📖 Weekly story button writes a plain-language summary with next steps whenever you want one.
Working comfortably
AI copilot & ideas
Chat with the design copilot to edit the canvas ("make the headline urgent, add a countdown"), get campaign ideas from your own traffic data, translate a campaign per country, or auto-fix a low design score.
Brand Kit import
One command reads your website and proposes your real brand colours and fonts; save and every picker leads with them.
Multi-screen funnels
Steps blocks get true per-screen editing — tabs for each screen, add or reorder screens, and the preview follows along.
Named versions & presence
Name important versions ("Launch candidate"), restore any of them, and see a warning when a teammate is editing the same campaign.
Device strip & rulers
See desktop, tablet and mobile side by side in one view; toggle pixel rulers for precise placement.
Hosted page & channels
Every campaign can also be a standalone hosted page for bios and QR codes, an email drip sequence for captured leads, or a one-click web-push draft.
Enterprise safety
Publish freeze windows (change-freeze periods), an emergency pause-all switch, approvals, audit trail and version rollback.
Do I need to add code to my site?+
No. Promotions are delivered by the same OpsIQ widget you already installed. Design, publish, done.
Will visitors see the same pop-up over and over?+
No — set frequency caps (per session / per day, or stop after someone closes, clicks or converts). Sensible defaults are applied.
Who can publish?+
Publishing, pausing, archiving and rolling back are limited to workspace owners and full administrators. Any team member can create and design drafts.
Privacy
Cookie consent studio
The Cookie Consent studio designs the cookie banner your visitors see, defines what counts as essential for your business, applies the right behaviour for each visitor's region, and — crucially — actually enforces consent so analytics and marketing tags do not run until the visitor agrees. The banner is delivered through the OpsIQ widget already on your site. It is a premium design studio; the banner shows only once you switch consent on for your workspace.
Cookie consentThe consent banner as visitors see it: your wording, your categories (essential is always on, the rest are the visitor's choice), and Accept / Reject / Preferences — with per-category enforcement behind it.
The studio tabs
Designs
Pick from a large library of banner designs and a full colour system — transparent, solid or gradient — to match your brand.
Style
Fine-tune wording, button labels, policy links, banner position, and how long a choice is remembered.
Categories
Define your own cookie categories and the wording visitors see. You decide what is essential — essential is always on; everything else is theirs to allow or refuse.
Cookies (scanner)
Scan your site and let OpsIQ AI auto-detect every cookie and tracker, categorise it, and write a plain-language purpose. This powers the preferences table and auto-blocking.
Law & Region
Choose how consent behaves by law (below), and turn on group-domain sharing, Google Consent Mode v2, and re-consent intervals.
Analytics
See live consent stats from real visitor choices — accept rates, by category — scoped to your workspace.
Get the law right automatically
Auto by region
Smart
EU/UK visitors get opt-in (nothing non-essential runs until they accept); US visitors get opt-out with a "Do Not Sell or Share" option. OpsIQ decides per visitor by location. Recommended.
Opt-in everywhere
Strict
Strict GDPR for all visitors — nothing non-essential until they accept.
Opt-out everywhere
Lenient
Tags run unless the visitor opts out.
Browser Global Privacy Control (GPC) and Do-Not-Track (DNT) signals are honoured whichever mode you pick.
How enforcement actually stops capture
Consent here is not just a banner — it controls what runs:
Per-category enforcement. When a visitor refuses a category, OpsIQ stops the matching capture — with analytics off, analytics tracking genuinely does not run, not just visually.
Auto-blocking your own tags. Tag any third-party script to stay inert until its category is granted. OpsIQ activates it the instant the visitor consents — and never before.
Auto-block a third-party tag
<!-- This tag stays dormant until the visitor grants the "marketing" category -->
<script type="text/plain" data-opsiq-consent="marketing"
src="https://example.com/ads-pixel.js"></script>
💡
Google Consent Mode v2 (Law & Region tab) emits the right gtag signals from each visitor's choice, so GA4 and Google Ads obey consent natively. Most sites do not need IAB TCF — that is only for sites running IAB-framework programmatic ads.
Share consent across your sites
Turn on group-domain sharing so a visitor who accepts on one of your sites is not asked again on the others in this workspace group — their choice carries across for the number of days you set. Turn it off for strict per-domain consent. Cookie Consent pairs with the Privacy & Compliance page, which keeps the consent ledger (proof of every grant and revoke).
Does refusing analytics really stop tracking?+
Yes. Per-category enforcement stops the matching capture at the source — it is not a cosmetic banner.
Do I need a developer?+
No for the banner — it ships through the widget. Only auto-blocking your own third-party tags needs a one-time markup change on those tags (shown above).
Where is the proof a visitor consented?+
On the Privacy & Compliance page: a searchable consent ledger of every grant and revoke by contact, channel, action and date.
Growth & SEO
Proactive messages
Proactive Messages reach out automatically the moment a visitor's behaviour matches a rule — before they ask. You build each as a rule with three parts: what should happen, when it should fire, and how often. Everything is delivered through the OpsIQ widget already on your site.
ProactiveEvery proactive rule is three choices: what happens (chat, banner, tour, push, email, webhook), when (conditions), and how often (cooldown).
The three parts of a rule
1
What should happen (action)
Show a chat bubble or on-page banner, start a Guided Tour, send a web push or email, assign to a department, or fire a webhook. Tokens like {{visitor_name}} and {{page_title}} become real values.
2
When it should fire (conditions)
Narrow who triggers it: page/URL, time on page, scroll depth, lead score, returning vs new, idle. With no conditions, the rule fires for every visitor — add at least one to target it. Conditions combine with AND.
3
How often (frequency)
Set a cooldown so the same person is not pestered — e.g. once per session or once per day. Each rule has an on/off status.
⚠️
The workspace toggle "Run time/idle rules hourly" lets server-side actions (email, push, webhook, assign) fire on a schedule for known contacts who are not currently on the page — so you can "email idle hot leads" automatically. It needs the OpsIQ cron running. Leave it off if you only want live on-page nudges.
Will it fire for everyone?+
Only if you add no conditions. Add at least one condition (page, lead score, returning…) to target the right visitors.
How do these relate to flows and tours?+
They work together: a proactive rule can start a Guided Tour, and a Chatbot Flow can be triggered by a proactive rule. Start with a single chat-message rule, then layer the others on.
Growth & SEO
Chatbot flows
Chatbot Flows script branching conversations inside your chat widget — greetings, keyword answers, guided paths — with no code. A flow is a set of connected steps (nodes): you ask a question, the visitor picks an option, and the flow sends them down the matching branch. Only Active flows run on your site.
How it worksChatbot flows
Flow vs the AI — when to use which
Use a flow
When the path is predictable and you want it identical every time — booking steps, a returns wizard, a "which plan?" chooser, collecting an email before handoff. Flows never improvise.
Use the AI
When questions are open-ended — "does this work with my setup?". The Customer Chat AI answers from your trained knowledge. A flow can hand off to the AI (or a human) at any step.
Triggers
Greeting
Runs as the opening message when a visitor first opens the chat.
Keyword
Runs when the visitor types a word you listed (e.g. refund, pricing, cancel).
After details / After delay
Starts once contact details are shared, or a set time into the conversation.
On chat end / Proactive
Runs as the chat wraps up (e.g. a rating), or is started by a Proactive Message rule.
Build one in four steps
1
Create the flow
Click New Flow, name it, pick a trigger type (and keywords if Keyword), save. It starts switched off.
2
Open the canvas
Click Edit Canvas — the visual builder where you add steps (messages, questions with buttons, branches) and connect them.
3
Add branches and a hand-off
For each choice, draw a branch to the next step. End paths by resolving, handing to the AI, or transferring to a human.
4
Enable it
Click Enable. The flow goes live in your widget immediately. Disable any time without losing the design.
Do flows replace the AI?+
No — they run side by side. Use flows for predictable paths and the AI for open-ended questions; a flow can always hand off to either.
Growth & SEO
Guided tours
Guided Tours are step-by-step walkthroughs that point at parts of your page with speech bubbles and a spotlight, guiding a visitor through onboarding or a new feature. They are fully themed and built in a visual designer with a live preview. A tour runs only when it is marked Active.
How it worksGuided tours
How a tour is built
Steps
Each step targets an element and shows a bubble with your text. Add as many stops as the walkthrough needs and order them.
Presets & theme
Start from a preset or design your own bubble — colours, gradients, spotlight — with a live preview on the right.
Trigger
Optionally link a Proactive Rule so the tour auto-starts when that rule fires (e.g. a returning visitor's first dashboard visit).
Active toggle
A tour is eligible to run only while Active is ticked. Untick to take it down without deleting it.
Build one in four steps
1
New tour
Click New Guided Tour, name it, and optionally link a Proactive Rule so it starts automatically.
2
Add steps
Add each stop: choose the element it points to and write the bubble text. Reorder until the path flows.
3
Design it
Pick a preset or style the bubble yourself. The live preview shows exactly what visitors see.
4
Activate
Tick Active and save. The tour can now run — on its own trigger, or started by a Proactive Message rule.
How do tours start?+
On their own trigger, or via a Proactive Message rule's "Guided tour" action — so you decide which visitors see which tour and when.
Growth & SEO
Conversion goals
Conversion Goals turn an activity you care about — an inbound webhook event, a chat message, a ticket resolution — into a recorded conversion with full attribution. When the activity fires, OpsIQ logs a conversion against the contact and ties it back to the campaigns, segments and sources that led there.
How it worksConversion goals
Define a goal in three steps
1
Pick the trigger activity
Click New conversion goal. Choose the activity type that counts as a conversion, or use a Quick-start preset — Stripe purchase, Demo booked, Newsletter signup or Subscription started.
2
Name it and set a value
Give the conversion a name (purchase, demo_booked, signup) and optionally a fixed value and an attribution window.
3
Save
Save and enable. From then on, whenever the activity fires, OpsIQ records a conversion against the contact with attribution to the preceding touches.
✅
Goals are already wired into inbound webhooks: any goal whose trigger matches an inbound event's type fires automatically the moment the event lands. Use the Inbound Webhooks page to connect Stripe, Calendly or any system that can POST JSON.
What can be a conversion?+
Any recorded activity — an inbound webhook event (payment.succeeded), a chat email capture, a ticket resolution — anything on the contact timeline.
Analytics
Custom dashboards
Custom Dashboards let you build your own view of the metrics that matter, instead of relying only on the standard Overview. Add the widgets you want, drag and resize them into the layout you like, save it, and share it with your team.
Custom dashboardsBuild your own board: add KPI, chart and list widgets, drag and resize them into the layout you want, then share it with the team.
Build one in three steps
1
Add widgets
Click Add Widget and pick the metric or chart you want to track. Repeat for everything you want on the board.
2
Arrange the layout
Drag widgets to reposition and drag their edges to resize. KPIs across the top, charts below — whatever reads best.
3
Save & share
Save the dashboard and share it with your team so everyone watches the same numbers.
✅
Keep separate boards for separate jobs — a "daily glance" board with live counts, and a "monthly review" board with trend charts — so each stays focused.
Growth & SEO
Outreach campaigns
Outreach is OpsIQ's 1:1 and bulk email engine: compose a personalised message or run a campaign to a CRM segment, with reply detection, send-time control, open/click tracking, a tracking pixel and one-click unsubscribe. It is consent-gated and CAN-SPAM / CASL compliant.
OutreachThe Outreach engine: send 1:1 or run campaigns to a segment, track opens and replies, and stay compliant with built-in unsubscribe and reply detection.
The four tabs
Composer
Write a personalised 1:1 email with {tokens} from the contact and CRM.
Campaigns
Send to a CRM segment, scheduled or now, with caps and send-time control.
Templates
Reusable message templates for repeated outreach.
Replies
Reply detection records responses and auto-stops follow-ups to anyone who replied.
How a campaign runs
1
Pick an audience
Choose a CRM segment (or upload a list). Suppression and consent are applied automatically.
2
Compose
Write the message with personalisation tokens; preview against a real contact.
3
Schedule & send
Send now or at the best time. A tracking pixel records opens; clicks and replies are attributed.
✅
Outreach is consent- and suppression-gated, includes a one-click unsubscribe on every send, and follows CAN-SPAM / CASL — replies automatically stop further follow-ups.
Analytics
Scheduled reports
Scheduled Reports email a chosen metric set to chosen recipients on a schedule — daily, weekly or monthly — as a printable, white-label PDF. Set it once and the report lands in inboxes automatically through the OpsIQ cron.
Scheduled reportsSet a report once — metric set, range, schedule, recipients — and OpsIQ emails a white-label PDF automatically on your cadence.
Set up a report
1
Choose what to send
Pick the metric set (traffic, SEO, sales, support…) and a date range.
2
Set schedule & recipients
Daily, weekly or monthly, at a time you choose, to one or more email recipients.
3
Save
Save and enable. The report generates and emails itself on schedule — no manual step.
💡
Scheduled reports run through the OpsIQ cron — if a report does not arrive, confirm the cron is running (see Cron and automation).
Privacy
Privacy & compliance
The Privacy & Compliance page is the single place to show an auditor you handle personal data responsibly: the consent ledger, the admin access log, your data residency and retention policy, and a ready-to-print DPA — in one tabbed view. Only full administrators can open it.
Privacy & complianceOne auditor-ready screen: a searchable consent ledger (grants/revokes by channel), an access log of who touched data, residency/retention settings, and a printable DPA.
The four tabs
Consent ledger
A searchable record of every consent grant and revoke — by contact, channel (email, push, SMS, in-widget), action, source and date. Your proof a contact agreed (or withdrew).
Access log
Who on your team viewed, edited, exported, erased or messaged a contact's data — with the admin, contact, action, stated reason and IP. Exactly what a regulator asks for.
Residency & retention
Declare where this workspace's data lives, set how many days activity rows are kept (0 = forever), and record your data controller and DPO.
DPA template
A printable Data Processing Addendum that fills in your controller, address, DPO, residency and retention. Print or save as PDF.
✅
Privacy & Compliance pairs with the Cookie consent studio (which collects consent) and the Export page (which produces the data copy for a DSAR). See also Cron and automation for the nightly retention cleanup.
Connectors
Connect your platforms
Connectors link OpsIQ to external platforms: e-commerce stores, billing systems, payment processors, email providers, and custom APIs. Once connected, the AI can look up orders, customer data, subscriptions, and more — and take actions with your approval.
How it worksConnectors
Pre-installed connectors
WHMCS
Billing
Web hosting billing: clients, services, tickets, invoices, domains, servers.
Local business: reviews, posts, Q&A, insights. Uses OAuth.
Amazon SES
Email
Email delivery: send transactional emails via Amazon SES.
Postmark
Email
Email delivery: send transactional emails via Postmark.
Resend
Email
Email delivery: send transactional emails via Resend.
SendGrid
Email
Email delivery: send emails and manage templates via SendGrid.
Mailgun
Email
Email delivery: send emails via Mailgun.
Installing a connector
1
Go to Connectors
Navigate to Connectors in the admin sidebar.
2
Find the connector
Browse the list or search. Connectors are grouped by category.
3
Enable it
Click the connector and toggle Enable.
4
Enter credentials
Fill in the required fields: API key, URL, tokens, etc. Each connector has specific requirements documented in its settings panel.
5
Test connection
Click "Test Connection." A green result means the connector can reach the external platform. A red result shows the error.
6
Configure features
Choose which features to enable: knowledge sync, webhook sync, AI actions. Not all connectors support all features.
What connectors give you
AI context
The AI can look up customer data, orders, subscriptions, and more through the connector. When a customer chats, the AI has real platform data to reference.
AI context (connector authors)
Your connector's ContextProvider feeds the ticket-AI a read-only account summary of the ticket owner. Resolve the customer by <code>customer_id</code> when known; otherwise — on ticket auto-replies, where the ctx flag <code>customer_trust_email</code> is true — look the account up by <code>customer_email</code> (the verified ticket sender). Remote platforms expose a <code>/context/customer-by-email</code> endpoint and the connector calls it. This is what makes the AI quote a real balance/invoice instead of saying “please log in.” Honour the operator's data-class toggles (<code>customer_sections</code>, <code>customer_allow_credit</code>) and stay strictly read-only — never emit secrets.
Customer directory (connector authors)
Your connector's IdentityProvider feeds three universal ticket lookups: <code>lookupCustomerById()</code> (customer card), <code>lookupCustomerServices()</code> (product/service table), and <code>listCustomers($query,$limit)</code> — the "Search customer or type email" picker on the native Compose-New-Ticket form. Return rows of <code>{id, external_id, name, email, company, phone, platform, platform_label}</code>. <strong>Remote rule:</strong> if your customers live in another database or service, fetch them over your platform's API inside these methods — never read the other system's tables directly (in the OpsIQ DB they're empty placeholders, which is why a local read returns an empty picker). Gate the remote path on your configured API URL; keep a local read only as a same-DB fallback.
When inbound email becomes a native ticket, OpsIQ detects the sender by calling <code>lookupCustomerById(0, ['email'=>$sender])</code> across every connector; the first match "owns" the customer and its <code>platform</code> slug is stamped on the <code>ticket.created</code> event as <code>_pipe_owner_platform</code> (empty = guest). So a WHMCS-customer email opens a ticket in WHMCS (WHMCS numbering, mirrored as one), while an unknown sender stays a native guest. <strong>If your connector mirrors native tickets onto its own platform</strong>, your <code>ticket.created</code> handler must gate on this: <code>if (array_key_exists('_pipe_owner_platform',$payload) && $payload['_pipe_owner_platform'] !== '<your-slug>') return;</code> — the key is absent on non-piped (chat/manual/AI) tickets, so those mirror as before. Per-department control lives under Team & Departments → Open tickets via email (Anyone / Customers only / Off).
Actions
The AI can perform actions through the connector: create tickets, update orders, cancel subscriptions — all with your approval through the Trust Layer.
Knowledge
Connectors contribute platform-specific knowledge articles to the AI. Shopify connector adds e-commerce troubleshooting; WHMCS connector adds hosting knowledge.
Webhooks
Some connectors register webhooks with the external platform for real-time event notifications (new orders, ticket updates, etc.).
Sales tracking
E-commerce connectors feed revenue data into the Sales dashboard for attribution and analytics.
💡
Connectors are workspace-scoped. Each workspace can have different connectors enabled with different credentials. A WHMCS workspace uses the WHMCS connector; a Shopify workspace uses the Shopify connector.
Can I use multiple connectors at once?+
Yes. You can have Shopify for orders and Stripe for payments in the same workspace. The AI merges data from all enabled connectors.
What if my platform is not listed?+
Use the Connector Builder to create a custom connector for any platform with a REST API. Or check the Marketplace for community-built connectors.
Do connectors work with self-hosted OpsIQ?+
Yes. Connectors work identically in both cloud and self-hosted editions.
Connectors
How AI actions work
Every connector declares a set of actions: things the AI can do through the external platform. Actions are the bridge between "the AI says" and "the AI does."
AI actionsA request becomes a declared action — typed read/write/delete — that is permission-checked, confirmed, then executed and reported.
The action lifecycle
1
Customer asks for something
"Cancel my subscription." The AI identifies this requires the "cancel_subscription" action.
2
AI checks permissions
Is this action allowed? Is it enabled? Does the current user have the right role?
3
AI gathers parameters
The action needs a subscription ID. The AI looks it up from the customer context or asks the customer.
4
Confirmation
For destructive or high-impact actions, the AI asks for confirmation before executing.
5
Execution
The action calls the external platform API.
6
Result
The AI reports the result to the customer.
Action types
Read actions
Look up data without changing anything. Examples: list_orders, get_customer. Safe, no confirmation needed.
Write actions
Create or modify data. Examples: create_ticket, update_order. May require confirmation.
Declared in actions.json — generic API calls defined declaratively.
Capability tags
Optional per-action "capability" field in actions.json — a connector-neutral class tag (e.g. "tickets" for a ticket read/lookup, "ticket_create" for opening a ticket). OpsIQ gates the whole class uniformly across every connector: ticket reads drop out of the AI when the operator turns off AI Ticket Awareness, and ticket creation is reserved for OpsIQ's own composer (so a connector's create tool can't duplicate it). Declare it and your connector conforms — OpsIQ never needs to know your action names. The Connector Builder exposes it as a Capability dropdown per action.
Code actions
Implemented in PHP in the connector class. Full control over logic.
Example action definition
{
"lookup_order": {
"label": "Look up an order",
"description": "Find an order by ID or email",
"method": "GET",
"endpoint": "/admin/api/2024-01/orders.json",
"params": {
"order_id": { "type": "string", "label": "Order ID" },
"email": { "type": "email", "label": "Customer email" }
}
}
}
Connectors
Build a connector
The Connector Builder lets you create a complete connector for any platform with a REST API. No coding required for basic connectors.
Build a connectorPoint the builder at any REST API — set auth, base URL and actions, test it, and package a shippable connector. No code needed.
Connector Builder wizard
1
Name and describe
Give your connector a name, slug, description, and category.
2
Set authentication
Choose: API key (header or query), Bearer token, Basic auth, or OAuth 2.0 (with PKCE).
3
Define the base URL
The root URL for all API calls. Example: https://api.example.com/v2
Write knowledge base articles specific to this platform.
6
Test
Enter test credentials and run each action to verify it works.
7
Package
Generate the connector package: actions.json, knowledge.json, profile.json, and optionally PHP code.
Authentication types
API key
A static key sent in a header or query parameter. Simplest method.
Bearer token
Token sent in the Authorization header. Common for modern APIs.
Basic auth
Username and password encoded in the Authorization header.
OAuth 2.0
Full authorization code flow with PKCE. OpsIQ handles redirect, exchange, and refresh via OAuthHelper.
Pagination styles
Offset
Uses offset and limit parameters. Example: ?offset=100&limit=50.
Page
Uses page number. Example: ?page=3&per_page=50.
Cursor
Uses a cursor token from the previous response.
Link header
Uses the Link response header with rel="next".
Advanced: custom PHP code
Custom connector PHP example
<?php
namespace OpsIQ\Connectors\MyPlatform;
use OpsIQ\Connectors\AbstractConnector;
class MyPlatformConnector extends AbstractConnector
{
public function identifier(): string { return "myplatform"; }
public function label(): string { return "My Platform"; }
public function testConnection(): array
{
$resp = $this->http("GET", "/me");
return $resp["ok"]
? ["status" => "ok", "message" => "Connected"]
: ["status" => "error", "message" => $resp["error"]];
}
protected function runAction(string $action, array $params): array
{
return match ($action) {
"list_customers" => $this->http("GET", "/customers", [
"query" => ["page" => $params["page"] ?? 1],
]),
default => ["error" => "Unknown action: $action"],
};
}
}
Mirror tickets into the native ticket system
When your platform owns a ticket, mirror it into OpsIQ via OpsIQ\Tickets\TicketService::create() (and addReply() for follow-ups). Emit and subscribe to the universal ticket events in your connector's subscribers() method — ticket.created, ticket.replied, ticket.updated, ticket.deleted. Auto-reply, escalation, SLA and CSAT all hook the same events, so you inherit them with no extra code.
Push attachments correctly
Hand an attachments array to create()/addReply(). Each item carries the file in one of three shapes:
content_b64
Base64 of the RAW file bytes — use for files behind auth (most inbound cases). OpsIQ decodes and re-hosts it under /opsiq/uploads/ via the universal AttachmentIngest. The most portable shape.
url / source_url
A public https URL (e.g. a Zendesk content_url). Must be https; passes an SSRF / allowlist check before it is stored.
stored_path
A path under /opsiq/uploads/ you already wrote (what the native composer uploader produces).
Items also accept filename, mime_type and size_bytes. Caps: 12 MB/file, ~24 MB total, 10 files per call. Most platform read APIs return attachment filenames only (not bytes), so the reliable inbound pattern is: read the bytes where your code already runs — inside the platform, or from the webhook payload — base64 them, and ship them as content_b64 on the event.
Outbound (OpsIQ → your platform). When an agent attaches a file, the ticket.replied payload gives you the reply's files as stored_path items under /opsiq/uploads/. Read them and push in your platform's own format — and check the platform docs, the encoding matters: WHMCS wants base64_encode(json_encode([[name,data]])) (JSON, not serialize); Zendesk uploads raw bytes to /uploads.json for a token then sets comment.uploads; Gmail sends a multipart/mixed RFC-822 message base64url-encoded in raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).
Remote platforms: API + webhook, never another app's tables
If your platform is a separate app or database (a hosted SaaS, a remote WHMCS, a different DB on the same server), never write its tables directly — a cross-database write lands on whatever connection is active and silently misses the real rows. Always: outbound = call the platform's signed REST API (replies, status, department, deletes); inbound = the platform POSTs a signed webhook, your handleWebhook() verifies it and fires the matching ticket.* event. To stop a mirror loop, tag what you push with an origin marker (e.g. mirror_origin:'opsiq'); the platform echoes it on the webhook and your inbound handler skips its own echoes. Check OpsIQEvents::isMirroredEvent() at the top of every handler.
Mirror status, priority & department
A reply moves status automatically — an agent reply → answered, a customer reply → customer_reply; mirror that the same way. For explicit changes subscribe to ticket.updated and read payload['changes'] (e.g. {status:'closed'}).
Status: OpsIQ's canonical set is open, customer_reply, answered, in_progress, pending, closed. Keep a small two-way map to your platform's vocabulary, and make sure your column actually accepts the values you write (an ENUM missing a value gets silently dropped to empty by some databases). Department: the OpsIQ department id is meaningless on your side — never send it. Send the descriptor (name / email / slug from opsiq_departments) and resolve it against your own departments by email → name → slug, so “Billing Department” lands in your Billing department instead of general. Trigger on both ticket.escalated and a department_id change in ticket.updated.
💡
Status / priority / subject / department / delete mirroring is gated by per-connector toggles (mirror_status_changes, mirror_priority_changes, mirror_subject_changes, mirror_department_changes, mirror_deletes) read through the shared OpsIQ\Connectors\MirrorOptions helper. Embed that block in your settings.json and every ticket-mirror connector reads the toggles identically.
Link a ticket to a product / service
If the customer chose a specific product when opening the ticket, stamp a hint so the agent sees a focused service card (with a one-click "view other products" modal for the rest). Pass any of these to create():
related_service_id
Preferred — the service id exactly as it appears in your IdentityProvider::lookupCustomerServices() list (each service's id). Unambiguous match.
related_service_label
A platform service-code, e.g. WHMCS S396 (service 396) / D11 (domain 11). OpsIQ decomposes the optional type-letter + id and matches your service list, with a type guard so a domain code never matches a product of the same id. Expose a matching ref on each service for an exact match.
related_domain
A domain name; matched as a substring against each service's detail / domain.
💡
Build the attachment items once and let OpsIQ\Tickets\AttachmentIngest re-host content_b64 / pass URLs through — never write platform-specific re-hosting in core. Reference: src/Tickets/AttachmentIngest.php and persistAttachments() in opsiq/includes/TicketService.php.
⚠️
Action keys must be 3-80 characters, lowercase, letters/numbers/underscores. After adding new AJAX routes, run php tools/gen_route_registry.php.
Connectors
Connector recipes
Step-by-step recipes for common connector setups.
RecipesEach recipe is a checklist you follow top to bottom — here, Shopify with real-time order webhooks, verified by a test order.
Recipe: Shopify with real-time webhooks
Scenario:
Goal: Connect Shopify with automatic order sync and GDPR compliance.
What to do:
1. Create a custom app in Shopify admin (Settings > Apps > Develop apps).
2. Grant scopes: read_orders, read_customers, read_products, write_customers.
3. Copy the Admin API access token.
4. In OpsIQ Connectors > Shopify, enter store domain and token.
5. Click Test Connection.
6. Enable Webhook sync — OpsIQ registers order/customer webhooks automatically.
7. GDPR webhooks register automatically (data_request, customers/redact, shop/redact).
8. Verify: place a test order, check it appears in OpsIQ Sales within 30 seconds.
Recipe: WHMCS integration
Scenario:
Goal: Connect WHMCS so AI can look up clients, services, tickets, and invoices.
What to do:
1. In WHMCS admin, Setup > Staff Management > Manage API Credentials. Create a key.
2. In OpsIQ Connectors > WHMCS, enter URL, API identifier, and secret.
3. Click Test Connection.
4. Install the WHMCS module addon for ticket relay.
5. Verify: ask the admin AI "Find client [email protected]" — WHMCS data should appear.
Recipe: Stripe payments
Scenario:
Goal: Track Stripe payments and let AI look up transactions.
What to do:
1. In Stripe Dashboard > Developers > API keys, create a restricted key (read: Customers, Charges, Invoices, Subscriptions).
2. In OpsIQ Connectors > Stripe, enter the restricted key.
3. Test Connection.
4. Add webhook endpoint in Stripe: https://your-domain.com/connectors.php?slug=stripe
5. Select events: charge.succeeded, invoice.paid, customer.subscription.updated.
6. Copy the webhook signing secret to OpsIQ.
7. Verify: make a test payment, check it in OpsIQ Sales.
Recipe: Google Business Profile
Scenario:
Goal: Connect GBP for review management, posts, and insights.
What to do:
1. Create a Google Cloud project, enable Business Profile API.
2. Create OAuth 2.0 credentials (Web application).
3. Set redirect URI: https://your-domain.com/connectors.php?slug=google_business_profile
4. In OpsIQ, enter Client ID and Client Secret.
5. Click Authorize, sign in, grant access.
6. Select your business location.
7. Verify: reviews, posts, and insights should appear.
Connectors
Extend the CRM & Site Intelligence
OpsIQ subsystems are open for extension. A connector can plug a new capability into the CRM or Site Intelligence with no changes to OpsIQ core, via the platform capability registry (\OpsIQ\Platform\CapabilityRegistry). Declare the capability, implement its small method set, ship the connector — OpsIQ discovers it and wires it into the UI, the Customer 360 timeline and the install prompts.
Extend CRM & SIA connector declares capabilities (calendar, enrichment, rank data, analytics…) and OpsIQ auto-wires them into CRM and Site Intelligence — no core changes.
Declare capabilities
Declarative (settings.json)
Add a <code><domain>_capabilities</code> array — best for no-code/marketplace connectors. Domains: <code>crm</code>, <code>site_intelligence</code>.
In code (connector.php)
Implement <code>crmCapabilities()</code> / <code>siCapabilities()</code> returning the same descriptors.
Declare a CRM calendar provider (settings.json)
Scenario:
Goal: make a calendar connector appear in the CRM Schedule-meeting panel.
<code>createEvent($settings,$params)</code> → {success,event_id,html_link,meet_link}; <code>listEvents</code>; <code>freeBusy</code>. Driven by \OpsIQ\CRM\CalendarBridge.
crm / enrichment
<code>enrich($settings,$params)</code> → {success,traits}. Driven by \OpsIQ\CRM\EnrichmentBridge (also runs automatically on company create when a provider is connected).
crm / esign
<code>sendForSignature($settings,$params)</code> → {success,envelope_id,sign_url}. Driven by \OpsIQ\CRM\EsignBridge.
site_intelligence / local_listing
<code>listLocations</code>, <code>listReviews</code>, <code>getInsights</code>. Ships via the Google Business Profile connector.
site_intelligence / rank_data
<code>keywordRanks($settings,$params)</code> → {success,ranks}. Driven by \OpsIQ\SiteIntelligence\RankDataBridge. Ships: SerpApi connector.
analytics / web_analytics
<code>report($settings,$params)</code> (sync/export) + <code>ingest($settings,$events)</code> (import). Driven by \OpsIQ\Analytics\WebAnalyticsBridge. Ships: Google Analytics (GA4) connector — Data API for reports, Measurement Protocol for import. Analytics is open for connectors like CRM + Site Intelligence (domain <code>analytics</code> / <code>analytics_capabilities</code>).
payments / payment_provider
<code>listPayments</code>, <code>customerPayments</code>, <code>createPaymentLink</code>. Driven by \OpsIQ\Payments\PaymentsBridge — show a customer's payments on the CRM timeline + send a payment link on a deal. Ships: Stripe Payments connector. Domain <code>payments</code> / <code>payments_capabilities</code>.
mailbox / email_sync
<code>listMessages</code> + <code>sendMessage</code>. Driven by \OpsIQ\Mailbox\MailboxBridge — a customer's emails on the Customer 360 timeline + send email from a deal. Ships: Gmail + Outlook/Microsoft 365 connectors. Domain <code>mailbox</code> / <code>mailbox_capabilities</code>.
Shared OAuth app + ONE redirect
All Google connectors share ONE app via \OpsIQ\OAuth\SharedGoogleApp — set <code>google_oauth_client_id</code>/<code>_secret</code> once and Calendar, Analytics, Business Profile + Gmail all work (the per-connector "(optional)" fields are overrides). They also share ONE redirect URI — <code><site>/connectors.php?oauth=callback</code> (no per-connector slug) — because Google exposes no API to add redirect URIs to an app; OpsIQ recovers the connector from the signed OAuth <code>state</code> nonce. Register that single URI once and every Google connector (present + future) authorizes with no further Console setup. Return <code>SharedGoogleApp::resolve(...)</code>’s <code>redirect_uri</code> from your <code>oauthParams()</code>; never hard-code a per-slug redirect. Microsoft connectors do the same via \OpsIQ\OAuth\SharedMicrosoftApp (<code>microsoft_oauth_*</code>).
Import buttons are capability-gated
The <strong>Import</strong> (historical backfill) and <strong>Import customers</strong> buttons show ONLY for connectors that actually implement them — detected by reflection, so there is no flag to declare. Override <code>backfill()</code> or <code>backfillChunk()</code> to earn the Import button; override <code>listCustomers()</code> (return {email, first_name, …} pages) to earn Import customers. Inherit the <code>AbstractConnector</code> no-op and the button stays hidden, so the UI never offers an import a connector cannot perform.
AI across buses
The CRM agent proposes and books meetings off deal signals (\OpsIQ\CRM\MeetingProposer → CalendarBridge), and auto-enriches new accounts — the “AI operates the CRM” loop, executed across connector buses.
Client-chat ticket lookup (fetchTicket())
Two-tier, no core changes
When a visitor references a ticket number in the client chat ("what's the status of T-000123?"), OpsIQ resolves it in two tiers. <strong>Tier 1</strong> reads the universal native store <code>opsiq_tickets</code> — every connector with <code>inbound_ticket</code> mirrors its tickets there, so synced tickets just work for ALL connectors with zero per-connector code. <strong>Tier 2</strong> is a live fallback for OLD tickets that were never mirrored: core calls an OPTIONAL <code>fetchTicket()</code> on each enabled connector that implements it. It is <strong>duck-typed</strong> (discovered by <code>method_exists()</code>, like <code>contextProviders()</code>/<code>audienceCatalog()</code>), so the signed <code>ConnectorInterface</code> is untouched and connectors that don't need it (email/chat sources that create tickets natively) simply omit it.
⚠️
Ownership is mandatory and yours to enforce. <code>fetchTicket()</code> receives the VERIFIED visitor identity in <code>$ctx</code> (<code>client_id</code> + <code>client_email</code> — the same verified identity the client chat AI uses). Resolve the platform customer from that identity and query ONLY that customer's tickets, then re-check ownership on the detail record. Return <code>null</code> on any miss, mismatch, or error — never another customer's data. A return of <code>null</code> degrades gracefully to "couldn't find that ticket".
connector.php — the fetchTicket() contract (reference: connectors/whmcs, zendesk, opsiq_saas)
<?php
// connector.php — OPTIONAL universal client-chat ticket resolver (Tier 2).
// Only add it if your platform keeps its OWN ticket store that may hold tickets
// not yet mirrored into opsiq_tickets. Return the normalised array below, or null.
//
// $ref = ['mode' => 'id'|'tid', 'value' => string] (from extract_ticket_ref)
// $ctx = ['client_id' => int, 'client_email' => string] (VERIFIED visitor)
// $settings = your connector settings
public function fetchTicket(array $ref, array $ctx, array $settings): ?array
{
try {
$email = trim((string)($ctx['client_email'] ?? ''));
$cid = (int)($ctx['client_id'] ?? 0);
if ($cid <= 0 && $email === '') return null; // no verified identity → refuse
// 1) Resolve THIS visitor on your platform (by verified email/id).
// 2) List ONLY their tickets and match $ref against the ticket number/id.
// 3) Re-confirm ownership on the detail record before returning.
// On any miss/mismatch/error → return null (never leak).
return [
'tid' => 'T-000123', // the customer-facing reference
'id' => 123, // your internal id
'status' => 'open',
'subject' => '…',
'department' => 'Billing', // '' if your platform has none
'priority' => 'high',
'opened_at' => '2026-06-29 10:00:00',
'last_reply' => '2026-06-29 12:00:00',
'message' => 'opening message text',
'replies' => [ // oldest → newest; opening message may be first
['who' => 'You', 'date' => '…', 'message' => '…'],
['who' => 'Staff', 'date' => '…', 'message' => '…'],
],
];
} catch (\Throwable $e) {
error_log('[yourslug][fetchTicket] ' . $e->getMessage());
return null; // graceful degrade
}
}
How the platform uses it
Discovery
<code>CapabilityRegistry::providers($domain,$type)</code> lists providers with installed/enabled/ready status (filesystem-based; DB only for the enabled flag).
Selection
<code>CapabilityRegistry::active($domain,$type)</code> returns the first ready provider with its loaded connector and settings — bridges call this instead of hardcoding slugs.
Notify-to-install
Where a feature needs a capability that is not connected yet, the UI shows a one-click Connect/Install prompt — never a dead control.
Full guide
See <code>connectors/PLATFORM_CONNECTORS.md</code> (CRM + Site Intelligence) and <code>connectors/CRM_CONNECTORS.md</code> in the package.
Connectors
Customer self-service lookups & refunds (build your connector for customer chat)
Signed-in customers can ask the customer chat AI about their OWN account — "my balance", "my orders", "did support answer my ticket" — and, if the business enables it, request refunds. All of it is powered by YOUR connector's declarations: no OpsIQ core changes, no platform hardcoding. The AI calls your lookups as native tools (it cannot invent one), identity is locked server-side to the verified customer, and results are automatically trimmed for the AI.
Declare a customer lookup
In your <code>actions.json</code>, a read-only action becomes customer-callable with ALL THREE: <code>"scope":"client"</code>, <code>"requires_confirmation":false</code>, <code>"is_destructive":false</code>. ⚠️ The value <code>customer</code> is NOT valid for scope — use <code>client</code> or <code>both</code>.
The identity rule (mandatory)
Name your identity parameter from the standard set — <code>client_id</code>, <code>customer_id</code>, <code>client_identifier</code>, <code>customer_identifier</code>, <code>account_id</code>, <code>email</code>, <code>customer_email</code>. OpsIQ locks and auto-fills it from the platform-verified signed-in customer; the AI never sees or chooses identity. A non-standard name fails closed (denied, never leaked).
What must stay admin-only
Anything not scoped by that identity: fetch-by-bare-id (<code>order_id</code>/<code>ticket_id</code> alone), store-wide lists, free-text searches. Those are cross-customer leaks on any platform — keep them <code>"scope":"admin"</code>.
Refunds — what your connector provides
Two raw operations, policy-free: (1) a payment-verification read filterable by identity AND a transaction reference (your API must AND the filters), e.g. <code>whmcs_get_transactions</code>; (2) a refund execute action (<code>scope:"admin"</code>, <code>requires_confirmation:true</code>, <code>is_destructive:true</code> — never customer-exposed), e.g. <code>whmcs_refund_order</code>. The business picks both keys in Settings → Client Chat; OpsIQ re-verifies the payment server-side, applies the business's policy box (amount cap, age window, monthly limit), issues inside the box, and files a review ticket for everything else.
No-code builder
The Connector Builder's action editor has the same controls: set "Who can use it" to Signed-in customers, leave both write checkboxes off, and use a standard identity parameter name.
Reference implementations
The "Customer Self-Service" entries in <code>connectors/whmcs/actions.json</code>, <code>woocommerce/actions.json</code>, <code>oscommerce/actions.json</code>; full contract in <code>connectors/README.md</code> §8.1–8.2 and <code>ConnectorInterface::registerActions()</code>.
Connectors
Promotion audience targeting (promo_audience)
Let the Promotion Studio target campaigns by LIVE client and billing state from YOUR platform — "has an unpaid invoice", "order pending", "subscription cancelled". Any connector (pre-installed, marketplace, or one you build yourself) joins by implementing two small methods. No OpsIQ core changes, no platform hardcoding: your connector appears as a platform in the studio Targeting tab with its own dropdown of facts, and several connectors can be enabled side by side.
Promo audienceYour connector answers live billing facts for the logged-in visitor; the studio targets on them — and fails closed so a billing offer never reaches the wrong person.
How it works
1
Declare your facts
Implement audienceCatalog() on your connector class. It returns a label and the list of keys your platform can answer. Each key shows up in the studio dropdown under your platform name.
2
Answer for one client
Implement audienceFlags(array $identity). OpsIQ calls it at delivery time with the VERIFIED logged-in visitor identity (from the widget identity token — the same identity the client chat AI uses). Return a flat key => value map.
3
Done
Enable the connector. The Promotion Studio Targeting tab grows a "Client & billing" section listing your platform; admins build rules like "unpaid_invoices >= 1"; every fact also becomes a personalization variable such as {unpaid_invoices}.
connector.php — the complete promo_audience contract
Add <code>'promo_audience'</code> to your connector's <code>capabilities()</code> array so the platform and marketplace list it as audience-capable (discovery also works from method presence, but declaring it is the clean signal). The pre-installed <code>connectors/whmcs</code> connector is the full reference implementation.
Key naming
Lowercase snake_case, 2-60 chars, matching ^[a-z0-9_]+$. Types: number, text, bool. Undeclared keys returned by audienceFlags() are still usable in rules, but declare everything you support so admins can see it.
Identity is verified
The $identity array comes from the signed widget identity token issued by the customer site at login — never from client-supplied fields. If your platform cannot resolve the identity, return an empty array.
Fail closed — always
On ANY error (API down, client not found, timeout) return []. A rule whose fact is missing makes the campaign NOT show. A billing-targeted popup must never reach the wrong person; OpsIQ enforces this in the rule matcher too.
Performance
audienceFlags() is called at most once per connector per page view, and ONLY when a published campaign actually uses your platform's rules. Anonymous visitors cost you zero calls. Keep it to 1-2 API calls; OpsIQ memoizes within the request.
Operators provided for free
Admins combine your keys with =, !=, >, >=, <, <=, contains, is set, is empty — you only supply values.
Personalization tokens
Every fact doubles as a variable in campaign copy: {unpaid_invoices}, {client_status}, plus the built-ins {first_name} and {client_email}. Values are sanitized before rendering.
No-code marketplace connectors
Automatic facts
Declarative (JSON-only) marketplace connectors get promo_audience for FREE: if your connector declares customers/users, invoices, orders or subscriptions resources, OpsIQ derives customer_status, unpaid_invoices, amount_due, pending_orders, active_subscriptions and subscription_status from your existing search actions. No code at all.
Custom catalog (settings.json)
Add an audience_capabilities object — {"label": "My Platform", "keys": [{"key": "open_carts", "label": "Open carts", "type": "number"}]} — to control exactly which facts (and labels) appear in the studio dropdown.
Testing your provider
1
Enable the connector
Connectors > your connector > Enable. Then open any campaign's Targeting tab — your platform must appear under "Client & billing (connectors)".
2
Build a rule
Add: Your platform · a key · >= · 1 and set "Logged-in clients only". Save and publish.
3
Verify both directions
Log in to your platform as a client who matches the rule (popup must show) and as one who does not (popup must stay hidden). Logged-out visitors never match logged-in rules.
Fire a campaign from your own code (custom trigger)
Why
Beyond the built-in triggers (delay, scroll, exit-intent, idle, click, pages-viewed, chat / ticket activity), you can fire a campaign from anywhere in your site or connector front-end — after a successful checkout step, when a cart is abandoned, when your SPA changes route, etc.
How
Set the campaign trigger to <strong>Custom</strong> with an event name (e.g. <code>checkout_failed</code>), then call the global hook from your page:
your site / connector front-end JS
// Any campaign whose Custom trigger event matches will be evaluated
// (it still respects targeting, frequency caps and audience rules).
window.OpsIQPromo && window.OpsIQPromo.fire('checkout_failed');
💡
Firing an event never bypasses targeting or frequency — it only releases the “when”. The campaign still has to pass every rule (geo, audience, consent, caps) before it shows.
✅
The full how-to-use guide (designing, blocks, analytics, A/B, publishing) lives in the in-app Help Center under <strong>Engage → Promotion Studio</strong>. The capability here is discovered automatically from any ENABLED connector in connectors/ or marketplace_connectors/ — there is nothing to register. Ship the two methods, and the studio does the rest.
Connectors
Connector marketplace
The Marketplace lets you discover, install, and publish connectors built by the community.
MarketplaceBrowse community connectors, install in one click, or sign and publish your own — pre-installed and marketplace tiers both searchable.
Finding and installing connectors
1
Browse
Go to Connectors > Marketplace. Search by name, category, or platform.
2
Review
Check the description, supported actions, and ratings.
3
Install
Click Install. The connector package downloads and installs to marketplace_connectors/.
4
Configure
Enable it in Connectors, enter API credentials, and test.
Publishing a connector
1
Build and test
Use the Connector Builder. Verify all actions work.
2
Package
Generate profile.json, actions.json, knowledge.json, and PHP files.
3
Sign
Run php tools/resign_all_connectors.php to sign the package.
4
Submit
Upload through the marketplace submission flow for review.
Two connector tiers
Pre-installed (connectors/)
Ship with OpsIQ. Maintained by the OpsIQ team.
Marketplace (marketplace_connectors/)
Installed from marketplace. Can be declarative or custom PHP.
💡
Always check BOTH directories when looking for a connector. Stripe is pre-installed — searching only marketplace would miss it.
Developer
API and webhook builder
The API and Webhook Builder lets you create custom API endpoints and webhook listeners inside OpsIQ without writing raw PHP.
API builderBuild endpoints without raw PHP: pick a trigger — inbound webhook, schedule, event or manual — then map fields to an action.
Triggers
Inbound webhook
An external system sends HTTP POST to your OpsIQ webhook URL.
Schedule
Run on a schedule: hourly, daily, weekly, or custom cron expression.
Event
Run when a specific OpsIQ event fires: ticket.created, chat.started, etc.
Manual
Run manually from the admin interface.
Actions
Send webhook
Send HTTP POST to an external URL with a custom payload.
Create ticket
Create a support ticket with specified department, subject, and message.
Send email
Send an email with a custom template.
Update record
Update a customer, ticket, or CRM record.
Run connector action
Execute a connector action.
Developer
Triggers cookbook
Ready-to-use trigger-action recipes for common automations.
How it worksTriggers cookbook
Auto-create ticket from monitoring
Scenario:
Monitoring system sends POST when server goes down.
In connector settings, use dry-run to test with sample data.
4
Verify AI usage
Ask admin AI: "Look up product Widget Pro." The AI should find and execute the action.
⚠️
After adding actions, regenerate the route registry: php tools/gen_route_registry.php
Developer
Webhooks
Webhooks let external systems notify OpsIQ when something happens (inbound), and let OpsIQ notify external systems when something happens internally (outbound).
WebhooksThe real outbound-webhooks screen: each endpoint with its events, recent delivery health, and a one-click Send test — signed and retried.
Outbound webhooks
Subscribing
Go to Settings > Webhooks. Add an endpoint URL and select events to receive.
Events
ticket.created, ticket.replied, chat.started, chat.message, order.completed, crm.deal.stage_changed, crm.contact.created, etc.
Retry
Failed deliveries retry with exponential backoff. After 15 consecutive failures, the endpoint is auto-disabled.
Signing
Every request includes an HMAC signature in X-OpsIQ-Signature. Always verify.
SSRF protection
OpsIQ will not send to private/internal IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).
Async delivery
Webhooks are delivered via the job queue, not blocking OpsIQ operations.
Stable event ID
Each event has a unique event_id that stays the same across retries for deduplication.
No. Under 15 KB gzipped, loads async after page content.
Can I customize the appearance?+
Use data-color for primary color. Contact support for CSS override options.
Developer
Widget install recipes
Platform-specific installation guides.
How it worksInstall recipes
WordPress
Scenario:
Add to all pages of a WordPress site.
What to do:
Option 1: Edit theme footer.php, paste snippet before </body>.
Option 2: Use "Insert Headers and Footers" plugin > Scripts in Footer.
Option 3: Use a child theme footer.php to survive theme updates.
Shopify
Scenario:
Add to your Shopify store.
What to do:
Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.
React / Next.js
Scenario:
Add to a React or Next.js app.
What to do:
In Next.js, use next/script in app/layout.tsx:
import Script from "next/script";
<Script src="https://your-opsiq.com/widget.php" data-site-key="site_abc" strategy="lazyOnload" />
WHMCS
Scenario:
Add to your WHMCS client area.
What to do:
Setup > General Settings > Other > Global Footer Content. Paste the snippet. Or edit your template footer.tpl.
Google Tag Manager
Scenario:
Add via GTM.
What to do:
Create Custom HTML tag, paste snippet. Trigger: All Pages. Publish.
Developer
Visitor identity
Identity connects anonymous visitors to known customers. When identified, OpsIQ links browsing history, chats, and tickets to the customer profile.
The API is action-based: send an action name in the body. POST {"action":"meta.actions"} (no key required) for the authoritative, per-install list of every action and the scope it needs.
crm.contacts.list
List CRM contacts (scope crm.read). Params: q, status, source, tag, lead score, limit.
crm.contacts.upsert
Resolve-or-create a contact (scope crm.write). Params: email plus fields, tags, notes.
Record a lifecycle/business activity for a contact (scope crm.write). Params: email or contact_id, event, value, currency.
crm.conversions.record
Record a conversion (scope crm.write). Params: contact_id or email, conversion_type, value, currency.
crm.events.list
Poll the CRM event stream (scope crm.read). Params: limit.
tickets.open
Open a support ticket (scope admin). Params: customer_email, customer_name, subject, body, priority.
tickets.bulk
Run a bulk queue operation (scope admin). Params: operation, ids.
💡
Ticket reading and replying are operator-UI, admin-scope actions; there is no public ticket-list or ticket-reply action. Use tickets.open to create and tickets.bulk for queue operations, or sync tickets through a connector. The live catalog from meta.actions is always authoritative.
Rate limits
Per-key limit
A configurable hourly limit per API key (default 1000 requests per hour). Set it per key under Settings, API Keys.
When exceeded
The request is rejected with HTTP 401 and error "Invalid, expired, or rate-limited API key." No 429 status and no Retry-After header are sent. The limit resets at the top of the next clock hour.
Pre-auth brute-force guard
Repeated failed-auth attempts from one IP are throttled separately (default 30 failures per 300 seconds). Valid keys never trip this.
Best practice
Stay under your hourly limit and back off after a 401 caused by rate limiting; retry on the next hourly window.
Is there an OpenAPI/Swagger spec?+
Yes. The machine-readable OpenAPI 3.0 document is at /api/v1/openapi.php (import it into Postman, Insomnia, Stoplight, or a code generator). Human-readable developer docs are at /api/docs/.
Developer
Events API
Send custom events from your server or website to OpsIQ for analytics, experiments, CRM triggers, and webhook conditions.
Server-side, record activities and conversions against a contact through the action API. Use crm.activities.record for lifecycle/business activity and crm.conversions.record for conversions. There is no events.send action; the inbound CRM event receiver lives at /v1/inbound.php?t=<token> for third-party systems that push events in.
Dispatcher signs and sends to all subscribed endpoints.
4
Retry on failure
Failed deliveries retried with exponential backoff.
Settings
Settings reference
Settings control how OpsIQ behaves across tracking, AI, tickets, security, and branding.
SettingsThe real Settings screen: a tabbed nav with simple toggle rows — AI auto-reply, visitor tracking, CSAT, retention — all scoped per workspace.
General settings
Business name
Your company name. Used in AI responses, emails, and widget header.
Industry
Your business industry. Helps the AI understand context.
Timezone
All analytics and timestamps use this timezone.
Default currency
Currency for revenue reporting.
Support hours
Business hours for auto-reply scheduling and SLA timers.
Tracking settings
Session timeout
Inactivity time before a session ends. Default: 30 minutes.
Active threshold
How long a visitor is "live" after last page load. Default: 90 seconds.
IP anonymization
Replace last IP octet with 0 for GDPR compliance.
Do Not Track
Respect DNT browser headers.
Excluded IPs
IP addresses to skip in tracking. Add your team IPs.
Excluded pages
URL patterns to skip. Example: /admin/*
Data retention
How long to keep visitor data. Default: 90 days.
Branding settings
Logo
Appears in admin header, emails, and widget.
Primary color
Accent color throughout the admin UI and widget.
Favicon
Browser tab icon for your OpsIQ admin.
Settings
Managing your team
Invite team members and assign roles to control who can access what.
TeamThe real team screen: every admin with their contact, role and the departments they can reach — agents scoped, owners full.
Roles
Owner
Full access including license, billing, and danger zone. One per installation.
Full Admin
Full access except license and danger zone. Can manage admins.
Agent
Limited to assigned departments. Tickets, chats, and analytics only.
Inviting team members
1
Go to Team
Navigate to Team in the sidebar.
2
Click Invite
Enter the team member's email.
3
Set role
Choose Owner, Full Admin, or Agent.
4
Assign departments
For Agents, select accessible departments.
5
Send invite
They receive an email with a setup link.
Settings
Team performance
How your support team is performing. Only accessible to Owners and Full Admins.
Team performanceThe real team-performance screen: each agent scored on volume and CSAT, with a reward balance you can pay out per row.
Metrics
Resolution time
Average time from ticket creation to resolution per agent.
First response time
Average time to first staff reply. Most important SLA metric.
Handle depth
Average number of replies needed to resolve a ticket.
Workload
Open ticket count per agent right now.
Channel distribution
Breakdown of chat vs. tickets vs. email per agent.
CSAT breakdown
Customer satisfaction scores per agent vs. team average.
Trend comparison
Current period vs. previous period comparison.
Busiest hours
When each agent handles the most tickets. Use for shift planning.
Who is online
OpsIQ tracks admin online status via a 60-second heartbeat. Admins not seen in 5 minutes are offline. The status widget appears in the admin navigation.
Settings
Your sites (workspaces)
Sites (workspaces) let you manage multiple websites from one OpsIQ installation. Each has its own tracking, AI, connectors, and team access.
SitesThe real Sites screen: each site is its own isolated workspace — own domain, connector and settings — added and opened from one list.
Creating a site
1
Go to Connected Sites
Navigate to Connected Sites.
2
Add a new site
Enter name, domain, and description.
3
Copy the site key
Each site gets a unique key (site_xxx) for the widget snippet.
4
Configure independently
Each site has its own AI, connectors, and settings.
How many sites can I have?+
Depends on your license plan. Check your license details.
Settings
License and plan
Your OpsIQ license controls features, site limits, and AI credit balance.
LicenseThe real License Center: your plan and active status, the masked key, your AI-credit balance, and a one-click force re-verify.
License key
Enter in Settings > License. Validated against the OpsIQ license server.
Plan
Determines feature availability and limits.
Site limit
Maximum number of workspaces.
AI credits
If using Managed AI, your credit balance is shown here.
Expiration
Renew before expiration to avoid service interruption.
What happens when my license expires?+
Tracking, tickets, and CRM continue. AI features pause until renewal. Data is preserved.
Settings
Security and access
OpsIQ includes multiple security layers to protect your admin, data, and API access.
How it worksSecurity
Security features
Admin authentication
Email/password with optional 2FA.
Login lockout
Temporary lock after too many failed attempts.
IP blocking
Block IPs or CIDR ranges from accessing tracked sites.
Threat scoring
Behavior-based threat scores. High-threat visitors can be auto-blocked.
HTTPS enforcement
Required for all connections. HTTP redirects to HTTPS.
All user input is escaped. CSP headers restrict script execution.
SSRF protection
Outbound webhooks block private/internal IP addresses.
Recommended setup
1
Enable 2FA
For all admin accounts.
2
Strong passwords
Minimum 12 characters, mixed.
3
Review accounts
Remove access for former team members.
4
Monitor failed logins
Check weekly for suspicious patterns.
5
Keep updated
Apply updates promptly for security patches.
Settings
Roles and permissions
Role-Based Access Control lets you control what each team member can do.
Roles & permissionsThe role matrix at a glance: Owner gets everything, Full Admin everything but billing and danger zone, Agent only their scoped tickets.
Default roles
Owner
Everything including license, danger zone, and installation management.
Full Admin
Everything except license and danger zone. Can manage team.
Agent
Respond to assigned-department tickets and chats, view analytics. No settings, team, or security access.
Can I create custom roles?+
Not currently. Three built-in roles plus department assignment gives granular control.
Settings
Blocked IPs
Manage IP addresses blocked from accessing your tracked sites.
Blocked IPsThe real Blocked IPs screen: block a single IP or a CIDR range, and manage the list — each with its date, reason and one-click unblock.
How to block
1
Go to Security > Blocked IPs
2
Add an IP or CIDR range
Example: 203.0.113.42 or 203.0.113.0/24
3
Add a reason
Document why: spam, abuse, scraping, etc.
Will blocking affect legitimate users?+
If customers share a corporate IP or VPN, blocking that IP blocks everyone on it. Use narrow blocks.
Settings
Failed logins
All unsuccessful login attempts to your OpsIQ admin.
Failed loginsThe real Failed logins screen: every account/IP with its failure count and last attempt — block a brute-force source straight from the row.
What each entry shows
Date/time
When the attempt happened.
Email
Email address used.
IP address
Source of the attempt.
Country
Geographic location.
Reason
Wrong password, locked, or not found.
Warning signs
Many attempts, same email
Password guessing. Ensure 2FA is enabled.
Many attempts, different emails
Automated attack. Block the source IP.
Unusual countries
If your team is local, foreign attempts are likely attacks.
Settings
AI security analyst
An opt-in analyst layer over the Security pages: verdicts, incident briefs, a daily digest, a weekly posture check, Ask Security, and 0-token block policies. It never runs in the visitor request path.
Every Security page records what happened, but reading it still takes judgment. The AI security analyst adds that judgment in place, and it is built to spend almost nothing: it never sits in the beacon or login path, deterministic rules settle the obvious cases with no AI call, verdicts are cached, and the analyst's best output is a deterministic rule that then enforces forever at zero tokens. Turn features on in Settings → Security; all default off.
What it adds
Verdict chips + Explain
Blocked IPs and Failed Logins rows show a benign / suspicious / hostile chip with a confidence score. Explain opens the reasoning, the facts used, and one-click Block / Release actions. Cached 24h, so re-viewing an IP is free.
Incident briefs
Related events cluster into one incident (login wave, URL scan, auto-block burst) with a plain-English timeline and one recommended next step. Ongoing attacks fold into the same incident.
Daily digest
One recap per day: yesterday versus your baseline, blocks, incidents, and the single thing to do. Quiet days send a deterministic all-clear at zero tokens.
Weekly posture check
A Monday hardening checklist (2FA gaps, lockout threshold versus real attack volume, alerts off) with a severity, effort and exact fix per item.
Ask Security
A question box on the Security Overview that answers from your live security state. Deep server questions are handed to the admin engineer chat rather than guessed.
Policy proposals + autopilot
The analyst proposes concrete block rules as Approve / Dismiss cards; approved rules enforce at zero tokens with a live hit counter. Optional autopilot approves only the safest rules automatically.
Settings
AI security analyst (security_ai_enabled)
Master switch — enables verdict chips, Explain, and Ask Security. Only ambiguous IPs reach the model, batched into one call.
Incident briefs (security_ai_incidents)
Clusters events into incidents and writes each new story. Runs on the existing hourly security cron.
Daily digest (security_ai_digest)
One security recap per day on the bell and the Overview. Quiet days cost nothing.
Weekly posture check (security_ai_posture)
Monday hardening checklist on the Overview. The checklist is fully deterministic.
Policy autopilot (security_ai_autopilot)
Lets the analyst activate its safest proposals unattended: reversible time-limited blocks only, single IPs or ranges no wider than /24, never shared/mobile/private, capped 10 per hour, always audited and undoable.
💡
Every call is tagged security_ai with its own monthly cap in AI Config → Cost Guardrails (default 300k tokens). If the cap is hit, features degrade to deterministic reads — blocking, lockouts and alerts never depend on this budget. The analyst can never delete data, change settings, touch the audit ledger, or make a permanent ban.
Operations
Cron and automation
OpsIQ uses cron jobs to run scheduled tasks: email polling, session assembly, analytics, retention, AI queue, CRM scoring, and connector syncing.
Runs every minute. OpsIQ internally manages which tasks to run and how often.
What cron does
Email polling
Checks mailboxes for new emails. Every 1-5 minutes.
Session assembly
Groups page views into sessions. Every 5 minutes.
Analytics aggregation
Calculates dashboard rollups. Every 15 minutes.
Retention cleanup
Deletes old data past retention period. Daily.
AI queue
Processes auto-reply drafts and AI tasks. Every minute.
CRM scoring
Updates lead scores and deal health. Every 15 minutes.
CRM forecast snapshot
Weekly forecast data capture.
Connector sync
Polls connected platforms. Every 5-15 minutes.
Admin presence pruning
Cleans stale presence records.
Verifying cron
1
Check the log
Look at /var/log/opsiq-cron.log for recent entries.
2
Check diagnostics
Settings > Diagnostics shows "Last cron run." Should be within 5 minutes.
3
Run manually
Test with: php /path/to/opsiq/cron.php
🚫
If cron is not running, email polling, auto-reply, session assembly, analytics, retention, and CRM scoring all stop.
Operations
Cloud hosting
On OpsIQ Cloud we run the infrastructure for you — no servers, updates or backups to manage. You sign up, a workspace is provisioned in seconds, you connect your site, and you are live. Each order gets its own isolated workspace, and a customer who owns several can switch between them. It is the same product as self-hosted; only the operations move to us.
How it worksCloud
What Cloud handles for you
Infrastructure
Servers, scaling, TLS, storage and uptime are managed by OpsIQ. There is nothing to provision.
Updates
New features and security fixes roll out automatically — you are always on the current version.
Backups
Your data is backed up for you; you can still export everything at any time from the Export page.
Multi-workspace
Each order is its own isolated workspace (data never mixes). A customer who owns several sees a workspace selector at login.
Getting started on Cloud
1
Sign up
Choose a plan and create your account. Your workspace is provisioned automatically within seconds.
2
Apply recommended settings
New workspaces ship with best-practice defaults (AI auto-reply, tracking, CSAT, retention). Use the onboarding quick-start to apply them in one click.
3
Connect your site
Paste the widget snippet (or install the WordPress plugin) and connect any platforms. You are live.
💡
Cloud and self-hosted run the identical product — you can migrate either direction at any time. Choose Cloud to remove infra worry, or self-hosted for total control (see Self-hosting).
Operations
Self-hosting OpsIQ
OpsIQ self-hosted runs on your own server for full control over data, branding, and integrations.
Browser push notifications — including OpsIQ Push Campaigns — need a service worker served from the SAME ORIGIN as the page. The OpsIQ widget loads from your OpsIQ deployment, so a third-party site cannot register OpsIQ's worker directly. Host one small file on the site's own domain to enable push there. Campaigns deliver through BOTH supported methods.
How it worksWeb push
Why this is needed
Browsers only let a page register a service worker from its own origin. The widget loads cross-origin from your OpsIQ deployment, so it cannot install the push worker on a customer site — until you host the worker on that site's origin, the widget silently skips push (no error, no subscription). You have two options below; OpsIQ Push Campaigns publish through both.
Option A — Self-hosted Web Push (VAPID, no third party)
1. Download the worker from your OpsIQ deployment: https://YOUR-OPSIQ/opsiq/opsiq-push-sw.js
2. Upload it to your web root so it is reachable at https://yoursite.com/opsiq-push-sw.js. The widget auto-detects this path on the page's own origin and registers it — no snippet change needed. (It uses a narrow scope, so it never replaces a service worker you already run.)
Optional: if you must host it at a non-standard path, point the widget at it before the snippet — it is only accepted when same-origin:
Optional — only if the file is NOT at the web root
3. In OpsIQ, generate VAPID keys (Settings → Client Chat AI → Advanced → Web Push). The widget then asks visitors for notification permission and subscribes them.
Behind a CDN/Cloudflare? Make sure /opsiq-push-sw.js returns HTTP 200 (purge the cache if it was 404 before you uploaded — a cached 404 will block registration).
Option B — Pusher Beams (managed provider)
1. In OpsIQ settings set the push provider to Pusher Beams and enter your Beams Instance ID and Secret Key.
2. Host the Beams service worker on the site's root as /service-worker.js. Copy https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.js, or merge this line into your existing root worker:
Beams worker — host at https://yoursite.com/service-worker.js
3. That's it. The widget auto-loads the Beams SDK and subscribes each visitor to the per-site interest opsiq-site-<your-site-key>. No other wiring needed.
How campaigns deliver
Push Campaigns publish through both methods at once: visitors on the self-hosted VAPID worker get the encrypted Web Push, and visitors subscribed via Pusher Beams get the Beams publish. Each visitor is reached through whichever they subscribed to, so you can run same-origin VAPID on some sites and cross-origin Beams on others.
HTTPS is required for service workers and Web Push (localhost is exempt for testing). The admin chat inbox already uses the same Beams interest mechanism for operator alerts.
Operations
Troubleshooting
Common issues and how to fix them.
General
Blank page+
Check PHP error logs. Causes: old PHP (need 8.1+), missing extension, DB connection failed, wrong file permissions.
Dashboard shows zeros+
Check: widget installed? Cron running? Date range correct? IP excluded?
AI
AI does not respond+
Check: provider configured? API key valid (use Test connection)? Budget exhausted? Workspace AI config correct?
AI gives wrong answers+
Check: knowledge base up to date? Prompt clear? Connector lookups returning correct data? Review conversation in AI History.
AI is slow+
Depends on: provider API speed, context size (large KB = more tokens = slower), network latency. Try a faster model.
Tracking
Widget missing+
Check: script in page source? JS errors in console? CSP blocking? Ad blocker?
Unknown country+
GeoIP not configured. Use Cloudflare (automatic) or MaxMind GeoLite2 database.
Something the AI can do through a connector or the platform.
Agent
A team member with limited access, or an AI agent.
BYOK
Bring Your Own Key — you provide your own AI API key.
Connector
A plugin integrating an external platform with OpsIQ.
CSAT
Customer Satisfaction score.
Deal
A revenue opportunity in the CRM.
Department
A ticket category for routing and access control.
Escalation
Moving a ticket to a different department or from AI to human.
GeoIP
Visitor location detection from IP address.
Handoff
Transferring a conversation from AI to human.
Identity token
Signed token identifying a website visitor.
Knowledge base
Articles the AI uses to answer questions.
Lead
A visitor showing buying intent.
Lead score
0-100 number indicating conversion likelihood.
Lifecycle stage
Where a customer is: Lead, Prospect, Customer, At Risk, Churned.
Managed AI
AI provided as part of your OpsIQ plan.
Pipeline
Visual board of deal stages.
RBAC
Role-Based Access Control.
Session
A series of page views within a timeout window.
Site key
Unique identifier for a tracked website.
SLA
Service Level Agreement — target response times.
Token
Unit of AI text. Roughly 4 characters = 1 token.
Trust Layer
Safety system controlling AI autonomy.
Webhook
HTTP callback for event notifications.
Widget
JavaScript code embedded on your website.
Workspace
A site with its own tracking, AI, connectors, and team. Same as "site."
Reference
Get more help
If this documentation does not answer your question:
Admin AI
Click "Ask OpsIQ" in the admin. Has access to this documentation and your platform data.
Support ticket
Include: what you tried, what happened, what you expected, and any error messages.
Email
Email support with your license key and issue description.
Tips for effective support requests
Include the page
Which admin page (URL or name).
Include the setting
Exact setting name and current value.
Include the error
Exact error message with codes.
Include the steps
What you did, step by step.
Include expected vs actual
What should happen vs what did happen.
💡
The more specific your request, the faster the answer. "It does not work" requires investigation. "Clicking Save on AI Configuration gives error code 502" gets a direct answer.