OpsIQ Documentation

Build, operate, and extend OpsIQ.

This is the complete documentation for OpsIQ. Use it to set up the product, run support, configure AI, manage your CRM, install the widget, connect sites, build connectors, call the REST API, receive webhooks, package marketplace apps, and operate self-hosted deployments. Every feature is covered with detailed examples so you can operate OpsIQ without contacting support.

Customer guideAdmin guideDeveloper guideCRM referenceConnector SDKREST APISelf-hosted
Start here

What OpsIQ does for your business

OpsIQ is a complete AI-first business operating platform. It replaces your analytics, live chat, helpdesk, CRM, SEO toolkit, integration middleware, and developer platform with a single unified admin where every tool shares the same customer context. Instead of stitching together 8-12 separate SaaS products, you install OpsIQ once and operate everything from one screen.

Everything OpsIQ does — in detail

Website analytics and visitor intelligence

Real-time visitor tracking

Every page load, click, scroll, and navigation event is captured in real time. See who is on your site right now, what pages they are viewing, how long they spend, and where they came from — all without third-party cookies.

Visitor log and sessions

Full history of every visitor with device, browser, operating system, country, city, referrer, UTM parameters, landing page, and identity resolution. Sessions group page views into journeys so you can see the entire path a visitor takes.

Session replay

Timeline-style playback of captured visitor sessions. See exactly what users did — mouse movements, clicks, scrolls, page transitions, and form interactions. Use it to diagnose UX issues, understand drop-off points, and verify conversion flows.

Live feed

A real-time stream of visitor activity as it happens. See page views, chat starts, form submissions, and intent signals updating every few seconds. Filter by country, device, or referrer to focus on specific traffic segments.

Top pages

Pages ranked by visits, engagement time, bounce rate, conversions, and support activity. Identify your highest-performing content and pages that need improvement.

Geo intelligence

Country, city, and region breakdowns with maps. Device and browser distribution, traffic source analysis, search engine referrer tracking, and market penetration insights.

Intent funnel

Track visitor intent signals — pricing page visits, repeated returns, documentation browsing patterns, and support interactions — to identify visitors who are likely to buy, churn, or need help.

A/B experiments

Run split tests on your website directly from OpsIQ. Create variants, set traffic allocation, define conversion goals, and measure statistical significance. No external testing tool needed.

JavaScript error tracking

Capture client-side JavaScript errors from your website automatically. See error messages, stack traces, affected browsers, frequency counts, and which pages trigger them. Debug frontend issues without separate error monitoring.

Events log

Every tracked event — page views, custom events, chat interactions, form submissions, purchases — in a searchable, filterable log with full metadata.

Sales and conversions

Track orders, revenue, refunds, subscription renewals, and attribute conversions to traffic sources, campaigns, and visitor journeys. Revenue dashboards with period comparison and trend analysis.

Leads

High-intent visitors identified by behavior patterns. Score leads based on page visits, time on site, return frequency, support interactions, and custom signals. Feed leads directly into the CRM pipeline.

Site Intelligence (SEO and content analysis)

Site crawls

Automated crawling of your entire website to discover pages, detect broken links, find missing meta tags, check image alt text, validate canonical URLs, and map your site structure. Schedule crawls to run daily, weekly, or on demand.

Technical SEO audit

Comprehensive technical analysis: page speed scores, mobile responsiveness, Core Web Vitals, SSL certificate status, redirect chains, duplicate content detection, crawl depth analysis, and structured data validation.

Content audit

Evaluate every page for content quality, word count, readability score, keyword density, heading structure, internal/external link ratio, and freshness. Identify thin content, duplicate pages, and content gaps.

AI-powered search

Semantic search across your entire site content. Ask natural language questions about your content and get AI-synthesized answers with source page references.

SERP rank tracking

Monitor your search engine rankings for target keywords across Google and other engines. Track position changes over time, compare against competitors, and see which pages rank for which terms.

Keyword research

Discover keyword opportunities based on your content, competitor analysis, and search volume data. Get suggestions for new content topics, long-tail variations, and content optimization targets.

Backlink analysis

Monitor your inbound link profile. See which sites link to you, track new and lost links, analyze anchor text distribution, and identify link-building opportunities.

Local SEO grid

For businesses with physical locations: visualize your local search visibility across a geographic grid. See how your rankings vary by location, distance from your business, and search intent.

Google Business Profile sync

Connect your Google Business Profile to OpsIQ. Sync reviews, posts, Q&A, photos, and business information. Manage your GBP listing from inside OpsIQ. Respond to reviews, publish posts, and monitor insights.

Scheduled reports

Automated SEO and analytics reports generated on your schedule (daily, weekly, monthly). Reports include ranking changes, traffic trends, technical issues found, and content performance. White-label output available for agencies.

AI-powered support

Customer AI chat

AI answers customer questions on your website 24/7 using your knowledge base, connected platform data (orders, accounts, subscriptions), and custom training prompts. Supports multiple AI providers: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), and Grok (xAI).

Admin AI assistant

An AI copilot inside your admin panel that helps you write ticket replies, draft customer communications, analyze support trends, look up customer data across connected platforms, and execute actions through the connector system.

AI knowledge grounding

The AI is grounded in your knowledge base articles, FAQ entries, product documentation, and connected platform data. It does not hallucinate — it answers from your actual business information or escalates when uncertain.

Auto-handoff to humans

When the AI cannot resolve a question, detects frustration, or the customer asks for a human, it automatically hands off to your team with full conversation context. Configurable decline/timeout auto-revert back to AI.

AI training prompts

Write separate instruction prompts for customer-facing AI and admin-facing AI. Control tone, boundaries, escalation rules, prohibited topics, and business-specific behavior. Per-workspace configuration supported.

AI history and audit

Every AI conversation is logged with full request/response details, token usage, cost tracking, provider used, and model version. Review conversations to identify training gaps and improve AI accuracy.

AI insights

Automated analysis of AI conversation patterns. See common questions, resolution rates, handoff frequency, customer satisfaction by topic, and areas where the AI needs better training.

Per-workspace AI config

Each connected site/workspace can use its own AI provider, model, temperature, token budget, and training prompts. A SaaS company can use Claude for the main product and GPT-4o for a secondary brand.

Managed AI and BYOK

Two AI modes: Managed AI (included in your plan, no API key needed) or Bring Your Own Key (use your own OpenAI/Anthropic/Google/xAI API key for full control over model selection and costs). Both are first-class — every feature works with either mode.

AI token budgets and cost controls

Set monthly token budgets, per-conversation limits, and low-balance alerts. Track spending per provider, per workspace, and per conversation. Prevent runaway costs with hard ceilings.

Tickets and helpdesk

Native ticket system

Full helpdesk with departments, priorities (low/medium/high/urgent), statuses, SLA tracking, internal notes, customer replies, file attachments, and threaded conversations. No external helpdesk needed.

AI triage and auto-reply

AI automatically triages incoming tickets by department and priority. Enable auto-reply for safe departments — the AI drafts and sends a response after a configurable delay (default: 2 minutes) so humans can intervene first.

Email ingestion

Connect a mailbox (Gmail, IMAP, or provider-specific) to automatically create tickets from inbound emails. Replies to ticket notification emails update the ticket thread.

Ticket portal embed

Embed a customer-facing ticket portal on your website. Customers can submit tickets, view their history, reply to open tickets, and check status — all branded to your design.

Ticket merging

Merge duplicate tickets into a single thread. Merged tickets show [Merged] on the subject line. All conversation history is preserved in the surviving ticket.

Return to AI

After a human agent takes over a ticket, use "Return to AI" to let the AI resume auto-reply on that ticket. Useful when the human-required portion is resolved but the customer has follow-up questions the AI can handle.

Inbox copilot

AI-assisted ticket management from the inbox view. The copilot suggests replies, summarizes conversation history, recommends priority/department assignments, and can execute actions on connected platforms.

Chat and real-time support

Chat inbox

Real-time customer chat managed from a unified inbox. See all active conversations, customer identity, conversation history, and AI suggestions. Multiple agents can collaborate on a conversation.

Proactive chat rules

Trigger chat messages based on visitor behavior: time on page, specific URL visited, scroll depth, return visit count, exit intent, or custom events. Example: show a help message after 60 seconds on the pricing page.

Chat widget

A customizable chat widget embedded on your website. Supports AI chat, live agent chat, ticket submission, knowledge base search, and visitor identity. Responsive, accessible, and brandable.

CSAT surveys

Collect customer satisfaction ratings after chat and ticket interactions. Design surveys with your own questions, rating scales, and follow-up prompts. Results feed into team performance and AI insights.

Writing AI

Separate AI writing assistant for composing email drafts, ticket replies, announcements, and customer communications. Uses its own prompt (not the chat brain) for professional business writing.

AI-First CRM

CRM Command Center

A single screen showing your entire CRM state: pipeline value, deal velocity, upcoming tasks, at-risk deals, agent activity, and AI recommendations. The CRM home page is your daily starting point.

Contacts and companies

Manage customer contacts with full profiles: name, email, phone, company, tags, lifecycle stage, conversation history, ticket history, purchase history, and custom fields. Link contacts to companies for B2B relationship management.

Deals and pipeline board

Visual Kanban-style deal board with customizable stages. Drag deals between stages, set values, assign owners, track close dates, and see pipeline value at each stage. Multiple pipelines supported.

AI deal coaching

The AI analyzes each deal and provides coaching: risk signals (gone quiet, competitor mentioned, budget concerns), next-best-action recommendations, win probability, and suggested follow-up timing.

Forecast and reports

Revenue forecasting based on pipeline data, historical close rates, and deal velocity. Reports include pipeline by stage, by owner, by source, conversion rates, average deal size, and sales cycle length.

Prospecting agent (SDR)

AI-powered prospecting that identifies potential customers from your visitor data, lead signals, and connected platform activity. Suggests outreach targets, drafts initial messages, and scores lead quality.

Follow-up sequences

Automated multi-step follow-up sequences: email, wait, email, check response, escalate. Define sequences for new leads, stalled deals, post-purchase check-ins, and re-engagement campaigns.

Lifecycle and retention

Track customer lifecycle stages (lead, prospect, customer, churned) with automated transitions. The retention agent monitors for churn signals and suggests interventions.

Data steward agent

AI agent that continuously cleans and enriches your CRM data: deduplicates contacts, fills missing fields, validates emails, standardizes company names, and flags stale records.

Build my CRM

Natural language CRM configuration: tell the AI what your sales process looks like and it builds your pipeline stages, custom fields, deal templates, and automation rules.

CRM health check

Automated audit of your CRM data quality: duplicate contacts, deals without next steps, stale pipelines, missing contact information, and data completeness scoring.

Trust Dial

Three-level autonomy control for each CRM AI agent: Autopilot (AI acts independently), Copilot (AI suggests, human approves), and Manual (AI observes only). Set the dial per agent, per action type, and per deal value threshold.

Four AI agents

The CRM runs four specialized AI agents: Steward (data quality), SDR (prospecting), Retention (churn prevention), and Analyst (reporting and insights). Each agent has its own Trust Dial setting.

Connectors and integrations

Pre-built connectors

Ready-to-use connectors for Shopify, WooCommerce, BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, and Google Business Profile. Each connector brings platform-specific AI actions, knowledge, and data sync.

Connector Builder

Build custom connectors for any platform — no code, AI-assisted, or full code. The builder supports REST and GraphQL APIs, OAuth authorization code flow, webhook auto-registration with Stripe and simple signature schemes, pagination (offset, page, cursor, and link-header), list/error transforms, multi-action context, and marketplace packaging.

AI-assisted connector authoring

The ConnectorBuilderAI helps you build connectors: describe what you want and it suggests actions, writes request handlers, and maps API responses. Handles authentication, pagination, and error handling automatically.

OAuth flow for any connector

Generic in-app OAuth authorization flow that works with any connector. PKCE support, site-scoped state management, automatic token refresh. Connectors define their OAuth parameters and OpsIQ handles the flow.

Connector marketplace

Publish your connectors to the OpsIQ marketplace. Package connectors with profile.json, knowledge.json, workflow_recipes.json, and signed archives. Marketplace supports free and paid connectors with multi-source billing.

Connector signing

All connectors are cryptographically signed for integrity verification. Signing is checked at install time. Use the resign_all_connectors tool to re-sign after updates.

SmartLookup

Declarative fuzzy-matching system for connector actions. Define lookup rules and OpsIQ matches user queries to platform entities using fuzzyScore and smartRank algorithms. Example: find_country("germ") matches Germany with 88.9% confidence.

Action contracts

Connectors declare actions with typed parameters, authentication requirements, pagination rules, and response transforms. Over 1,200 HTTP actions across all connectors, all executable through the unified ActionExecutor.

Connector recipes

Pre-built workflow recipes that combine multiple connector actions into common business workflows. Example: "When a new order comes in on Shopify, create a ticket, update the CRM, and send a Slack notification."

Knowledge sync

Connectors declare knowledge topics that sync to the AI knowledge base. Platform-specific help articles, setup guides, and troubleshooting steps are automatically available to the AI without manual knowledge entry.

Developer platform

REST API

Full API for visitors, events, tickets, contacts, settings, and connector operations. API key authentication, rate limiting, and JSON request/response format. OpenAPI specification available.

Webhooks

Outbound webhooks for all major events: orders, invoices, subscriptions, tickets, chats, leads, user registrations, and cart abandonment. Async delivery via job queue, exponential backoff retry, SSRF protection, and auto-disable after 15 consecutive failures.

Webhook signing

Every outbound webhook is signed with HMAC-SHA256. Verify signatures on your receiving end to ensure webhook authenticity. Stable event_id for idempotent processing.

Widget SDK

JavaScript SDK for the tracking widget with identity resolution, custom event tracking, programmatic chat control, and page-specific configuration. Install recipes for React, Vue, Next.js, WordPress, Shopify, and static HTML.

Plugins and SDKs

Server-side SDKs and plugins for common frameworks. WordPress plugin, WHMCS module, and generic PHP/Node.js integration libraries.

Events API

Push custom events into OpsIQ from your backend: purchases, signups, feature usage, errors, or any business event. Events appear in the visitor timeline and feed into analytics and AI context.

Triggers cookbook

Build automated workflows triggered by events: new ticket, chat started, visitor identified, deal stage changed, or custom event. Triggers execute connector actions, send webhooks, update records, or notify your team.

API builder

Visual API and webhook builder inside the admin. Configure endpoints, test requests, inspect responses, and debug integrations without leaving OpsIQ.

Team and administration

Role-based access control

Three roles: Owner (full access, billing, danger zone), Full Admin (all operations except billing and danger zone), and Agent (only assigned departments, no settings access). All sensitive pages are hard-gated by role.

Team performance dashboard

Owner and Full Admin-only dashboard showing resolution times, workload distribution, handle depth, channel breakdown, trend analysis, SLA compliance, CSAT by agent, reopen rates, team rollups, and busiest hours. Updated in real time.

Admin presence and online tracking

Real-time who-is-online widget in the admin navigation. Heartbeat-based presence detection (60-second ping, 300-second extend, auto-prune after 120 days). See which admins are currently active and on which pages.

Per-workspace settings

Each connected site (workspace) can have its own AI configuration, connector settings, ticket departments, branding, and operational rules. Global defaults cascade to workspaces that do not override them.

Multi-site management

Manage multiple websites from one OpsIQ admin. Each site has its own tracking snippet, visitor data, and configuration. Switch between sites from the admin navigation.

Email template system

Registry-driven email templates for all automated communications: ticket notifications, chat transcripts, welcome emails, password resets, and system alerts. Edit HTML templates with live preview, variable chips ({{customer_name}}, {{ticket_id}}), and global layout control.

Import and export

Import contacts, tickets, and knowledge articles from CSV/JSON. Export visitor data, analytics reports, and CRM records. Data portability for migration between systems.

Security, compliance, and operations

Enterprise SSO

OIDC (OpenID Connect) single sign-on with full runtime: discovery, authorize, callback, JWKS signature verification, userinfo, domain allow-listing, JIT provisioning, and status guards. SAML configuration support.

GDPR and data compliance

Built-in DSAR (Data Subject Access Request) handling: export and delete customer data across all systems. Contact-level data erasure covering sessions, tickets, chats, CRM records, and email logs. Consent management and retention policies.

IP blocking and brute-force protection

Block specific IPs or ranges from accessing your site or admin. Automatic lockout after configurable failed login attempts. Failed login log with IP, timestamp, and user agent.

HSTS and security headers

HTTP Strict Transport Security, Permissions-Policy headers, and secure cookie configuration. Self-hosted deployments can add CSP headers through server configuration.

Outbound webhook hardening

SSRF guard blocks webhooks to private/metadata IP ranges. Async delivery prevents slow endpoints from blocking your application. Auto-disable after 15 consecutive failures prevents resource waste on dead endpoints.

Workspace isolation

Strict data isolation between workspaces. Visitors, tickets, chats, CRM records, and AI conversations are scoped to their workspace. Cross-workspace data leaks are prevented at the query layer.

Billing cycle management

Support for monthly, quarterly, semi-annual, yearly, biennial, and lifetime billing cycles. Currency normalization for multi-currency gateways. FX conversion on payment receipt for accurate revenue reporting.

Cron and scheduled automation

Built-in cron system for scheduled tasks: report generation, data cleanup, subscription renewals, AI training updates, connector syncs, and webhook retries. Health diagnostics with warning indicators.

Data retention policies

Configure how long visitor sessions, chat transcripts, AI conversation history, and event logs are retained. Automatic cleanup of aged data to manage storage and comply with retention policies.

Diagnostics and health

System health dashboard showing cron status, database connectivity, AI provider status, connector health, webhook delivery rates, and storage usage. Warnings for configuration issues and performance bottlenecks.

Who OpsIQ is for

E-commerce stores

Stores

Track every visitor from landing to purchase. Let AI answer "Where is my order?" using live Shopify/WooCommerce/BigCommerce data. Manage support tickets with AI auto-reply. Run a deal pipeline for wholesale and B2B leads. Attribute revenue to traffic sources and campaigns. Monitor cart abandonment with recovery workflows.

SaaS and software companies

SaaS

Monitor trial signups and feature adoption with session replay. Track which documentation pages convert. Automate support with AI grounded in your API docs. Manage subscription revenue and expansion deals in the CRM. Connect your billing platform (Stripe, WHMCS) for real-time MRR tracking. Use the CRM lifecycle agent to detect and prevent churn.

Agencies and freelancers

Agency

