Start hereWhat 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.
Everything OpsIQ does — in detail
Website analytics and visitor intelligence
Real-time visitor trackingEvery 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 sessionsFull 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 replayTimeline-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 feedA 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 pagesPages ranked by visits, engagement time, bounce rate, conversions, and support activity. Identify your highest-performing content and pages that need improvement.
Geo intelligenceCountry, city, and region breakdowns with maps. Device and browser distribution, traffic source analysis, search engine referrer tracking, and market penetration insights.
Intent funnelTrack 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 experimentsRun 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 trackingCapture 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 logEvery tracked event — page views, custom events, chat interactions, form submissions, purchases — in a searchable, filterable log with full metadata.
Sales and conversionsTrack orders, revenue, refunds, subscription renewals, and attribute conversions to traffic sources, campaigns, and visitor journeys. Revenue dashboards with period comparison and trend analysis.
LeadsHigh-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 crawlsAutomated 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 auditComprehensive 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 auditEvaluate 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 searchSemantic search across your entire site content. Ask natural language questions about your content and get AI-synthesized answers with source page references.
SERP rank trackingMonitor 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 researchDiscover 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 analysisMonitor 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 gridFor 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 syncConnect 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 reportsAutomated 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 chatAI 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 assistantAn 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 groundingThe 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 humansWhen 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 promptsWrite 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 auditEvery 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 insightsAutomated 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 configEach 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 BYOKTwo 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 controlsSet 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 systemFull 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-replyAI 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 ingestionConnect 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 embedEmbed 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 mergingMerge 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 AIAfter 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 copilotAI-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 inboxReal-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 rulesTrigger 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 widgetA 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 surveysCollect 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 AISeparate 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 CenterA 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 companiesManage 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 boardVisual 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 coachingThe 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 reportsRevenue 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 sequencesAutomated 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 retentionTrack customer lifecycle stages (lead, prospect, customer, churned) with automated transitions. The retention agent monitors for churn signals and suggests interventions.
Data steward agentAI 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 CRMNatural 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 checkAutomated audit of your CRM data quality: duplicate contacts, deals without next steps, stale pipelines, missing contact information, and data completeness scoring.
Trust DialThree-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 agentsThe 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 connectorsReady-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 BuilderBuild 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 authoringThe 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 connectorGeneric 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.
Connector marketplacePublish 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 signingAll connectors are cryptographically signed for integrity verification. Signing is checked at install time. Use the resign_all_connectors tool to re-sign after updates.
SmartLookupDeclarative 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 contractsConnectors 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 recipesPre-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 syncConnectors 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 APIFull API for visitors, events, tickets, contacts, settings, and connector operations. API key authentication, rate limiting, and JSON request/response format. OpenAPI specification available.
WebhooksOutbound 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 signingEvery outbound webhook is signed with HMAC-SHA256. Verify signatures on your receiving end to ensure webhook authenticity. Stable event_id for idempotent processing.
Widget SDKJavaScript 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 SDKsServer-side SDKs and plugins for common frameworks. WordPress plugin, WHMCS module, and generic PHP/Node.js integration libraries.
Events APIPush 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 cookbookBuild 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 builderVisual 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 controlThree 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 dashboardOwner 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 trackingReal-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 settingsEach 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 managementManage 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 systemRegistry-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 exportImport 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 SSOOIDC (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 complianceBuilt-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 protectionBlock 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 headersHTTP Strict Transport Security, Permissions-Policy headers, and secure cookie configuration. Self-hosted deployments can add CSP headers through server configuration.
Outbound webhook hardeningSSRF 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 isolationStrict 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 managementSupport 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 automationBuilt-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 policiesConfigure 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 healthSystem 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
StoresTrack 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
SaaSMonitor 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
AgencyOffer 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
HostingDeep 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
SupportDeflect 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
MarketingFull 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
StartupsStart 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
EnterpriseEnterprise 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 + PlausibleFull 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 + TidioAI-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 ScoutNative 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 + SalesforceAI-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 + MozSite 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 middlewareConnector 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 managerFull 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 toolsRegistry-driven email templates with visual editor, live preview, variable chips, global layout control, and per-event customization for all automated communications.
Team management dashboardsBuilt-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 toolsNative 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
1Quick startFollow the 30-minute setup guide to get tracking, chat, and basic AI working on your website.
2Dashboard and analyticsLearn how to read your visitor data, set up session replay, identify leads, and understand traffic patterns.
3Site IntelligenceRun your first SEO crawl, check your technical health, and set up SERP rank tracking for your target keywords.
4Tickets and supportSet up departments, configure auto-reply with AI, connect email ingestion, and train your AI to handle common questions.
5CRMOrganize contacts, build your pipeline, configure the AI agents, set Trust Dial levels, and let AI coach your deals.
6Connectors and developer toolsConnect 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 hereQuick 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.
The 30-minute setup
1Activate your licenseEnter 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.
2Set your business identityGo 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.
3Choose an AI providerGo 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.
4Install the tracking widgetGo 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.
5Connect your platformIf 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.
6Invite your teamGo 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 widgetCopy the snippet from Connected Sites and paste it on your website. This gives you tracking immediately.
Step 2: Enable AIGo to AI Configuration, pick a provider, enter your key, and save. AI chat is now active on your website.
DoneYou now have visitor tracking and AI chat. You can add tickets, CRM, and connectors later.
Day 2: Make it useful
Add knowledgeGo to Knowledge Base and add 5-10 articles about your most common questions. The AI uses these to answer customers accurately.
Create departmentsGo to Tickets and create at least 2 departments (e.g., "Sales" and "Support"). Assign team members to each.
Write your AI promptGo to AI Training and write a Customer AI prompt that describes your business, tone, and escalation rules.
Test a conversationOpen 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 emailSet up a mailbox (Gmail, IMAP, or a provider connector) so customer emails automatically create tickets.
Set up auto-replyEnable ticket auto-reply for safe departments. Set a 2-minute delay so humans can intervene first.
Review analyticsCheck Dashboard daily. Look at visitor count, bounce rate, top pages, and sales if tracking is connected.
Start your CRMOpen AI CRM and let OpsIQ import contacts from your connected platforms. Review the pipeline board.
Month 1: Optimize
Review AI historyCheck AI History weekly. Look for wrong answers, missed questions, and opportunities to add knowledge.
Add proactive rulesCreate a rule: if a visitor is on the pricing page for 60+ seconds, show a chat message asking if they need help.
Build a connectorIf you use a platform that does not have a built-in connector, use the Connector Builder to create one.
Set up webhooksConnect 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 hereComplete 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 adminDashboard, 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 surfacesWebsite 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 CRMCommand 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 suiteAutomated 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 automationCustomer 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 integrations25+ 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 platformREST 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 operationsBusiness 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 complianceEnterprise 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 bridgeManaged 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
CoreDaily command center: traffic overview, live visitor count, sales summary, support queue depth, AI activity alerts, and quick-action shortcuts.
Live feed
AnalyticsReal-time visitor stream: page views, chat starts, form submissions, and intent signals updating every few seconds with country, device, and referrer filters.
Visitor log
AnalyticsComplete visit records: device, browser, OS, country, city, referrer, UTM params, landing page, identity, and full page-view history.
Sessions
AnalyticsJourney-grouped view: page flow, time on page, scroll depth, conversion path, and exit page for each visitor session.
Session replay
AnalyticsTimeline playback of captured events: mouse movement, clicks, scrolls, page transitions, and form interactions for UX diagnosis.
Top pages
AnalyticsPage performance ranking: visits, engagement time, bounce rate, conversions, support interactions, and trend direction.
Geo intelligence
AnalyticsGeographic reports: country/city breakdown with maps, device distribution, browser share, traffic sources, and market penetration.
Intent funnel
AnalyticsBehavioral intent tracking: pricing visits, return frequency, doc browsing, support interactions, and custom signals with conversion probability.
Events log
AnalyticsSearchable event history: page views, custom events, chats, purchases, form submissions with full metadata and filtering.
A/B experiments
AnalyticsSplit testing: create variants, allocate traffic, define goals, measure significance, and declare winners — all from inside OpsIQ.
JS errors
AnalyticsFrontend error capture: messages, stack traces, affected browsers, frequency, affected pages, and trend tracking.
Sales
SalesRevenue dashboard: orders, renewals, refunds, attribution by source, campaign performance, period comparison, and trend analysis.
Leads
SalesLead management: scoring, source attribution, CRM status, contact details, behavioral signals, and pipeline routing.
AI CRM
CRMFull CRM: command center, contacts, companies, deals, pipeline board, coaching, forecast, prospecting, sequences, lifecycle, data steward, and health.
Tickets
SupportSupport inbox: departments, priorities, SLA tracking, AI triage, auto-reply, internal notes, file attachments, merging, and status management.
Chat inbox
SupportLive conversations: AI and human chat, handoff, collaboration, conversation history, customer identity, and CSAT collection.
Email drafts
SupportEmail management: inbound mail to tickets, AI-assisted reply composition, template selection, and mailbox configuration.
AI config
AIProvider setup: select Claude/GPT-4o/Gemini/Grok, enter API key or enable managed AI, set model, temperature, and token budgets per workspace.
AI training
AIPrompt authoring: customer-facing and admin-facing prompts, escalation rules, tone guidelines, prohibited topics, and boundary configuration.
AI history
AIConversation audit: full request/response logs, token usage, cost per conversation, provider, model version, and resolution outcome.
AI insights
AIPattern analysis: common questions, resolution rates, handoff frequency, satisfaction by topic, and training gap identification.
Knowledge base
AIAI training content: articles, FAQ entries, product docs, connector knowledge, and custom entries. Semantic and keyword search for AI grounding.
Connectors
IntegrationsIntegration hub: installed connectors, health status, action inventory, credential management, marketplace browser, and Connector Builder.
Connected sites
SettingsSite management: tracking snippet, site key, widget configuration, domain settings, and per-site workspace isolation.
Team
SettingsUser management: invite members, assign roles (Owner/Full Admin/Agent), set department access, and manage permissions.
Team performance
SettingsOps metrics: resolution times, workload, SLA compliance, CSAT by agent, reopen rates, busiest hours, and trend analysis.
Settings
SettingsConfiguration: business identity, AI setup, tracking, security, branding, retention, email templates, billing, import/export, diagnostics, and danger zone.
License
SettingsPlan management: license status, plan features, usage metrics, renewal date, and upgrade/downgrade options.
AnalyticsThe 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.
Dashboard cards explained
Live visitorsThe 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 visitorsHow 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 returningNew 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 rateThe 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 pageHow 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 blockedIP 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 monthRevenue from connected sales sources (Shopify, WooCommerce, Stripe, etc.). If sales show zero, check that your platform connector is connected and syncing.
Trend chartA 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 sourcesWhere your visitors come from: direct, Google, social media, email campaigns, referral sites. Use this to understand which marketing channels are working.
Top browsersChrome, Safari, Firefox, Edge, and others. If a browser has unusually high bounce rate, you might have a CSS or JavaScript compatibility issue.
Hourly heatmapA 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 visitorsThe 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.
AnalyticsVisitor 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.
What each row shows
IP addressThe visitor's IP address. Anonymized if IP anonymization is enabled in Settings. Click to see all visits from this IP.
Country and cityDetected from the IP address using GeoIP data. Requires MaxMind GeoLite2 database or Cloudflare geo headers. Shows "Unknown" if GeoIP is not configured.
Page URLThe page the visitor loaded. Click to see the full URL. Long URLs are truncated in the table view.
ReferrerWhere the visitor came from before landing on your site. "Direct" means no referrer (bookmarks, typed URLs, some app links).
Device and browserThe visitor's device type (desktop, mobile, tablet) and browser (Chrome, Safari, Firefox, etc.). Parsed from the User-Agent header.
Date and timeWhen the page was loaded, in your configured timezone.
Customer identityIf the visitor is identified (via identity token or login), their name or email appears. Otherwise shows as anonymous.
Filters
Date rangeFilter visits to a specific time period. Default: last 7 days.
SearchSearch by IP address, page URL, referrer, country, or customer email.
SourceFilter by traffic source: Direct, Organic, Social, Referral, Paid, Email.
DeviceFilter by Desktop, Mobile, or Tablet.
New onlyShow 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 logRaw page loads. One row per page view. Best for: investigating specific pages, finding traffic from specific sources, diagnosing tracking issues.
SessionsGroups page views into journeys. One row per visit session. Best for: understanding user flow, measuring session duration, identifying conversion paths.
Live feedReal-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.
AnalyticsSessions
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.
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 pageThe landing page — where the visitor entered your site. This tells you which content is attracting people.
Last pageThe exit page — where the visitor left. If the exit page is often the pricing page, visitors might be comparing you with competitors.
Page countHow many pages the visitor viewed in this session. More pages usually means more engagement, but it can also mean the visitor is lost.
DurationTotal time from first page load to last activity. Sessions with 0 seconds are bounces (single page view, no further interaction).
SourceThe traffic source for this session (Direct, Google, social, referral, etc.).
CountryDetected country from the visitor's IP address.
BounceWhether the visitor left after viewing only one page. Bounced sessions have a red indicator.
ConversionWhether the visitor completed a tracked conversion event (purchase, signup, form submission) during this session.
Filters
SearchSearch by IP, email, page URL, or referrer within sessions.
TypeFilter by New visitors (first session ever) or Returning visitors.
SourceFilter by traffic source.
CountryFilter by country to see sessions from a specific region.
Threats/BouncedFilter 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.
AnalyticsLive 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.
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 intervalHow 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 thresholdHow 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 buttonClick 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.
AnalyticsTop 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.
What each page shows
Page URLThe full URL path. Similar pages (e.g., product variants) are grouped if grouping is enabled.
ViewsTotal number of times this page was loaded in the selected date range.
Unique visitorsHow many different people viewed this page (a person viewing the same page twice counts as 1 unique).
Bounce ratePercentage 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 timeHow long visitors spend on this page on average. Very short = not reading. Very long on a form page = confusion.
Chat startsHow many chat conversations were started from this page. High chat starts on a product page means the product description might be unclear.
Support ticketsHow 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?
AnalyticsGeo 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.
What you see
Top countries bar chartThe top countries ranked by visitor count. Click a country to drill down to city-level data.
Country doughnutVisual breakdown of traffic by country. Hover for percentages.
Full country tableEvery country with visitors in the selected period, showing visitor count, session count, bounce rate, and conversion rate.
City drill-downClick 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.
AnalyticsIntent 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 categories
BrowsingVisitors casually looking around. Short sessions, few pages, no specific goal detected.
ResearchingVisitors reading product/feature pages, docs, or blog content. Longer time on page, multiple content pages.
ComparingVisitors viewing pricing, plan comparison, or feature tables. Often returning visitors.
BuyingVisitors on checkout, cart, or signup pages. High intent — these are your conversion opportunities.
Support-seekingVisitors on help pages, contact pages, or starting chat. They need assistance.
BouncingVisitors 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.
AnalyticsSession 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.
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
TimelineA horizontal bar showing events over time. Click anywhere on the timeline to jump to that moment.
Page navigationEach page load appears as a segment on the timeline. You can see the exact path the visitor took.
ClicksClick events are shown as dots on the timeline and as highlights on the page reconstruction.
ScrollingScroll depth is tracked so you can see how far down the visitor read.
Form interactionField 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.
AnalyticsEvents 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.
Built-in events (automatic)
pageviewFired every time a tracked page loads. Includes URL, title, referrer, and timestamp.
chat.startedFired when a visitor opens the chat widget and sends their first message.
chat.messageFired for each message in a chat conversation (both visitor and AI/agent).
ticket.createdFired when a new support ticket is created (from chat, email, widget, or admin).
ticket.repliedFired when a reply is added to a ticket.
order.completedFired when a purchase is completed through a connected platform.
form.submittedFired when a tracked form is submitted (if form tracking is enabled).
identifyFired when a visitor is identified via an identity token.
security.login_failedFired 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
}]);PHP — custom event from server
// Send a custom event from your server (PHP)
$ch = curl_init("https://your-opsiq-domain.com/api/v1/events");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer opq_your_key",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"event" => "subscription.upgraded",
"customer_email" => "user@example.com",
"properties" => [
"old_plan" => "starter",
"new_plan" => "pro",
],
]),
]);
$response = curl_exec($ch);
curl_close($ch);Filtering events
Event typeFilter by specific event names: pageview, chat.started, ticket.created, etc.
Date rangeShow events from a specific time period.
SearchSearch 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.
AnalyticsA/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.
How experiments work
1Create an experimentGive it a name, define your primary metric (conversion event), and set the variants (control and test).
2Run itOpsIQ randomly assigns visitors to variants and tracks their behavior. Do not change the experiment while it is running.
3Read the resultsAfter enough data is collected, check confidence level. 95% confidence means you can be 95% sure the difference is real, not random chance.
Experiment states
DraftCreated but not yet started. You can still edit variants and metrics.
RunningActively assigning visitors to variants. Do not edit while running.
CompletedReached statistical significance or was manually stopped. Results are final.
ArchivedResults have been reviewed and the experiment is no longer needed in the active list.
Best practices
Define your metric before launchDecide what you are measuring before starting. Choosing a metric after seeing results introduces bias.
Exclude internal trafficAdd your team's IP addresses to the exclusion list so staff visits do not skew results.
Run long enoughDo not stop an experiment after 100 visitors. You need hundreds or thousands of visitors per variant for reliable results.
Test one change at a timeIf you change the headline AND the button color, you will not know which change caused the improvement.
Record your decisionAfter 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.
AnalyticsJavaScript 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.
What each error shows
Error messageThe JavaScript error text (e.g., "TypeError: Cannot read properties of undefined").
Page URLWhich page the error occurred on.
Browser and deviceWhich browser and device type saw the error. Some errors are browser-specific.
Stack traceThe code location where the error occurred. Click to expand the full stack trace.
First seenWhen this error first appeared.
Last seenWhen this error most recently occurred.
CountHow many times this error has been recorded.
Affected sessionsHow 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).
SalesSales 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.
Sales dashboard
Today's salesRevenue from orders completed today. Refreshes with each new order event from your connected platform.
This week / this month / totalRevenue aggregated over the period. Refunds are subtracted from these totals.
Trend chartLine graph showing daily revenue over the selected date range. Look for spikes (promotions, campaigns) and dips (issues, seasonal).
Top converting sourcesWhich traffic sources lead to the most purchases. "Direct" buyers often bookmarked your site. "Google" buyers found you through search.
Recent purchasesThe latest orders with customer email, amount, currency, and items purchased.
Platform setup guides
ShopifyGo 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.
WooCommerceGo 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.
BigCommerceGo 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 2Go 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.
PrestaShopGo 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.
OpenCartGo 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.
osCommerceGo 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.
StripeGo 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.
PaystackGo to Connectors > Paystack. Copy your Paystack secret key from the Paystack Dashboard. Enter it in OpsIQ. Configure webhook URL for transaction notifications.
Custom / other platformsUse 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 sourcesShows 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.
RefundsRefunded 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 handlingOpsIQ 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.
SalesLeads
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.
What makes a lead
Pricing page visitsVisitors who view your pricing or plans page are actively considering a purchase.
Return visitsVisitors who come back multiple times are engaged but not yet converted.
Chat interactionsVisitors who start a chat are actively seeking help — either pre-purchase or post-purchase.
Checkout startsVisitors who reach the checkout page but do not complete the purchase.
Form submissionsVisitors who submit a contact form, demo request, or signup form.
High page engagementVisitors who view many pages with long session duration are deeply researching.
Lead detail panel
Click any lead to see their full profile:
IdentityName, email, company if known. Anonymous leads show IP and location.
SessionsAll sessions from this lead with page flow, duration, and source.
Pages viewedEvery page they visited, ordered by recency.
SourceHow they found you: organic, paid, social, referral, direct.
Lead scoreA 0-100 score based on behavior intensity, recency, and page intent.
CRM statusWhether this lead has been added to the CRM as a contact or deal.
Sales tipAI-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.
CRMYour 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.
CRM pages overview
AI CRM (Command Center)
Start hereYour daily home screen: revenue pulse, what AI found, what it did, approval queue, next moves, agent health, and ROI.
Contacts
CorePeople and companies in your CRM. Search, filter, score, and manage profiles.
Pipeline
CoreVisual deal board with drag-and-drop stages, win probability, and AI coaching.
Forecast and Reports
CoreBoard-grade forecasting: committed, likely, best case, with confidence intervals and accuracy tracking.
Lifecycle
CoreWhere every customer stands: active, at risk, expansion ready, renewal due, or churning.
Build my CRM
ConfigDescribe your CRM setup in plain English. OpsIQ generates a reversible plan and applies it on approval.
CRM Health
OpsSelf-check page: schema, agents, routes, AI actions, and live data counts.
How OpsIQ keeps you safe
Ask before actingAI proposals go to the approval queue. You approve, edit, or reject each one. Nothing happens without your say.
Never overwriteWhen AI suggests a change, it shows the current value and the proposed value. Human-entered data has provenance protection.
Everything is reversibleEvery AI action is recorded in the journal. You can undo any change with one click.
ExplainableEvery AI recommendation shows its reasoning and the data sources it used. No black box.
Brand new? Start here
1Open AI CRMClick AI CRM in the left navigation. The Command Center shows your current state.
2Check CRM HealthOpen CRM Health to verify the schema, agents, and routes are ready.
3Import contactsIf a connector is active (Shopify, WHMCS, etc.), contacts are imported automatically. Otherwise, import via CSV or create manually.
4Create a pipelineGo to Pipeline and create your first pipeline with stages (e.g., Lead, Qualified, Proposal, Negotiation, Won, Lost).
5Add your first dealCreate 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.
CRMThe 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.
What the Command Center shows
Today's numbersPipeline value, deals won/lost, new leads, active deals, and revenue trend — a snapshot of your current state.
What OpsIQ foundAI-discovered insights: stalled deals, at-risk accounts, new opportunities, data quality issues, and market signals.
What OpsIQ didActions the AI has taken (in Autopilot) or proposed (in Copilot): stage advances, score updates, contact enrichment, and task creation.
Needs approvalQueue of AI proposals waiting for your decision. Each shows the proposed action, reasoning, and evidence. Approve, edit, or reject.
Next movesAI-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 statusHealth of AI agents: Capture, Data Steward, Deal Intelligence, Deal Coach, SDR, Retention. Green = running, amber = needs attention, red = error.
ResultsROI tracking: deals influenced by AI, time saved, accuracy of predictions, and comparison to manual CRM work.
Morning briefing workflow
1Read today's numbersCheck pipeline health and revenue trend. Are you on track this month?
2Clear the approval queueReview each AI proposal. Approve safe actions, edit where needed, reject bad suggestions.
3Check what OpsIQ foundRead AI insights. Are any deals at risk? Are there new opportunities?
4Work the next moves listStart 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.
CRMContacts, companies and deals
The CRM organizes your business relationships into four objects: Contacts (people), Companies (organizations), Deals (revenue opportunities), and Tasks (follow-up actions).
Contacts
What is a contactA 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 contactsUse 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 profileClick a contact to see their full profile: personal info, company, deals, activities, tickets, chats, website visits, lead score, and AI insights.
Hotness scoreA 0-100 score calculated from behavior signals: website visits, email engagement, chat interactions, purchase history, and recency. Higher = hotter.
Companies
What is a companyAn organization that one or more contacts belong to. Companies have a name, domain, industry, size, and health score.
Contact-company linkingContacts are linked to companies by email domain or manual assignment. One company can have many contacts.
Deals
What is a dealA revenue opportunity. Deals have a title, amount, pipeline, stage, win probability, close date, assigned owner, and associated contacts/company.
Win probabilityA percentage chance of winning the deal. Set manually or calculated by AI based on your historical win data. Drives the weighted forecast.
Deal healthGreen (healthy), amber (at risk), or red (stalled). Based on activity recency, stage duration, and engagement signals.
Tasks
What is a taskA 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 tasksThe 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.
CRMThe 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.
Using the pipeline board
1View your dealsThe pipeline shows all active deals as cards arranged in columns (stages). Each column header shows the total value of deals in that stage.
2Drag to advanceDrag 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.
3Check card badgesGreen badge = healthy (recent activity, on track). Amber = at risk (slowing down, needs attention). Red = stalled (no activity for too long).
4Click for detailsClick 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:
ApproveAccept the proposal as-is. The action runs through the Trust Layer and is recorded in the journal.
EditModify the proposal before approving. For example, change the suggested stage or adjust the amount.
RejectDecline 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 $10,000 deal at 30% probability contributes $3,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.
CRMDeal 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.
What the coach tells you
Health explanationWhy the deal is healthy, at risk, or stalled. Specific signals: days in stage, last contact date, activity frequency, competitor mentions, objection patterns.
SignalsCategorized 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 mapWho is helping the deal (champion) and who is resisting (blocker). Based on interaction analysis and contact roles.
Qualification checklistMEDDICC or BANT checklist (configurable) showing which qualification criteria are met and which are missing. Grade: A, B, C, D, or F.
Meeting prepBefore 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 plansSuggested next message or call script based on the current deal state and recent interactions.
Evidence timelineEvery claim the coach makes links to a source: a ticket number, chat transcript ID, activity date, or website visit.
How to use the coach
1Read the briefOpen any deal and scroll to the Deal Coach section. Read the health status and key signals.
2Close qualification gapsCheck the qualification checklist. If "Economic Buyer" is missing, plan to identify and engage the budget holder.
3Act on suggestionsThe 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.
CRMForecast and reports
Board-grade forecasting with a defensible range, deal-level change explanations, and accuracy tracking so you can prove and explain your numbers.
Forecast categories
CommittedDeals with 80% or higher win probability. These are your most likely wins. This should be your minimum expected revenue.
AI-weighted likelyAll open deals weighted by their AI-calculated win probability. This is the most realistic prediction of what you will close.
Best caseAll open deals at full value. This is the maximum possible revenue if everything goes perfectly (it rarely does).
Confidence intervalAn 80% probability band showing the realistic range. Example: "You will likely close between $45,000 and $72,000 this quarter."
What changed and why
The forecast includes week-over-week change attribution. When your forecast drops by $15,000, the report explains exactly which deals caused the change: "Deal A slipped to next quarter ($8,000), Deal B lost ($5,000), Deal C reduced in value ($2,000)."
Accuracy tracking
Forecast MAPEMean 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 calibrationBrier score measuring how well win probabilities match actual outcomes. If deals at 70% probability actually win 70% of the time, calibration is good.
Weekly snapshotsOpsIQ 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 conversionHow 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 rateWhich lead sources produce the most wins. Invest more in high-win-rate sources.
Per-owner performanceHow each sales team member is performing: deals won, pipeline value, average deal size, win rate.
WarningsSandbagging (unrealistically low probabilities), overcommitting (unrealistically high), and committed-at-risk (high-probability deals showing stall signals).
Understanding a forecast drop
Scenario: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 ($15,000) moved to Lost — competitor chosen. Beta Inc deal ($8,000) close date pushed to next quarter. New deal with Gamma LLC ($3,000) added this week." The net change is -$20,000 + $3,000 = -$17,000, explaining the drop from $180K to $163K (with the remaining $8K explained by probability adjustments on other deals).
CRMFinding 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.
One-time setup
1Describe your ideal customerGo 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."
2Add target companiesEnter company domains or names you want to research. You can also let the AI suggest companies based on your ICP.
3Review research resultsThe AI enriches each company with available data: size, industry, tech stack, recent news, and fit score with explanation.
4Approve outreachFor 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 fitHow well the company matches your ideal customer profile (industry, size, location).
Urgency signalsIs there evidence they need your product now? Job postings, tech changes, complaints about competitors.
Budget proxyCompany size, funding stage, and revenue indicators suggest budget availability.
Product matchHow relevant your product is to their business based on industry and technology.
Support fitWhether 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: jane.smith@acme.com (VP of Sales). Drafted opener references their recent hiring and pricing page visits.
CRMAutomatic 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.
How sequences work
1Create a sequenceDefine 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.
2Enroll contactsAdd contacts to the sequence. The AI may also propose enrollment from prospecting results.
3Automatic executionSteps run automatically on schedule. If a contact replies at any point, the sequence pauses automatically.
4Track resultsSee 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:
PositiveInterested, wants to talk. Sequence pauses, task created for follow-up.
ObjectionHas concerns but not rejecting. Sequence pauses, task created with objection details.
UnsubscribeWants to stop receiving messages. Contact is suppressed permanently.
Not nowInterested but timing is wrong. Sequence pauses, snooze task created.
Wrong personNot the right contact. Sequence stops, contact flagged for review.
SupportA support question, not a sales response. Sequence pauses, ticket created.
Anti-spam protections
Opt-out handlingUnsubscribe requests are honored immediately and the contact is suppressed from all future sequences.
Daily send capWorkspace-level daily limit (default: 1,000 emails). Prevents mass sends that trigger spam filters.
Per-contact limitMaximum 1 message per contact per day. Prevents overwhelming individual people.
Over-cap handlingSteps 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.
CRMKeeping 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.
The lifecycle board
Stage mapVisual board showing where every account stands: Lead, Prospect, Opportunity, Customer, Expansion, Renewal, At Risk, Churned.
At-risk accountsAccounts flagged with high churn risk. Each shows the top driver (support spike, inactivity, payment failure) and a recommended save play.
Expansion opportunitiesAccounts that show signals of readiness to buy more: high usage, feature requests, plan inquiries.
Renewals dueAccounts 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:
CRM signalsDeal health, inactivity, recent losses, declining engagement.
Support signalsOpen ticket count, ticket volume spikes, negative sentiment, escalations.
Product engagementLogin frequency, feature usage, page visits, API calls.
Billing signalsFailed payments, overdue invoices, downgrade requests, cancellation page visits.
Playbooks
Save playFor at-risk accounts: reach out proactively, address the concern, offer support, escalate if needed.
Renewal playFor upcoming renewals: confirm satisfaction, review usage, present value, offer incentive if appropriate.
Expansion playFor ready-to-grow accounts: present upgrade options, share success stories, demonstrate ROI.
Adoption playFor 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.
CRMKeeping your data clean
The Data Steward agent automatically finds and fixes data quality issues: duplicates, missing fields, inconsistencies, and stale records.
What it catches
Duplicate contactsMultiple records for the same person (e.g., john@acme.com and john.doe@acme.com). The steward proposes merging them.
Missing dataContacts without email, deals without amounts, companies without domains. Suggests filling from available sources.
Unlinked recordsDeals without associated contacts, contacts without companies. Proposes linking based on email domain and context.
InconsistenciesA deal in "Won" stage with 20% probability, a contact marked "Customer" with no deals, a company with mismatched industry.
Wrong stagesDeals that have been in the same stage for too long or contacts whose lifecycle stage does not match their activity.
How to use
1Open the steward listGo to CRM and find the Data Steward section (or open it from CRM Health).
2Approve safe fixesGreen items are safe: clear duplicates, obvious missing data. Approve these in bulk.
3Review the restAmber items need your judgment: possible duplicates with slight differences, proposed stage changes, company linking. Review each one.
Cleaning duplicate contacts
Scenario:The steward found "John Smith (john@acme.com)" and "J. Smith (john@acme.com)" — same email, different display names.
What to do: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.
CRMBuild 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.
How it works
1Describe what you wantType 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."
2Review the planOpsIQ shows a preview of what it will create: pipeline, stages, stage probabilities, scoring rules, lifecycle rules. Review each item.
3ApplyClick Apply to execute the plan. Every change is recorded as a bundle you can undo in one click.
4Roll back if neededIf something is not right, click Undo to revert the entire bundle. Your CRM returns to its previous state.
What you can build
Pipelines and stagesCreate named pipelines with custom stages, default probabilities, and rotting thresholds.
Scoring rulesBoost lead scores based on behavior: "Score higher when they view pricing," "Score lower when they visit careers page."
Lifecycle rulesAutomatically advance lifecycle stages: "Move to SQL when they request a demo," "Move to Customer when deal is won."
Custom fieldsAdd fields to contacts, deals, or companies: text, number, date, select, checkbox, URL, email.
Qualification checklistDefine 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.
CRMSetting 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 stagesCreate, 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 fieldsAdd 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 checklistDefine 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 rulesDefine automatic stage transitions: when a contact meets a condition (views pricing, submits a form, makes a purchase), their lifecycle stage advances automatically.
Lead-scoring rulesBoost 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 viewsCreate 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.
CRMCRM Health check-up
CRM Health is a self-diagnostic page that verifies your CRM is set up correctly and running smoothly.
What it checks
SchemaDatabase tables exist and have the correct columns. If a migration was missed, CRM Health will flag it.
AI agentsAll CRM agents (Capture, Data Steward, Deal Intelligence, etc.) are registered and healthy. Green = running, amber = needs attention, red = error.
RoutesCRM API routes and AJAX endpoints are registered and callable.
AI actionsThe CRM action catalog is registered in the Action Registry. If actions are missing, CRM Health self-heals by re-registering them.
Live data countsTotal 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.
CRMCRM connections for developers
The CRM exposes a complete public REST API and outbound webhooks so it fits any stack without manual exports.
API endpoints
AuthenticationAPI key (Authorization: Bearer opq_...) with scope crm.read or crm.write. POST to /api/v1.php with action and site_key.
Contactscrm.contacts.list (search + filter), crm.contacts.detail (by ID), crm.contacts.upsert (create or update), crm.contacts.save.
Dealscrm.deals.list, crm.deals.detail, crm.deals.create, crm.deals.update, crm.deals.advance (all through the Trust Layer).
Activitiescrm.activities.list (timeline for a contact/deal), crm.activities.record (log a new activity).
Eventscrm.events.list (durable change feed with since_id cursor), crm.events.catalog (list available event types).
Create a deal via API
POST /api/v1.php
Authorization: Bearer opq_live_xxx
Content-Type: application/json
{
"action": "crm.deals.create",
"site_key": "<workspace>",
"title": "Acme renewal",
"amount": 12000,
"pipeline_id": 1,
"stage_id": 2
}Webhook events
crm.contact.createdFired when a new contact is added to the CRM.
crm.deal.stage_changedFired when a deal moves to a different stage.
crm.deal.wonFired when a deal is closed as won.
crm.deal.lostFired when a deal is closed as lost.
crm.task.createdFired when a new task is created (manual or AI-generated).
crm.outreach.replyFired when a prospect replies to a sequence email.
crm.agent.proposal_createdFired 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.
SupportTickets
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.
How a ticket flows
1Ticket arrivesA 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).
2TriageAI reads the subject and body, assigns priority (Low/Normal/High/Urgent), suggests a department, and detects sentiment. This happens automatically if triage is enabled.
3ReplyAn 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.
4CloseWhen 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 departmentMove the ticket to a different department (e.g., from General to Billing). Useful when the initial routing was wrong.
Assign to agentAssign the ticket to a specific team member. The assigned agent sees the ticket in their "My tickets" view.
Add internal noteWrite a note visible only to staff. Use for: investigation findings, refund reasons, engineering context, previous commitments. Internal notes never appear to customers.
Merge ticketsCombine 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 responseInsert a pre-written reply template. Variables like {{customer_name}} and {{ticket_id}} are automatically replaced.
AI rewriteLet AI improve your draft reply: adjust tone, shorten/lengthen, fix grammar, or translate. You review the result before sending.
Change prioritySet to Low, Normal, High, or Urgent. Priority affects SLA timers and sort order.
Change statusSet 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 $49.99 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
LowNon-urgent questions, feature requests, general feedback. Target first response: 24 hours.
NormalStandard support questions. Target first response: 8 hours.
HighImpacting the customer's business. Target first response: 4 hours.
UrgentService 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.
SupportTicket 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.
How auto-reply works
1Ticket appearsA new ticket is created from any source (email, chat, portal, API).
2Schedule replyOpsIQ waits for the configured delay (default: 2 minutes). This gives human agents a chance to respond first.
3First reply winsIf a human agent replies during the delay, auto-reply is cancelled. If not, the AI generates a reply.
4Generate and sendThe 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
1Configure departmentsSet which departments can receive escalations (e.g., Billing can be escalated from General, Technical can be escalated from General).
2Classify the ticketBefore auto-replying, the AI classifies the ticket intent: billing, technical, refund, abuse, etc.
3Move if neededIf the ticket intent matches an escalation department, the ticket is moved. An internal note explains why.
4Generate in new voiceThe reply is generated using the destination department's knowledge and AI training.
Settings reference
Auto-reply enabledMaster switch. Turn on to enable AI auto-reply for tickets.
Allowed departmentsWhich departments can receive auto-replies. Start with low-risk departments (General, Sales) before enabling billing.
DelayHow long to wait before the AI replies (in seconds). Default: 120 seconds (2 minutes). Set to 0 for instant replies.
Delay scheduleOptionally set different delays for business hours vs. after hours.
Stop on admin replyIf a human agent replies first, cancel the auto-reply. Default: on.
Escalation enabledEnable automatic department routing based on ticket intent.
Escalation departmentsWhich departments tickets can be escalated to.
Escalation statusWhat status to set when escalating (e.g., Open, Pending).
Escalation noteWhether 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.
SupportTicket 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.
Three embed flavors
Inline embedRenders the ticket portal inside a div on your page. The portal takes the full width of its container.
Floating widgetShows a floating button that opens the ticket portal in a panel. Similar to a chat widget.
AuthenticatedRequires a signed identity token. Customers see only their own tickets.
Installation
Ticket embed snippet
<script src="https://your-opsiq-domain.com/widget.php"
data-site-key="site_abc123"
data-mode="tickets"
data-identity-token="SERVER_GENERATED_TOKEN"
async></script>
Identity token generation
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.
PHP — generate identity token
<?php
// Generate identity token (PHP)
$site_secret = "opsiq_whsec_your_secret";
$payload = json_encode([
"site_key" => "site_abc123",
"customer" => [
"id" => "cust_1001",
"email" => "customer@example.com",
"name" => "Ada Lovelace",
],
"iat" => time(),
"exp" => time() + 900, // 15 minutes
]);
$token = base64_encode($payload) . "." . hash_hmac("sha256", $payload, $site_secret);
// Pass $token to the frontendWHMCS hook — identity token
// WHMCS hook — auto-generate identity token
add_hook("ClientAreaPage", 1, function($vars) {
if (!isset($vars["loggedinuser"])) return;
$payload = json_encode([
"site_key" => "site_abc123",
"customer" => [
"id" => $vars["loggedinuser"]["id"],
"email" => $vars["loggedinuser"]["email"],
"name" => $vars["loggedinuser"]["firstname"]." ".$vars["loggedinuser"]["lastname"],
],
"iat" => time(),
"exp" => time() + 900,
]);
$token = base64_encode($payload).".".hash_hmac("sha256", $payload, "opsiq_whsec_xxx");
// Inject into page
});Node.js — generate identity token
// Node.js / Express — generate identity token
const crypto = require("crypto");
function generateOpsIQToken(customer) {
const payload = JSON.stringify({
site_key: "site_abc123",
customer: {
id: customer.id,
email: customer.email,
name: customer.name,
},
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000) + 900,
});
const sig = crypto.createHmac("sha256", "opsiq_whsec_xxx")
.update(payload).digest("hex");
return Buffer.from(payload).toString("base64") + "." + sig;
}Widget features
Ticket listSearchable, status-filtered list. An "Awaiting you" highlight flags tickets the team has answered.
Threaded conversationFull conversation view with rich text, attachments, and timestamps.
Draft autosavingCustomer draft replies are auto-saved so they do not lose work if they navigate away.
Live pollingThe widget polls for new replies every ~12 seconds.
Resolve / reopenCustomers 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.
SupportChat inbox
The Chat Inbox is where your team manages live customer conversations. It shows active chats, assigned conversations, AI-handled chats, and archived history.
Managing conversations
Active chatsConversations currently in progress. Green dot = customer is typing or recently active.
AI-handledConversations where the AI is responding. You can take over at any time by clicking "Join."
Assigned to meConversations assigned to you specifically.
WaitingConversations where the customer is waiting for a response.
ArchiveCompleted 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:
1Greet personallyIntroduce yourself by name. "Hi, this is Sarah from the support team."
2Reference contextShow you read the conversation. "I can see you asked about your order status."
3Set expectationsTell 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
1Stay calmDo not match the customer's emotional intensity. Acknowledge their frustration without being defensive.
2Collect factsBefore responding, gather the relevant information: order details, account status, previous tickets.
3Escalate earlyIf 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.
SupportReal 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.
SupportEmail 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.
Connecting a mailbox
ProtocolIMAP (most providers), Gmail API (Google Workspace), or Microsoft Graph (Outlook 365).
Settings neededHost, port, encryption (SSL/TLS), username, password or app password, folder (usually INBOX).
Department mappingMap the mailbox to a ticket department. Emails to support@company.com create tickets in the "Support" department.
Gmail setup (step by step)
1Enable 2-Step VerificationGo to Google Account > Security > 2-Step Verification and enable it.
2Create an App PasswordGo to Google Account > Security > App Passwords. Select "Mail" and "Other (OpsIQ)". Copy the 16-character password.
3Enter in OpsIQGo to Email > Mailboxes > Add. Set host: imap.gmail.com, port: 993, encryption: SSL, username: your@gmail.com, password: the app password.
4TestClick Test Connection. If successful, OpsIQ will start polling for new emails at the configured interval.
Outlook 365 setup
1Check IMAP is enabledIn Outlook settings > Mail > Sync email, ensure IMAP is enabled.
2Use app password or modern authIf MFA is enabled, create an app password. Otherwise, use your regular password.
3Enter in OpsIQHost: outlook.office365.com, port: 993, encryption: SSL, username: your@company.com.
cPanel webmail setup
1Find IMAP settingsIn cPanel > Email Accounts, click your email account for IMAP settings.
2Enter in OpsIQHost: 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:
ReviewRead the draft and check for accuracy.
EditModify the text, tone, or content before sending.
SendApprove the draft and send it as an email reply.
DiscardDelete the draft if it is not appropriate.
Auto-sendIf 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?
Can I use multiple mailboxes?+
Yes. Each mailbox can be mapped to a different department. support@company.com goes to Support, billing@company.com goes to Billing.
AISet up your AI
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.
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.
Grok (xAI)Fast, concise responses. Models: grok-3-mini-fast. Best for: quick answers, casual tone.
BYOK vs Managed AI
BYOK (Bring Your Own Key)You provide your own API key from the provider. You pay the provider directly. Full control over model selection and usage.
Managed AIAI 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
1Go to AI ConfigurationIn the OpsIQ admin, navigate to Settings > AI Configuration.
2Select providerChoose your AI provider from the dropdown.
3Enter API keyIf using BYOK, enter your API key. For Managed AI, this is handled automatically.
4Choose modelSelect the specific model to use. Smaller models are faster and cheaper. Larger models give better quality answers.
5Test connectionClick "Test connection" to verify the API key and model are working. A green checkmark means success.
6SaveClick Save to activate your AI configuration.
Cost controls
Monthly budgetSet 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 limitMaximum tokens per single conversation. Prevents runaway conversations from consuming excessive credits.
Low balance alertWhen 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.
AITrain 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.
Two training areas
Customer AI promptControls how the AI talks to your customers in the chat widget. This is the most important prompt to get right.
Admin AI promptControls 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:
1IdentityWho is the AI? Give it a name, role, and personality. Example: "You are Luna, a friendly and knowledgeable customer support assistant for Acme Store."
2Tone and styleHow should it communicate? Example: "Be professional but warm. Use simple language. Avoid jargon. Keep responses concise (2-3 paragraphs max)."
3Knowledge boundariesWhat 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."
4Escalation rulesWhen 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."
5Things to never doHard 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
1Launch with basicsStart with identity, tone, and key boundaries. Do not try to cover everything on day one.
2Review AI History weeklyRead conversations where the AI gave wrong or suboptimal answers.
3Update the promptAdd 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."
4Add knowledgeIf 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.
AIAI 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.
What each conversation shows
Date and timeWhen the conversation happened.
Customer identityName and email if known, otherwise IP and country.
ChannelChat widget, ticket auto-reply, email draft, or admin AI.
MessagesFull transcript of the conversation: customer messages and AI responses.
Token usageHow many tokens the conversation consumed. High token usage may indicate the AI is giving overly verbose answers or the conversation went in circles.
Actions takenAny actions the AI executed during the conversation (looked up order, created ticket, etc.).
RatingIf CSAT is enabled, the customer's satisfaction rating for this conversation.
Finding problems
Search by keywordSearch 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 ratingShow only low-rated conversations to focus on dissatisfied customers.
Filter by channelShow only ticket auto-replies to audit automated responses separately from chat.
Sort by token usageHigh-token conversations may indicate problems: the AI rambling, going in circles, or failing to answer the question.
Weekly audit routine
1Check low-rated conversationsRead the full transcript. What went wrong? Was it a knowledge gap, a tone issue, or a wrong answer?
2Check high-token conversationsThese might indicate confusion. Was the AI repeating itself? Did it fail to understand the question?
3Update trainingFor 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.
AIAI insights
AI Insights automatically analyzes conversation patterns and surfaces actionable findings: common questions, satisfaction trends, knowledge gaps, and escalation patterns.
What insights show
Top questionsThe most frequently asked questions. If "How do I reset my password?" is #1, your knowledge base needs a prominent password reset guide.
Satisfaction trendsCSAT scores over time. Is AI satisfaction improving or declining? Sudden drops may indicate a knowledge base change that broke something.
Resolution rateWhat 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 reasonsWhy conversations get handed off to humans. Common reasons: customer requested human, AI could not answer, sensitive topic, billing issue.
Knowledge gapsTopics where the AI frequently says "I don't know" or gives low-confidence answers.
Average conversation lengthHow 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.
AIAdmin 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.
What the admin AI can do
Look up dataAsk: "Show me all tickets from john@example.com" or "What is the status of order #ORD-5523?"
SummarizeAsk: "Summarize the last 10 tickets" or "What are the top support issues this week?"
Explain featuresAsk: "How do I set up auto-reply?" or "What does the bounce rate card mean?"
Execute actionsAsk: "Create a ticket for john@example.com about billing" or "Close ticket T-12345"
Platform queriesAsk: "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 john@example.com 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 $198, 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.
AICustomer AI scenarios
This section covers common customer-facing AI scenarios with expected behavior and training tips.
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.
AIAI 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.
How it works
1Customer asks a question"What is your return policy?"
2AI searches the knowledge baseOpsIQ finds the "Return Policy" article by matching keywords and semantic meaning.
3AI generates a responseThe AI reads the article and writes a natural-language answer based on the article content.
4Customer gets an accurate answerThe response is grounded in your actual policy, not the AI's general training data.
Creating good articles
One topic per articleWrite a separate article for each topic: return policy, shipping rates, account setup, password reset. Do not combine unrelated topics.
Write like a FAQStart 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 casesWhat about international returns? What about digital products? What about items bought on sale? Cover the exceptions.
Keep it currentReview 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.
ConnectorsConnect 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.
Pre-installed connectors
WHMCS
BillingWeb hosting billing: clients, services, tickets, invoices, domains, servers.
Shopify
E-commerceE-commerce: orders, customers, products, inventory, payments, webhooks, GDPR.
WooCommerce
E-commerceWordPress e-commerce: orders, customers, products, coupons, shipping.
Stripe
PaymentsPayments: charges, customers, invoices, subscriptions, payouts, disputes.
Paystack
PaymentsAfrican payments: transactions, customers, plans, subscriptions.
BigCommerce
E-commerceE-commerce: orders, customers, products, categories, brands.
Magento 2
E-commerceE-commerce: orders, customers, products, categories, inventory.
PrestaShop
E-commerceE-commerce: orders, customers, products, cart rules, carriers.
OpenCart
E-commerceE-commerce: orders, customers, products, categories.
osCommerce
E-commerceLegacy e-commerce: orders, customers, products.
Zendesk
SupportHelpdesk: tickets, users, organizations, comments.
Google Business Profile
MarketingLocal business: reviews, posts, Q&A, insights. Uses OAuth.
Amazon SES
EmailEmail delivery: send transactional emails via Amazon SES.
Postmark
EmailEmail delivery: send transactional emails via Postmark.
Resend
EmailEmail delivery: send transactional emails via Resend.
SendGrid
EmailEmail delivery: send emails and manage templates via SendGrid.
Mailgun
EmailEmail delivery: send emails via Mailgun.
Installing a connector
1Go to ConnectorsNavigate to Connectors in the admin sidebar.
2Find the connectorBrowse the list or search. Connectors are grouped by category.
3Enable itClick the connector and toggle Enable.
4Enter credentialsFill in the required fields: API key, URL, tokens, etc. Each connector has specific requirements documented in its settings panel.
5Test connectionClick "Test Connection." A green result means the connector can reach the external platform. A red result shows the error.
6Configure featuresChoose which features to enable: knowledge sync, webhook sync, AI actions. Not all connectors support all features.
What connectors give you
AI contextThe 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.
ActionsThe AI can perform actions through the connector: create tickets, update orders, cancel subscriptions — all with your approval through the Trust Layer.
KnowledgeConnectors contribute platform-specific knowledge articles to the AI. Shopify connector adds e-commerce troubleshooting; WHMCS connector adds hosting knowledge.
WebhooksSome connectors register webhooks with the external platform for real-time event notifications (new orders, ticket updates, etc.).
Sales trackingE-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.
ConnectorsHow 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."
The action lifecycle
1Customer asks for something"Cancel my subscription." The AI identifies this requires the "cancel_subscription" action.
2AI checks permissionsIs this action allowed? Is it enabled? Does the current user have the right role?
3AI gathers parametersThe action needs a subscription ID. The AI looks it up from the customer context or asks the customer.
4ConfirmationFor destructive or high-impact actions, the AI asks for confirmation before executing.
5ExecutionThe action calls the external platform API.
6ResultThe AI reports the result to the customer.
Action types
Read actionsLook up data without changing anything. Examples: list_orders, get_customer. Safe, no confirmation needed.
Write actionsCreate or modify data. Examples: create_ticket, update_order. May require confirmation.
Delete actionsRemove data. Examples: cancel_subscription. Always require confirmation.
HTTP actionsDeclared in actions.json — generic API calls defined declaratively.
Code actionsImplemented 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" }
}
}
}ConnectorsBuild a connector
The Connector Builder lets you create a complete connector for any platform with a REST API. No coding required for basic connectors.
Connector Builder wizard
1Name and describeGive your connector a name, slug, description, and category.
2Set authenticationChoose: API key (header or query), Bearer token, Basic auth, or OAuth 2.0 (with PKCE).
3Define the base URLThe root URL for all API calls. Example: https://api.example.com/v2
4Add actionsDefine actions with: name, HTTP method, endpoint path, parameters, and response mapping.
5Add knowledgeWrite knowledge base articles specific to this platform.
6TestEnter test credentials and run each action to verify it works.
7PackageGenerate the connector package: actions.json, knowledge.json, profile.json, and optionally PHP code.
Authentication types
API keyA static key sent in a header or query parameter. Simplest method.
Bearer tokenToken sent in the Authorization header. Common for modern APIs.
Basic authUsername and password encoded in the Authorization header.
OAuth 2.0Full authorization code flow with PKCE. OpsIQ handles redirect, exchange, and refresh via OAuthHelper.
Pagination styles
OffsetUses offset and limit parameters. Example: ?offset=100&limit=50.
PageUses page number. Example: ?page=3&per_page=50.
CursorUses a cursor token from the previous response.
Link headerUses 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"],
};
}
}⚠️Action keys must be 3-80 characters, lowercase, letters/numbers/underscores. After adding new AJAX routes, run php tools/gen_route_registry.php.
ConnectorsConnector recipes
Step-by-step recipes for common connector setups.
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 john@example.com" — 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.
ConnectorsConnector marketplace
The Marketplace lets you discover, install, and publish connectors built by the community.
Finding and installing connectors
1BrowseGo to Connectors > Marketplace. Search by name, category, or platform.
2ReviewCheck the description, supported actions, and ratings.
3InstallClick Install. The connector package downloads and installs to marketplace_connectors/.
4ConfigureEnable it in Connectors, enter API credentials, and test.
Publishing a connector
1Build and testUse the Connector Builder. Verify all actions work.
2PackageGenerate profile.json, actions.json, knowledge.json, and PHP files.
3SignRun php tools/resign_all_connectors.php to sign the package.
4SubmitUpload 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.
DeveloperAPI and webhook builder
The API and Webhook Builder lets you create custom API endpoints and webhook listeners inside OpsIQ without writing raw PHP.
Triggers
Inbound webhookAn external system sends HTTP POST to your OpsIQ webhook URL.
ScheduleRun on a schedule: hourly, daily, weekly, or custom cron expression.
EventRun when a specific OpsIQ event fires: ticket.created, chat.started, etc.
ManualRun manually from the admin interface.
Actions
Send webhookSend HTTP POST to an external URL with a custom payload.
Create ticketCreate a support ticket with specified department, subject, and message.
Send emailSend an email with a custom template.
Update recordUpdate a customer, ticket, or CRM record.
Run connector actionExecute a connector action.
DeveloperTriggers cookbook
Ready-to-use trigger-action recipes for common automations.
Auto-create ticket from monitoring
Scenario:Monitoring system sends POST when server goes down.
What to do:Trigger: Inbound webhook
Condition: payload.status = "down"
Action: Create ticket — Dept: Technical, Subject: "Server {{payload.hostname}} down", Priority: Urgent
Slack notification on big orders
Scenario:Slack message every time a customer places an order over $100.
What to do:Trigger: Event (order.completed)
Condition: order.amount > 100
Action: Send webhook to Slack incoming webhook URL with order details
Weekly digest email
Scenario:Summary email to management every Monday at 9am.
What to do:Trigger: Schedule (Monday 09:00)
Action: Send email with last week's stats pulled from the REST API
Escalate stale tickets
Scenario:If a ticket has no reply for 24 hours, assign to team lead.
What to do:Trigger: Schedule (every hour)
Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400
Action: Assign to team-lead, add internal note
DeveloperBuilding your first action
This walkthrough creates a simple connector action from scratch.
1Plan the actionExample: "lookup_product" — look up a product by name, return price, stock, and description.
2Define in actions.jsonAdd the action definition:
actions.json — lookup_product
{
"lookup_product": {
"label": "Look up a product",
"description": "Find a product by name",
"method": "GET",
"endpoint": "/api/products/search",
"params": {
"name": { "type": "string", "label": "Product name", "required": true }
},
"response_mapping": {
"id": "$.data.id",
"name": "$.data.name",
"price": "$.data.price",
"stock": "$.data.stock_quantity"
}
}
}3Test with dry-runIn connector settings, use dry-run to test with sample data.
4Verify AI usageAsk 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
DeveloperWebhooks
Webhooks let external systems notify OpsIQ when something happens (inbound), and let OpsIQ notify external systems when something happens internally (outbound).
Outbound webhooks
SubscribingGo to Settings > Webhooks. Add an endpoint URL and select events to receive.
Eventsticket.created, ticket.replied, chat.started, chat.message, order.completed, crm.deal.stage_changed, crm.contact.created, etc.
RetryFailed deliveries retry with exponential backoff. After 15 consecutive failures, the endpoint is auto-disabled.
SigningEvery request includes an HMAC signature in X-OpsIQ-Signature. Always verify.
SSRF protectionOpsIQ will not send to private/internal IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).
Async deliveryWebhooks are delivered via the job queue, not blocking OpsIQ operations.
Stable event IDEach event has a unique event_id that stays the same across retries for deduplication.
Verifying webhook signatures
PHP — verify webhook signature
<?php
$payload = file_get_contents("php://input");
$signature = $_SERVER["HTTP_X_OPSIQ_SIGNATURE"] ?? "";
$secret = "opsiq_whsec_your_secret";
$expected = hash_hmac("sha256", $payload, $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(401);
exit(json_encode(["error" => "Invalid signature"]));
}
$event = json_decode($payload, true);
// Process the event...
http_response_code(200);
echo json_encode(["received" => true]);Node.js — verify webhook signature
const crypto = require("crypto");
app.post("/opsiq-webhook", (req, res) => {
const payload = JSON.stringify(req.body);
const sig = req.headers["x-opsiq-signature"];
const expected = crypto.createHmac("sha256", "opsiq_whsec_xxx")
.update(payload).digest("hex");
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig || "")))
return res.status(401).json({ error: "Invalid signature" });
console.log("Webhook:", req.body);
res.json({ received: true });
});How do I test webhooks locally?+
Use ngrok to expose your local server. Set the webhook endpoint to your ngrok URL.
What if my endpoint is temporarily down?+
OpsIQ retries with exponential backoff. If your endpoint recovers within the retry window, no events are lost.
DeveloperAPI keys
API keys authenticate requests to the OpsIQ REST API. Each key has scoped permissions.
Creating an API key
1Go to Settings > API KeysNavigate to API key management.
2Click Create KeyGive it a descriptive name.
3Select scopesChoose permissions: analytics.read, tickets.read, tickets.write, crm.read, crm.write, etc.
4Copy the keyShown once. Starts with "opq_". Store it securely.
🚫Never share API keys in public code, client-side JavaScript, or version control. Use environment variables.
DeveloperVisitor identity
Identity connects anonymous visitors to known customers. When identified, OpsIQ links browsing history, chats, and tickets to the customer profile.
Dynamic identify call
Dynamic identity push
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["identify", {
email: "customer@example.com",
name: "Jane Smith",
customer_id: "cust_1001",
plan: "pro",
company: "Acme Inc",
}]);Server-signed identity token (recommended)
PHP — generate identity token
<?php
$secret = "opsiq_whsec_your_secret";
$payload = json_encode([
"site_key" => "site_abc123",
"customer" => [
"id" => $user->id,
"email" => $user->email,
"name" => $user->name,
],
"iat" => time(),
"exp" => time() + 900,
]);
$token = base64_encode($payload) . "." . hash_hmac("sha256", $payload, $secret);🚫Always generate identity tokens on the server, never in client-side JavaScript.
What if a visitor clears cookies?+
They become anonymous until they log in again. OpsIQ links the new anonymous record when re-identified.
DeveloperPlugins and SDKs
OpsIQ provides SDK packages and plugins for common platforms.
PHP SDKComposer package: identity token generation, REST API client, webhook signature verification.
JavaScript SDKBrowser-side: tracking, identity, custom events, chat control.
WordPress pluginWidget injection, identity from WP user sessions, WooCommerce sync.
WHMCS moduleFull integration: widget, ticket relay, identity, admin AI.
Shopify theme extensionApp embed with automatic customer identity.
PHP SDK quick start
PHP SDK example
composer require opsiq/sdk
use OpsIQ\SDK\Identity;
$token = Identity::createToken(
siteKey: "site_abc123",
secret: "opsiq_whsec_your_secret",
customer: ["id" => "cust_1001", "email" => "user@example.com", "name" => "Jane"]
);
use OpsIQ\SDK\Client;
$client = new Client("opq_your_key", "https://your-opsiq.com");
$tickets = $client->tickets()->list(["status" => "open"]);DeveloperREST API
The OpsIQ REST API lets you programmatically access all platform features.
Request format
API request format
POST https://your-opsiq-domain.com/api/v1.php
Authorization: Bearer opq_your_api_key
Content-Type: application/json
{
"action": "endpoint.name",
"site_key": "site_abc123"
}Common endpoints
analytics.visitorsGet visitor data. Params: days, page, per_page.
analytics.sessionsGet session data. Params: days, search, source.
tickets.listList tickets. Params: status, department, priority.
tickets.createCreate a ticket. Params: subject, message, department, customer_email, priority.
tickets.replyReply to a ticket. Params: ticket_id, message, internal.
crm.contacts.listList CRM contacts. Params: search, lifecycle_stage.
crm.deals.listList CRM deals. Params: pipeline_id, stage_id, status.
events.sendSend a custom event. Params: event, customer_email, properties.
Rate limits
Per-key limit60 requests per minute per API key. HTTP 429 when exceeded.
Retry-After headerResponse includes how long to wait.
Best practiceExponential backoff. Do not retry immediately.
Is there an OpenAPI/Swagger spec?+
Yes. Available at /api/docs/ on your OpsIQ installation.
DeveloperEvents API
Send custom events from your server or website to OpsIQ for analytics, experiments, CRM triggers, and webhook conditions.
Browser-side events
Browser event tracking
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
button: "signup",
page: "/pricing",
variant: "green"
}]);Server-side events
Server-side event
POST /api/v1.php
Authorization: Bearer opq_your_key
Content-Type: application/json
{
"action": "events.send",
"site_key": "site_abc123",
"event": "subscription.upgraded",
"customer_email": "user@example.com",
"properties": {
"old_plan": "starter",
"new_plan": "pro",
"mrr_change": 50
}
}Naming convention
Dot notation"order.completed" not "orderCompleted".
Past tense"button.clicked" not "button.click".
Be specific"pricing.plan_selected" not "user_action".
DeveloperHow data flows through OpsIQ
Understanding the data flow helps you debug integrations and optimize performance.
Inbound data flow
1Widget beaconThe JavaScript widget sends page views, clicks, and chat messages to /beacon.php.
2Event ingestionEvents stored in opsiq_events with site_key, event type, customer, and properties.
3Session assemblySession builder groups page views into sessions (via cron).
4Identity resolutionWhen identified, anonymous records are linked to the customer profile.
5Connector syncConnectors pull data from external platforms and store in the connector cache.
6AI contextAI assembles context from: visitor history, customer profile, connector data, KB, and prompt.
Outbound data flow
1Event firesInternal event fires (ticket.created, chat.message, order.completed).
2Job queueEvent placed in the async job queue.
3Webhook dispatchDispatcher signs and sends to all subscribed endpoints.
4Retry on failureFailed deliveries retried with exponential backoff.
SettingsSettings reference
Settings control how OpsIQ behaves across tracking, AI, tickets, security, and branding.
General settings
Business nameYour company name. Used in AI responses, emails, and widget header.
IndustryYour business industry. Helps the AI understand context.
TimezoneAll analytics and timestamps use this timezone.
Default currencyCurrency for revenue reporting.
Support hoursBusiness hours for auto-reply scheduling and SLA timers.
Tracking settings
Session timeoutInactivity time before a session ends. Default: 30 minutes.
Active thresholdHow long a visitor is "live" after last page load. Default: 90 seconds.
IP anonymizationReplace last IP octet with 0 for GDPR compliance.
Do Not TrackRespect DNT browser headers.
Excluded IPsIP addresses to skip in tracking. Add your team IPs.
Excluded pagesURL patterns to skip. Example: /admin/*
Data retentionHow long to keep visitor data. Default: 90 days.
Branding settings
LogoAppears in admin header, emails, and widget.
Primary colorAccent color throughout the admin UI and widget.
FaviconBrowser tab icon for your OpsIQ admin.
SettingsManaging your team
Invite team members and assign roles to control who can access what.
Roles
OwnerFull access including license, billing, and danger zone. One per installation.
Full AdminFull access except license and danger zone. Can manage admins.
AgentLimited to assigned departments. Tickets, chats, and analytics only.
Inviting team members
1Go to TeamNavigate to Team in the sidebar.
2Click InviteEnter the team member's email.
3Set roleChoose Owner, Full Admin, or Agent.
4Assign departmentsFor Agents, select accessible departments.
5Send inviteThey receive an email with a setup link.
SettingsYour sites (workspaces)
Sites (workspaces) let you manage multiple websites from one OpsIQ installation. Each has its own tracking, AI, connectors, and team access.
Creating a site
1Go to Connected SitesNavigate to Connected Sites.
2Add a new siteEnter name, domain, and description.
3Copy the site keyEach site gets a unique key (site_xxx) for the widget snippet.
4Configure independentlyEach site has its own AI, connectors, and settings.
How many sites can I have?+
Depends on your license plan. Check your license details.
SettingsLicense and plan
Your OpsIQ license controls features, site limits, and AI credit balance.
License keyEnter in Settings > License. Validated against the OpsIQ license server.
PlanDetermines feature availability and limits.
Site limitMaximum number of workspaces.
AI creditsIf using Managed AI, your credit balance is shown here.
ExpirationRenew 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.
SettingsSecurity and access
OpsIQ includes multiple security layers to protect your admin, data, and API access.
Security features
Admin authenticationEmail/password with optional 2FA.
Login lockoutTemporary lock after too many failed attempts.
IP blockingBlock IPs or CIDR ranges from accessing tracked sites.
Threat scoringBehavior-based threat scores. High-threat visitors can be auto-blocked.
HTTPS enforcementRequired for all connections. HTTP redirects to HTTPS.
HSTS headersStrict-Transport-Security prevents downgrade attacks.
CSRF protectionAll admin forms include CSRF tokens.
XSS protectionAll user input is escaped. CSP headers restrict script execution.
SSRF protectionOutbound webhooks block private/internal IP addresses.
Recommended setup
1Enable 2FAFor all admin accounts.
2Strong passwordsMinimum 12 characters, mixed.
3Review accountsRemove access for former team members.
4Monitor failed loginsCheck weekly for suspicious patterns.
5Keep updatedApply updates promptly for security patches.
SettingsRoles and permissions
Role-Based Access Control lets you control what each team member can do.
Default roles
OwnerEverything including license, danger zone, and installation management.
Full AdminEverything except license and danger zone. Can manage team.
AgentRespond 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.
SettingsBlocked IPs
Manage IP addresses blocked from accessing your tracked sites.
How to block
1Go to Security > Blocked IPs 2Add an IP or CIDR rangeExample: 203.0.113.42 or 203.0.113.0/24
3Add a reasonDocument 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.
SettingsFailed logins
All unsuccessful login attempts to your OpsIQ admin.
What each entry shows
Date/timeWhen the attempt happened.
IP addressSource of the attempt.
CountryGeographic location.
ReasonWrong password, locked, or not found.
Warning signs
Many attempts, same emailPassword guessing. Ensure 2FA is enabled.
Many attempts, different emailsAutomated attack. Block the source IP.
Unusual countriesIf your team is local, foreign attempts are likely attacks.
OperationsCron and automation
OpsIQ uses cron jobs to run scheduled tasks: email polling, session assembly, analytics, retention, AI queue, CRM scoring, and connector syncing.
Required cron entry
Crontab entry
* * * * * php /path/to/opsiq/cron.php >> /var/log/opsiq-cron.log 2>&1
Runs every minute. OpsIQ internally manages which tasks to run and how often.
What cron does
Email pollingChecks mailboxes for new emails. Every 1-5 minutes.
Session assemblyGroups page views into sessions. Every 5 minutes.
Analytics aggregationCalculates dashboard rollups. Every 15 minutes.
Retention cleanupDeletes old data past retention period. Daily.
AI queueProcesses auto-reply drafts and AI tasks. Every minute.
CRM scoringUpdates lead scores and deal health. Every 15 minutes.
CRM forecast snapshotWeekly forecast data capture.
Connector syncPolls connected platforms. Every 5-15 minutes.
Admin presence pruningCleans stale presence records.
Verifying cron
1Check the logLook at /var/log/opsiq-cron.log for recent entries.
2Check diagnosticsSettings > Diagnostics shows "Last cron run." Should be within 5 minutes.
3Run manuallyTest 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.
OperationsSelf-hosting OpsIQ
OpsIQ self-hosted runs on your own server for full control over data, branding, and integrations.
Requirements
PHP8.1+. Extensions: curl, json, mbstring, openssl, pdo_mysql, gd.
MySQL / MariaDBMySQL 8.0+ or MariaDB 10.6+. InnoDB required.
Web serverApache 2.4+ with mod_rewrite, or Nginx.
HTTPSRequired. Use Let's Encrypt or any SSL provider.
CronSystem cron running every minute.
MemoryMinimum 512 MB PHP memory_limit. Recommended: 1 GB.
DiskMinimum 1 GB. Additional depends on data volume.
Installation
1Upload filesUpload OpsIQ to your web server document root.
2Create databaseCreate a MySQL database and user with all privileges.
3ConfigureEdit config with database credentials, URL, and license key.
4Run setupVisit the URL. Setup wizard creates tables and initial admin.
5Set up cronAdd cron entry to run every minute.
6Verify HTTPSEnsure HTTPS is working. HTTP should redirect.
Updating
1Backupmysqldump + file backup before updating.
2Upload new filesOverwrite existing files. Config is preserved.
3Run migrationsVisit admin. Migrations run automatically.
4VerifyCheck features, cron, and error log.
🚫Never delete .schema_cache.json unless instructed. A stale cache makes tables appear missing (sites/tickets vanish). Delete only to force a rebuild.
OperationsProduction guide
Checklist and best practices for running OpsIQ in production.
Before going live
HTTPS configuredSSL installed, HTTP redirects, HSTS enabled.
Cron runningVerify via diagnostics page.
AI testedChat as a customer. Verify accuracy and tone.
Widget installedOn all website pages. Verify with Live Feed.
Backup configuredAutomated daily database and file backups.
Error loggingPHP error log enabled and monitored.
Team invitedAll members have accounts with correct roles.
Knowledge base populatedAt least 5-10 articles.
Daily: Check dashboard, clear ticket queue, spot-check AI conversations.
Weekly: Review AI Insights, update KB, check team performance, review security.
Monthly: Review analytics trends, audit connectors, update AI training, verify backups.
OperationsPre-launch checklist
Use this checklist before launching OpsIQ.
1. Widget loads in all browsersChrome, Firefox, Safari, Edge.
2. Widget loads on mobilePhone and tablet.
3. Tracking records visitsVisit in private browser, check Live Feed.
4. AI chat worksAsk 5 common questions. Verify accuracy.
5. Ticket creation worksCreate via widget. Check admin Tickets.
6. Email to ticket worksSend email to mailbox. Verify ticket appears.
7. Auto-reply worksCreate test ticket. Wait for AI reply.
8. Connector worksAsk AI about a test customer.
9. Identity worksLog in as customer. Verify identification.
10. Team access worksLog in as each role. Verify permissions.
11. Webhooks fireCreate ticket. Verify webhook sent.
12. Backups workRestore to test environment. Verify data.
OperationsTroubleshooting
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.
Tickets
Emails not creating tickets+
Check: mailbox connected? Cron running? App password changed? IMAP settings correct?
Auto-reply not working+
Check: enabled? Department allowed? AI configured? Cron running? Human replied first?
Connectors
Connection failed+
Check: credentials correct? Key expired? API accessible from server? Base URL correct?
Connected but no data+
Check: API key scopes? Webhook sync enabled? Cron running?
Performance
Slow pages+
Check: database performance (SHOW PROCESSLIST), PHP memory (increase to 1GB), enable opcache, reduce retention period.
ReferenceGlossary
Definitions for terms used throughout OpsIQ.
ActionSomething the AI can do through a connector or the platform.
AgentA team member with limited access, or an AI agent.
BYOKBring Your Own Key — you provide your own AI API key.
ConnectorA plugin integrating an external platform with OpsIQ.
CSATCustomer Satisfaction score.
DealA revenue opportunity in the CRM.
DepartmentA ticket category for routing and access control.
EscalationMoving a ticket to a different department or from AI to human.
GeoIPVisitor location detection from IP address.
HandoffTransferring a conversation from AI to human.
Identity tokenSigned token identifying a website visitor.
Knowledge baseArticles the AI uses to answer questions.
LeadA visitor showing buying intent.
Lead score0-100 number indicating conversion likelihood.
Lifecycle stageWhere a customer is: Lead, Prospect, Customer, At Risk, Churned.
Managed AIAI provided as part of your OpsIQ plan.
PipelineVisual board of deal stages.
RBACRole-Based Access Control.
SessionA series of page views within a timeout window.
Site keyUnique identifier for a tracked website.
SLAService Level Agreement — target response times.
TokenUnit of AI text. Roughly 4 characters = 1 token.
Trust LayerSafety system controlling AI autonomy.
WebhookHTTP callback for event notifications.
WidgetJavaScript code embedded on your website.
WorkspaceA site with its own tracking, AI, connectors, and team. Same as "site."