Offer white-label analytics and support portals to clients. Track leads across multiple client sites from one admin. Use the CRM pipeline to manage prospects and project leads. Build custom connectors for client platforms using the Connector Builder. Generate branded SEO reports with Site Intelligence. Resell marketplace connectors as value-add services.

Hosting and infrastructure

Hosting

Deep WHMCS integration with 80+ AI actions for order lookup, service management, DNS, and provisioning. Auto-reply to common hosting questions using knowledge base articles. Track server status page engagement. Manage technical support tickets with AI triage. Use the billing cycle ladder for monthly through lifetime hosting plans.

Support-heavy businesses

Support

Deflect 40-70% of repetitive questions with AI chat grounded in your knowledge base. Route tickets to the right department with AI triage. Track team performance with resolution times, SLA compliance, and CSAT by agent. Use the writing AI for professional reply drafting. Monitor support trends with AI insights.

Marketing and SEO teams

Marketing

Full Site Intelligence suite: crawls, technical SEO audits, content analysis, SERP rank tracking, keyword research, backlink monitoring, and local SEO grid. Google Business Profile management. Scheduled white-label reports for clients. A/B testing built into the tracking widget. Campaign attribution across all channels.

Solo founders and small teams

Startups

Start with just tracking and chat — free to add. Then add tickets when you get support volume. Turn on the CRM when you start selling. Connect platforms as you adopt them. OpsIQ scales from one person doing everything to a 50-person operations team with RBAC, departments, and per-agent performance tracking.

Enterprise and multi-brand

Enterprise

Enterprise SSO with OIDC for centralized authentication. Multi-workspace isolation for separate brands or divisions. Per-workspace AI configuration with different providers and models. Custom connector development with marketplace distribution. Audit trails, GDPR compliance tools, and data retention policies.

What OpsIQ replaces

Google Analytics + Hotjar + Plausible

Full website analytics with visitor tracking, session replay, page rankings, geo intelligence, intent funnels, conversion attribution, events, A/B experiments, and JS error tracking — all privacy-friendly, all in one platform.

Intercom + Drift + Tidio

AI-powered customer chat with knowledge grounding, multi-provider AI support, auto-handoff to humans, proactive chat rules, conversation history, CSAT surveys, and ticket creation from chat.

Zendesk + Freshdesk + Help Scout

Native ticket system with departments, priorities, SLA, AI triage, auto-reply with configurable delay, email ingestion, ticket embed, ticket merging, inbox copilot, and Return to AI capability.

HubSpot + Pipedrive + Salesforce

AI-first CRM with four specialized AI agents (Steward, SDR, Retention, Analyst), Trust Dial autonomy control, pipeline board, deal coaching, forecasting, sequences, lifecycle management, and natural language CRM configuration.

Ahrefs + SEMrush + Moz

Site Intelligence with automated crawls, technical SEO audits, content analysis, AI search, SERP rank tracking, keyword research, backlink analysis, local SEO grid, and scheduled white-label reports.

Zapier + Make + custom middleware

Connector SDK with 25+ pre-built connectors, Connector Builder (no-code/AI-assisted/full-code), OAuth flow, webhook auto-registration, 1,200+ executable actions, SmartLookup, marketplace, and signed packages.

Google Business Profile manager

Full GBP connector: review management, post publishing, Q&A management, photo uploads, business info sync, insights tracking, and AI-powered review responses — all from inside OpsIQ.

Separate email template tools

Registry-driven email templates with visual editor, live preview, variable chips, global layout control, and per-event customization for all automated communications.

Team management dashboards

Built-in team performance: resolution times, workload, SLA compliance, CSAT by agent, reopen rates, busiest hours, real-time presence tracking, and per-department breakdowns.

GDPR compliance tools

Native DSAR handling, data erasure across all systems, consent management, retention policies, and audit trails — built into the platform, not bolted on.

Two editions

Cloud edition

Hosted by OpsIQ. Sign up, connect your website, and start using immediately. Updates, infrastructure, managed AI, and backups are handled for you. Ideal for teams that want zero server management.

Self-hosted module

Install OpsIQ on your own server for full control over data, branding, updates, and integrations. Requires PHP 8.1+, MySQL 5.7+, HTTPS, and cron. Supports WHMCS integration as an addon module. Full data sovereignty.

Recommended reading order

1
Quick start

Follow the 30-minute setup guide to get tracking, chat, and basic AI working on your website.

2
Dashboard and analytics

Learn how to read your visitor data, set up session replay, identify leads, and understand traffic patterns.

3
Site Intelligence

Run your first SEO crawl, check your technical health, and set up SERP rank tracking for your target keywords.

4
Tickets and support

Set up departments, configure auto-reply with AI, connect email ingestion, and train your AI to handle common questions.

5
CRM

Organize contacts, build your pipeline, configure the AI agents, set Trust Dial levels, and let AI coach your deals.

6
Connectors and developer tools

Connect your e-commerce/billing platform, build custom connectors, set up webhooks, and integrate via the REST API.

💡
New to OpsIQ? Start with the Quick Start guide below. You can have tracking and basic AI chat running in under 30 minutes.
Start here

Quick start in 30 minutes

Follow these steps in order to get OpsIQ running. Each step builds on the previous one. By the end, you will have visitor tracking, AI chat, and basic ticket support.

The 30-minute setup

1
Activate your license

Enter your license key in the OpsIQ admin. If you are on the cloud edition, this is done automatically when you sign up. Self-hosted users: go to Settings, enter your license key, and click Activate. You should see a green "Active" badge.

2
Set your business identity

Go to Settings and fill in your business name, industry, timezone, default currency, and support hours. This information is used by the AI when answering customer questions and by analytics for timezone-aware reports.

3
Choose an AI provider

Go to AI Configuration and select your provider. Options: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), or Grok (xAI). Enter your API key if using your own key, or use Managed AI if available on your plan. Click "Test connection" to verify.

4
Install the tracking widget

Go to Connected Sites, copy the tracking snippet, and paste it before the closing </body> tag on your website. Visit your site in a private browser, then check the Live Feed in OpsIQ — you should see yourself as a visitor within 15 seconds.

5
Connect your platform

If you use Shopify, WooCommerce, WHMCS, or another supported platform, go to Connectors, find your platform, enter credentials, and click Test Connection. This gives the AI access to order data, customer profiles, and support context.

6
Invite your team

Go to Team, click Invite, enter their email and role (Owner, Full Admin, or Agent). Agents can only access departments you assign them to. Owners and Full Admins see everything.

The fastest possible path (5 minutes)

Step 1: Install widget

Copy the snippet from Connected Sites and paste it on your website. This gives you tracking immediately.

Step 2: Enable AI

Go to AI Configuration, pick a provider, enter your key, and save. AI chat is now active on your website.

Done

You now have visitor tracking and AI chat. You can add tickets, CRM, and connectors later.

Day 2: Make it useful

Add knowledge

Go to Knowledge Base and add 5-10 articles about your most common questions. The AI uses these to answer customers accurately.

Create departments

Go to Tickets and create at least 2 departments (e.g., "Sales" and "Support"). Assign team members to each.

Write your AI prompt

Go to AI Training and write a Customer AI prompt that describes your business, tone, and escalation rules.

Test a conversation

Open your website in a private browser and chat with the AI as a customer. Check that answers are accurate and tone is right.

Week 1: Build your operations

Connect email

Set up a mailbox (Gmail, IMAP, or a provider connector) so customer emails automatically create tickets.

Set up auto-reply

Enable ticket auto-reply for safe departments. Set a 2-minute delay so humans can intervene first.

Review analytics

Check Dashboard daily. Look at visitor count, bounce rate, top pages, and sales if tracking is connected.

Start your CRM

Open AI CRM and let OpsIQ import contacts from your connected platforms. Review the pipeline board.

Month 1: Optimize

Review AI history

Check AI History weekly. Look for wrong answers, missed questions, and opportunities to add knowledge.

Add proactive rules

Create a rule: if a visitor is on the pricing page for 60+ seconds, show a chat message asking if they need help.

Build a connector

If you use a platform that does not have a built-in connector, use the Connector Builder to create one.

Set up webhooks

Connect OpsIQ to your internal tools using outbound webhooks for ticket, chat, and sales events.

Can I skip the AI and just use tracking?+

Yes. The AI provider is optional. OpsIQ works as a pure analytics and ticketing platform without AI. You can enable AI later when you are ready.

Can I skip connectors and add them later?+

Yes. Connectors enrich the AI with platform-specific data, but OpsIQ works without them. Start with tracking and chat, then connect platforms when needed.

What if I do not have a website yet?+

You can still use OpsIQ for tickets, CRM, and team collaboration. The tracking widget is optional. Add it when your website is ready.

How do I know if the widget is installed correctly?+

Visit your website in a private/incognito browser. Then check OpsIQ Live Feed. You should see your visit appear within 15 seconds. If not, check: (1) is the snippet pasted correctly, (2) is the site key correct, (3) are ad blockers or CSP headers blocking the script.

Start here

Complete product map

OpsIQ is not one feature. It is an operator admin, a website widget, an AI support layer, a ticket/helpdesk system, a full CRM with four AI agents, a Site Intelligence suite, a connector platform with marketplace, and a developer surface. Here is every component it contains.

Operator admin

Dashboard, live feed, visitor log, sessions, session replay, top pages, geo intelligence, intent funnel, events log, A/B experiments, JS error tracking, sales and conversions, leads, AI CRM (command center, contacts, companies, deals, pipeline board, deal coaching, forecast, prospecting, sequences, lifecycle, data steward, Build my CRM, CRM config, CRM health, CRM API), tickets, chat inbox, proactive rules, CSAT surveys, email drafts, mailboxes, AI configuration, AI training, AI history, AI insights, knowledge base, connectors, Connector Builder, marketplace, connected sites, team management, team performance, settings, diagnostics, and license.

Customer-facing surfaces

Website tracking widget (analytics beacon + chat + ticket embed + knowledge base search), client AI chat, ticket submission portal, visitor identity token handling, file uploads, CSAT survey widget, and customer-facing help center.

AI-First CRM

Command center, contacts, companies, deals, pipeline board with drag-and-drop, AI deal coaching (risk signals, next-best-action, win probability), revenue forecasting, prospecting agent (SDR), automated follow-up sequences, lifecycle and retention management, data steward agent (dedup, enrich, validate), Build my CRM (natural language setup), CRM configuration, CRM health check, Trust Dial (Autopilot/Copilot/Manual per agent), four specialized agents (Steward, SDR, Retention, Analyst), and CRM API with webhooks.

Site Intelligence suite

Automated site crawls, technical SEO audit (speed, mobile, Core Web Vitals, SSL, redirects, structured data), content audit (word count, readability, keyword density, heading structure), AI-powered semantic search, SERP rank tracking across engines, keyword research with opportunity scoring, backlink analysis and monitoring, local SEO grid visualization, Google Business Profile sync (reviews, posts, Q&A, photos, insights), scheduled reports (daily/weekly/monthly), and white-label PDF output for agencies.

AI and automation

Customer AI chat (multi-provider: Claude, GPT-4o, Gemini, Grok), admin AI assistant, AI knowledge grounding, auto-handoff with configurable revert, per-workspace AI configuration, managed AI and BYOK modes, token budgets and cost controls, AI history audit trail, AI insights analysis, ticket AI triage, ticket auto-reply with delay, writing AI (separate prompt), and admin inbox copilot.

Connectors and integrations

25+ pre-built connectors (Shopify, WooCommerce, BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, Google Business Profile), Connector Builder (no-code/AI-assisted/full-code), generic OAuth flow with PKCE, connector marketplace with paid distribution, connector signing and verification, SmartLookup fuzzy matching, 1,200+ executable HTTP actions, knowledge sync, and workflow recipes.

Developer platform

REST API (visitors, events, tickets, contacts, settings, connectors), OpenAPI spec, API key management, outbound webhooks (async, signed, retried, SSRF-guarded, auto-disable), Events API for custom event ingestion, widget SDK with identity resolution, triggers cookbook, action contracts, connector SDK, marketplace packaging, server-side SDKs (PHP, Node.js), WordPress plugin, and WHMCS module.

Settings and operations

Business identity, AI configuration per workspace, tracking settings, security (HSTS, Permissions-Policy, IP blocking, brute-force protection), RBAC (Owner/Full Admin/Agent), team management and invitations, team performance dashboard, admin presence tracking, email template system (registry-driven, visual editor, variable chips), survey designer, domain knowledge, ticket embed configuration, branding, data retention policies, billing cycle management (monthly through lifetime), currency normalization, import/export, diagnostics, cron automation, and danger zone.

Security and compliance

Enterprise SSO (OIDC with JWKS verification, JIT provisioning), SAML configuration, GDPR/DSAR handling (export and delete across all systems), data erasure per contact, consent management, workspace isolation (strict query-layer scoping), audit trails, failed login tracking, IP blocking, outbound webhook SSRF guard, and data retention policies.

Provider bridge

Managed AI proxied through OpsIQ provider URL, Site Intelligence provider calls, license validation, health reports, PDF rendering, and data exports — all routed through the configured provider endpoint, not direct vendor API calls from your server.

Every admin page

Dashboard

Core

Daily command center: traffic overview, live visitor count, sales summary, support queue depth, AI activity alerts, and quick-action shortcuts.

Live feed

Analytics

Real-time visitor stream: page views, chat starts, form submissions, and intent signals updating every few seconds with country, device, and referrer filters.

Visitor log

Analytics

Complete visit records: device, browser, OS, country, city, referrer, UTM params, landing page, identity, and full page-view history.

Sessions

Analytics

Journey-grouped view: page flow, time on page, scroll depth, conversion path, and exit page for each visitor session.

Session replay

Analytics

Timeline playback of captured events: mouse movement, clicks, scrolls, page transitions, and form interactions for UX diagnosis.

Top pages

Analytics

Page performance ranking: visits, engagement time, bounce rate, conversions, support interactions, and trend direction.

Geo intelligence

Analytics

Geographic reports: country/city breakdown with maps, device distribution, browser share, traffic sources, and market penetration.

Intent funnel

Analytics

Behavioral intent tracking: pricing visits, return frequency, doc browsing, support interactions, and custom signals with conversion probability.

Events log

Analytics

Searchable event history: page views, custom events, chats, purchases, form submissions with full metadata and filtering.

A/B experiments

Analytics

Split testing: create variants, allocate traffic, define goals, measure significance, and declare winners — all from inside OpsIQ.

JS errors

Analytics

Frontend error capture: messages, stack traces, affected browsers, frequency, affected pages, and trend tracking.

Sales

Sales

Revenue dashboard: orders, renewals, refunds, attribution by source, campaign performance, period comparison, and trend analysis.

Leads

Sales

Lead management: scoring, source attribution, CRM status, contact details, behavioral signals, and pipeline routing.

AI CRM

CRM

Full CRM: command center, contacts, companies, deals, pipeline board, coaching, forecast, prospecting, sequences, lifecycle, data steward, and health.

Tickets

Support

Support inbox: departments, priorities, SLA tracking, AI triage, auto-reply, internal notes, file attachments, merging, and status management.

Chat inbox

Support

Live conversations: AI and human chat, handoff, collaboration, conversation history, customer identity, and CSAT collection.

Email drafts

Support

Email management: inbound mail to tickets, AI-assisted reply composition, template selection, and mailbox configuration.

AI config

AI

Provider setup: select Claude/GPT-4o/Gemini/Grok, enter API key or enable managed AI, set model, temperature, and token budgets per workspace.

AI training

AI

Prompt authoring: customer-facing and admin-facing prompts, escalation rules, tone guidelines, prohibited topics, and boundary configuration.

AI history

AI

Conversation audit: full request/response logs, token usage, cost per conversation, provider, model version, and resolution outcome.

AI insights

AI

Pattern analysis: common questions, resolution rates, handoff frequency, satisfaction by topic, and training gap identification.

Knowledge base

AI

AI training content: articles, FAQ entries, product docs, connector knowledge, and custom entries. Semantic and keyword search for AI grounding.

Connectors

Integrations

Integration hub: installed connectors, health status, action inventory, credential management, marketplace browser, and Connector Builder.

Connected sites

Settings

Site management: tracking snippet, site key, widget configuration, domain settings, and per-site workspace isolation.

Team

Settings

User management: invite members, assign roles (Owner/Full Admin/Agent), set department access, and manage permissions.

Team performance

Settings

Ops metrics: resolution times, workload, SLA compliance, CSAT by agent, reopen rates, busiest hours, and trend analysis.

Settings

Settings

Configuration: business identity, AI setup, tracking, security, branding, retention, email templates, billing, import/export, diagnostics, and danger zone.

License

Settings

Plan management: license status, plan features, usage metrics, renewal date, and upgrade/downgrade options.

Analytics

The Dashboard

The Dashboard is your daily command center. It shows traffic, sales, support load, AI activity, and conversion indicators in one view. Open it every morning to understand what happened overnight and what needs attention today.

Dashboard cards explained

Live visitors

The number of people on your website right now. This updates every 15 seconds (configurable). A visitor is "active" if they loaded a page within the active threshold (default: 90 seconds).

Unique visitors

How many different people visited your website in the selected date range. OpsIQ identifies visitors by a combination of browser fingerprint, cookies, and (if available) authenticated identity.

New vs returning

New visitors are seeing your site for the first time. Returning visitors have been seen before. A high returning ratio means your content brings people back. A very low returning ratio might mean you are not retaining interest.

Bounce rate

The percentage of visitors who left after viewing only one page. A bounce rate above 70% on landing pages usually means the page is not meeting visitor expectations — wrong content, slow load, or poor mobile experience.

Average time on page

How long visitors spend on each page on average. Very short times (under 10 seconds) on content pages suggest the content is not engaging. Very long times on checkout pages might indicate confusion.

Threats blocked

IP addresses that OpsIQ identified as potentially malicious based on threat scoring, brute force attempts, or manual blocks. Click to see the blocked IPs list.

Sales today / this week / this month

Revenue from connected sales sources (Shopify, WooCommerce, Stripe, etc.). If sales show zero, check that your platform connector is connected and syncing.

Trend chart

A line graph showing visitor count over the selected date range. Look for patterns: traffic spikes (campaigns, press mentions), dips (weekends, holidays), and sustained trends.

Top sources

Where your visitors come from: direct, Google, social media, email campaigns, referral sites. Use this to understand which marketing channels are working.

Top browsers

Chrome, Safari, Firefox, Edge, and others. If a browser has unusually high bounce rate, you might have a CSS or JavaScript compatibility issue.

Hourly heatmap

A grid showing visitor activity by hour of day and day of week. Use this to decide when to schedule support shifts, when to send announcements, and when to run promotions.

Recent visitors

The last few visitors with country, page, device, and source. Useful for quick spot-checks during campaigns.

Using the date range filter

Click the date picker at the top right of the Dashboard. Presets: Today, Yesterday, Last 7 days, Last 30 days, This month, Last month, Custom range. All dashboard cards and charts update when you change the range. The date range is in your configured timezone (set in Settings).

Worked examples

Bounce rate spike investigation

Scenario:
Your bounce rate jumped from 45% to 78% this week. What happened?
What to do:

Check: (1) Did a specific landing page change? Go to Top Pages and sort by bounce rate. (2) Did a campaign send traffic to the wrong page? Check Top Sources for new referrers. (3) Did the site break on mobile? Check browser breakdown for mobile bounce rate. (4) Is it bot traffic? Check the Threats counter and visitor details for suspicious patterns.

Zero visitors on dashboard

Scenario:
The dashboard shows 0 live visitors even though your website is getting traffic.
What to do:

Check: (1) Is the tracking widget installed? View your website source code and search for the OpsIQ script. (2) Is the site key correct? Compare the data-site-key in the script with the key in Connected Sites. (3) Is a CDN or cache serving a stale page without the script? Clear your CDN cache. (4) Is an ad blocker or CSP header blocking the script? Check the browser console for blocked requests.

Reading the hourly heatmap

Scenario:
Your heatmap shows heavy activity between 10am-2pm on weekdays but nothing on weekends.
What to do:

This is a B2B traffic pattern. Your visitors are working professionals browsing during business hours. Implications: (1) Schedule support staff for weekday business hours. (2) Send email campaigns Tuesday-Thursday morning. (3) Weekend maintenance windows are safe. (4) Consider offering live chat only during peak hours.

Traffic spike from unknown source

Scenario:
You see a sudden spike of 500 visitors in one hour from an unknown referrer.
What to do:

Go to Visitors and filter by the time window. Check: (1) Are they real visitors or bots? Look at session duration, pages viewed, and browser diversity. (2) If real, what page are they landing on? (3) Check the referrer URL — someone might have linked to you from Reddit, Hacker News, or a popular blog. (4) If it is bot traffic, check Threats and consider blocking the IP range.

Why does my visitor count differ from Google Analytics?+

OpsIQ counts visitors differently. It uses browser fingerprinting and cookies, while GA uses a different cookie model. Bot filtering, ad blocker rates, and script loading order can also cause differences. A 10-20% variance is normal.

Can I embed the dashboard in another tool?+

The dashboard is designed for the OpsIQ admin. For external reporting, use the REST API to pull analytics data and display it in your own dashboard or BI tool.

What does the "threats" counter mean?+

It counts IP addresses that OpsIQ has flagged or blocked based on threat scoring, repeated failed logins, or manual blocks. Click the counter to see details and manage blocks.

Analytics

Visitor log

The Visitor Log shows every visit to your tracked websites. Each row is one page load from one visitor. Use it to investigate individual visitor behavior, find campaign traffic, and diagnose tracking issues.

What each row shows

IP address

The visitor's IP address. Anonymized if IP anonymization is enabled in Settings. Click to see all visits from this IP.

Country and city

Detected from the IP address using GeoIP data. Requires MaxMind GeoLite2 database or Cloudflare geo headers. Shows "Unknown" if GeoIP is not configured.

Page URL

The page the visitor loaded. Click to see the full URL. Long URLs are truncated in the table view.

Referrer

Where the visitor came from before landing on your site. "Direct" means no referrer (bookmarks, typed URLs, some app links).

Device and browser

The visitor's device type (desktop, mobile, tablet) and browser (Chrome, Safari, Firefox, etc.). Parsed from the User-Agent header.

Date and time

When the page was loaded, in your configured timezone.

Customer identity

If the visitor is identified (via identity token or login), their name or email appears. Otherwise shows as anonymous.

Filters

Date range

Filter visits to a specific time period. Default: last 7 days.

Search

Search by IP address, page URL, referrer, country, or customer email.

Source

Filter by traffic source: Direct, Organic, Social, Referral, Paid, Email.

Device

Filter by Desktop, Mobile, or Tablet.

New only

Show only first-time visitors who have never been seen before.

Worked examples

Find visitors from a specific campaign

Scenario:
You launched a Google Ads campaign with UTM parameter utm_source=google&utm_medium=cpc&utm_campaign=summer-sale. How do you find those visitors?
What to do:

In the Visitor Log, use the Search field and type "summer-sale". The search checks referrer URLs and page URLs, so UTM parameters will match. You can also filter by Source = Paid to narrow down further.

Find a customer who reported a problem

Scenario:
A customer emailed saying "your checkout page was broken yesterday around 3pm." How do you find their session?
What to do:

Search by their email address in the Visitor Log. If they were logged in, their identity will appear. Set the date range to yesterday. Look for visits to checkout pages around 3pm. Click their session to see the full page flow and any JavaScript errors.

Detect a loop hitter or scraper

Scenario:
You notice an IP address has 500+ visits in one hour, all to the same page.
What to do:

This is likely a bot, scraper, or broken script. Go to the Visitor Log and search by that IP. Check: (1) Are all visits to the same page? (2) Is the user agent a known bot? (3) Is the session duration always 0 seconds? If confirmed as a bot, go to Security and block the IP.

Visitor log vs Sessions vs Live feed

Visitor log

Raw page loads. One row per page view. Best for: investigating specific pages, finding traffic from specific sources, diagnosing tracking issues.

Sessions

Groups page views into journeys. One row per visit session. Best for: understanding user flow, measuring session duration, identifying conversion paths.

Live feed

Real-time activity. Shows visitors currently on your site. Best for: monitoring campaigns in progress, spotting high-intent visitors, watching support opportunities.

Why do I see my own visits in the log?+

OpsIQ tracks all visits by default. To exclude your own traffic, add your IP address to the excluded IPs list in Settings > Tracking.

Why does a visitor show "Unknown" country?+

GeoIP lookup requires either Cloudflare geo headers (automatic if using Cloudflare) or a MaxMind GeoLite2 database file. Check Settings > GeoIP Path to ensure the database file exists and is readable.

How long is visitor data kept?+

Visitor data is kept for the retention period configured in Settings (default: 90 days). After that, old records are automatically cleaned up by the cron retention job.

Analytics

Sessions

Sessions group multiple page views from the same person into a single journey. While the Visitor Log shows individual page loads, Sessions show you how people move through your website from landing to exit.

How sessions work

A session starts when a visitor loads their first page. It continues as they navigate to more pages. A session ends when the visitor is inactive for the session timeout period (default: 30 minutes) or closes their browser. The same person returning after the timeout creates a new session.

What each session shows

First page

The landing page — where the visitor entered your site. This tells you which content is attracting people.

Last page

The exit page — where the visitor left. If the exit page is often the pricing page, visitors might be comparing you with competitors.

Page count

How many pages the visitor viewed in this session. More pages usually means more engagement, but it can also mean the visitor is lost.

Duration

Total time from first page load to last activity. Sessions with 0 seconds are bounces (single page view, no further interaction).

Source

The traffic source for this session (Direct, Google, social, referral, etc.).

Country

Detected country from the visitor's IP address.

Bounce

Whether the visitor left after viewing only one page. Bounced sessions have a red indicator.

Conversion

Whether the visitor completed a tracked conversion event (purchase, signup, form submission) during this session.

Filters

Search

Search by IP, email, page URL, or referrer within sessions.

Type

Filter by New visitors (first session ever) or Returning visitors.

Source

Filter by traffic source.

Country

Filter by country to see sessions from a specific region.

Threats/Bounced

Filter to show only bounced sessions or sessions flagged as threats.

Worked examples

Profile a high-value customer

Scenario:
A customer just made a large purchase. You want to understand their journey before buying.
What to do:

Search for their email in Sessions. Look at all their sessions: (1) How many times did they visit before buying? (2) Which pages did they view? (3) Did they use chat or open a ticket? (4) What was the total time from first visit to purchase? This tells you the typical buying journey for high-value customers.

Detect login from a new location

Scenario:
A customer usually logs in from Nigeria but you see a session from Russia.
What to do:

Search for the customer email in Sessions. Compare the country of recent sessions. If a session suddenly appears from an unusual country, it could be legitimate travel or a compromised account. Check: (1) Was there a failed login attempt before the successful one? (2) Did the IP change within the same session? Flag it for review if suspicious.

What is the difference between a session and a visitor?+

A visitor is a person (or browser). A session is one visit from that person. The same visitor can have many sessions over time. Sessions expire after the timeout period.

How does OpsIQ identify returning visitors?+

OpsIQ uses a combination of cookies, browser fingerprinting, and authenticated identity tokens. If a visitor clears their cookies and is not logged in, they will appear as a new visitor.

Analytics

Live feed

The Live Feed shows visitors currently on your website in real time. It updates automatically every 15 seconds (configurable). Use it during campaigns, product launches, and busy support periods to see what is happening right now.

How it works

The Live Feed polls your server at the configured refresh interval. Each row shows a visitor currently on your site: their current page, country, device, source, session duration, and page count. Green highlights indicate new activity since the last refresh. Click any visitor row to see their full session details.

Settings

Refresh interval

How often the live feed updates. Default: 15 seconds. Lower values (5-10s) give faster updates but use more server resources. Higher values (30-60s) are easier on the server but less real-time.

Active threshold

How long a visitor is considered "active" after their last page load. Default: 90 seconds. If a visitor loads a page and then reads it for 2 minutes without clicking, they disappear from the live feed after the threshold.

Pause button

Click Pause to stop auto-refresh. Useful when you want to read details without the list updating. Click Resume to restart.

Worked examples

Spot a hot lead during a campaign

Scenario:
You are running a product launch. A visitor just viewed your homepage, then features, then pricing, and is now on the checkout page.
What to do:

This is high-intent behavior. In the Live Feed: (1) Click the visitor to see their session. (2) If they start a chat, the AI will have their full journey context. (3) If they leave without buying, they become a lead in the Leads page. (4) Consider creating a proactive rule to show a chat message when visitors reach checkout.

Too many visitors from the same IP

Scenario:
You see 20 visitors from the same IP address, all on different pages.
What to do:

This could be: (1) An office with shared internet — check if the visits look like real humans (different pages, reasonable session durations). (2) A bot or scraper — check if sessions are very short (0-1 seconds) or hitting pages systematically. (3) A load test — if you are running automated tests, exclude the IP from tracking.

Why does the live feed show 0 visitors when my site has traffic?+

Check: (1) Is the widget script installed on your site? (2) Is the site key correct? (3) Has the active threshold passed? (4) Are visitors using aggressive ad blockers that block the tracking script?

Can I filter the live feed by country or device?+

The live feed shows all active visitors. For filtered views, use the Visitor Log or Sessions pages with their filter options. The live feed is intentionally simple for real-time monitoring.

Analytics

Top pages

Top Pages shows which pages on your website get the most traffic. It ranks pages by visits, engagement, conversions, and support activity. Use it to identify your best content, find underperforming pages, and discover pages that generate support questions.

What each page shows

Page URL

The full URL path. Similar pages (e.g., product variants) are grouped if grouping is enabled.

Views

Total number of times this page was loaded in the selected date range.

Unique visitors

How many different people viewed this page (a person viewing the same page twice counts as 1 unique).

Bounce rate

Percentage of visitors who left your site after viewing only this page. High bounce on landing pages = problem. High bounce on "thank you" pages = normal.

Average time

How long visitors spend on this page on average. Very short = not reading. Very long on a form page = confusion.

Chat starts

How many chat conversations were started from this page. High chat starts on a product page means the product description might be unclear.

Support tickets

How many support tickets were created by visitors who were on this page. High ticket count = potential UX or content problem.

Worked examples

Find pages that drive support questions

Scenario:
Your support team keeps getting questions about shipping. Which page is failing?
What to do:

Sort Top Pages by "Support tickets" or "Chat starts" descending. Look for product or shipping pages with high counts. The page with the most support questions probably has unclear information. Fix the page content and monitor whether support questions decrease.

Find pages with high exit rate

Scenario:
You want to know where people leave your site most often.
What to do:

Sort by bounce rate descending. Ignore pages that are naturally exit points (thank you pages, confirmation pages). Focus on pages that should keep visitors engaged: product pages, pricing, features. These need better calls-to-action or clearer content.

Why does a page show 0 views even though I know it gets traffic?+

Check: (1) Is the tracking widget installed on that specific page? Single-page apps might not fire page views on route changes. (2) Is the page excluded in tracking settings? (3) Is a CDN serving a cached version without the tracking script?

Analytics

Geo intelligence

Geo Intelligence shows where your visitors come from by country, city, device, and source. Use it to understand your geographic markets, decide on language support, plan regional marketing, and detect suspicious traffic patterns.

What you see

Top countries bar chart

The top countries ranked by visitor count. Click a country to drill down to city-level data.

Country doughnut

Visual breakdown of traffic by country. Hover for percentages.

Full country table

Every country with visitors in the selected period, showing visitor count, session count, bounce rate, and conversion rate.

City drill-down

Click a country to see which cities within that country have the most visitors.

How GeoIP detection works

OpsIQ detects visitor location in two ways: (1) Cloudflare geo headers — if your site is behind Cloudflare, country detection is automatic and accurate. (2) MaxMind GeoLite2 database — download the free database and configure the path in Settings. City-level detection requires the GeoLite2-City database, not just the Country database.

VPN and proxy traffic

Visitors using VPNs will appear to come from the VPN server's location, not their real location. This is by design — OpsIQ cannot and should not try to bypass VPNs. If you see unusual country patterns, consider that 10-20% of visitors may be using VPNs.

Worked examples

Unexpected country traffic

Scenario:
You run a US-only business but 30% of traffic is from India.
What to do:

Check: (1) Are these real visitors? Look at session duration and pages viewed. Very short sessions with high bounce = likely bots. (2) Are they finding you through Google? Check the referrer. (3) Could they be potential customers in a new market? If the traffic is genuine and engaged, consider adding India-specific pricing or content.

Deciding on language support

Scenario:
You want to know if you should translate your site into Spanish.
What to do:

Look at the Geo Intelligence page. If Spanish-speaking countries (Spain, Mexico, Colombia, Argentina, etc.) together represent more than 10% of your traffic with low bounce rates, translation is worth considering. Also check: do visitors from these countries convert at similar rates to your primary market?

Regional support shift planning

Scenario:
You need to decide support team hours for different time zones.
What to do:

Use the hourly heatmap (on Dashboard) combined with Geo Intelligence. If 40% of your traffic is from Europe and 35% from the US, you need coverage for both time zones. The heatmap shows exactly when each region is most active.

Country with visits but no orders

Scenario:
Germany shows 500 visitors this month but zero sales.
What to do:

Investigate: (1) Are they bouncing on the pricing page? Maybe your pricing is not competitive for that market. (2) Do you ship to Germany? Check if your shipping page mentions Germany. (3) Is your checkout available in EUR? Currency mismatch causes abandoned checkouts. (4) Are these visitors from a single source that might be low-intent traffic?

Why does a visitor show "Unknown" country?+

GeoIP is not configured. Either set up Cloudflare (which adds geo headers automatically) or download the MaxMind GeoLite2 database and set the file path in Settings > GeoIP Path.

Can I block traffic from specific countries?+

OpsIQ does not block by country. Use your web server or Cloudflare firewall rules for country-based blocking. OpsIQ focuses on visibility, not access control at the network level.

Analytics

Intent funnel

The Intent Funnel classifies visitor sessions by what they seem to be trying to do: browse, research, compare, buy, get support, or leave. Use it to understand the balance of intent on your site and identify where visitors drop off.

Intent categories

Browsing

Visitors casually looking around. Short sessions, few pages, no specific goal detected.

Researching

Visitors reading product/feature pages, docs, or blog content. Longer time on page, multiple content pages.

Comparing

Visitors viewing pricing, plan comparison, or feature tables. Often returning visitors.

Buying

Visitors on checkout, cart, or signup pages. High intent — these are your conversion opportunities.

Support-seeking

Visitors on help pages, contact pages, or starting chat. They need assistance.

Bouncing

Visitors who left after one page. Low engagement.

How to read the funnel

Interpreting your funnel

Scenario:
1,000 visitors viewed Pricing. 270 opened chat. 92 started checkout. 64 paid. 18 opened support tickets.
What to do:

Pricing page is strong enough to create intent. Chat is important in the buying path — 27% of pricing visitors engage with chat before buying. Support tickets after checkout may indicate activation or payment confusion. Action: (1) Ensure AI chat answers pricing questions well. (2) Investigate the 18 post-checkout support tickets for common issues.

Time filters

Use the date range filter to compare intent patterns across periods. For example, compare Black Friday week to a normal week — you should see a spike in "Buying" intent and possibly "Support-seeking" if your promotions created confusion.

How does OpsIQ classify intent?+

OpsIQ looks at page URLs, session behavior, and time patterns. Pricing pages signal comparison intent. Checkout pages signal buying intent. Help/contact pages signal support intent. The classification is heuristic-based, not AI-driven.

Can I customize the intent categories?+

Not currently. The categories are built-in based on common web behavior patterns. Custom intent classification is on the roadmap.

Analytics

Session replay

Session Replay lets you watch a timeline of what a visitor did on your site: which elements they clicked, how they scrolled, where they hovered, and what they typed (with sensitive fields masked). Use it to diagnose UX problems, verify bug reports, and understand customer confusion.

Finding the right session

From the Sessions page, look for sessions with reported issues, high page counts with no conversion, or sessions from customers who filed support tickets. Click the replay icon to open the timeline view.

What replay shows

Timeline

A horizontal bar showing events over time. Click anywhere on the timeline to jump to that moment.

Page navigation

Each page load appears as a segment on the timeline. You can see the exact path the visitor took.

Clicks

Click events are shown as dots on the timeline and as highlights on the page reconstruction.

Scrolling

Scroll depth is tracked so you can see how far down the visitor read.

Form interaction

Field focus and typing events are recorded. Text input in password and sensitive fields is masked by default.

Privacy and masking

Session replay masks sensitive form fields by default. Password fields, credit card inputs, and fields marked with data-opsiq-mask are never recorded. You can configure additional masking rules in Settings > Tracking. If your compliance policy requires it, you can disable replay entirely.

Diagnosing a broken checkout

Scenario:
A customer says "I tried to buy but the button did nothing."
What to do:

Find their session in the Sessions page (search by email). Open the replay. Watch the checkout page segment. Look for: (1) Did they click the right button? (2) Did a JavaScript error occur? (Check the JS Errors page for that time.) (3) Did the page reload or show an error message? (4) Was a required field empty? The replay shows exactly what happened.

How much storage does session replay use?+

Replay data grows with traffic volume. Use retention settings to automatically clean up old replay data. For high-traffic sites, consider a shorter replay retention period (e.g., 30 days) to manage storage.

Can visitors opt out of replay?+

If "Respect Do Not Track" is enabled in Settings, visitors with DNT headers are not recorded. You can also exclude specific pages from replay in the tracking settings.

Analytics

Events log

The Events Log shows every event that OpsIQ has recorded: page views, clicks, chat starts, ticket creations, sales, and custom events. Use it to debug integrations, verify webhook delivery, and understand the sequence of actions.

Built-in events (automatic)

pageview

Fired every time a tracked page loads. Includes URL, title, referrer, and timestamp.

chat.started

Fired when a visitor opens the chat widget and sends their first message.

chat.message

Fired for each message in a chat conversation (both visitor and AI/agent).

ticket.created

Fired when a new support ticket is created (from chat, email, widget, or admin).

ticket.replied

Fired when a reply is added to a ticket.

order.completed

Fired when a purchase is completed through a connected platform.

form.submitted

Fired when a tracked form is submitted (if form tracking is enabled).

identify

Fired when a visitor is identified via an identity token.

security.login_failed

Fired when a login attempt fails.

Custom events

You can send custom events from your website or server to OpsIQ. Custom events are useful for tracking actions specific to your business: button clicks, feature usage, video plays, downloads, etc.

JavaScript — custom event from browser
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
  plan: "pro",
  billing: "annual",
  value: 99
}]);
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 type

Filter by specific event names: pageview, chat.started, ticket.created, etc.

Date range

Show events from a specific time period.

Search

Search event data by keyword (URL, email, event property values).

How long are events kept?+

Events follow the retention policy set in Settings. Default: 90 days. High-value events (purchases, security events) can be configured with longer retention.

Can I use events in A/B experiments?+

Yes. When creating an experiment, you choose a conversion event. Any built-in or custom event can be used as the conversion goal.

Analytics

A/B experiments

Experiments let you test two versions of a page or feature and measure which one performs better. OpsIQ tracks impressions, conversions, and statistical significance.

How experiments work

1
Create an experiment

Give it a name, define your primary metric (conversion event), and set the variants (control and test).

2
Run it

OpsIQ randomly assigns visitors to variants and tracks their behavior. Do not change the experiment while it is running.

3
Read the results

After enough data is collected, check confidence level. 95% confidence means you can be 95% sure the difference is real, not random chance.

Experiment states

Draft

Created but not yet started. You can still edit variants and metrics.

Running

Actively assigning visitors to variants. Do not edit while running.

Completed

Reached statistical significance or was manually stopped. Results are final.

Archived

Results have been reviewed and the experiment is no longer needed in the active list.

Best practices

Define your metric before launch

Decide what you are measuring before starting. Choosing a metric after seeing results introduces bias.

Exclude internal traffic

Add your team's IP addresses to the exclusion list so staff visits do not skew results.

Run long enough

Do not stop an experiment after 100 visitors. You need hundreds or thousands of visitors per variant for reliable results.

Test one change at a time

If you change the headline AND the button color, you will not know which change caused the improvement.

Record your decision

After the experiment ends, note which variant won and why you chose to implement it.

How many visitors do I need for a valid experiment?+

It depends on the baseline conversion rate and the effect size you want to detect. As a rule of thumb: at least 500 visitors per variant for a 20% effect size. For smaller effects, you need thousands.

Can I run multiple experiments at the same time?+

Yes, but be careful. If two experiments affect the same page, their results may interact. It is safer to run experiments on different pages or features simultaneously.

Analytics

JavaScript errors

JavaScript Errors collects client-side errors from your website visitors. A broken button, a failed API call, or a missing resource shows up here. Use it to find and fix bugs that affect real customers.

What each error shows

Error message

The JavaScript error text (e.g., "TypeError: Cannot read properties of undefined").

Page URL

Which page the error occurred on.

Browser and device

Which browser and device type saw the error. Some errors are browser-specific.

Stack trace

The code location where the error occurred. Click to expand the full stack trace.

First seen

When this error first appeared.

Last seen

When this error most recently occurred.

Count

How many times this error has been recorded.

Affected sessions

How many different visitor sessions experienced this error.

Prioritizing errors

Not all JavaScript errors need immediate attention. Prioritize by: (1) errors on critical pages (checkout, signup, login), (2) errors with high session counts, (3) errors that appeared recently (possible regression from a code change), (4) errors on your own code (not third-party scripts).

Fixing a broken checkout button

Scenario:
The JS Errors page shows "TypeError: Cannot read properties of undefined (reading submit)" on /checkout, affecting 45 sessions this week.
What to do:

This means 45 real customers could not complete checkout. Steps: (1) Open the page in the same browser/device combination. (2) Open browser console and reproduce the error. (3) Check the stack trace to find the exact line of code. (4) Fix the bug, deploy, and monitor the error count going to zero.

Does OpsIQ capture errors from third-party scripts?+

Yes, OpsIQ captures all JavaScript errors on the page, including errors from analytics scripts, chat widgets, and ad scripts. Filter by URL in the stack trace to focus on your own code.

How do I exclude known harmless errors?+

You cannot suppress specific errors in OpsIQ, but you can filter the list by page URL or error message. Fix or ignore errors from browser extensions (they often show as errors from unknown sources).

Sales

Sales and conversions

Sales tracking connects your store or billing platform to OpsIQ so you can see revenue alongside visitor behavior. Every purchase is attributed to a visitor journey so you know which pages, campaigns, and channels drive revenue.

Sales dashboard

Today's sales

Revenue from orders completed today. Refreshes with each new order event from your connected platform.

This week / this month / total

Revenue aggregated over the period. Refunds are subtracted from these totals.

Trend chart

Line graph showing daily revenue over the selected date range. Look for spikes (promotions, campaigns) and dips (issues, seasonal).

Top converting sources

Which traffic sources lead to the most purchases. "Direct" buyers often bookmarked your site. "Google" buyers found you through search.

Recent purchases

The latest orders with customer email, amount, currency, and items purchased.

Platform setup guides

Shopify

Go to Connectors > Shopify. Create a custom app in your Shopify admin (Settings > Apps and sales channels > Develop apps). Grant scopes: read_orders, read_customers, read_products. Copy the Admin API access token. In OpsIQ, enter your store domain (e.g., your-store.myshopify.com) and the access token. Click Test Connection. If successful, enable webhook sync for real-time order notifications.

WooCommerce

Go to Connectors > WooCommerce. In your WordPress admin, go to WooCommerce > Settings > Advanced > REST API. Create a key with Read/Write permission. Copy the consumer key and consumer secret. In OpsIQ, enter your site URL, consumer key, and consumer secret. Click Test Connection.

BigCommerce

Go to Connectors > BigCommerce. In your BigCommerce admin, go to Advanced Settings > API Accounts. Create a V2/V3 API Account with read scope for Orders, Customers, and Products. Copy the access token, client ID, and API path. Enter them in OpsIQ and test.

Magento 2

Go to Connectors > Magento. In your Magento admin, go to System > Integrations. Create a new integration with API resource access to Sales, Customers, and Catalog. Activate the integration and copy the access token. Enter it in OpsIQ with your Magento base URL.

PrestaShop

Go to Connectors > PrestaShop. In your PrestaShop admin, go to Advanced Parameters > Webservice. Enable the webservice and create a new key. Grant access to orders, customers, and products. Copy the key and enter it in OpsIQ with your store URL.

OpenCart

Go to Connectors > OpenCart. Generate API credentials from your OpenCart admin panel. Enter the API URL, username, and key in OpsIQ. The connector uses OpenCart's REST API for order and customer data.

osCommerce

Go to Connectors > osCommerce. Configure database access or API credentials as documented in the connector settings. osCommerce integration typically requires direct database access or a custom API module.

Stripe

Go to Connectors > Stripe. Copy your Stripe restricted API key from the Stripe Dashboard (Developers > API keys). The key needs read access to Customers, Charges, Invoices, and Subscriptions. Enter it in OpsIQ. Configure webhook endpoint for real-time events.

Paystack

Go to Connectors > Paystack. Copy your Paystack secret key from the Paystack Dashboard. Enter it in OpsIQ. Configure webhook URL for transaction notifications.

Custom / other platforms

Use the REST API or webhooks to send sales events from any platform. Send order.completed events with customer email, amount, currency, and items. See the Events API section for the payload format.

Understanding your sales funnel

Top converting sources

Shows which channels bring paying customers. If Google brings 1000 visitors and 50 sales, that is a 5% conversion rate. If email brings 200 visitors and 30 sales, that is 15% — email is more effective per visitor.

Refunds

Refunded orders are tracked separately. They reduce your net revenue totals. If refund rates are high from a specific source, the traffic might be low quality.

Currency handling

OpsIQ stores the original transaction currency and amount. Multi-currency businesses see revenue in each currency. Normalized reporting uses the configured exchange rate.

Worked examples

100 visitors, zero sales

Scenario:
Your pricing page gets 100 visitors per day but zero conversions.
What to do:

Investigate: (1) Use Session Replay on pricing page visitors. Watch how they interact with the pricing table. (2) Check Top Pages for the pricing page bounce rate and time-on-page. (3) Check Chat conversations from pricing page visitors — what questions do they ask? (4) Compare your pricing page to competitors. (5) Try an A/B experiment with different pricing layouts.

Attribution for a marketing campaign

Scenario:
You sent an email campaign with UTM tags. How do you measure its revenue impact?
What to do:

Go to Sales and filter by source. Search for the campaign UTM parameter. You will see: (1) How many visitors came from the email. (2) How many converted to sales. (3) Total revenue attributed to the campaign. (4) Compare to the same period before the campaign.

Why does Sales show zero even though my store has orders?+

Check: (1) Is the platform connector connected and healthy? Go to Connectors and check the status. (2) Is webhook sync enabled? If using polling, is the cron job running? (3) Does the connector have the right API scopes? For Shopify, you need read_orders.

How does OpsIQ attribute a sale to a visitor?+

When an order comes in via the connector, OpsIQ matches the customer email to a known visitor. If the visitor was tracked before the purchase, the sale is attributed to their visitor journey, including the traffic source, landing page, and session history.

Can I manually add sales?+

You can send sales events via the REST API or webhooks from any system. The event format is documented in the Events API section.

Sales

Leads

Leads are visitors or customers who show buying or support intent. OpsIQ automatically detects leads based on behavior: pricing page visits, return visits, chat interactions, checkout starts, and high engagement. Use the Leads page to prioritize follow-up and feed your CRM pipeline.

What makes a lead

Pricing page visits

Visitors who view your pricing or plans page are actively considering a purchase.

Return visits

Visitors who come back multiple times are engaged but not yet converted.

Chat interactions

Visitors who start a chat are actively seeking help — either pre-purchase or post-purchase.

Checkout starts

Visitors who reach the checkout page but do not complete the purchase.

Form submissions

Visitors who submit a contact form, demo request, or signup form.

High page engagement

Visitors who view many pages with long session duration are deeply researching.

Lead detail panel

Click any lead to see their full profile:

Identity

Name, email, company if known. Anonymous leads show IP and location.

Sessions

All sessions from this lead with page flow, duration, and source.

Pages viewed

Every page they visited, ordered by recency.

Source

How they found you: organic, paid, social, referral, direct.

Lead score

A 0-100 score based on behavior intensity, recency, and page intent.

CRM status

Whether this lead has been added to the CRM as a contact or deal.

Sales tip

AI-generated suggestion on what to do next (e.g., "Visited pricing 3 times — consider proactive outreach").

High-value lead badge

Leads with a score above 80 get a "High Value" badge. These are your hottest prospects. Prioritize them for outreach, proactive chat, or CRM pipeline entry.

Worked examples

Working a hot lead

Scenario:
A lead viewed your pricing page 3 times in 2 days, started a chat asking about enterprise plans, but has not purchased.
What to do:

This is a high-intent lead. Steps: (1) Check their lead detail for company and role information. (2) Review the chat transcript for specific needs and objections. (3) Create a deal in the CRM with the information gathered. (4) Assign a follow-up task for a sales team member. (5) If they return to the pricing page, the proactive chat rule can trigger a personalized message.

Converting anonymous leads to CRM contacts

Scenario:
You have 50 anonymous leads with high scores but no email addresses.
What to do:

Options: (1) Create a proactive rule that offers a discount or resource download in exchange for email on high-intent pages. (2) Use the chat widget to ask for email when anonymous visitors start a conversation. (3) Add an identity token to your login/signup pages so returning visitors are automatically identified.

How is the lead score calculated?+

The score considers: recency of visits (recent = higher), frequency of visits (more = higher), pages viewed (pricing/checkout = higher), session duration (longer = higher), chat interactions (engaged = higher), and return visits (multiple sessions = higher).

Can I customize lead scoring rules?+

Yes. In CRM Configuration, you can add lead-scoring rules that boost the score based on specific keywords, events, sources, or page patterns.

CRM

Your CRM — start here

OpsIQ ships a full AI-first CRM that captures customer truth, cleans data, scores leads, coaches deals, forecasts revenue, and acts — with website intelligence, support, tickets, products and payments as one live graph. Every AI action is sourced, explainable, reversible and approval-controlled.

CRM pages overview

AI CRM (Command Center)

Start here

Your daily home screen: revenue pulse, what AI found, what it did, approval queue, next moves, agent health, and ROI.

Contacts

Core

People and companies in your CRM. Search, filter, score, and manage profiles.

Pipeline

Core

Visual deal board with drag-and-drop stages, win probability, and AI coaching.

Forecast and Reports

Core

Board-grade forecasting: committed, likely, best case, with confidence intervals and accuracy tracking.

Lifecycle

Core

Where every customer stands: active, at risk, expansion ready, renewal due, or churning.

Build my CRM

Config

Describe your CRM setup in plain English. OpsIQ generates a reversible plan and applies it on approval.

CRM Health

Ops

Self-check page: schema, agents, routes, AI actions, and live data counts.

How OpsIQ keeps you safe

Ask before acting

AI proposals go to the approval queue. You approve, edit, or reject each one. Nothing happens without your say.

Never overwrite

When AI suggests a change, it shows the current value and the proposed value. Human-entered data has provenance protection.

Everything is reversible

Every AI action is recorded in the journal. You can undo any change with one click.

Explainable

Every AI recommendation shows its reasoning and the data sources it used. No black box.

Brand new? Start here

1
Open AI CRM

Click AI CRM in the left navigation. The Command Center shows your current state.

2
Check CRM Health

Open CRM Health to verify the schema, agents, and routes are ready.

3
Import contacts

If a connector is active (Shopify, WHMCS, etc.), contacts are imported automatically. Otherwise, import via CSV or create manually.

4
Create a pipeline

Go to Pipeline and create your first pipeline with stages (e.g., Lead, Qualified, Proposal, Negotiation, Won, Lost).

5
Add your first deal

Create a deal from a contact, set the amount and stage, and let the Deal Coach guide you.

Do I need to use the CRM?+

No. The CRM is optional. OpsIQ works perfectly as a tracking + support + AI platform without the CRM. Enable it when you are ready to manage sales and customer relationships.

Can the CRM work without connectors?+

Yes. You can create contacts and deals manually. Connectors enrich the CRM with platform data (orders, subscriptions, tickets) but are not required.

What is the Trust Layer?+

The Trust Layer is the safety system that controls what the AI can do. Copilot mode (default): AI proposes, human approves. Autopilot mode (opt-in): AI acts automatically on low-risk, reversible operations.

CRM

The AI CRM home screen

The Command Center is your daily briefing. Open it every morning to see what happened, what needs attention, and what to do next.

What the Command Center shows

Today's numbers

Pipeline value, deals won/lost, new leads, active deals, and revenue trend — a snapshot of your current state.

What OpsIQ found

AI-discovered insights: stalled deals, at-risk accounts, new opportunities, data quality issues, and market signals.

What OpsIQ did

Actions the AI has taken (in Autopilot) or proposed (in Copilot): stage advances, score updates, contact enrichment, and task creation.

Needs approval

Queue of AI proposals waiting for your decision. Each shows the proposed action, reasoning, and evidence. Approve, edit, or reject.

Next moves

AI-ranked list of the 10 most important things to do today: follow up on a hot deal, check an at-risk account, research a new lead, etc.

Helper status

Health of AI agents: Capture, Data Steward, Deal Intelligence, Deal Coach, SDR, Retention. Green = running, amber = needs attention, red = error.

Results

ROI tracking: deals influenced by AI, time saved, accuracy of predictions, and comparison to manual CRM work.

Morning briefing workflow

1
Read today's numbers

Check pipeline health and revenue trend. Are you on track this month?

2
Clear the approval queue

Review each AI proposal. Approve safe actions, edit where needed, reject bad suggestions.

3
Check what OpsIQ found

Read AI insights. Are any deals at risk? Are there new opportunities?

4
Work the next moves list

Start with the top priority. The AI has ranked these by urgency and potential impact.

Catching up after time off

Scenario:
You were away for a week. What happened while you were gone?
What to do:

Open the Command Center and check: (1) "What OpsIQ did" shows all AI actions during your absence. (2) "Needs approval" shows proposals waiting for your review. (3) "What OpsIQ found" highlights urgent items. (4) Set the dashboard date range to your absence period to see the trend.

CRM

Contacts, companies and deals

The CRM organizes your business relationships into four objects: Contacts (people), Companies (organizations), Deals (revenue opportunities), and Tasks (follow-up actions).

Contacts

What is a contact

A person in your CRM. They might be a customer, a prospect, a partner, or a lead. Contacts have an email, name, company, tags, lifecycle stage, and hotness score.

Finding contacts

Use the search bar to find by name, email, company, or tags. Use filters: lifecycle stage, lead score, source, country, last activity date, assigned owner.

Contact profile

Click a contact to see their full profile: personal info, company, deals, activities, tickets, chats, website visits, lead score, and AI insights.

Hotness score

A 0-100 score calculated from behavior signals: website visits, email engagement, chat interactions, purchase history, and recency. Higher = hotter.

Companies

What is a company

An organization that one or more contacts belong to. Companies have a name, domain, industry, size, and health score.

Contact-company linking

Contacts are linked to companies by email domain or manual assignment. One company can have many contacts.

Deals

What is a deal

A revenue opportunity. Deals have a title, amount, pipeline, stage, win probability, close date, assigned owner, and associated contacts/company.

Win probability

A percentage chance of winning the deal. Set manually or calculated by AI based on your historical win data. Drives the weighted forecast.

Deal health

Green (healthy), amber (at risk), or red (stalled). Based on activity recency, stage duration, and engagement signals.

Tasks

What is a task

A follow-up action assigned to a person. Tasks have a title, due date, priority, type (call, email, meeting, other), and linked contact/deal.

AI-generated tasks

The AI creates tasks automatically when it detects something needs attention: follow up on a stalled deal, respond to an at-risk account, research a new lead.

Finding hot leads

Scenario:
You want to see all high-score contacts in the UK who have not been contacted recently.
What to do:

Go to Contacts. Filter by: Lead score > 80, Country = United Kingdom, Last activity > 7 days ago. Sort by lead score descending. These are your hottest neglected leads — prioritize outreach.

Creating a deal from a contact

Scenario:
A contact just expressed interest in your enterprise plan during a chat.
What to do:

Open the contact profile. Click "Create deal." Enter the deal title (e.g., "Acme Corp - Enterprise Plan"), amount, pipeline, and stage (e.g., "Qualified"). Set the close date and assign it to yourself. The Deal Coach will begin tracking this opportunity.

CRM

The pipeline (your deal board)

The Pipeline is a visual board where deals move through stages from left to right. Drag and drop cards to advance deals. Each card shows the deal amount, win probability, and health status.

Using the pipeline board

1
View your deals

The pipeline shows all active deals as cards arranged in columns (stages). Each column header shows the total value of deals in that stage.

2
Drag to advance

Drag a card to the next stage. The win probability and counts update instantly. If the move fails (validation error), the card snaps back to its original position.

3
Check card badges

Green badge = healthy (recent activity, on track). Amber = at risk (slowing down, needs attention). Red = stalled (no activity for too long).

4
Click for details

Click a card to open the deal detail panel with contacts, activities, Deal Coach brief, and quick actions.

The approval queue

AI proposals appear in the approval queue at the top of the pipeline page. Each proposal shows what the AI wants to do, why, and the evidence. You can:

Approve

Accept the proposal as-is. The action runs through the Trust Layer and is recorded in the journal.

Edit

Modify the proposal before approving. For example, change the suggested stage or adjust the amount.

Reject

Decline the proposal. The AI learns from rejections to make better suggestions in the future.

Win probability explained

Win probability can be set manually or calculated by AI. When AI calculates it, it uses a model trained on your own closed deals (won and lost). If you don't have enough historical data, the AI uses the stage default probability. The probability drives the weighted forecast: a $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.

CRM

Deal coaching

The Deal Coach analyzes each deal and gives you a brief with health status, risk signals, key people, a qualification checklist, meeting prep, and suggested next actions. Everything is sourced — the coach shows which ticket, chat, or activity each claim comes from.

What the coach tells you

Health explanation

Why the deal is healthy, at risk, or stalled. Specific signals: days in stage, last contact date, activity frequency, competitor mentions, objection patterns.

Signals

Categorized into: objections raised, competitor mentions, pricing discussions, support risk indicators, renewal/expansion signals. Each signal links to its source (chat transcript, ticket, email, activity).

Champion and blocker map

Who is helping the deal (champion) and who is resisting (blocker). Based on interaction analysis and contact roles.

Qualification checklist

MEDDICC or BANT checklist (configurable) showing which qualification criteria are met and which are missing. Grade: A, B, C, D, or F.

Meeting prep

Before a scheduled meeting, the coach generates a brief: agenda, key points to cover, questions to ask, risks to address, and materials to prepare.

Reply and call plans

Suggested next message or call script based on the current deal state and recent interactions.

Evidence timeline

Every claim the coach makes links to a source: a ticket number, chat transcript ID, activity date, or website visit.

How to use the coach

1
Read the brief

Open any deal and scroll to the Deal Coach section. Read the health status and key signals.

2
Close qualification gaps

Check the qualification checklist. If "Economic Buyer" is missing, plan to identify and engage the budget holder.

3
Act on suggestions

The coach suggests concrete next actions. Click to create a task, draft an email, or schedule a meeting — all routed through the approval queue.

Preparing for a big meeting

Scenario:
You have a meeting with a prospect tomorrow about a $50,000 deal.
What to do:

Open the deal and read the Meeting Prep section. It shows: (1) Key talking points based on recent interactions. (2) Objections they raised in chat last week. (3) Competitor they mentioned in a support ticket. (4) Questions to ask about their timeline. (5) Risk factors to address proactively. Use this brief to prepare a focused, evidence-based agenda.

Understanding why a deal is at risk

Scenario:
The pipeline shows a red badge on a deal you thought was going well.
What to do:

Click the deal and read the Deal Coach health explanation. It might say: "This deal has been in Proposal stage for 22 days (threshold: 14). Last contact was 11 days ago. The primary contact opened a support ticket about data migration concerns 5 days ago (ticket #T-892). Suggestion: address the migration concern and schedule a follow-up call." Now you know exactly what to fix.

CRM

Forecast and reports

Board-grade forecasting with a defensible range, deal-level change explanations, and accuracy tracking so you can prove and explain your numbers.

Forecast categories

Committed

Deals with 80% or higher win probability. These are your most likely wins. This should be your minimum expected revenue.

AI-weighted likely

All open deals weighted by their AI-calculated win probability. This is the most realistic prediction of what you will close.

Best case

All open deals at full value. This is the maximum possible revenue if everything goes perfectly (it rarely does).

Confidence interval

An 80% probability band showing the realistic range. Example: "You will likely close between $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 MAPE

Mean Absolute Percentage Error — how far off your forecasts have been historically. Lower is better. A MAPE of 15% means your forecasts are typically within 15% of actual results.

Win probability calibration

Brier score measuring how well win probabilities match actual outcomes. If deals at 70% probability actually win 70% of the time, calibration is good.

Weekly snapshots

OpsIQ captures a snapshot of your forecast each week (via cron). Over time, you can see how your forecast accuracy improves.

Rollups and warnings

Per-stage conversion

How many deals move from each stage to the next. If 80% pass from Qualified to Proposal but only 20% go from Proposal to Negotiation, your proposals might need work.

Per-source win rate

Which lead sources produce the most wins. Invest more in high-win-rate sources.

Per-owner performance

How each sales team member is performing: deals won, pipeline value, average deal size, win rate.

Warnings

Sandbagging (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).

CRM

Finding new business

The Prospecting Agent helps you find and research potential customers. Describe your ideal customer, add target companies, and let the AI research, score, and draft first-touch outreach.

One-time setup

1
Describe your ideal customer

Go to CRM Configuration > Prospecting. Describe your ideal customer profile (ICP): target industries, company sizes, job titles, geographic focus, product-match terms, and minimum fit score. Example: "B2B SaaS companies with 50-500 employees in the US/UK, selling developer tools, with a VP of Sales or Head of Growth as the primary contact."

2
Add target companies

Enter company domains or names you want to research. You can also let the AI suggest companies based on your ICP.

3
Review research results

The AI enriches each company with available data: size, industry, tech stack, recent news, and fit score with explanation.

4
Approve outreach

For good-fit companies, the AI drafts a personalized first-touch message. Review and approve in the queue.

Fit scoring

Each prospect gets a 0-100 fit score based on five factors:

ICP fit

How well the company matches your ideal customer profile (industry, size, location).

Urgency signals

Is there evidence they need your product now? Job postings, tech changes, complaints about competitors.

Budget proxy

Company size, funding stage, and revenue indicators suggest budget availability.

Product match

How relevant your product is to their business based on industry and technology.

Support fit

Whether you can effectively serve this customer (timezone, language, complexity).

Researching a target company

Scenario:
You want to evaluate whether acme.com is worth pursuing.
What to do:

Add acme.com to the prospecting list. The AI returns: Fit score 78/100 (good fit). Reasons: B2B SaaS, 120 employees, US-based, recently hired a VP of Sales (urgency signal), uses competitor X (product match). Buying signals: visited your pricing page twice last month (from website tracking). Best contact: jane.smith@acme.com (VP of Sales). Drafted opener references their recent hiring and pricing page visits.

CRM

Automatic follow-up sequences

Sequences automate multi-step follow-up: a mix of email, wait, task, call, and webhook steps that run automatically after you approve the initial send.

How sequences work

1
Create a sequence

Define the steps: email, wait 3 days, email, wait 5 days, task (call if no reply), email. Each email step has a template you can customize.

2
Enroll contacts

Add contacts to the sequence. The AI may also propose enrollment from prospecting results.

3
Automatic execution

Steps run automatically on schedule. If a contact replies at any point, the sequence pauses automatically.

4
Track results

See open rates, reply rates, conversion rates, and unsubscribes per step. Use this to optimize your sequence.

Reply understanding

When a contact replies, the AI classifies the reply:

Positive

Interested, wants to talk. Sequence pauses, task created for follow-up.

Objection

Has concerns but not rejecting. Sequence pauses, task created with objection details.

Unsubscribe

Wants to stop receiving messages. Contact is suppressed permanently.

Not now

Interested but timing is wrong. Sequence pauses, snooze task created.

Wrong person

Not the right contact. Sequence stops, contact flagged for review.

Support

A support question, not a sales response. Sequence pauses, ticket created.

Anti-spam protections

Opt-out handling

Unsubscribe requests are honored immediately and the contact is suppressed from all future sequences.

Daily send cap

Workspace-level daily limit (default: 1,000 emails). Prevents mass sends that trigger spam filters.

Per-contact limit

Maximum 1 message per contact per day. Prevents overwhelming individual people.

Over-cap handling

Steps that exceed the daily cap are deferred to the next day. They are never dropped or skipped.

What happens if a contact opens a support ticket during a sequence?+

The sequence pauses automatically. Support takes priority over outreach. The sequence can be manually resumed after the support issue is resolved.

Can I A/B test sequence steps?+

Not directly within sequences, but you can create two sequences with different messaging and compare their results.

CRM

Keeping and growing customers

Lifecycle management helps you protect existing revenue. Each account gets a churn risk score, a health score, an expansion score, and a recommended success playbook.

The lifecycle board

Stage map

Visual board showing where every account stands: Lead, Prospect, Opportunity, Customer, Expansion, Renewal, At Risk, Churned.

At-risk accounts

Accounts flagged with high churn risk. Each shows the top driver (support spike, inactivity, payment failure) and a recommended save play.

Expansion opportunities

Accounts that show signals of readiness to buy more: high usage, feature requests, plan inquiries.

Renewals due

Accounts with upcoming renewal dates. Sorted by risk level and revenue value.

How OpsIQ detects churn risk

Churn risk is calculated from multiple signals fused together:

CRM signals

Deal health, inactivity, recent losses, declining engagement.

Support signals

Open ticket count, ticket volume spikes, negative sentiment, escalations.

Product engagement

Login frequency, feature usage, page visits, API calls.

Billing signals

Failed payments, overdue invoices, downgrade requests, cancellation page visits.

Playbooks

Save play

For at-risk accounts: reach out proactively, address the concern, offer support, escalate if needed.

Renewal play

For upcoming renewals: confirm satisfaction, review usage, present value, offer incentive if appropriate.

Expansion play

For ready-to-grow accounts: present upgrade options, share success stories, demonstrate ROI.

Adoption play

For underutilizing accounts: offer training, share best practices, enable features they are not using.

Spotting churn before it happens

Scenario:
A customer who normally logs in daily has not logged in for 2 weeks, and they opened 3 support tickets this month.
What to do:

The Lifecycle board flags this account as "At Risk" with drivers: inactivity (14 days since last login) and support spike (3x normal ticket volume). Recommended play: proactive outreach call to understand what is happening. Is there a product issue? Are they evaluating competitors? Early intervention can save the account.

CRM

Keeping your data clean

The Data Steward agent automatically finds and fixes data quality issues: duplicates, missing fields, inconsistencies, and stale records.

What it catches

Duplicate contacts

Multiple records for the same person (e.g., john@acme.com and john.doe@acme.com). The steward proposes merging them.

Missing data

Contacts without email, deals without amounts, companies without domains. Suggests filling from available sources.

Unlinked records

Deals without associated contacts, contacts without companies. Proposes linking based on email domain and context.

Inconsistencies

A deal in "Won" stage with 20% probability, a contact marked "Customer" with no deals, a company with mismatched industry.

Wrong stages

Deals that have been in the same stage for too long or contacts whose lifecycle stage does not match their activity.

How to use

1
Open the steward list

Go to CRM and find the Data Steward section (or open it from CRM Health).

2
Approve safe fixes

Green items are safe: clear duplicates, obvious missing data. Approve these in bulk.

3
Review the rest

Amber 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.

CRM

Build my CRM

Build My CRM lets you describe your CRM setup in plain English. OpsIQ generates a validated, reversible plan and applies it on approval. No coding, no manual configuration clicking.

How it works

1
Describe what you want

Type a plain-English description of your CRM setup. Example: "Create a renewal pipeline with stages: Upcoming, Contacted, Negotiating, Renewed, Lost. Score leads higher when they view pricing twice."

2
Review the plan

OpsIQ shows a preview of what it will create: pipeline, stages, stage probabilities, scoring rules, lifecycle rules. Review each item.

3
Apply

Click Apply to execute the plan. Every change is recorded as a bundle you can undo in one click.

4
Roll back if needed

If something is not right, click Undo to revert the entire bundle. Your CRM returns to its previous state.

What you can build

Pipelines and stages

Create named pipelines with custom stages, default probabilities, and rotting thresholds.

Scoring rules

Boost lead scores based on behavior: "Score higher when they view pricing," "Score lower when they visit careers page."

Lifecycle rules

Automatically advance lifecycle stages: "Move to SQL when they request a demo," "Move to Customer when deal is won."

Custom fields

Add fields to contacts, deals, or companies: text, number, date, select, checkbox, URL, email.

Qualification checklist

Define the MEDDICC or BANT checklist the Deal Coach grades against.

Setting up a renewal pipeline

Scenario:
You manage SaaS subscriptions and need a pipeline for renewals.
What to do:

Type: "Create a renewal pipeline. Stages: 90 Days Out (10%), 60 Days Out (25%), Contacted (40%), Negotiating (60%), Renewed (100%), Churned (0%). Set the rotting threshold to 14 days." OpsIQ generates the plan, you review it, and click Apply. The pipeline appears on your Pipeline page immediately.

What if I describe something that is not possible?+

The builder only generates actions it knows how to validate. If you ask for something outside its capabilities (e.g., "Integrate with my custom API"), it will reject the request and explain what it can do instead.

Can I undo changes?+

Yes. Every Build My CRM action is captured as a reversible bundle. Go to CRM Health > Change History to see all bundles and undo any of them.

CRM

Setting up your CRM your way

Manual CRM configuration for teams that prefer clicking over typing. All settings that Build My CRM can create are also available as traditional form fields.

Pipelines and stages

Create, rename, reorder, and delete pipelines and stages. Set default win probability per stage. Set the rotting threshold (days without activity before a deal is marked "stalled").

Custom fields

Add fields to deals, contacts, or companies. Field types: text, number, date, select (dropdown with predefined options), checkbox, URL, email. Custom fields appear on the object profile and in filters.

Qualification checklist

Define the checklist the Deal Coach uses to evaluate deals. Choose MEDDICC, BANT, or a custom set of criteria. Each item can be marked required or optional.

Lifecycle stage rules

Define automatic stage transitions: when a contact meets a condition (views pricing, submits a form, makes a purchase), their lifecycle stage advances automatically.

Lead-scoring rules

Boost or reduce lead scores based on behavior. Examples: "Viewed pricing page = +15 points," "Downloaded whitepaper = +10 points," "Visited careers page = -5 points." Minimum count can be set (e.g., "must view pricing at least 2 times").

Saved views

Create named filter+sort combinations for contacts, deals, or companies. Share views with your team. Set a default view per object type.

Adding a lead scoring rule

Scenario:
You want contacts who view your pricing page twice or more to get a higher score.
What to do:

Go to CRM Configuration > Lead Scoring Rules. Click Add Rule. Set: Event = "pageview", URL contains = "/pricing", Minimum count = 2, Score boost = +20. Save. The next time the scorer runs, contacts matching this rule will get +20 to their lead score.

CRM

CRM Health check-up

CRM Health is a self-diagnostic page that verifies your CRM is set up correctly and running smoothly.

What it checks

Schema

Database tables exist and have the correct columns. If a migration was missed, CRM Health will flag it.

AI agents

All CRM agents (Capture, Data Steward, Deal Intelligence, etc.) are registered and healthy. Green = running, amber = needs attention, red = error.

Routes

CRM API routes and AJAX endpoints are registered and callable.

AI actions

The CRM action catalog is registered in the Action Registry. If actions are missing, CRM Health self-heals by re-registering them.

Live data counts

Total contacts, companies, deals, tasks, activities, and events. Useful for verifying imports and ongoing data capture.

After setup check

After first-time CRM setup, open CRM Health and verify all checks are green. If any are amber or red, click the item for a diagnostic explanation and suggested fix.

How often should I check CRM Health?+

Check after initial setup, after major updates, and whenever CRM behavior seems wrong. CRM Health self-heals many issues (like missing action registrations) just by opening the page.

CRM

CRM connections for developers

The CRM exposes a complete public REST API and outbound webhooks so it fits any stack without manual exports.

API endpoints

Authentication

API key (Authorization: Bearer opq_...) with scope crm.read or crm.write. POST to /api/v1.php with action and site_key.

Contacts

crm.contacts.list (search + filter), crm.contacts.detail (by ID), crm.contacts.upsert (create or update), crm.contacts.save.

Deals

crm.deals.list, crm.deals.detail, crm.deals.create, crm.deals.update, crm.deals.advance (all through the Trust Layer).

Activities

crm.activities.list (timeline for a contact/deal), crm.activities.record (log a new activity).

Events

crm.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.created

Fired when a new contact is added to the CRM.

crm.deal.stage_changed

Fired when a deal moves to a different stage.

crm.deal.won

Fired when a deal is closed as won.

crm.deal.lost

Fired when a deal is closed as lost.

crm.task.created

Fired when a new task is created (manual or AI-generated).

crm.outreach.reply

Fired when a prospect replies to a sequence email.

crm.agent.proposal_created

Fired when an AI agent creates a proposal for the approval queue.

All webhook events are HMAC-signed and retried on failure. Subscribe a URL in Settings > Webhooks, or poll crm.events.list with since_id for a durable change feed.

Syncing CRM contacts to Google Sheets

Scenario:
You want every new CRM contact to appear in a Google Sheet for your marketing team.
What to do:

Set up a webhook subscriber for crm.contact.created. Point it to a Google Apps Script web app or a Zapier webhook URL. The payload includes the contact name, email, company, lead score, and source. Your script appends a row to the Google Sheet for each new contact.

Support

Tickets

Tickets are your formal support channel. They have departments, priorities, SLA targets, attachments, internal notes, and full conversation threading. Tickets can arrive from the admin, customer portal, email ingestion, chat escalation, or API.

How a ticket flows

1
Ticket arrives

A customer sends a message via email, chat escalation, ticket embed, or the admin creates one. The ticket gets a unique ID (e.g., T-12345).

2
Triage

AI reads the subject and body, assigns priority (Low/Normal/High/Urgent), suggests a department, and detects sentiment. This happens automatically if triage is enabled.

3
Reply

An agent opens the ticket, reads the context (customer profile, platform data from connectors, previous tickets), and writes a reply. AI can draft the reply, and the agent edits before sending.

4
Close

When the issue is resolved, the agent closes the ticket. The customer is notified. If the customer replies after closing, the ticket reopens automatically.

Per-ticket actions

Change department

Move the ticket to a different department (e.g., from General to Billing). Useful when the initial routing was wrong.

Assign to agent

Assign the ticket to a specific team member. The assigned agent sees the ticket in their "My tickets" view.

Add internal note

Write a note visible only to staff. Use for: investigation findings, refund reasons, engineering context, previous commitments. Internal notes never appear to customers.

Merge tickets

Combine duplicate tickets from the same customer. The merged ticket subject gets a [MERGED] tag. All messages from both tickets are preserved in the surviving ticket.

Canned response

Insert a pre-written reply template. Variables like {{customer_name}} and {{ticket_id}} are automatically replaced.

AI rewrite

Let AI improve your draft reply: adjust tone, shorten/lengthen, fix grammar, or translate. You review the result before sending.

Change priority

Set to Low, Normal, High, or Urgent. Priority affects SLA timers and sort order.

Change status

Set to Open, Pending, Waiting on Customer, Resolved, or Closed.

Worked example: handling an unhappy customer

Customer email: "I was charged twice for my subscription"

Scenario:
Subject: Double charge on my account
Body: Hi, I just checked my bank statement and I see two charges of $49.99 from your company dated June 3. I only have one subscription. Can you please refund the duplicate charge? This is really frustrating.
What to do:

Step 1: AI triage assigns Priority: High, Department: Billing, Sentiment: Frustrated. Step 2: Agent opens the ticket. The connector panel shows the customer's Stripe charges — confirmed two charges on June 3. Step 3: Agent adds an internal note: "Confirmed duplicate charge in Stripe. Transaction IDs: ch_xxx and ch_yyy." Step 4: Agent drafts a reply: "Hi [Name], I can see the duplicate charge and I'm processing a refund for the second transaction right now. You should see $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

Low

Non-urgent questions, feature requests, general feedback. Target first response: 24 hours.

Normal

Standard support questions. Target first response: 8 hours.

High

Impacting the customer's business. Target first response: 4 hours.

Urgent

Service down, security incident, data loss, billing error. Target first response: 1 hour.

SLA timers start when the ticket is created and pause when the status is "Waiting on Customer." If the SLA target is missed, the ticket is highlighted and optionally escalated.

Can customers see internal notes?+

Never. Internal notes are strictly staff-only. They do not appear in the customer ticket portal, email notifications, or any customer-facing surface.

What happens when a closed ticket is replied to?+

The ticket automatically reopens and returns to the active queue. The team is notified of the new reply.

Can I lock a ticket to prevent further replies?+

Yes. Use the Lock Thread option to prevent both customer and AI from adding new replies. Useful for resolved disputes or closed investigations.

Support

Ticket auto-reply and escalation

Auto-reply lets the AI respond to new tickets automatically. Escalation moves tickets to a different department when the AI detects specialized needs. Both features work across native tickets and email-created tickets.

How auto-reply works

1
Ticket appears

A new ticket is created from any source (email, chat, portal, API).

2
Schedule reply

OpsIQ waits for the configured delay (default: 2 minutes). This gives human agents a chance to respond first.

3
First reply wins

If a human agent replies during the delay, auto-reply is cancelled. If not, the AI generates a reply.

4
Generate and send

The AI reads the ticket, checks knowledge base, connector context, and customer history, then writes a reply. The reply is sent (or queued as a draft for review, depending on settings).

How escalation works

1
Configure departments

Set which departments can receive escalations (e.g., Billing can be escalated from General, Technical can be escalated from General).

2
Classify the ticket

Before auto-replying, the AI classifies the ticket intent: billing, technical, refund, abuse, etc.

3
Move if needed

If the ticket intent matches an escalation department, the ticket is moved. An internal note explains why.

4
Generate in new voice

The reply is generated using the destination department's knowledge and AI training.

Settings reference

Auto-reply enabled

Master switch. Turn on to enable AI auto-reply for tickets.

Allowed departments

Which departments can receive auto-replies. Start with low-risk departments (General, Sales) before enabling billing.

Delay

How long to wait before the AI replies (in seconds). Default: 120 seconds (2 minutes). Set to 0 for instant replies.

Delay schedule

Optionally set different delays for business hours vs. after hours.

Stop on admin reply

If a human agent replies first, cancel the auto-reply. Default: on.

Escalation enabled

Enable automatic department routing based on ticket intent.

Escalation departments

Which departments tickets can be escalated to.

Escalation status

What status to set when escalating (e.g., Open, Pending).

Escalation note

Whether to add an internal note explaining the escalation reason.

Email-created tickets

Tickets created from email (via mailbox polling or MX-piped delivery) follow the same auto-reply and escalation rules. The AI reply is sent as an email response to the customer. Email drafts go to the drafts queue for review if configured.

Will the AI auto-reply to billing questions?+

Only if you enable auto-reply for the Billing department. We recommend starting with auto-reply off for billing and enabling it only after you have trained the AI with comprehensive billing knowledge and tested thoroughly.

What if the AI gives a wrong answer?+

If a customer replies saying the answer was wrong, a human agent should intervene. Review AI History to understand why the AI gave the wrong answer, then update the knowledge base or AI training to prevent it from happening again.

Can I review auto-replies before they are sent?+

Yes. Set the delivery mode to "Draft" instead of "Auto-send." Auto-reply drafts will appear in the Drafts queue for human review before sending.

Support

Ticket portal embed

The ticket portal embed lets you add a ticket management interface to any website. Customers can view their tickets, create new ones, and reply — all without entering the OpsIQ admin.

Three embed flavors

Inline embed

Renders the ticket portal inside a div on your page. The portal takes the full width of its container.

Floating widget

Shows a floating button that opens the ticket portal in a panel. Similar to a chat widget.

Authenticated

Requires a signed identity token. Customers see only their own tickets.

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 frontend
WHMCS 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 list

Searchable, status-filtered list. An "Awaiting you" highlight flags tickets the team has answered.

Threaded conversation

Full conversation view with rich text, attachments, and timestamps.

Draft autosaving

Customer draft replies are auto-saved so they do not lose work if they navigate away.

Live polling

The widget polls for new replies every ~12 seconds.

Resolve / reopen

Customers can resolve or reopen their own tickets with one click.

Internal staff notes are NEVER shown to customers in the ticket embed. This is a hard security boundary.
Support

Chat inbox

The Chat Inbox is where your team manages live customer conversations. It shows active chats, assigned conversations, AI-handled chats, and archived history.

Managing conversations

Active chats

Conversations currently in progress. Green dot = customer is typing or recently active.

AI-handled

Conversations where the AI is responding. You can take over at any time by clicking "Join."

Assigned to me

Conversations assigned to you specifically.

Waiting

Conversations where the customer is waiting for a response.

Archive

Completed conversations. Searchable by keyword, date, and customer.

Handoff from AI to human

When you take over a conversation from the AI, follow these three rules:

1
Greet personally

Introduce yourself by name. "Hi, this is Sarah from the support team."

2
Reference context

Show you read the conversation. "I can see you asked about your order status."

3
Set expectations

Tell the customer what happens next. "I am looking into this now and will have an answer for you in a few minutes."

Switching AI on/off per conversation

Use the AI toggle at the top of each conversation. When AI is on, the AI generates responses. When off, only human agents can reply. The AI remembers the conversation context even when turned off and back on.

Away mode / out of hours

Configure business hours in Settings. Outside business hours, the AI can: (1) Continue responding to customers, (2) Show an "away" message and create a ticket for follow-up, or (3) Disable chat completely and show the ticket form. Choose the behavior that fits your support model.

Handling tough conversations

1
Stay calm

Do not match the customer's emotional intensity. Acknowledge their frustration without being defensive.

2
Collect facts

Before responding, gather the relevant information: order details, account status, previous tickets.

3
Escalate early

If the situation involves refunds, legal threats, abuse, or security, escalate to a senior team member rather than trying to handle it alone.

Can I have team chat (agent to agent)?+

Yes. Use internal notes within a conversation to communicate with other agents. These notes are never visible to the customer.

What happens when I close a chat?+

The conversation moves to the Archive. If the customer sends a new message later, a new conversation is created.

Support

Real chat conversations

These examples show how a well-trained Customer AI should handle common scenarios. Use them to test your AI training and identify gaps.

10 conversation examples

1. Returning customer asking about order

Scenario:
Customer: Hi, I placed an order 3 days ago and haven't received any shipping notification yet. Order #ORD-5523.
What to do:

The AI should: (1) Look up order #ORD-5523 through the connector. (2) Report the current status and tracking info if available. (3) If the order is delayed, acknowledge the delay and provide an estimated timeline. (4) Do NOT invent a shipping status if the connector does not have one.

2. Prospect asking about pricing

Scenario:
Customer: How much does your Pro plan cost? Do you offer annual billing?
What to do:

The AI should: (1) Answer from the knowledge base with current pricing. (2) Explain the difference between monthly and annual billing. (3) If the answer is not in the knowledge base, say so and offer to connect them with sales. (4) Do NOT invent pricing that is not in the knowledge base.

3. Angry customer demanding refund

Scenario:
Customer: This is ridiculous! Your product does not work and I want my money back NOW.
What to do:

The AI should: (1) Acknowledge the frustration calmly. (2) Ask for the order number or account email. (3) Explain the refund process. (4) Create a support ticket or escalate to a human agent. (5) Do NOT promise a refund — that requires human approval.

4. Double billing edge case

Scenario:
Customer: I was charged twice this month. My bank shows two charges of $29.99.
What to do:

The AI should: (1) Acknowledge the concern. (2) Collect the relevant details (email, dates of charges). (3) Explain that billing issues require human review. (4) Create a Billing department ticket with the details. (5) Set priority to High.

5. Multi-language customer

Scenario:
Customer: Bonjour, je voudrais savoir si vous livrez en France?
What to do:

The AI should: (1) Respond in the customer's language if that language is supported. (2) Answer the question about delivery to France from the knowledge base. (3) If the language is not supported, respond in the default language and mention which languages are available.

6. After-hours conversation

Scenario:
Customer: Hello, is anyone there? I need help with my account.
What to do:

The AI should: (1) If configured for after-hours AI, respond and assist. (2) If after-hours creates tickets, say: "Our team is currently offline. I have created a support ticket for you and someone will follow up during business hours." (3) Provide the ticket number.

7. Pre-purchase comparison shopper

Scenario:
Customer: How does your product compare to [Competitor X]?
What to do:

The AI should: (1) Describe your product's strengths factually. (2) Do NOT badmouth the competitor. (3) If there is a comparison page in the knowledge base, link to it. (4) If the customer asks about features you do not have, be honest.

8. Customer wants a recommendation

Scenario:
Customer: I run a small online store with about 100 orders per month. Which plan is right for me?
What to do:

The AI should: (1) Ask clarifying questions if needed (e.g., what features matter most). (2) Recommend a plan based on the knowledge base. (3) Explain why that plan fits their needs. (4) Mention that they can start with a smaller plan and upgrade later.

9. Customer trying to get an unauthorized discount

Scenario:
Customer: I saw online that you give 50% discounts. Can I have one?
What to do:

The AI should: (1) Politely explain current promotions if any exist. (2) Do NOT create or promise discounts that are not in the knowledge base. (3) If the customer persists, offer to connect them with the sales team.

10. Customer needs help with a feature

Scenario:
Customer: How do I export my data? I can't find the export button.
What to do:

The AI should: (1) Provide step-by-step instructions from the knowledge base. (2) Include the exact page path and button location. (3) If the feature requires a specific plan, mention that. (4) If the feature does not exist, be honest and suggest alternatives.

Support

Email mailboxes and drafts

OpsIQ can connect to email mailboxes to automatically create tickets from incoming email and send replies as email. It also provides AI-drafted replies for human review.

Connecting a mailbox

Protocol

IMAP (most providers), Gmail API (Google Workspace), or Microsoft Graph (Outlook 365).

Settings needed

Host, port, encryption (SSL/TLS), username, password or app password, folder (usually INBOX).

Department mapping

Map the mailbox to a ticket department. Emails to support@company.com create tickets in the "Support" department.

Gmail setup (step by step)

1
Enable 2-Step Verification

Go to Google Account > Security > 2-Step Verification and enable it.

2
Create an App Password

Go to Google Account > Security > App Passwords. Select "Mail" and "Other (OpsIQ)". Copy the 16-character password.

3
Enter in OpsIQ

Go to Email > Mailboxes > Add. Set host: imap.gmail.com, port: 993, encryption: SSL, username: your@gmail.com, password: the app password.

4
Test

Click Test Connection. If successful, OpsIQ will start polling for new emails at the configured interval.

Outlook 365 setup

1
Check IMAP is enabled

In Outlook settings > Mail > Sync email, ensure IMAP is enabled.

2
Use app password or modern auth

If MFA is enabled, create an app password. Otherwise, use your regular password.

3
Enter in OpsIQ

Host: outlook.office365.com, port: 993, encryption: SSL, username: your@company.com.

cPanel webmail setup

1
Find IMAP settings

In cPanel > Email Accounts, click your email account for IMAP settings.

2
Enter in OpsIQ

Host: usually mail.yourdomain.com or your server hostname, port: 993 (SSL) or 143 (STARTTLS), username: full email address.

AI email drafts

When auto-reply is set to "Draft" mode, the AI generates reply drafts that appear in the Drafts queue. You can:

Review

Read the draft and check for accuracy.

Edit

Modify the text, tone, or content before sending.

Send

Approve the draft and send it as an email reply.

Discard

Delete the draft if it is not appropriate.

Auto-send

If confidence is high enough and auto-send is enabled, drafts are sent automatically after a configurable delay.

Why are emails not being converted to tickets?+

Check: (1) Is the mailbox connected and healthy? Look for green status in Email > Mailboxes. (2) Is the cron job running? Email polling requires cron. (3) Is the email being filtered or moved to a folder other than INBOX?

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.

AI

Set 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 AI

AI is provided as part of your OpsIQ plan. No API key needed. Usage is metered against your plan's AI credit balance.

Step-by-step setup

1
Go to AI Configuration

In the OpsIQ admin, navigate to Settings > AI Configuration.

2
Select provider

Choose your AI provider from the dropdown.

3
Enter API key

If using BYOK, enter your API key. For Managed AI, this is handled automatically.

4
Choose model

Select the specific model to use. Smaller models are faster and cheaper. Larger models give better quality answers.

5
Test connection

Click "Test connection" to verify the API key and model are working. A green checkmark means success.

6
Save

Click Save to activate your AI configuration.

Cost controls

Monthly budget

Set a maximum monthly spend on AI tokens. When the budget is reached, AI features gracefully degrade (shorter responses, no auto-reply) rather than stopping entirely.

Per-conversation token limit

Maximum tokens per single conversation. Prevents runaway conversations from consuming excessive credits.

Low balance alert

When your AI credit balance drops below the threshold (default: 50,000 tokens), a warning appears in the admin. Set this in AI Configuration.

Per-workspace configuration

AI configuration is per-workspace. If you manage multiple sites, each workspace can use a different provider, model, and budget. The workspace inherits global defaults unless overridden. To configure per workspace: switch to the workspace, then go to AI Configuration and save settings there.

Getting API keys

Anthropic (Claude)

Go to console.anthropic.com > API Keys > Create Key. Copy the key starting with "sk-ant-".

OpenAI (GPT)

Go to platform.openai.com > API Keys > Create new secret key. Copy the key starting with "sk-".

Google (Gemini)

Go to aistudio.google.com > Get API Key. Create a key for your project. Copy the key.

xAI (Grok)

Go to console.x.ai > API Keys. Create and copy your key.

Testing your AI setup

Scenario:
After entering your API key, click "Test connection." You should see a green checkmark and a sample response from the AI.
What to do:

If the test fails: (1) Check that the API key is correct (no extra spaces). (2) Check that your account has billing set up with the provider. (3) Check that the model name is valid. (4) If using Managed AI, verify your license is active.

Which provider is best?+

There is no single best provider. Claude is excellent for support conversations. GPT-4o is fast and versatile. Gemini handles multiple languages well. Try each one and see which produces the best results for your specific use case.

Can I switch providers later?+

Yes. Change the provider and API key at any time. Existing conversation history is preserved. The AI will use the new provider for all future conversations.

What happens when I run out of credits?+

The AI degrades gracefully: responses become shorter, auto-reply pauses, and the admin shows a low-balance warning. Core tracking, tickets, and CRM continue working without AI.

AI

Train your AI

AI Training is where you teach OpsIQ how to behave. You write prompts that define personality, boundaries, knowledge focus, and escalation rules. Think of it as writing a training manual for a new support agent.

Two training areas

Customer AI prompt

Controls how the AI talks to your customers in the chat widget. This is the most important prompt to get right.

Admin AI prompt

Controls how the AI assists your admin team in the operator dashboard. This handles internal queries and action execution.

Writing a great customer AI prompt

Your customer AI prompt should cover these areas:

1
Identity

Who is the AI? Give it a name, role, and personality. Example: "You are Luna, a friendly and knowledgeable customer support assistant for Acme Store."

2
Tone and style

How should it communicate? Example: "Be professional but warm. Use simple language. Avoid jargon. Keep responses concise (2-3 paragraphs max)."

3
Knowledge boundaries

What should it know and not know? Example: "You know about our products, pricing, shipping, and return policy. You do NOT know about competitor products or internal company decisions."

4
Escalation rules

When should it hand off to a human? Example: "Escalate to a human agent when: the customer asks for a refund, mentions legal action, reports a security issue, or asks the same question three times."

5
Things to never do

Hard boundaries. Example: "Never promise refunds. Never share internal pricing formulas. Never make up product features that do not exist. Never give medical, legal, or financial advice."

Example prompts

Example customer AI prompt — online store
You are Aria, a friendly customer support assistant for TechGear.

PERSONALITY:
- Warm and professional
- Concise (2-3 paragraphs max per response)
- Use simple language, no jargon
- If unsure, say so honestly

KNOWLEDGE:
- Our products: laptops, accessories, software subscriptions
- Pricing: as listed in the knowledge base
- Shipping: free over $50, 3-5 business days standard, 1-2 days express ($12)
- Returns: 30-day money-back guarantee, must be in original condition

ESCALATION (hand off to human):
- Refund requests over $100
- Account security concerns
- Legal threats or complaints
- Customer explicitly asks for a human

NEVER DO:
- Promise specific delivery dates (say "estimated")
- Share discount codes not in the knowledge base
- Make up product specifications
- Give financial or legal advice
Example customer AI prompt — hosting company
You are Atlas, an AI assistant for CloudHost web hosting.

TONE: Technical but accessible. Assume the customer has basic web knowledge.

KNOWLEDGE:
- Shared hosting, VPS, dedicated servers
- cPanel, DNS, SSL, email configuration
- WordPress, Joomla, Drupal installation
- Common error codes and troubleshooting

ESCALATION:
- Server outages affecting multiple customers
- Data loss or security breach reports
- Billing disputes over $50
- Complex migration requests

BOUNDARIES:
- Do NOT access customer servers or databases
- Do NOT change DNS records or passwords
- Always recommend the customer makes changes themselves
- For code issues, suggest steps but clarify you cannot debug their application

Refining your prompt over time

1
Launch with basics

Start with identity, tone, and key boundaries. Do not try to cover everything on day one.

2
Review AI History weekly

Read conversations where the AI gave wrong or suboptimal answers.

3
Update the prompt

Add specific rules for recurring issues. Example: if the AI keeps promising refunds, add "Never promise a refund — say you will escalate to the billing team."

4
Add knowledge

If the AI cannot answer a question, add the answer to the Knowledge Base rather than trying to fit everything in the prompt.

⚠️
Keep your prompt under 2,000 words. Overly long prompts can confuse the AI and increase token costs. Put detailed information in the Knowledge Base instead.
What is the difference between the prompt and the knowledge base?+

The prompt defines personality, boundaries, and rules. The knowledge base provides factual information (product details, pricing, policies). The AI reads both, but the prompt shapes behavior while the KB provides answers.

Can I have different prompts for different departments?+

The prompt is per-workspace. If you need different AI behavior for different departments, use the knowledge base to provide department-specific information and mention the department context in your prompt.

AI

AI history

AI History shows every conversation the AI has had with customers and admins. Use it to audit AI performance, find wrong answers, and identify training gaps.

What each conversation shows

Date and time

When the conversation happened.

Customer identity

Name and email if known, otherwise IP and country.

Channel

Chat widget, ticket auto-reply, email draft, or admin AI.

Messages

Full transcript of the conversation: customer messages and AI responses.

Token usage

How many tokens the conversation consumed. High token usage may indicate the AI is giving overly verbose answers or the conversation went in circles.

Actions taken

Any actions the AI executed during the conversation (looked up order, created ticket, etc.).

Rating

If CSAT is enabled, the customer's satisfaction rating for this conversation.

Finding problems

Search by keyword

Search for specific topics to see how the AI handles them. Example: search for "refund" to check if the AI is following your refund policy.

Filter by rating

Show only low-rated conversations to focus on dissatisfied customers.

Filter by channel

Show only ticket auto-replies to audit automated responses separately from chat.

Sort by token usage

High-token conversations may indicate problems: the AI rambling, going in circles, or failing to answer the question.

Weekly audit routine

1
Check low-rated conversations

Read the full transcript. What went wrong? Was it a knowledge gap, a tone issue, or a wrong answer?

2
Check high-token conversations

These might indicate confusion. Was the AI repeating itself? Did it fail to understand the question?

3
Update training

For knowledge gaps, add articles to the Knowledge Base. For behavior issues, update the AI prompt. For recurring wrong answers, add explicit correction rules.

Finding knowledge gaps

Scenario:
You search AI History for "installation" and find 15 conversations where the AI said "I do not have specific installation instructions for this product."
What to do:

This means your Knowledge Base is missing installation guides. Create knowledge base articles for each product's installation steps. After adding them, test by asking the AI installation questions.

AI

AI insights

AI Insights automatically analyzes conversation patterns and surfaces actionable findings: common questions, satisfaction trends, knowledge gaps, and escalation patterns.

What insights show

Top questions

The most frequently asked questions. If "How do I reset my password?" is #1, your knowledge base needs a prominent password reset guide.

Satisfaction trends

CSAT scores over time. Is AI satisfaction improving or declining? Sudden drops may indicate a knowledge base change that broke something.

Resolution rate

What percentage of conversations does the AI resolve without human intervention? A rate above 70% is good. Below 50% means the AI needs more training.

Escalation reasons

Why conversations get handed off to humans. Common reasons: customer requested human, AI could not answer, sensitive topic, billing issue.

Knowledge gaps

Topics where the AI frequently says "I don't know" or gives low-confidence answers.

Average conversation length

How many messages per conversation. Very long conversations (10+ messages) might indicate the AI is not understanding the question.

Using insights to improve

Scenario:
AI Insights shows that 23% of escalations are "Customer asked about warranty" and the AI could not answer.
What to do:

This is a clear knowledge gap. Steps: (1) Write a comprehensive warranty article in the Knowledge Base covering all warranty terms, claim process, and exclusions. (2) Update the AI prompt to reference warranty information. (3) Monitor AI Insights next week to see if warranty escalations decrease.

AI

Admin AI playbook

The Admin AI (Ask OpsIQ) helps your team manage OpsIQ from within the admin dashboard. You can ask it to look up data, explain features, summarize tickets, and execute platform actions.

What the admin AI can do

Look up data

Ask: "Show me all tickets from john@example.com" or "What is the status of order #ORD-5523?"

Summarize

Ask: "Summarize the last 10 tickets" or "What are the top support issues this week?"

Explain features

Ask: "How do I set up auto-reply?" or "What does the bounce rate card mean?"

Execute actions

Ask: "Create a ticket for john@example.com about billing" or "Close ticket T-12345"

Platform queries

Ask: "How many visitors did we get yesterday?" or "What is our revenue this month?"

Example conversations

Looking up a customer

Scenario:
Admin asks: "Find customer 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.
AI

Customer 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.

AI

AI knowledge base

The Knowledge Base is a library of articles that the AI uses to answer questions. When a customer asks something, the AI searches the knowledge base for relevant articles and uses them to generate an accurate, grounded response.

How it works

1
Customer asks a question

"What is your return policy?"

2
AI searches the knowledge base

OpsIQ finds the "Return Policy" article by matching keywords and semantic meaning.

3
AI generates a response

The AI reads the article and writes a natural-language answer based on the article content.

4
Customer gets an accurate answer

The response is grounded in your actual policy, not the AI's general training data.

Creating good articles

One topic per article

Write a separate article for each topic: return policy, shipping rates, account setup, password reset. Do not combine unrelated topics.

Write like a FAQ

Start with the question customers ask, then provide the answer. This helps the AI match questions to articles.

Be specific

"Returns must be initiated within 30 days of delivery" is better than "We have a return policy."

Include edge cases

What about international returns? What about digital products? What about items bought on sale? Cover the exceptions.

Keep it current

Review articles quarterly. Delete outdated information. Update pricing, policies, and procedures when they change.

Starter articles you should write

Shipping and delivery

Shipping costs, delivery times, tracking, international shipping, and handling delays.

Returns and refunds

Return window, conditions, process, refund timeline, and exceptions.

Account management

Password reset, email change, account deletion, and data export.

Pricing and billing

Plan descriptions, billing cycle, payment methods, invoices, and currency.

Product guides

How to use each product or feature. Step-by-step instructions with screenshots.

Troubleshooting

Common problems and solutions. Error messages and their fixes.

Contact information

Business hours, support channels, response times, and escalation paths.

Legal and compliance

Privacy policy summary, terms of service summary, GDPR data requests.

Connector knowledge

Each connector can contribute knowledge to the AI. When a connector is enabled, its built-in knowledge articles (product catalog, common questions, platform-specific troubleshooting) are automatically available to the AI. You can toggle connector knowledge on or off per connector in the Connector settings.

Token budget

The knowledge base has a configurable token ceiling (default: 32,000 tokens) that controls how much knowledge context is sent to the AI per conversation. If your knowledge base is very large, the AI selects the most relevant articles within this budget. Increase the ceiling if the AI is not finding relevant articles; decrease it if you want to reduce token costs.

How many articles should I have?+

Start with 5-10 articles covering your most common questions. Add more as you identify gaps through AI History and AI Insights. Most businesses need 20-50 articles for comprehensive coverage.

Can I import articles from another system?+

Currently, articles are created manually in OpsIQ. You can copy-paste content from existing FAQs, help centers, or documents.

What format should articles be in?+

Plain text works best. The AI understands natural language better than structured HTML or markdown. Write as you would explain to a customer.

Connectors

Connect your platforms

Connectors link OpsIQ to external platforms: e-commerce stores, billing systems, payment processors, email providers, and custom APIs. Once connected, the AI can look up orders, customer data, subscriptions, and more — and take actions with your approval.

Pre-installed connectors

WHMCS

Billing

Web hosting billing: clients, services, tickets, invoices, domains, servers.

Shopify

E-commerce

E-commerce: orders, customers, products, inventory, payments, webhooks, GDPR.

WooCommerce

E-commerce

WordPress e-commerce: orders, customers, products, coupons, shipping.

Stripe

Payments

Payments: charges, customers, invoices, subscriptions, payouts, disputes.

Paystack

Payments

African payments: transactions, customers, plans, subscriptions.

BigCommerce

E-commerce

E-commerce: orders, customers, products, categories, brands.

Magento 2

E-commerce

E-commerce: orders, customers, products, categories, inventory.

PrestaShop

E-commerce

E-commerce: orders, customers, products, cart rules, carriers.

OpenCart

E-commerce

E-commerce: orders, customers, products, categories.

osCommerce

E-commerce

Legacy e-commerce: orders, customers, products.

Zendesk

Support

Helpdesk: tickets, users, organizations, comments.

Google Business Profile

Marketing

Local business: reviews, posts, Q&A, insights. Uses OAuth.

Amazon SES

Email

Email delivery: send transactional emails via Amazon SES.

Postmark

Email

Email delivery: send transactional emails via Postmark.

Resend

Email

Email delivery: send transactional emails via Resend.

SendGrid

Email

Email delivery: send emails and manage templates via SendGrid.

Mailgun

Email

Email delivery: send emails via Mailgun.

Installing a connector

1
Go to Connectors

Navigate to Connectors in the admin sidebar.

2
Find the connector

Browse the list or search. Connectors are grouped by category.

3
Enable it

Click the connector and toggle Enable.

4
Enter credentials

Fill in the required fields: API key, URL, tokens, etc. Each connector has specific requirements documented in its settings panel.

5
Test connection

Click "Test Connection." A green result means the connector can reach the external platform. A red result shows the error.

6
Configure features

Choose which features to enable: knowledge sync, webhook sync, AI actions. Not all connectors support all features.

What connectors give you

AI context

The AI can look up customer data, orders, subscriptions, and more through the connector. When a customer chats, the AI has real platform data to reference.

Actions

The AI can perform actions through the connector: create tickets, update orders, cancel subscriptions — all with your approval through the Trust Layer.

Knowledge

Connectors contribute platform-specific knowledge articles to the AI. Shopify connector adds e-commerce troubleshooting; WHMCS connector adds hosting knowledge.

Webhooks

Some connectors register webhooks with the external platform for real-time event notifications (new orders, ticket updates, etc.).

Sales tracking

E-commerce connectors feed revenue data into the Sales dashboard for attribution and analytics.

💡
Connectors are workspace-scoped. Each workspace can have different connectors enabled with different credentials. A WHMCS workspace uses the WHMCS connector; a Shopify workspace uses the Shopify connector.
Can I use multiple connectors at once?+

Yes. You can have Shopify for orders and Stripe for payments in the same workspace. The AI merges data from all enabled connectors.

What if my platform is not listed?+

Use the Connector Builder to create a custom connector for any platform with a REST API. Or check the Marketplace for community-built connectors.

Do connectors work with self-hosted OpsIQ?+

Yes. Connectors work identically in both cloud and self-hosted editions.

Connectors

How AI actions work

Every connector declares a set of actions: things the AI can do through the external platform. Actions are the bridge between "the AI says" and "the AI does."

The action lifecycle

1
Customer asks for something

"Cancel my subscription." The AI identifies this requires the "cancel_subscription" action.

2
AI checks permissions

Is this action allowed? Is it enabled? Does the current user have the right role?

3
AI gathers parameters

The action needs a subscription ID. The AI looks it up from the customer context or asks the customer.

4
Confirmation

For destructive or high-impact actions, the AI asks for confirmation before executing.

5
Execution

The action calls the external platform API.

6
Result

The AI reports the result to the customer.

Action types

Read actions

Look up data without changing anything. Examples: list_orders, get_customer. Safe, no confirmation needed.

Write actions

Create or modify data. Examples: create_ticket, update_order. May require confirmation.

Delete actions

Remove data. Examples: cancel_subscription. Always require confirmation.

HTTP actions

Declared in actions.json — generic API calls defined declaratively.

Code actions

Implemented in PHP in the connector class. Full control over logic.

Example action definition
{
  "lookup_order": {
    "label": "Look up an order",
    "description": "Find an order by ID or email",
    "method": "GET",
    "endpoint": "/admin/api/2024-01/orders.json",
    "params": {
      "order_id": { "type": "string", "label": "Order ID" },
      "email":    { "type": "email",  "label": "Customer email" }
    }
  }
}
Connectors

Build a connector

The Connector Builder lets you create a complete connector for any platform with a REST API. No coding required for basic connectors.

Connector Builder wizard

1
Name and describe

Give your connector a name, slug, description, and category.

2
Set authentication

Choose: API key (header or query), Bearer token, Basic auth, or OAuth 2.0 (with PKCE).

3
Define the base URL

The root URL for all API calls. Example: https://api.example.com/v2

4
Add actions

Define actions with: name, HTTP method, endpoint path, parameters, and response mapping.

5
Add knowledge

Write knowledge base articles specific to this platform.

6
Test

Enter test credentials and run each action to verify it works.

7
Package

Generate the connector package: actions.json, knowledge.json, profile.json, and optionally PHP code.

Authentication types

API key

A static key sent in a header or query parameter. Simplest method.

Bearer token

Token sent in the Authorization header. Common for modern APIs.

Basic auth

Username and password encoded in the Authorization header.

OAuth 2.0

Full authorization code flow with PKCE. OpsIQ handles redirect, exchange, and refresh via OAuthHelper.

Pagination styles

Offset

Uses offset and limit parameters. Example: ?offset=100&limit=50.

Page

Uses page number. Example: ?page=3&per_page=50.

Cursor

Uses a cursor token from the previous response.

Link header

Uses the Link response header with rel="next".

Advanced: custom PHP code

Custom connector PHP example
<?php
namespace OpsIQ\Connectors\MyPlatform;

use OpsIQ\Connectors\AbstractConnector;

class MyPlatformConnector extends AbstractConnector
{
    public function identifier(): string { return "myplatform"; }
    public function label(): string     { return "My Platform"; }

    public function testConnection(): array
    {
        $resp = $this->http("GET", "/me");
        return $resp["ok"]
            ? ["status" => "ok", "message" => "Connected"]
            : ["status" => "error", "message" => $resp["error"]];
    }

    protected function runAction(string $action, array $params): array
    {
        return match ($action) {
            "list_customers" => $this->http("GET", "/customers", [
                "query" => ["page" => $params["page"] ?? 1],
            ]),
            default => ["error" => "Unknown action: $action"],
        };
    }
}
⚠️
Action keys must be 3-80 characters, lowercase, letters/numbers/underscores. After adding new AJAX routes, run php tools/gen_route_registry.php.
Connectors

Connector recipes

Step-by-step recipes for common connector setups.

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.

Connectors

Connector marketplace

The Marketplace lets you discover, install, and publish connectors built by the community.

Finding and installing connectors

1
Browse

Go to Connectors > Marketplace. Search by name, category, or platform.

2
Review

Check the description, supported actions, and ratings.

3
Install

Click Install. The connector package downloads and installs to marketplace_connectors/.

4
Configure

Enable it in Connectors, enter API credentials, and test.

Publishing a connector

1
Build and test

Use the Connector Builder. Verify all actions work.

2
Package

Generate profile.json, actions.json, knowledge.json, and PHP files.

3
Sign

Run php tools/resign_all_connectors.php to sign the package.

4
Submit

Upload through the marketplace submission flow for review.

Two connector tiers

Pre-installed (connectors/)

Ship with OpsIQ. Maintained by the OpsIQ team.

Marketplace (marketplace_connectors/)

Installed from marketplace. Can be declarative or custom PHP.

💡
Always check BOTH directories when looking for a connector. Stripe is pre-installed — searching only marketplace would miss it.
Developer

API and webhook builder

The API and Webhook Builder lets you create custom API endpoints and webhook listeners inside OpsIQ without writing raw PHP.

Triggers

Inbound webhook

An external system sends HTTP POST to your OpsIQ webhook URL.

Schedule

Run on a schedule: hourly, daily, weekly, or custom cron expression.

Event

Run when a specific OpsIQ event fires: ticket.created, chat.started, etc.

Manual

Run manually from the admin interface.

Actions

Send webhook

Send HTTP POST to an external URL with a custom payload.

Create ticket

Create a support ticket with specified department, subject, and message.

Send email

Send an email with a custom template.

Update record

Update a customer, ticket, or CRM record.

Run connector action

Execute a connector action.

Developer

Triggers cookbook

Ready-to-use trigger-action recipes for common automations.

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

Developer

Building your first action

This walkthrough creates a simple connector action from scratch.

1
Plan the action

Example: "lookup_product" — look up a product by name, return price, stock, and description.

2
Define in actions.json

Add 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"
    }
  }
}
3
Test with dry-run

In connector settings, use dry-run to test with sample data.

4
Verify AI usage

Ask admin AI: "Look up product Widget Pro." The AI should find and execute the action.

⚠️
After adding actions, regenerate the route registry: php tools/gen_route_registry.php
Developer

Webhooks

Webhooks let external systems notify OpsIQ when something happens (inbound), and let OpsIQ notify external systems when something happens internally (outbound).

Outbound webhooks

Subscribing

Go to Settings > Webhooks. Add an endpoint URL and select events to receive.

Events

ticket.created, ticket.replied, chat.started, chat.message, order.completed, crm.deal.stage_changed, crm.contact.created, etc.

Retry

Failed deliveries retry with exponential backoff. After 15 consecutive failures, the endpoint is auto-disabled.

Signing

Every request includes an HMAC signature in X-OpsIQ-Signature. Always verify.

SSRF protection

OpsIQ will not send to private/internal IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).

Async delivery

Webhooks are delivered via the job queue, not blocking OpsIQ operations.

Stable event ID

Each event has a unique event_id that stays the same across retries for deduplication.

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.

Developer

API keys

API keys authenticate requests to the OpsIQ REST API. Each key has scoped permissions.

Creating an API key

1
Go to Settings > API Keys

Navigate to API key management.

2
Click Create Key

Give it a descriptive name.

3
Select scopes

Choose permissions: analytics.read, tickets.read, tickets.write, crm.read, crm.write, etc.

4
Copy the key

Shown once. Starts with "opq_". Store it securely.

🚫
Never share API keys in public code, client-side JavaScript, or version control. Use environment variables.
Developer

Connect your website

The OpsIQ widget is a JavaScript snippet you add to your website for tracking, AI chat, ticket creation, and customer identification.

Basic installation

Basic widget snippet
<script src="https://your-opsiq-domain.com/widget.php"
  data-site-key="site_abc123"
  async></script>

Paste before the closing </body> tag. The script loads asynchronously and does not block page rendering.

Configuration attributes

data-site-key

Required. Your site key from Connected Sites.

data-mode

Optional. "chat" (default), "tickets", or "both".

data-position

Optional. "bottom-right" (default) or "bottom-left".

data-color

Optional. Primary color hex code.

data-greeting

Optional. Initial greeting message.

data-language

Optional. UI language: "en", "es", "fr", "de", "pt", "ar", etc.

data-identity-token

Optional. Server-generated signed identity token.

SPA support

Manual SPA route tracking
// Manually notify OpsIQ of a route change (for custom routers)
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["pageview", {
  url: window.location.href,
  title: document.title,
}]);

CSP rules

CSP rules for widget
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
Does the widget slow my website?+

No. Under 15 KB gzipped, loads async after page content.

Can I customize the appearance?+

Use data-color for primary color. Contact support for CSS override options.

Developer

Widget install recipes

Platform-specific installation guides.

WordPress

Scenario:
Add to all pages of a WordPress site.
What to do:

Option 1: Edit theme footer.php, paste snippet before </body>. Option 2: Use "Insert Headers and Footers" plugin > Scripts in Footer. Option 3: Use a child theme footer.php to survive theme updates.

Shopify

Scenario:
Add to your Shopify store.
What to do:

Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.

React / Next.js

Scenario:
Add to a React or Next.js app.
What to do:

In Next.js, use next/script in app/layout.tsx: import Script from "next/script"; <Script src="https://your-opsiq.com/widget.php" data-site-key="site_abc" strategy="lazyOnload" />

WHMCS

Scenario:
Add to your WHMCS client area.
What to do:

Setup > General Settings > Other > Global Footer Content. Paste the snippet. Or edit your template footer.tpl.

Google Tag Manager

Scenario:
Add via GTM.
What to do:

Create Custom HTML tag, paste snippet. Trigger: All Pages. Publish.

Developer

Visitor identity

Identity connects anonymous visitors to known customers. When identified, OpsIQ links browsing history, chats, and tickets to the customer profile.

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.

Developer

Plugins and SDKs

OpsIQ provides SDK packages and plugins for common platforms.

PHP SDK

Composer package: identity token generation, REST API client, webhook signature verification.

JavaScript SDK

Browser-side: tracking, identity, custom events, chat control.

WordPress plugin

Widget injection, identity from WP user sessions, WooCommerce sync.

WHMCS module

Full integration: widget, ticket relay, identity, admin AI.

Shopify theme extension

App 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"]);
Developer

REST 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.visitors

Get visitor data. Params: days, page, per_page.

analytics.sessions

Get session data. Params: days, search, source.

tickets.list

List tickets. Params: status, department, priority.

tickets.create

Create a ticket. Params: subject, message, department, customer_email, priority.

tickets.reply

Reply to a ticket. Params: ticket_id, message, internal.

crm.contacts.list

List CRM contacts. Params: search, lifecycle_stage.

crm.deals.list

List CRM deals. Params: pipeline_id, stage_id, status.

events.send

Send a custom event. Params: event, customer_email, properties.

Rate limits

Per-key limit

60 requests per minute per API key. HTTP 429 when exceeded.

Retry-After header

Response includes how long to wait.

Best practice

Exponential backoff. Do not retry immediately.

Is there an OpenAPI/Swagger spec?+

Yes. Available at /api/docs/ on your OpsIQ installation.

Developer

Events 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".

Developer

How data flows through OpsIQ

Understanding the data flow helps you debug integrations and optimize performance.

Inbound data flow

1
Widget beacon

The JavaScript widget sends page views, clicks, and chat messages to /beacon.php.

2
Event ingestion

Events stored in opsiq_events with site_key, event type, customer, and properties.

3
Session assembly

Session builder groups page views into sessions (via cron).

4
Identity resolution

When identified, anonymous records are linked to the customer profile.

5
Connector sync

Connectors pull data from external platforms and store in the connector cache.

6
AI context

AI assembles context from: visitor history, customer profile, connector data, KB, and prompt.

Outbound data flow

1
Event fires

Internal event fires (ticket.created, chat.message, order.completed).

2
Job queue

Event placed in the async job queue.

3
Webhook dispatch

Dispatcher signs and sends to all subscribed endpoints.

4
Retry on failure

Failed deliveries retried with exponential backoff.

Settings

Settings reference

Settings control how OpsIQ behaves across tracking, AI, tickets, security, and branding.

General settings

Business name

Your company name. Used in AI responses, emails, and widget header.

Industry

Your business industry. Helps the AI understand context.

Timezone

All analytics and timestamps use this timezone.

Default currency

Currency for revenue reporting.

Support hours

Business hours for auto-reply scheduling and SLA timers.

Tracking settings

Session timeout

Inactivity time before a session ends. Default: 30 minutes.

Active threshold

How long a visitor is "live" after last page load. Default: 90 seconds.

IP anonymization

Replace last IP octet with 0 for GDPR compliance.

Do Not Track

Respect DNT browser headers.

Excluded IPs

IP addresses to skip in tracking. Add your team IPs.

Excluded pages

URL patterns to skip. Example: /admin/*

Data retention

How long to keep visitor data. Default: 90 days.

Branding settings

Logo

Appears in admin header, emails, and widget.

Primary color

Accent color throughout the admin UI and widget.

Favicon

Browser tab icon for your OpsIQ admin.

Settings

Managing your team

Invite team members and assign roles to control who can access what.

Roles

Owner

Full access including license, billing, and danger zone. One per installation.

Full Admin

Full access except license and danger zone. Can manage admins.

Agent

Limited to assigned departments. Tickets, chats, and analytics only.

Inviting team members

1
Go to Team

Navigate to Team in the sidebar.

2
Click Invite

Enter the team member's email.

3
Set role

Choose Owner, Full Admin, or Agent.

4
Assign departments

For Agents, select accessible departments.

5
Send invite

They receive an email with a setup link.

Settings

Team performance

How your support team is performing. Only accessible to Owners and Full Admins.

Metrics

Resolution time

Average time from ticket creation to resolution per agent.

First response time

Average time to first staff reply. Most important SLA metric.

Handle depth

Average number of replies needed to resolve a ticket.

Workload

Open ticket count per agent right now.

Channel distribution

Breakdown of chat vs. tickets vs. email per agent.

CSAT breakdown

Customer satisfaction scores per agent vs. team average.

Trend comparison

Current period vs. previous period comparison.

Busiest hours

When each agent handles the most tickets. Use for shift planning.

Who is online

OpsIQ tracks admin online status via a 60-second heartbeat. Admins not seen in 5 minutes are offline. The status widget appears in the admin navigation.

Settings

Your sites (workspaces)

Sites (workspaces) let you manage multiple websites from one OpsIQ installation. Each has its own tracking, AI, connectors, and team access.

Creating a site

1
Go to Connected Sites

Navigate to Connected Sites.

2
Add a new site

Enter name, domain, and description.

3
Copy the site key

Each site gets a unique key (site_xxx) for the widget snippet.

4
Configure independently

Each site has its own AI, connectors, and settings.

How many sites can I have?+

Depends on your license plan. Check your license details.

Settings

License and plan

Your OpsIQ license controls features, site limits, and AI credit balance.

License key

Enter in Settings > License. Validated against the OpsIQ license server.

Plan

Determines feature availability and limits.

Site limit

Maximum number of workspaces.

AI credits

If using Managed AI, your credit balance is shown here.

Expiration

Renew before expiration to avoid service interruption.

What happens when my license expires?+

Tracking, tickets, and CRM continue. AI features pause until renewal. Data is preserved.

Settings

Security and access

OpsIQ includes multiple security layers to protect your admin, data, and API access.

Security features

Admin authentication

Email/password with optional 2FA.

Login lockout

Temporary lock after too many failed attempts.

IP blocking

Block IPs or CIDR ranges from accessing tracked sites.

Threat scoring

Behavior-based threat scores. High-threat visitors can be auto-blocked.

HTTPS enforcement

Required for all connections. HTTP redirects to HTTPS.

HSTS headers

Strict-Transport-Security prevents downgrade attacks.

CSRF protection

All admin forms include CSRF tokens.

XSS protection

All user input is escaped. CSP headers restrict script execution.

SSRF protection

Outbound webhooks block private/internal IP addresses.

Recommended setup

1
Enable 2FA

For all admin accounts.

2
Strong passwords

Minimum 12 characters, mixed.

3
Review accounts

Remove access for former team members.

4
Monitor failed logins

Check weekly for suspicious patterns.

5
Keep updated

Apply updates promptly for security patches.

Settings

Roles and permissions

Role-Based Access Control lets you control what each team member can do.

Default roles

Owner

Everything including license, danger zone, and installation management.

Full Admin

Everything except license and danger zone. Can manage team.

Agent

Respond to assigned-department tickets and chats, view analytics. No settings, team, or security access.

Can I create custom roles?+

Not currently. Three built-in roles plus department assignment gives granular control.

Settings

Blocked IPs

Manage IP addresses blocked from accessing your tracked sites.

How to block

1
Go to Security > Blocked IPs

2
Add an IP or CIDR range

Example: 203.0.113.42 or 203.0.113.0/24

3
Add a reason

Document why: spam, abuse, scraping, etc.

Will blocking affect legitimate users?+

If customers share a corporate IP or VPN, blocking that IP blocks everyone on it. Use narrow blocks.

Settings

Failed logins

All unsuccessful login attempts to your OpsIQ admin.

What each entry shows

Date/time

When the attempt happened.

Email

Email address used.

IP address

Source of the attempt.

Country

Geographic location.

Reason

Wrong password, locked, or not found.

Warning signs

Many attempts, same email

Password guessing. Ensure 2FA is enabled.

Many attempts, different emails

Automated attack. Block the source IP.

Unusual countries

If your team is local, foreign attempts are likely attacks.

Operations

Cron and automation

OpsIQ uses cron jobs to run scheduled tasks: email polling, session assembly, analytics, retention, AI queue, CRM scoring, and connector syncing.

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 polling

Checks mailboxes for new emails. Every 1-5 minutes.

Session assembly

Groups page views into sessions. Every 5 minutes.

Analytics aggregation

Calculates dashboard rollups. Every 15 minutes.

Retention cleanup

Deletes old data past retention period. Daily.

AI queue

Processes auto-reply drafts and AI tasks. Every minute.

CRM scoring

Updates lead scores and deal health. Every 15 minutes.

CRM forecast snapshot

Weekly forecast data capture.

Connector sync

Polls connected platforms. Every 5-15 minutes.

Admin presence pruning

Cleans stale presence records.

Verifying cron

1
Check the log

Look at /var/log/opsiq-cron.log for recent entries.

2
Check diagnostics

Settings > Diagnostics shows "Last cron run." Should be within 5 minutes.

3
Run manually

Test with: php /path/to/opsiq/cron.php

🚫
If cron is not running, email polling, auto-reply, session assembly, analytics, retention, and CRM scoring all stop.
Operations

Self-hosting OpsIQ

OpsIQ self-hosted runs on your own server for full control over data, branding, and integrations.

Requirements

PHP

8.1+. Extensions: curl, json, mbstring, openssl, pdo_mysql, gd.

MySQL / MariaDB

MySQL 8.0+ or MariaDB 10.6+. InnoDB required.

Web server

Apache 2.4+ with mod_rewrite, or Nginx.

HTTPS

Required. Use Let's Encrypt or any SSL provider.

Cron

System cron running every minute.

Memory

Minimum 512 MB PHP memory_limit. Recommended: 1 GB.

Disk

Minimum 1 GB. Additional depends on data volume.

Installation

1
Upload files

Upload OpsIQ to your web server document root.

2
Create database

Create a MySQL database and user with all privileges.

3
Configure

Edit config with database credentials, URL, and license key.

4
Run setup

Visit the URL. Setup wizard creates tables and initial admin.

5
Set up cron

Add cron entry to run every minute.

6
Verify HTTPS

Ensure HTTPS is working. HTTP should redirect.

Updating

1
Backup

mysqldump + file backup before updating.

2
Upload new files

Overwrite existing files. Config is preserved.

3
Run migrations

Visit admin. Migrations run automatically.

4
Verify

Check 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.
Operations

Production guide

Checklist and best practices for running OpsIQ in production.

Before going live

HTTPS configured

SSL installed, HTTP redirects, HSTS enabled.

Cron running

Verify via diagnostics page.

AI tested

Chat as a customer. Verify accuracy and tone.

Widget installed

On all website pages. Verify with Live Feed.

Backup configured

Automated daily database and file backups.

Error logging

PHP error log enabled and monitored.

Team invited

All members have accounts with correct roles.

Knowledge base populated

At 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.

Operations

Pre-launch checklist

Use this checklist before launching OpsIQ.

1. Widget loads in all browsers

Chrome, Firefox, Safari, Edge.

2. Widget loads on mobile

Phone and tablet.

3. Tracking records visits

Visit in private browser, check Live Feed.

4. AI chat works

Ask 5 common questions. Verify accuracy.

5. Ticket creation works

Create via widget. Check admin Tickets.

6. Email to ticket works

Send email to mailbox. Verify ticket appears.

7. Auto-reply works

Create test ticket. Wait for AI reply.

8. Connector works

Ask AI about a test customer.

9. Identity works

Log in as customer. Verify identification.

10. Team access works

Log in as each role. Verify permissions.

11. Webhooks fire

Create ticket. Verify webhook sent.

12. Backups work

Restore to test environment. Verify data.

Operations

Troubleshooting

Common issues and how to fix them.

General

Blank page+

Check PHP error logs. Causes: old PHP (need 8.1+), missing extension, DB connection failed, wrong file permissions.

Dashboard shows zeros+

Check: widget installed? Cron running? Date range correct? IP excluded?

AI

AI does not respond+

Check: provider configured? API key valid (use Test connection)? Budget exhausted? Workspace AI config correct?

AI gives wrong answers+

Check: knowledge base up to date? Prompt clear? Connector lookups returning correct data? Review conversation in AI History.

AI is slow+

Depends on: provider API speed, context size (large KB = more tokens = slower), network latency. Try a faster model.

Tracking

Widget missing+

Check: script in page source? JS errors in console? CSP blocking? Ad blocker?

Unknown country+

GeoIP not configured. Use Cloudflare (automatic) or MaxMind GeoLite2 database.

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.

Reference

Glossary

Definitions for terms used throughout OpsIQ.

Action

Something the AI can do through a connector or the platform.

Agent

A team member with limited access, or an AI agent.

BYOK

Bring Your Own Key — you provide your own AI API key.

Connector

A plugin integrating an external platform with OpsIQ.

CSAT

Customer Satisfaction score.

Deal

A revenue opportunity in the CRM.

Department

A ticket category for routing and access control.

Escalation

Moving a ticket to a different department or from AI to human.

GeoIP

Visitor location detection from IP address.

Handoff

Transferring a conversation from AI to human.

Identity token

Signed token identifying a website visitor.

Knowledge base

Articles the AI uses to answer questions.

Lead

A visitor showing buying intent.

Lead score

0-100 number indicating conversion likelihood.

Lifecycle stage

Where a customer is: Lead, Prospect, Customer, At Risk, Churned.

Managed AI

AI provided as part of your OpsIQ plan.

Pipeline

Visual board of deal stages.

RBAC

Role-Based Access Control.

Session

A series of page views within a timeout window.

Site key

Unique identifier for a tracked website.

SLA

Service Level Agreement — target response times.

Token

Unit of AI text. Roughly 4 characters = 1 token.

Trust Layer

Safety system controlling AI autonomy.

Webhook

HTTP callback for event notifications.

Widget

JavaScript code embedded on your website.

Workspace

A site with its own tracking, AI, connectors, and team. Same as "site."

Reference

Get more help

If this documentation does not answer your question:

Admin AI

Click "Ask OpsIQ" in the admin. Has access to this documentation and your platform data.

Support ticket

Include: what you tried, what happened, what you expected, and any error messages.

Email

Email support with your license key and issue description.

Tips for effective support requests

Include the page

Which admin page (URL or name).

Include the setting

Exact setting name and current value.

Include the error

Exact error message with codes.

Include the steps

What you did, step by step.

Include expected vs actual

What should happen vs what did happen.

💡
The more specific your request, the faster the answer. "It does not work" requires investigation. "Clicking Save on AI Configuration gives error code 502" gets a direct answer.
Launch smarter

Need help setting up OpsIQ?

Use the documentation above, then contact support with the exact page, setting and result you are seeing so the team can assist faster.