InstantAIguru Admin Guide
Complete reference for the admin console and the Chat Dashboard
Quick Start Guide — 4-Step Setup
A new Guru opens in the setup wizard, which walks you through a password (if your account has none), your Guru’s name, words, look and job, installing it on your site, and adding channels. Everything it sets can be changed later in the console. To personalize your Guru from the console, set these and click Save:
Appearance opens first. Step through Words (chat header, welcome message, up to 4 frequent questions), Colors, Icon, Effect and Position, watching the live preview of your own site. Install gives you the one line to paste into your site.
Fill in Domain owner with your company name, and Support contact for your customers — a URL or contact added to every error message your visitors see.
Enter a Guru name, then describe its Role and skills and Its job.
Admin Console Overview
Layout
The console has a menu down the left side and the open section to its right:
- Left menu — the sections of your Guru: Appearance, General, Instructions, Channels, Knowledge Files, Users, Integrations and Subscription. Below a divider are Settings, a link to the Chat Dashboard, links to the CSAT Dashboard and Live Support when those integrations are on, and this guide. Your account sits at the bottom.
- Top bar — the name of the open section, and the actions that apply to the whole Guru (below).
The address keeps the open section (for example #channels), so a reload, a bookmark or a link opens that section. The ⇤ button beside the logo collapses the menu to icons, and the console remembers it. On a phone the menu is a drawer opened from the ☰ button.
The top bar provides these actions:
| Button | Description |
|---|---|
| Upload Flows | Imports a JSON/.flows file of interactive conversation flows for the Guru. Shown only to users with the Config permission, which a platform administrator grants. |
| Upload Tools | Imports a JSON/.tools file of custom tool definitions the Guru can call. Shown only to users with the Config permission, which a platform administrator grants. |
| Design Flows | Opens the visual Flow Designer (flow-designer.html) in a new window, handing it your flows, tools and global variables; whatever you send back arrives here as unsaved changes. Shown only to users with the Config permission, which a platform administrator grants. |
| Re-index | Re-reads your website and knowledge files and rebuilds what your Guru knows. Needs the Reindex permission, and your first and last name filled in (Your profile). See Re-index. |
| Save | Saves all changes. It turns solid purple when there is something to save. |
Your account menu
Click your name at the bottom of the menu for:
| Item | Description |
|---|---|
| Change email or password | Opens the same dialog as Change on the General section. |
| Theme | Light, Dark, or match my device (the default). Remembered in this browser. |
| Exit | Leaves the console for the instantAIguru home page (or siteguru.ai, if you opened the console from there). Warns you if there are unsaved changes, and offers to review them first. If your account has no password yet, Exit stops and asks you to set one. |
Saving Changes
The Save button in the top-right corner turns solid purple whenever you have unsaved changes. That includes work done elsewhere and handed back to this window — flows, tools and global variables sent over from the Flow Designer, and files brought in with Upload Flows or Upload Tools — not only what you typed into a form.
Review Changes
If you try to Exit or Re-index with unsaved work, the console offers Review Changes. It shows exactly what Save would write: every field, with its Original value beside Your Modification.
Two things worth knowing about what you see there:
- Paths name records, not slots.
users[[email protected]] › channelsidentifies a person, so deleting one user does not make the users below look edited, and reordering flows is not reported as changes. - The chips count what changed. Flows, Tools and Globals chips appear only when that registry actually differs, and count changed entities — three edits across two flows is “Flows: 2 changed”, because the rows below already itemise the fields. The Flow Designer hands back its whole registry every time it saves, so a registry that came over untouched says nothing at all. In the figure above, Tools has no chip for exactly that reason.
When someone else has been editing
When you click Save, the console performs a 3-way merge: the configuration as it was when you loaded the page (the original), your changes, and the latest version on the server. Anything only you changed is applied. Anything only the other person changed is kept. If you both changed the same field to different values, a conflict resolution dialog asks you to choose — the original value, yours, or theirs — for each conflict.
- Agreement is not a conflict. If you and the other person made the same edit, there is nothing to decide and you are not asked.
- Deletions are resolved whole. If the other person deleted a record while you were editing a field inside it — a user, a channel, a schedule — you are asked about the complete record, not the one field you touched. Keeping “yours” restores the whole thing; several edits inside one deleted record collapse into that single decision.
- If the server changes again while you are still deciding, your resolutions are dismissed and you are asked to click Save again against the newer version.
Permission-Based Access
An administrator gives each user permissions (see Users). A section you have no permission for stays in the menu with a 🔒 lock and does not open; clicking it says so. Each section has its own permission, and General is open to everyone. The Admin permission opens Users, where other users and their permissions are managed. If the section a link points to is locked, the console opens the first section you can use.
Appearance
What your chat widget says and looks like, beside a live preview. Appearance is the first section of the console, and it works like the setup wizard: six steps, one card at a time, with Back and Next, or click a step’s name to jump to it. Nothing here needs an Apply button — every change shows in the preview at once. Click Save to keep it.
The live preview
The right half shows a picture of your own site with your real Guru on it: the chat button there is the actual widget, so you can open it and chat. The picture is taken the first time you open Appearance. If your site cannot be pictured (for example, because it asks visitors to prove they are a person), the frame says why, offers Try again, and the preview works the same on a plain background.
1. Words
| Field | Type | Description |
|---|---|---|
| Chat header | text | The text in the chat widget’s header bar (for example “Ask Acme”). If left empty, your site shows “Ask Our Guru”. |
| Welcome message | textarea | The first message a visitor sees on opening the chat. {{displayName}} becomes the visitor’s name when it is known, otherwise the Generic visitor name set in Settings. Example: “Hi! I’m the Acme Widgets assistant. How can I help you today?” |
| Frequent questions (up to 4) | text × 4 | Shown as buttons below the welcome message, to help visitors start (for example “What are your business hours?”). Leave blank to hide. |
2. Colors
Pick one of 8 presets, or set each color yourself. A preset fills in the four colors below:
| Preset | Background | Gradient | Text | Hover |
|---|---|---|---|---|
| Clean | #ffffff | #ffffff | #000000 | #f0f0f0 |
| Blue | #0e92ff | #0056b3 | #ffffff | #1aa3ff |
| Purple | #6c5ce7 | #4834d4 | #ffffff | #7d67f0 |
| Green | #27ae60 | #1e8449 | #ffffff | #2ecc71 |
| Orange | #e67e22 | #d35400 | #ffffff | #f39c12 |
| Red | #e74c3c | #c0392b | #ffffff | #e74c3c |
| Dark | #2c3e50 | #1a2530 | #ffffff | #34495e |
| Light | #ecf0f1 | #bdc3c7 | #2c3e50 | #ecf0f1 |
| Color | Description |
|---|---|
| Background | The main color of the chat header, the send button and the chat button. |
| Gradient | The second color of the widget’s gradients — header, send button, frequent-question buttons, the visitor’s own messages and the teasers (usually a darker shade of the background). |
| Text | The color of text on the colored areas. |
| Hover | The color shown when the pointer is over a button. |
Colors apply as you pick them.
3. Icon
The button visitors tap to open the chat:
| Choice | Description |
|---|---|
| Guru | Our own icon, the default. It takes your colors and saves no image. |
| Bubble, Headset, Sparkles, Smile, Help, Bot, Heart | Ready-made icons, drawn in your colors. If you change your colors later, Save redraws the icon in the new ones. |
| Upload your own | An image from your computer: PNG, JPG, GIF, WebP or SVG; a square image works best. It appears as the first tile, marked Yours. Pick any other tile to stop using it. |
window.iAIgW_icon in its embed code, the widget treats the page as self-configured: it uses that icon and does not load any of the settings made here (colors, words, effect, position) unless the page also sets settings.fetch = true.
4. Effect
An animation and short teasers that draw attention to the chat button:
| Setting | Type | Description |
|---|---|---|
| Effect | select | None — no animation. Orbit — a gentle circular motion. Pulse — a pulsing glow. Shake — a quick shake. |
| Starts after (seconds) | number | How long after the page loads the effect starts. Default: 5. |
| Runs for (seconds, 0 = keeps going) | number | How long the effect lasts; 0 keeps it going until the visitor opens the chat. Default: 0. |
| Teasers | text | Comma-separated messages shown one at a time beside the chat button Shown even with Effect None. Default: Click me!, Need help?, Chat with us. |
5. Position
Choose which corner of the page the chat widget occupies, how far in it sits from the edges, and whether visitors may move it themselves. Every control here previews immediately, so there is no Apply button. Click Save to keep it.
| Setting | Type | Description |
|---|---|---|
| Corner | 4 buttons | Top left, Top right, Bottom left or Bottom right. The current choice is highlighted. Default: Bottom right. |
| From the side (px) | number | How far in from the left or right edge, whichever the corner pins. Default: 20. |
| From the top or bottom (px) | number | How far in from the top or bottom edge, whichever the corner pins. Default: 20. |
| Let visitors drag the widget | checkbox | When on, a visitor can drag the widget anywhere, and it stays there on their device. It also enables a right-click menu on the widget icon offering the four corners directly. On by default. |
Picking a corner moves the chat button in the preview as you click, so you judge the result against your own site rather than against the form:
window.instantAIguru.placement in its embed code, that takes priority over the position configured here, exactly as it does for the Chat Icon.
6. Install
Add to your site holds the one line of code that puts your Guru on your site. Click Copy and paste it once, before the closing </body> tag. Everything you set in Appearance then reaches your site when you Save, with no new code. See Deploying Your Guru for platform-by-platform steps.
General
Your Guru’s domain and owner, the support contact shown to your visitors, how your site is read, and your own profile.
Your Guru
| Field | Type | Description |
|---|---|---|
| Domain | read-only | Your website domain. This is set during onboarding and cannot be changed. |
| Configuration | read-only | Shown only when the configuration name differs from the domain (for example, for multi-config setups). Identifies which configuration is active. |
| Domain owner | text | Your company or organization name. |
| Support contact for your customers | text | A URL or contact information (for example https://support.example.com or an email address) that is added to the error and fallback messages your visitors see, so they always know how to reach a person when the AI cannot help. It is also given to your Guru, so it can point visitors to it in ordinary answers. |
Reading your site
| Field | Type | Description |
|---|---|---|
| Read linked pages on other sites | checkbox | When on, links that leave your domain are followed when your site is read — useful if your knowledge spans linked external pages. Leave it off to read only your own domain. Takes effect at the next Re-index. |
Your profile
| Field | Type | Description |
|---|---|---|
| First name / Last name | text | Your name on the account. |
| read-only | Your sign-in email. To change it, click Change. | |
| Password | read-only | Shown as dots. Click Change (or Change email or password in the account menu) to open Change Login Credentials: your current password, a new one of at least 8 characters entered twice, and optionally a new email. Save or discard your other changes first. |
Setting your password for the first time
If you reached the console through an email invitation or a Forgot password link, your account does not have a password yet: the Change button reads Set Password, and the password dialog opens by itself without the Current Password field, because there isn’t one.
Instructions
This is where you define your Guru's identity, expertise, and purpose. These instructions shape how the AI assistant behaves and responds to your visitors.
Who your Guru is
| Field | Type | Description |
|---|---|---|
| Guru name | text | The display name of your AI assistant (e.g., "SalesBot", "HelpDesk Pro", "Maya"). This is the name your Guru uses for itself in conversations. The chat header is set separately, in Appearance › Words. |
| Role and skills | textarea | Define the identity and expertise of your Guru. Example: "You are an AI assistant for Example.com, expert in sales and customer service, fluent in English and Spanish." This sets the personality, tone, and knowledge domain of the assistant. |
| Its job | textarea | Define the primary job and use case. Example: "Help users find information about our products and services. Guide them through the purchasing process and answer questions about pricing, shipping, and returns." This focuses the assistant on its core responsibilities. |
Advanced notes
Collapsed under Advanced notes: optional extra instructions for one step of how an answer is made. Most Gurus never need them — leave them blank to use the default behavior.
| Field | Type | Description |
|---|---|---|
| Understanding the question | textarea | Custom instructions for the prompt evaluation step. This controls how the user's question is analyzed and rephrased to optimize document retrieval. Leave blank to use default behavior. |
| Choosing the reference material | textarea | Custom instructions for the document evaluation process. This controls how retrieved documents are scored and selected for inclusion in the response. Leave blank to use default behavior. |
| Writing the answer | textarea | Custom instructions for the response generation step. This influences the final answer composition, including style, format, and content guidelines. Leave blank to use default behavior. |
Channels
Where your Guru answers besides your website: WhatsApp, text messages (SMS), phone calls (Voice) and email. Add them with the buttons at the top of the section: Connect WhatsApp, Add Twilio number (SMS and Voice) and Add email. Each channel type has its own group below.
Every channel card — WhatsApp, SMS, Voice, or Email — behaves the same way:
- Click the card header to expand or collapse it.
- Delete button (trash icon) in the header removes the channel after you confirm — the removal (and any billing effect) takes effect when you Save.
- A “Configuration Required” banner appears when a channel was added from your subscription but is still missing credentials — fill in the missing fields below the banner to activate it.
- A Subscribed / Not Subscribed badge shows whether the channel is on your live subscription; see Subscription for how channels are counted.
- Billing follows Save. When you have a live subscription and your saved channel set changes, Save shows a confirmation listing the additions (at your per-channel rate) and removals (prorated credit) with Approve, Discard Channel Changes (keep your other edits, drop the channel changes), or Back. Stripe subscriptions update immediately on one prorated invoice; Shopify redirects you to approve the updated subscription first. Adding a channel saves at once, so this confirmation can appear right after you add one.
- The Twilio Auth Token field has a Show button to reveal the stored value so you can verify or copy it. The WhatsApp Business Token is shown shortened; hover over it to see the full value.
WhatsApp Channels
WhatsApp Business uses Meta's Embedded Signup flow. Connecting a WhatsApp number to your Guru is a popup launched from the Connect WhatsApp button at the top of Channels.
Beyond text, WhatsApp customers can send photos, voice notes and PDFs, all handled automatically with nothing to enable. See Sending Media on the Other Channels.
Acknowledge before answering
The WhatsApp and SMS sections each start with an Acknowledge before answering checkbox. When it is on and a question needs a search of your knowledge, the Guru first sends a short message such as “Let me check that for you…”, and the answer follows as usual. A reply from a flow is sent without one. The setting is off by default and applies to every number in that section. The checkbox appears once the section has at least one number.
What you need
A Facebook account that can manage your business on Meta, and a phone number for WhatsApp that can receive a verification code by SMS or voice call. Everything else can be done inside the signup popup: choosing or creating your business portfolio and WhatsApp Business Account (WABA), and adding and verifying the number.
References:
Connect via Embedded Signup
In Channels, click Connect WhatsApp. Meta’s Embedded Signup popup opens on facebook.com and walks you through:
- Facebook login — skipped if you are already signed in in this browser.
- Business portfolio — pick yours, or create one.
- WhatsApp Business Account — pick one, or create one with the public profile (name, category, description) customers see in WhatsApp.
- Phone number — enter the number and verify it with the code Meta sends.
- Permissions and finish — review what InstantAIguru may do on the account and click Finish.
Meta changes these screens from time to time and skips the ones whose answer it already knows, so you may see fewer.
Meta then hands the connection back to our app. A new WhatsApp channel card appears in Channels with these fields:
| Field | Type | Description |
|---|---|---|
| WhatsApp Phone Number | read-only | The WhatsApp phone number from Facebook signup. |
| Channel Name | text | A friendly name for this channel (e.g., "Main Support Line"). |
| WhatsApp Phone Number ID | read-only | Facebook API identifier. |
| WhatsApp Business Account ID (WABA) | read-only | WhatsApp Business Account ID. |
| Business ID | read-only | Facebook Business ID. |
| Business Token | read-only | Access token from the signup, shown shortened; hover over the field to see the full value. |
| WhatsApp Custom Greeting | textarea | A channel-specific welcome message for WhatsApp conversations. |
| WhatsApp Deployment Context | textarea | Additional context telling the Guru it is deployed on WhatsApp (e.g., formatting guidance, brevity preferences). |
| Invite callers to switch to WhatsApp | checkbox | A caller who asks to continue on WhatsApp gets a WhatsApp message from this number. Meta reviews that message first; turning this on submits it. |
| Business name in the invitation | text | The name used in that message (up to 60 characters). |
| Refresh review status | button | Checks Meta’s review of the invitation again. The line above it shows the verdict: Approved by Meta, In review at Meta, or Rejected by Meta with Meta’s reason. |
Meta bills WhatsApp Business Cloud API per message (charged on delivery, not send), with rates varying by recipient country and message category:
| Category | What it covers | Cost |
|---|---|---|
| Marketing | Promotional content, offers, cart reminders | Paid |
| Utility | Order confirmations, delivery updates — triggered by a customer action | Free when sent in response to the customer, otherwise paid |
| Authentication | One-time passwords (OTP) | Paid |
| Service | Replies to customer inquiries | First 1,000 free each month on every business phone number (since October 1, 2026), then paid per message |
Messages sent within 72 hours of a customer clicking a "Click-to-WhatsApp" ad or Page CTA are free regardless of category. See Meta's current pricing for region-specific rates.
Twilio Setup (Required for SMS & Voice)
Both SMS and Voice channels run on your own Twilio number, and one number serves both. You connect your Twilio account once from the console, and your Guru answers calls and texts on that number. Twilio bills your account directly for the number, messages and minutes; your subscription with us covers the AI handling on top.
Step 1: Have a Twilio Account
If you don’t have one yet, sign up at twilio.com/try-twilio and upgrade it by adding a payment method. Twilio lets only upgraded accounts approve connected apps, and texting registration needs one too.
Step 2: Connect Twilio and Choose a Number
- In Channels, click Add Twilio number, then Connect your Twilio account.
- Sign in to Twilio and approve InstantAIguru. Twilio creates a separate subaccount just for your Guru (Subaccount for ConnectApp: InstantAIguru), so nothing else in your account is touched, and returns you to the console.
- Pick a number:
- Numbers ready for your Guru lists the numbers already in that subaccount. Click Use this number.
- Get a new number: enter an area code, click Search, then Choose and Confirm: buy this number. Twilio charges your account for it, about $1.15 a month in the US, plus usage.
- A number already in your main Twilio account can be used too: in the Twilio console open it (Phone Numbers › Active numbers), choose Transfer, move it to the InstantAIguru subaccount, then press Refresh.
- Name the line, choose the Language on calls (English or Spanish here; the line’s own card offers more languages afterwards), and keep Answer phone calls and Answer text messages checked for both. Click Start answering on this number. If your account is subscribed, you approve the change to your subscription, since each line is a channel.
The number’s webhooks are set for you. Calls are answered right away. Texts need the registration in Step 3.
Step 3: Register for Texting (A2P 10DLC)
US carriers deliver business texts only from registered numbers (A2P 10DLC). Once a texting line is added, the same dialog shows Texting registration, and we file it with Twilio for you:
- Fill in your business details: legal name, EIN, business type, industry, website, address and your contact details.
- Carriers’ reviewers must see your texting number on a public page of your site with our “Text us” text right next to it, and texting sections in your terms and privacy policy. Enter the three page addresses, copy the three texts onto those pages, and click Check pages.
- Click Register for texting, then Confirm: file and accept Twilio’s fees. Twilio bills your account about $19.50 once (business registration and campaign review) and $1.50 to $10 a month while texting is on.
- Your business is reviewed first. Come back to Add Twilio number and press Check: once the business is approved, Check files the texting campaign. When the campaign is approved the dialog reads Registered and your Guru replies to texts.
The console files a registered business with an EIN. Without an EIN, register as a Sole Proprietor in the Twilio console yourself (see Sole Proprietor vs Standard Path).
Approval Timing
Real-world experience for most customers: campaign approval typically lands in 2 to 3 days, sometimes faster, occasionally up to a week. Business (brand) approval comes first, usually within 1 to 3 days.
- Voice is live as soon as the line is added. You can answer calls immediately.
- SMS accepts inbound messages, but replies are not delivered until the campaign is approved, so register as early as you can.
Entering Twilio Credentials Instead
Accounts set up before Twilio Connect, or that prefer to manage the number in Twilio themselves, can still enter credentials by hand: click Add Twilio number, then Enter Twilio credentials instead. You then buy the number, point its webhooks at InstantAIguru and register for texting in your Twilio console.
- Buy a number with SMS and Voice in the Twilio Console (Phone Numbers → Manage → Buy a number). Reference: Twilio: How to Buy a Phone Number.
- Open the number’s Configure tab and set its webhooks (both HTTP POST), then save:
Twilio Section Field Value Voice and emergency calling A CALL COMES IN Webhook: https://api.instantaiguru.com/v1/twilioVoiceMessaging A MESSAGE COMES IN Webhook: https://api.instantaiguru.com/v1/twilioSMS - For texting, register in Messaging → Regulatory Compliance: a Customer Profile, a Brand, a Campaign (use case, sample messages, opt-in and opt-out, privacy and terms URLs), then attach the number to the campaign. References: A2P 10DLC Quickstart · Campaign Approval Requirements.
- From the Twilio Console homepage’s Account Info, copy your Account SID and Auth Token. Enter the phone number with its country code (e.g.
+15551234567), the Account SID and the Auth Token, keep SMS and Voice checked, and click Add Channel.
Sole Proprietor vs Standard Path
When you register in the Twilio console yourself, Twilio routes the registration by one question on the Brand form: “Does your company have a business registration number?” (EIN in the US, Business Number in Canada).
| Answer | Path | Eligibility | Brand Approval | Limits |
|---|---|---|---|---|
| Yes, with Tax ID | Standard (or Low-Volume Standard if <6,000 segments/day) | US with EIN, Canada with CBN, or business HQ outside US/CA/EU/UK/AU | 1–3 days (TCR vets the brand) | Multiple numbers per campaign; throughput scales with TCR Trust Score |
| No, no Tax ID | Sole Proprietor | US or Canadian address; taxes filed under SSN/SIN | Minutes (SMS code, answer within 24 hours) | One phone number per campaign. Lower throughput cap. |
SMS Channels
Prerequisite: complete Twilio Setup first. An SMS channel is added with Add Twilio number at the top of Channels, with Answer text messages checked.
| Field | Type | Description |
|---|---|---|
| SMS Phone Number | read-only | The Twilio phone number for SMS. |
| Channel Name | text | A friendly name for this channel. |
| Twilio Account SID | text | Your Twilio Account SID. |
| Twilio Auth Token | password | Your Twilio Auth Token. Use the Show button beneath the field to reveal the stored value so you can verify or copy it. |
| SMS Deployment Context | textarea | Context for SMS deployment (e.g., "Keep responses brief, avoid markdown"). |
| SMS Language | select | Language for this channel: English, Spanish, French, German, Italian, or Portuguese. |
Acknowledge before answering works here exactly as it does for WhatsApp. See Acknowledge before answering.
SMS channels also accept MMS: customers can send photos and audio clips, which the Guru reads and transcribes. Nothing needs enabling. See Sending Media on the Other Channels.
Voice Channels
Prerequisite: complete Twilio Setup first. Voice channels are also added with Add Twilio number, with Answer phone calls checked. Besides Voice Phone Number (read-only), Channel Name, Twilio Account SID, Twilio Auth Token, Voice Custom Greeting and Voice Deployment Context, a Voice card has:
| Field | Type | Description |
|---|---|---|
| Live Agent Phone Number | text | The phone number to transfer callers to when they request a live agent. |
| Intercept Live Agent Message | textarea | A message played before transferring to a live agent (e.g., "Hello, I'm the Virtual Operator. I see you've requested a live agent. Before I transfer you, our Virtual Agent is available right now, and It can instantly guide you through most issues. Would you like to return to our Virtual Agent? To return back to the virtual agent for immediate assistance just say yes If you still prefer to speak with a live agent, just say no, and I will route you to the queue."). |
| Agents Unavailable Message (optional) | textarea | Spoken when a caller asks for a live agent and none is available (outside the Live Agent Service Hours, or no Live Agent Phone Number). The Guru first says the team isn't available and states the service hours, then speaks this message. Write it in this line's language and say what the virtual agent can do instead, e.g. "I can still help you right now: I can take a payment, text you a secure payment link, or answer questions about your balance and account. Just tell me what you need." Leave it blank for the default: "I can still help with many questions. Just tell me what you need." The call continues, and contact details are given only if the caller asks. |
| Detect answering machine on live agent transfers | checkbox | Off by default. When on, each transfer to your live agent line records whether a person or a machine (a queue or recorded message) answered it; the result shows on the transfer in the Chat Dashboard. Detection can add a few seconds of silence before the caller is connected, so test the number with a call after turning it on. |
| Live Agent Service Hours | schedule | A weekly schedule defining when the live agent is available to receive transfers. See details below. Only appears once a Live Agent Phone Number is set. |
| Voice Language | select | The language used by the virtual agent on this channel: English, Spanish, French, German, Italian, or Portuguese. |
| Voice Websocket Vendor | select | The text-to-speech provider: Amazon, Google, or ElevenLabs. |
| Voice Name | text | The specific voice identifier for the selected vendor (e.g., Pedro-Neural for an Amazon Polly voice, or an ElevenLabs voice ID). |
| Voice Speed | select | How fast the voice speaks on this number, from 0.7× (slower) to 1.2× (faster); Normal (1.0×) by default. Lower it if callers find the voice hard to follow. With ElevenLabs it applies to the greeting and every answer; with Amazon and Google it applies to every answer, and the greeting plays at normal speed. Takes effect on the next call. |
| CSAT Survey (optional) | text | Overrides which post-call survey is sent for calls on this phone number. Accepts a survey name or id; leave it blank to use the survey set on the CSAT card (or, if that is also blank, the default survey). Requires CSAT to be enabled. |
| CSAT Invitation (optional, use {{link}}) | textarea | Overrides the survey invitation text for calls on this phone number, sent verbatim — write it in this number's language and include {{link}} where the survey URL should appear. A <br> sends the rest as a separate text. Leave it blank to use the CSAT card's Invitation message for the call language. |
Like the SMS card, the Voice card’s Twilio Auth Token field has a Show button to reveal the stored value. The card also includes the Channel Name, Twilio Account SID, Twilio Auth Token, and Voice Deployment Context fields shared with SMS, plus a Voice Custom Greeting.
Live Agent Service Hours
The Live Agent Service Hours editor lets you define when the live agent is available to receive transferred calls. It appears in the Voice channel card as soon as you enter a Live Agent Phone Number and is hidden when the phone number is cleared.
The schedule also sets what callers are told: when someone asks for an agent outside these hours, the Guru states the hours exactly as configured here (for example, "Our agents are available Monday through Friday 9 AM to 7 PM, and Saturday 9 AM to 3 PM, Pacific time."), followed by the Agents Unavailable Message.
| Control | Description |
|---|---|
| Timezone | The timezone used to interpret the schedule. Defaults to the browser’s detected timezone. All available IANA timezones are listed. |
| Days (Mon–Sun) | Each day has its own row. Once any day has hours, a day with no ranges is closed — no calls are transferred to the live agent on that day. If no day has hours, the live agent is reachable at all times. |
| + add hours | Adds a new time range to that day. Select an open and close time from 30-minute slots spanning 00:00–23:30. |
| × (remove) | Removes a specific time range from the day. |
09:00–12:00 and 13:00–17:00).
Email Channels
Email channels let your end-users email questions to your Guru at a dedicated address. The AI generates a contextual reply with proper RFC threading headers (so it lands in the original email thread in their inbox) and an automatic AI-disclosure footer (required for compliance with California's BOT law and the EU AI Act).
Add an email channel with the Add email button at the top of Channels. Unlike Twilio channels, no external account is needed — the address is provisioned instantly. You may add multiple email channels per Guru (e.g., one for general support, one for sales, one for billing) by giving each its own Department: click Add email again and you are asked for one (lowercase letters, digits and hyphens, e.g. sales), which gives the new channel its own address.
| Field | Type | Description |
|---|---|---|
| Department | text | Optional namespace for multi-channel customers. Leave empty for the default channel. Examples: sales, support, billing. The full slug becomes [department.]your-domain (e.g., sales.acmewidgets.com). |
| Inbound Address | read-only | The dedicated email address for this channel, auto-computed as <slug>@inbox.instantaiguru.com. Updates live as you edit the Department field. End-users either email this address directly, or you set up a forwarder from your real address (e.g., [email protected]) to this address. |
| Channel Name | text | A friendly label for this channel (shown in the card header for your own reference). Example: "Customer Support". |
| Paused | checkbox | While ticked, the Guru answers no email on this channel. Mail that arrives meanwhile is not answered later. Save to apply either way. |
| Reply From Name | text | The display name used in the From: header on outbound replies. Defaults to your domain name (e.g., acmewidgets.com). Customize to something like "Acme Support" for a polished customer-facing identity. |
| From Address | text | Optional branded sender (e.g. [email protected]), with a Verify Domain button and a status line below it. Replies use it only once the domain is verified; see Branded From Address. A new channel pre-fills support@<your domain>. |
| Email Deployment Context | textarea | Optional channel-specific instructions for the AI when handling email. The default text reminds the AI that emails are asynchronous and to use clear paragraphs and explicit URLs (avoiding "click here" phrasing). |
| Forwarding Source | text | The address you forward from (e.g., [email protected]); the forwarding itself is set up in your email provider. Mail sent from this address is never answered, which stops reply loops. Pre-filled with support@<your domain>. |
| AI Disclaimer | text | Optional. Your own wording of the AI notice at the foot of every reply. It must say “AI”. Left empty, replies use “This is an AI-assisted reply from <Reply From Name>.” |
| Signature | textarea | Optional text appended to every reply after the AI disclaimer: a sign-off, support hours, or links to documentation. |
| Opt-out line | checkbox | On by default. Adds “Reply STOP to opt out of automated replies.” to the foot of every reply, with the unsubscribe header some mail apps show as “from a mailing list”. Untick it for plain one-to-one support replies. A customer who replies STOP is still honoured either way. |
| BCC Support Team | text | Optional. One or more addresses (comma-separated) that receive a silent blind copy of every reply the Guru sends on this channel — so your human team keeps an eye on the conversation. Hidden from the customer (true BCC, never shown in the message headers). Leave blank to disable. |
| Stop when a person replies | checkbox | Once someone on your team answers in a thread, the Guru stays out of that thread for good. See below. |
| Log emails the Guru does not answer | checkbox | Off by default. When on, every email this channel receives and does not answer appears in the Chat Dashboard with its sender, subject and the reason: newsletters and auto-replies, your do-not-reply list, a thread your team took over, the channel paused, a reply the Guru could not produce, or mail from the Guru's own addresses (loop protection). The email itself is not stored. |
| Never Reply To | textarea | Optional. Senders the Guru ignores on this channel: mail from them gets no reply. Each entry is one address ([email protected]) or a whole domain (*@yourdomain.com). Separate entries with commas, semicolons or new lines. Leave blank to answer every sender. |
STOP/unsubscribe acknowledgments. It is not affected by the suppression list (it's your own internal team, not outreach). It may list your own branded From address: a copy that loops back through your forwarder is recognised and never answered. The customer is never blind-copied a second time. On a busy channel this means one internal copy per reply, so point it at a shared/distribution mailbox rather than a single person if volume is high.*@yourdomain.com means the Guru ignores that reply instead of answering it. Matching reads only the message's sender address, so customer mail that reaches you through a forwarder is still answered. A domain entry matches that domain exactly: *@yourdomain.com does not cover mail.yourdomain.com, so list subdomains separately. A bare yourdomain.com or @yourdomain.com is read as the whole domain. Other wildcard forms (such as sales-*@yourdomain.com) are not supported and are ignored.
Setup Pattern
Most customers don't change their public-facing email address. The recommended pattern is to forward mail from your existing support address to the channel's inbound address:
- End-users continue to email
[email protected]as usual. - You configure your email provider (Google Workspace, Microsoft 365, etc.) to forward all
support@mail to[email protected](the Inbound Address shown on the card). - The AI receives the forwarded copy and replies on your behalf, with the original sender as the recipient.
inbox.instantaiguru.com address as well, verify a Branded From Address.
Built-In Features
| Feature | Behavior |
|---|---|
| RFC threading | Replies include In-Reply-To and References headers, so they thread under the original conversation in Gmail, Outlook, Apple Mail, etc. |
| AI disclosure footer | Every reply ends with a short disclosure for compliance: your AI Disclaimer (by default “This is an AI-assisted reply from …”), your live-support contact if set, and, unless you untick Opt-out line, “Reply STOP to opt out of automated replies.” Your Signature follows it. The wording is yours to change, but the AI disclosure cannot be removed. |
| STOP keyword detection | If a message’s first line is STOP, UNSUBSCRIBE, REMOVE or a similar opt-out (or the message asks not to be emailed), the Guru does not answer it. It sends a brief acknowledgment and records the opt-out. The Guru only ever replies to mail the person sends, so writing again resumes replies. |
| List-Unsubscribe header | Unless you untick Opt-out line, every reply includes the RFC 2369 List-Unsubscribe header pointing to mailto:[email protected]. Mail providers may show this as an Unsubscribe link next to the sender name. |
| Reply to sender only | The reply goes only to the person who wrote. Addresses in the original’s To and Cc are not copied, which prevents loops through forwarders and mailing lists. To keep your team informed, use BCC Support Team. |
| Attachment handling | Attachments on inbound mail are read where possible and always accounted for, so the Guru never tells a sender they attached nothing when they did. See Sending Media on the Other Channels. |
Branded From Address (optional)
Until a domain is verified, replies are sent From: the channel's inbound address (<slug>@inbox.instantaiguru.com). To send them from your own domain (e.g., [email protected]), use the channel's From Address field: a new channel pre-fills support@<your domain>. Change it if needed and click Verify Domain. The status line below the field shows ⏳ Not yet verified, ✓ Verified or ✗ Verification failed, and updates as you type.
If verification failed (Amazon SES stops checking about 72 hours after it starts), click Verify Domain again to restart it. DNS records you already added keep counting.
The verify modal shows four DNS records you must add to your domain's DNS host (Cloudflare, Route 53, GoDaddy, etc.):
- Three CNAME records — DKIM signing keys. These prove that mail signed with the matching private key really came from us, on your behalf. Each is a separate, additive record. Cloudflare users: set proxy status to DNS only (gray cloud) on all three.
- One TXT record — the SPF record (see the warning below).
SPF allows exactly one TXT record per hostname (RFC 7208). If a receiver finds two TXT records on the same name that both begin with v=spf1, SPF authentication fails with a PermError and your mail is rejected or sent to spam — for every sender, not just the new one. Different subdomains can each have their own SPF; it's only multiple records on the same name that break things.
The verify dialog (Verify Sending Domain) asks you to add an SPF record on the domain of your From address — normally your apex domain (e.g., yourdomain.com). If you already have an apex SPF (likely — Google Workspace, Microsoft 365, MXroute, Mailchimp, etc. all add one), do not add the SES record as a second TXT. Instead, edit the existing apex SPF and append include:amazonses.com before the closing -all or ~all.
Example merge:
| Existing apex SPF | After merge |
|---|---|
v=spf1 include:_spf.google.com -all | v=spf1 include:_spf.google.com include:amazonses.com -all |
v=spf1 include:mxroute.com -all | v=spf1 include:mxroute.com include:amazonses.com -all |
| (no existing record on apex) | v=spf1 include:amazonses.com -all |
To check what you have, run dig +short TXT yourdomain.com and look for the line starting with v=spf1. Whatever's there is your existing apex record — merge into it; never create a second.
Note on -all vs ~all: Keep whichever your existing record uses. -all is a hard fail (reject non-listed senders), ~all is a soft fail (mark as suspicious but still deliver). What matters is that the merged result stays a single SPF record per hostname.
SPF and DKIM are independent layers of authentication, and they don't share the "one record only" constraint. SPF is a single TXT record on the apex domain authorizing approved senders. DKIM uses one CNAME per signing key, so multiple email services on the same domain coexist cleanly — SES adds three CNAMEs without affecting any DKIM records your other services have already created.
After the records propagate (typically 5–30 minutes), click Check Status in the verify modal. Once verification succeeds, save the channel configuration to activate sending from the branded address. If you skip the verification or it fails, the channel falls back to the default inbox.instantaiguru.com From address — you do not lose service.
Knowledge Files
Documents your Guru learns from in addition to your website: price lists, manuals, policies, product catalogs, or anything not on your public site.
| Action | Description |
|---|---|
| Never use uploaded files as references | The Guru still answers from your uploaded files but never links to them in its references. |
| Only if a folder or file starts with “!” | Offered under the option above, and narrows it to marked files. A file counts as marked when its own name or any folder on its path starts with “!” (for example !Internal/escalation-matrix.pdf). Unmarked files are linked as usual. |
| Choose files / Choose a folder | Pick one or more files, or a whole folder. You can also drag files onto the box. |
| The ready list | Lists each chosen file with its size, and the total. Click × to drop a file before uploading. |
| Upload N files | Uploads the listed files to secure cloud storage, with a progress bar. |
| Refresh | Reloads Your files from the server. |
| Delete selected | Removes the checked files after you confirm. |
The Your files table lists every uploaded file with its Name, Size (KB) and Last modified. Tick files (or the header box to select them all) to delete them.
Users
People who can sign in to this console, and what each may do. Only users with the Admin permission can open this section.
Managing Users
The cards edit your user list directly. Click a card to select it, click a field or the permission grid to edit, and type — every keystroke goes straight into the configuration. There is no per-card Save or Cancel: Save in the top bar commits the section, and checks every user you touched just before it writes.
| Action | What it does |
|---|---|
| Add user | Adds a new card and opens it for editing. Enter the person’s name, email and permissions — you do not set a password (see Invitations). |
| Remove selected | Deletes the selected user after a confirmation. This is also how you discard a card you added by mistake. You cannot delete your own account. |
| Edit a user | Click the card to select it, then click a field or the permission grid. |
| Discard your edits | Leave the console without saving. You are warned first, and can review the changes before deciding. |
User Card Fields
| Field | Type | Description |
|---|---|---|
| First Name | text | Required. 2 to 100 characters. |
| Last Name | text | Optional. Up to 100 characters. |
| Required, a valid address, and unique across all users — this is the login identifier. | ||
| Password | auto-generated | For a new user this is filled with a random value and shown masked and greyed-out. You never set it and it is not yours to hand out: the new user chooses their own from the invitation. Existing users show masked dots; to let someone set a new password, resend the invitation or have them use Forgot password on the sign-in page. |
These rules are checked when you click Save. Names and addresses are trimmed of stray spaces, and only the users you actually touched are checked — an older record that was already incomplete will not block an unrelated change. Duplicate addresses are the exception: uniqueness is checked across the whole list every time. If a check fails, the save stops and names the user and the field.
Invitations
You never hand out a password. When you Save a new user, they are emailed an invitation automatically: a secure link to set their own password. The email names your account’s domain, the link works once and is valid for 72 hours, and opening it shows the Set Password dialog straight away. A toast confirms “Invitation emailed to {email}”, or says the invitation could not be sent.
Each card shows where its invitation stands:
| Status | Meaning |
|---|---|
| Not saved yet | The user is not on the server yet. The invitation goes out when you Save. |
| Invited + Resend invite | Invited, and has not set a password yet. Resend invite mails a fresh link (after you confirm) — an invitation that landed in a spam folder is a normal thing to send again. |
| Accepted | The person has set their password. |
| Send invite | A user added before invitations were recorded. Click it to send one. |
Permission Checkboxes
Each permission opens a section or a feature:
| Permission | Grants Access To |
|---|---|
| Admin | Full administrative access — every section and user management. Ticking it also ticks every permission below except Config. |
| Read Only | The whole console stays readable and every write control is switched off — forms, buttons, Upload Flows / Upload Tools / Design Flows, and Save. The top bar shows a Read-only badge rather than leaving a page of dead controls to be read as a bug. Two exceptions: Re-index still works (it writes no configuration), and the user can still change their own password, so an invited account can be activated. The server enforces this independently of the page. |
| Instructions | The Instructions section (who your Guru is, and the advanced notes). |
| Settings | The Settings section (conversations, session expiry, answers and references, search, and the Twilio account). |
| Knowledge Files | The Knowledge Files section (upload and delete documents). |
| Reindex | The Re-index button in the top bar. |
| Chat Logs | The Chat Dashboard link in the menu. The server enforces it: a user without Chat Logs cannot read conversations at all. |
| Channels | The Channels section (WhatsApp, SMS, Voice, Email). |
| Integrations | The Integrations section (Shopify, ShipStation, CSAT and more). |
| Subscription | The Subscription section (plan, usage and billing). |
| Appearance | The Appearance section — the widget’s words, colors, icon, effect and position. |
| Connect | The Live Support link in the menu (opens the live-agent dashboard). Without it the button is greyed-out with a “You do not have permission for this” tooltip. The link appears only when Live Support is enabled. See Live Support. |
| CSAT | The CSAT Dashboard link in the menu (opens post-call survey results). Without it the button is greyed-out with a “You do not have permission for this” tooltip. The link appears only when CSAT is enabled. See CSAT. |
| Outbound | The Chat Dashboard’s outbound conversations, its Direction selector and its Campaigns view (see Outbound calls and campaigns). The server enforces it: a user without Outbound never receives outbound-call conversations. Admin grants it automatically. |
| Config | Unlocks the Upload Flows, Upload Tools, and Design Flows top-bar buttons (interactive flow/tool editing) and the Model set panel in Settings. (This checkbox is drawn only for an InstantAIguru platform administrator, on the card of a user who already holds Admin — a tenant admin will not see it.) |
Integrations
Connect your Guru to third-party platforms to extend its capabilities.
JSFE Workflows
JSFE is the workflow engine that runs the flows you build in the Flow Designer. The card's toggle controls whether JSFE is billed as a channel on your subscription:
- Base integration flows are free. The bundled system and Shopify integration flows run without enabling this card — you are never billed for them.
- Custom flows auto-enable it. As soon as your Guru has one or more custom flows defined, the card locks on (custom flows require the engine) and the status line shows how many flows are driving it.
- No custom flows? The toggle is manual — enable it only if you want the engine billed and available ahead of building flows.
Like any channel change, the toggle is a draft: billing reconciles when you Save, through the same confirmation prompt described under Channels.
API call log (optional)
If your flows call your own API and that API keeps a request log, the card can connect it to the Chat Dashboard. With the URL and token both saved, each conversation in the dashboard shows the API calls it made, in an API Calls column.
| Field | Type | Description |
|---|---|---|
| Logs URL | text | The log API’s base address, over https. |
| Logs Token | password | The bearer token that API issued. A URL saved without a token counts as not configured. |
| Logs Timezone | text | The timezone the log server writes its timestamps in, as an IANA name such as America/Los_Angeles. Leave it blank, or enter a name that is not a valid IANA zone, and the platform default (America/Los_Angeles) is used. If it names the wrong zone, every call is placed hours away from its conversation and none of them attach. |
Action safety
Some flow steps act on a customer’s account: they charge a card, cancel a service, change contact details. These settings decide how the engine guards those actions against running twice when a reply is lost or a caller repeats themselves. Only a platform administrator sees and changes them; for everyone else the card keeps them as they are.
| Field | Type | Description |
|---|---|---|
| Action persistence | choice | Session only (default): each action is guarded within the conversation alone, with no journal. Durable: actions rely on the journal below. Choosing Session only turns the journal off. A Guru that had the journal on before Session only became the default stays Durable. |
| Durable action journal | checkbox | Records each action outside the conversation, so a reply lost in the middle of a charge does not lead to the charge running again. With Durable selected and the journal off, actions in flows that require the journal are refused; other flows are unaffected. Off until ticked. Unavailable with Session only. |
Shopify Integration
Add the Instant AI Guru app to your store from the Shopify App Store — open the listing at apps.shopify.com/instant-ai-guru and click Install, or search Instant AI Guru under Apps in your Shopify admin. Installing from the App Store connects your store automatically (no API credentials required) and is billed through Shopify.
Activating the Chat Widget on Your Storefront
If you installed the Instant AI Guru app from the Shopify App Store, the storefront chat widget is delivered as a theme app extension. After installation, you must enable the extension in your active theme before the widget appears on your storefront.
The easiest way: the Shopify card in the admin console shows an “Activate your chat widget on your storefront” banner while the widget is pending — its Activate Widget button opens your theme editor with the widget preselected, so all that's left is toggling it on and clicking Save. Or do it manually:
- In your Shopify admin, go to Online Store → Themes.
- Click Customize on your active (published) theme.
- In the theme editor's left sidebar, click the App embeds icon.
- Locate InstantAIGuru Chat Widget in the list and toggle it on.
- Click Save in the top-right corner.
The chat widget will now appear on every storefront page. To disable the widget, repeat these steps and toggle the embed off — no code changes required.
The Shopify card also holds an optional MCP Endpoint (empty uses https://<your store>/api/mcp) and the Admin API Version (default 2025-01); leave both as they are unless we ask you to change them. A collapsed Legacy Token section is only for custom apps created before January 2026.
ShipStation — Live Carrier Tracking
Your store already tells the Guru where an order stands. ShipStation adds the carrier’s own scan history on top of that — where the parcel physically is, when it last moved, and any delivery exception — so a customer asking “where is my order?” gets the same detail an agent would read off the carrier site.
| Field | Type | Description |
|---|---|---|
| On/off switch | toggle | The switch at the top right of the card. Turns the integration on and reveals the fields below. |
| Base URL | text | Optional. Leave it blank and the standard ShipStation V2 endpoint is used. Fill it in only if ShipStation has given you a different one. |
| API Key | password | Your ShipStation V2 API key, from ShipStation → Settings → Account → API Settings. Has a Show button. Required whenever the integration is enabled — saving without one is refused, because the card would otherwise look configured while every lookup failed. |
CSAT — Post-call Surveys
Automatically text or email a short customer-satisfaction survey link to the customer after a call. By default the survey runs on our managed CSAT — nothing to deploy: create an admin login and choose how the link is delivered. Prefer to run your own? Tick I self-host CSAT and point the card at your own deployment instead.
Managed (default). Leave I self-host CSAT unticked and click Create CSAT Admin Login: we provision a private CSAT space for this Guru and return a one-time invite link. Open it, set a username + password, and you are the admin. Once CSAT is switched on and saved, a CSAT Dashboard link appears in the lower part of the left menu to open your results. It is greyed out while the service is offline, and for users without the CSAT permission or with Read Only.
Self-host. Tick I self-host CSAT to reveal the CSAT Site URL and CSAT Secret fields (below) and connect the card to your own deployment.
{{link}} placeholder for the survey URL, and a <br> to send the rest as a separate text.curl -fsSL https://raw.githubusercontent.com/ronpinkas/csat/main/install.sh | sudo sh
Full instructions and source: github.com/ronpinkas/csat.
Toggle CSAT — Post-call Survey on to reveal the configuration panel. The survey choice and invitation messages sit at the top with the general settings; the Twilio plumbing lives in a collapsible SMS delivery section that stays expanded until a From number is saved and collapses (click to expand) once delivery is configured:
| Field | Type | Description |
|---|---|---|
| CSAT Site URL (self-host) | text | Your CSAT deployment's public URL (e.g. https://csat.yourdomain.com). The survey link is built from this. Hidden in managed mode. |
| CSAT Secret (self-host) | password | The token secret shown on the CSAT Settings page. It signs each survey link so your CSAT app accepts it. Hidden in managed mode. |
| CSAT Survey | text | Optional. The survey (name or id) sent for all channels. Leave blank to use the default survey. A Voice card's per-number CSAT Survey overrides this for calls on that number. |
| Invitation message, English | textarea | The invitation text sent with the survey link. Use {{link}} where the survey URL should appear, and <br> to split the invitation into separate texts (see below). An invitation without {{link}} is not used; the built-in invitation is sent instead. |
| Invitation message, Spanish | textarea | The invitation used when the call was handled in Spanish. Leave blank to fall back to the English message. Use {{link}} for the survey URL and <br> to split it into separate texts. |
| Use an existing SMS number | select | Pick an A2P-approved number you already use on an SMS channel to auto-copy its credentials, or choose New dedicated number to enter one manually. |
| From number / Twilio Account SID / Twilio Auth Token | text | The Twilio number and credentials used to send the survey text. When you pick an existing number these are auto-filled and read-only (the values are copied from that SMS channel); choose New dedicated number to re-enable the fields and enter them manually. The Auth Token has a Show button to reveal the stored value. |
| Send CSAT Email | checkbox | Also (or instead) deliver the survey by email. |
| Email subject / Email body | text / textarea | The email subject and body. Use {{link}} in the body for the survey URL. |
<br> in an invitation message and everything after it is sent as a
separate text, which is how you pair the survey link with a second message the
customer can act on independently — a WhatsApp chat invite, say, or your support number.
<br/>, <br /> and <BR> all work.
This is not for length: a single text already carries up to 1,600 characters,
which the handset reassembles on its own, so a long invitation needs no marker. At most
5 messages are sent; anything beyond that is folded into the last one rather than
dropped. The same marker works in a Voice card's per-number
CSAT Invitation.
In self-host mode the portal requires the CSAT URL + Secret and at least one delivery method — an SMS number (with its credentials) or the email option — before it will save. In managed mode delivery is handled for you; configure SMS/email here only if you want to customise it.
{{link}}, the default survey and a
built-in invitation (English or Spanish, matching the call) are used.
Live Support — Live Agent Calls
Let visitors talk to a live human agent over audio, video, and chat straight from your site or chatbot. Like CSAT, it runs on our managed Live Support by default, or on your own deployment if you self-host. Toggle Live Support — Live Agent Calls on to configure it.
Managed (default) — two ways in for your team:
| Control | What it does |
|---|---|
| Live Support button (SSO) | Appears in the lower part of the left menu once Live Support is switched on and saved. It is greyed out while the service is offline, and for users without the Connect permission or with Read Only. Signs the current, already-authenticated user straight into the agent dashboard — no second login. |
| Create Live Support Admin Login | For a standalone, password-based admin (manage agents without going through this portal). Returns a one-time invite link; open it and set a username + password. |
Self-host — tick I self-host Live Support to reveal the connection fields:
| Field | Type | Description |
|---|---|---|
| Connect Site URL (self-host) | text | Your Live Support deployment's public URL (e.g. https://connect.yourdomain.com). |
| Connect Secret (self-host) | password | The CONNECT_SECRET from your deployment's .env / startup log. It signs the sign-in links so your server accepts them. |
Outbound Call Agent
Your Guru calls a list of contacts from your own voice lines, at the pace and hours you set, and retries anyone who did not answer. When a person picks up, the Guru speaks your greeting and then carries the conversation like any inbound call, with your flows (payments, look-ups, live agent hand-off) available as usual.
Outbound lines and billing
Switch the card on, tick the voice lines the agent may call from, and Save. That subscription is billed at Save like any other channel: one channel for the Outbound Call Agent, plus one channel for each ticked line (on top of that line’s own voice channel). It appears under Billed Channels as Outbound Call Agent and Outbound lines.
- At least one ticked line is required. With the agent on and no line ticked, Save is refused before anything is billed, and the card says so.
- Campaigns call only from ticked lines. A campaign is saved with the lines it calls from, so Save refuses a campaign whose line is not ticked. A line used by a saved campaign cannot be unticked, or removed from Channels, until that campaign is moved to another line or deleted; Save refuses it. (If a line ever does lose its subscription, the campaign is paused before its next call.)
- Switching the agent off pauses every running campaign. Switching it back on does not restart them; press Start on each one you want running.
Creating a campaign
Click New campaign and fill in sections 1 to 4, then Save the page: a campaign’s settings are saved with Save, like every other setting. Section 5 loads its contact list with Load list, which acts right away and does not need a Save. Nothing is called until you press Start, which runs the saved campaign and so waits while the page has unsaved changes. The card lists your campaigns with their status (no list yet until a list is loaded), languages and their Reached, Gave up and Total counts; Refresh updates them. Click a campaign’s name to edit it, or Delete campaign to remove it when you Save (a running campaign must be paused or stopped first). A campaign added with New campaign and left empty (no name, call context, language or list) is dropped when you close it. In an empty name, greeting or context field, press → to start from the example shown in it (see Admin Console shortcuts).
Cust_id, customername, CELL and language columns. The greeting places the disclosure after the company name with {{disclaimer}}, and the preview, merged from the first row, shows the result.| Section | What it sets |
|---|---|
| 1. Lines | Pick the line to call from in each language, or leave it on Don’t call in …. A line speaks only the language its own phone settings use, so a language offers only ticked lines that speak it. One line per language. With two languages, choose which one a contact with no language is called in. |
| 2. Outbound greeting | One greeting and one AI and call-recording disclosure for each language that has a line, spoken when a person answers. Each language starts with a ready-made disclosure (“This call is made by an AI assistant and is being recorded.” and its Spanish equivalent), which you can reword. The disclosure is required and must contain the words AI and recorded in English, or IA (or “inteligencia artificial”) and grabada in Spanish; Save refuses it otherwise. Put {{disclaimer}} in the greeting where the disclosure should be spoken, for example after announcing your company name; without it, the disclosure is spoken first. The preview below the fields shows the result for the first row of your list. Use {{Column}} in the greeting to speak a value from the contact’s row, e.g. {{customername}} or {{balance}}; an empty value is left out rather than read aloud. Name the action in the greeting (“to get your payment link, say payment link”): a yes/no question cannot start a flow. |
| 3. Outbound call context and instructions | Why you are calling. The Guru receives this on every turn of the call, so state that you placed the call and what it is for. Required, like the campaign’s name and each language’s greeting; Save refuses a campaign without them. |
| 4. Pace | Seconds between calls sets the pace (5 to 3,600; a new campaign starts at 30), Max attempts per contact the retries (1 to 10; starts at 3). Tick Only during daily hours to call only between From and To in the given time zone (09:00 to 19:00 in your browser’s time zone until you change them; From must be before To). |
| 5. Contact list | Choose a CSV (up to 10,000 rows), check its columns, set Start and End (they belong to this list, and start as now and a week from now each time you open the campaign), and click Load list. A new list replaces any contacts still waiting from the previous one; it cannot be loaded while the campaign is running. The Phone, Name and, for more than one language, Language columns are matched by name; change any that are wrong. US and Canada numbers are accepted, with or without the leading 1. Language values such as en, English, E, es, Spanish or S are understood; a blank uses the campaign’s default language. Rows with an unusable phone or an unknown language are skipped and counted; a contact whose language the saved campaign has no line for is marked gave up (no line for its language) and not called. |
| Cargo as | Optional, per column. Give a column a cargo name and every call starts with that contact’s value in its cargo, where your flows read it. An account-number column (e.g. Cust_id) is preset as accountNumber automatically, so a payment flow that reads it can confirm the account (“account ending with 5, 2, 1, 4?”) instead of asking for it. Names the platform uses itself, such as callerId, are refused. |
Running a campaign and daily lists
| Button | Description |
|---|---|
| Start | Begins calling the saved campaign (within the list’s start and end and the daily hours). Waits while the page has unsaved changes; refused when nothing is left to call or the end time has passed, so load a new list in either case. A change you Save while it runs applies from the next call. |
| Pause | Stops placing new calls; a call already in progress finishes. Start resumes where it left off. |
| Stop | Stops the campaign. It is not final: you can load a new list and start it again. |
| Load list | In the campaign’s section 5, whenever it is not running. The new list replaces whoever was still waiting from the previous one (you are asked first); contacts already called keep their results. Then press Start. |
Daily campaigns: keep one campaign with daily hours. Each morning, Stop it (if it is still running), open it, choose the day’s file, check Start and End, load it with Load list, and Start. Anyone from yesterday you still want to reach simply goes back into today’s file.
Subscription
Your plan, the channels you are billed for, and what your Guru knows.
Your plan and your Guru’s knowledge
| Field | Type | Description |
|---|---|---|
| Indexed pages | read-only | The number of indexed units in your knowledge base — the searchable pieces the Guru retrieves from. This is the only figure that drives your plan tier. It is not a count of pages on your site, and it is not meant to match the coverage counters below; see the note under that table. |
| Index size | read-only | The total size of your search index (e.g., "2.4 MB"). |
| Last indexed | read-only | The date and time your knowledge base was last re-indexed. Shown in red when the index is stale (more than 30 days old) — a reminder to Re-index so the Guru reflects current content. |
| Plan | read-only | Your current tier: Starter, Mini, Pro or Scale, with “(Annual)” on annual billing; “Custom (…)” when a custom price is set. |
| Status | read-only | Current subscription status (e.g., Active, Trial, Past Due, Canceling, Canceled, Payment Pending, Payment Failed, Unpaid, Paused, No Active Subscription; on AWS Marketplace also Pending AWS Confirmation and Ended). |
| Dates | read-only | The labels follow your status: Free Trial Ends / Trial Ends while on trial, Next Renewal when active, Cancels On when cancelling, Access Ends after cancellation, Grace Period Ends and Next Retry when a payment is past due. On AWS Marketplace, AWS Activation reads Awaiting AWS Marketplace until AWS confirms the contract, and Contract Ended gives the end date once it has ended. |
Coverage Counters
Under Your Guru’s knowledge, a second group records what the last build actually reached. These appear only once a build has recorded them, so a Guru indexed before this was added shows nothing here rather than a misleading zero. Re-index to populate them.
| Field | Type | Description |
|---|---|---|
| Crawled Pages | read-only | Site URLs fetched by the last web crawl. |
| Knowledge Files | read-only | How many Knowledge Files were included in the last build. |
| Knowledge Pages | read-only | Document pages produced by those files — a PDF contributes one per page, so a single 40-page PDF counts as 40 here. |
| Total Pages | read-only | Crawled Pages plus Knowledge Pages — the full corpus behind your Guru. |
Billed Channels
Lists every channel you are billed for, each at your plan’s per-channel rate: your website (Web), each WhatsApp, SMS and Voice number, each Email slug, JSFE when enabled, and the Outbound Call Agent with its outbound lines. Phone-based channels are listed by number; Email channels by their slug (e.g. sales.acmewidgets.com). While you have no live subscription it is titled Channels (billed when you subscribe) and shows your configured channels — what you would be billed for when you subscribe.
Subscription Actions
| Button | Description |
|---|---|
| Subscribe & double your FREE Trial | Shown when you have no active subscription. Opens the Stripe checkout form directly within the page. Choose Monthly or Annual with the switch above it first. With a custom price it reads Subscribe and there is no Monthly/Annual switch. |
| Manage subscription | Shown when you have a subscription to manage (active, on trial, past due, paused, or cancelling). Opens the Stripe Customer Portal where you can update payment methods, view invoices, or cancel. |
| Switch to annual & save 25% | Shown when you are on a monthly plan. After you confirm, switches your plan to its annual version; you are billed the prorated difference immediately and save 25% from then on. |
AWS Marketplace billing
If you bought instantAIguru through AWS Marketplace, AWS bills you and holds the contract. Subscription shows what AWS reports and replaces the Stripe buttons with an AWS panel. There is no checkout, plan picker or cancel button here; those are all in AWS Marketplace.
Linking your purchase to a Guru
After you buy in AWS Marketplace, AWS sends you to our Activate your AWS purchase page. Sign in to an existing Guru, or create a new one. Linking does not buy a second AWS contract.
Once you are signed in, the admin asks you to confirm which Guru the purchase belongs to:
- Link Purchase moves this Guru’s billing to AWS Marketplace. This cannot be undone from the admin.
- Not This Account leaves it unlinked. Sign in to the correct Guru in the same browser tab and you will be asked again.
Complete the link in the same tab within 24 hours. After that, start again from the setup link in AWS Marketplace. If AWS has not confirmed the purchase yet, the link still succeeds and the status reads Pending AWS Confirmation until it does, usually within a few minutes.
The AWS panel
| Item | Description |
|---|---|
| Current plan | The plan tier on your AWS contract, and (free trial) during an AWS free trial. |
| Channels on your contract | How many channels the contract covers, next to how many are configured here, and the date the contract ends. |
| Manage in AWS Marketplace | Opens your subscriptions in the AWS Marketplace console. Upgrades, extra channels, renewal and cancellation are all handled there. |
| Refresh from AWS | Asks the platform to re-read the contract from AWS now, for example right after an upgrade. Only the account owner or an admin gets a fresh read; anyone else is shown the last status AWS reported. |
If AWS reports a problem with the contract (it has ended, has not started, combines more than one plan tier, and so on), a red box in the panel says what is wrong and what to do.
Channels on an AWS contract
- Adding a channel needs room on the contract. If Save would take you past your contracted number of channels, it tells you to upgrade in AWS Marketplace first and saves your other changes without the new channel; add it again once the upgrade appears here. Only a net increase needs room: swapping one channel for another, or removing one, does not. Channels cannot be added while the contract is not active (Save drops the addition the same way).
- Removing a channel frees a slot but does not lower your AWS charge. Save says so and asks you to Continue. A smaller contract takes effect at renewal, in AWS Marketplace.
- A smaller contract at renewal. If you renew for fewer channels than you have configured, the panel shows Action required: choose which channels to remove, then Save. Your Guru stays active in the meantime, and the panel shows the deadline. If you have not chosen by then, we keep the web channel and your other channels in their saved order up to the new limit; JSFE custom flows keep a slot only if one is left.
Settings
Fine-tune how your Guru finds information and talks to people. Settings is in the lower part of the menu.
| Field | Type | Description |
|---|---|---|
| Generic visitor name | text | How end-users are referred to when their name is not known (e.g., Site Visitor, Customer, Guest). Used in greetings and conversation context. |
Session expiry (SMS and WhatsApp)
A phone number is an assumption, not an identity — US carriers reassign roughly 100,000 numbers a day. These three fields decide how long a customer who passed a one-time code stays verified, and how long a conversation survives at all before it is discarded. Leave any of them blank to use the platform default shown in the field.
| Field | Type | Description |
|---|---|---|
| Re-verify after idle (minutes) | number | How long a verified customer may go quiet before the next message asks them to verify again. Default: 480 (8 hours). |
| Re-verify after (hours), however active | number | A ceiling that ignores activity — even a continuously busy conversation re-verifies once this many hours have passed since the customer first verified. Default: 12. |
| Discard the conversation after idle (hours) | number | How long an idle conversation is kept before it is thrown away entirely — history, context and all. The next message starts a fresh conversation. Default: 24. |
Answers and references
| Field | Type | Description |
|---|---|---|
| Enforce reference URLs | checkbox | When checked, the AI is required to include source URLs in its responses. This increases transparency but may make answers more verbose. |
| Forbid reference URLs | checkbox | When checked, the AI is prevented from including any source URLs in responses. Useful when you want cleaner, more conversational answers. |
| URLs allowed in answers even when not in the reference | textarea | A comma-separated list of URLs the AI may reference even when they are not found in the retrieved documents. Useful for linking to your pricing page, contact form, or other important pages. |
Search (under Answers and references)
| Field | Type | Description |
|---|---|---|
| Matching documents to evaluate | number (1–10) | How many documents are retrieved from your knowledge base for each query. Recommended: 3–5. Higher values may improve accuracy for complex questions but increase response time. This field is required: if it is empty or outside 1–10, Save is blocked and the form jumps to this field for correction. |
| Hybrid keyword search type | select | Only relevant when keyword search is enabled. should = keyword matches boost relevance (recommended). must = results must contain the keywords (more restrictive). |
| Enable keyword search | checkbox | Enables hybrid search that combines semantic (meaning-based) search with traditional keyword matching. Can improve results when users search for specific terms, product names, or codes. |
Frequent questions (chat starters) are set in Appearance → Words.
Twilio account
The default Twilio number and credentials for platform features that send SMS outside a specific channel — most importantly Flow (JSFE) SMS steps, which require the Twilio Number to be set. Channel cards keep their own per-channel credentials; this card is the account-level fallback. The panel is open while it still needs a number and closed once one is saved (click its title to open it).
| Field | Type | Description |
|---|---|---|
| Use an existing SMS number | select | Pick a number you already use on an SMS channel to auto-copy its credentials (fields become read-only), or choose New dedicated number to enter one manually. |
| Twilio number | text | The sending number used by Flow SMS steps and other non-channel texting. Required for flows that send SMS. |
| Account SID / Auth token | text / password | Your own Twilio credentials for that number. The Auth Token has a Show button. |
Model set
The Model Set editor lets administrators override which AI model is used for each processing role. By default, all roles use Default (system) — centrally managed defaults that are optimized and updated automatically for best results. The panel is closed by default — click its title to open it. Its 18 roles are listed in six numbered steps, in the order a message meets them.
| Role | Type | Description |
|---|---|---|
| 1. Before the engine — Every message, in this order. | ||
| Auto-reply gate | select | SMS and WhatsApp only: decides whether an incoming message was sent by software rather than a person, within 1.5 seconds. |
| Preprocess | select | Recognises a greeting, thanks or goodbye, a request to wait, or an unclear message, within 1 second. |
| 2. Intent detection — Which flow the message starts, then the values the flow needs. | ||
| Intent Detection | select | Picks the flow and its fixed-choice values. It starts together with Intent Hedge; the first complete pick wins and cancels the other. |
| Intent Hedge | select | The second picker: the flow and its fixed-choice values in one call. |
| Intent Parameters | select | Reads the chosen flow’s free-text values (an email, an account number, an amount) after the pick. It starts together with its alternate; the first good answer wins. |
| Intent Parameters — alternate | select | The same extraction on a second host, at the same moment. |
| AI Callback | select | The flows’ other AI calls, and Intent Detection’s fallback if it has not picked within 1 second. |
| 3. Qualifier — Does the question need documents? Three legs run at once. | ||
| Qualifier — classify | select | Decides whether the question needs documents. |
| Qualifier — classify alternate | select | A second opinion for the classify leg. It starts if a decision model has given no verdict within 1 second, or races a text model. Default picks a model from a different vendor. |
| Qualifier — answer | select | Writes the proposed answer when no documents are needed. |
| Qualifier — rephrase | select | Writes the query used to search your knowledge base. Default uses the answer model. |
| Qualifier — text-leg alternate | select | A second opinion for the answer and rephrase legs. It starts if a leg has not answered within 2 seconds, and each leg stops waiting at 3.5 seconds. |
| 4. Ranker — Which retrieved documents the answer uses. | ||
| Ranker | select | Judges each retrieved document. |
| Ranker — alternate | select | Starts if a decision-model Ranker has given no verdict within 1 second. Default picks a model from a different vendor. |
| 5. Guru — The answer. | ||
| Guru | select | Writes the answer from the documents. |
| Guru — alternate | select | A second opinion for the Guru. It starts if the Guru has not begun answering within 3 seconds, and whichever answers first is shown. |
| 6. Recovery — Only when a step above fails. | ||
| JSON Intervention | select | Repairs a reply that should be JSON and is not. |
| Guru Intervention | select | Retries an answer that failed. |
Each dropdown lists the available models, by their model ID, grouped by provider — OpenAI, OpenAI (reasoning), Bedrock (Anthropic), Bedrock (Meta), Google, Meta Model API, Meta Model API — TRAINS ON YOUR DATA, DeepSeek (PRC-hosted), Bedrock (Anthropic, global routing), Bedrock (Z.ai), Bedrock (Qwen), Bedrock (DeepSeek), Bedrock (OpenAI open-weight), Groq (OpenAI open-weight), Bedrock (Google weights) and TypeSafe (decisions only — no text). The first option is always Default (system), which delegates the choice to the platform’s centrally managed defaults.
- — not schema-native: Qualifier — classify, its classify alternate and the text-leg alternate need a model that is guaranteed to return structured data. A model that might answer in prose instead would break the Qualifier. This applies to
us.anthropic.claude-opus-5-5,global.anthropic.claude-sonnet-5-5(global routing only),us.anthropic.claude-opus-5,us.anthropic.claude-opus-4-8,us.anthropic.claude-sonnet-5,us.meta.llama4-scout-17b-instruct-v1:0,deepseek-v4-flashand the three gpt-oss models (openai.gpt-oss-20b-1:0,openai.gpt-oss-120b-1:0and Groq’sopenai/gpt-oss-120b). - — decision seats only: TypeSafe Jev (
jev-1.13.0) answers typed yes/no questions and writes no text. It can be picked only for Qualifier — classify, its classify alternate, Ranker, Intent Detection, Auto-reply gate and Preprocess roles. Preprocess also takes a text model. - — not a decision model: Intent Detection and the Auto-reply gate are answered only by a decision model, so every text model is greyed out there. Leave them on Default (system) or pick TypeSafe Jev.
- Meta Model API — TRAINS ON YOUR DATA — the contributor tier of Muse Spark. It is cheaper because the discount is a training grant. The full-price Meta Model API group is the same model under no-training terms.
- DeepSeek (PRC-hosted) — served from the People’s Republic of China, so your traffic leaves your jurisdiction.
Click Reset to defaults beneath the model selects to return all roles to Default (system).
Re-index
Re-indexing re-reads your website and rebuilds the knowledge base that your Guru uses to answer questions. You should re-index when:
- Your website content has changed significantly.
- You have uploaded or deleted Knowledge Files.
- You want the Guru to learn about new pages or products.
Click Re-index in the top bar and confirm with Reindex. If you have unsaved changes you are asked to save or discard them first, and your first and last name (General) must be filled in. A popup then shows 4 progress stages:
- Launching Worker — Starting the indexing job.
- Crawling — Scanning your website pages.
- Indexing — Processing and embedding content.
- Deploying — Activating the updated knowledge base.
A progress bar and status tiles show real-time updates via a live streaming connection. Click Show Logs to view detailed log output during the process.
When indexing finishes, the popup shows a Reindex Completed Successfully! message with a Done — Refresh Index Info button. Clicking it — or closing the popup with the × — reloads the page so the updated Indexed pages, Index size, and Last indexed values appear.
Deploying Your Guru to Your Site
To make your Guru visible to visitors, embed a single <script> tag on your website. The widget loads asynchronously, displays a chat icon in the corner of every page, and opens the chat interface when clicked.
Universal Embed Snippet
This single line is all you need:
<script src="https://widget.instantaiguru.com/chat-widget.min.js?v=1.67" defer></script>
Place it in your site's HTML — ideally just before the closing </body> tag, or in the <head> if your platform requires it. The widget auto-configures itself from the settings you saved in this Admin panel: colors, chat icon, welcome message, frequent questions and placement flow through automatically. No per-site configuration needed.
window.instantAIguru) can override what you configured in the console, but the console does not generate them; use them only if support asks you to. For every other deployment the line above is the right choice: change appearance and behavior in the console and click Save, and every site that carries the snippet picks it up on its next page load, with no new code.
Widget Updates
The ?v= in the snippet does not pin a version. widget.instantaiguru.com always serves the current widget, and browsers check for a newer copy on every page load, so updates reach your site without any change to your embed. Keep the snippet exactly as copied from Appearance → Install.
Platform-Specific Installation
Steps for each are typical — your specific theme or version may vary slightly, but the general pattern (head/footer custom-code injection) holds across all of them.
Shopify
Install the Instant AI Guru app from the Shopify App Store — the widget ships as a theme app extension. Activate it: Online Store → Themes → Customize → App embeds → toggle InstantAIGuru Chat Widget on → Save. The Shopify card’s Activate Widget button opens your theme editor with the widget ready to turn on. No code editing is required.
WordPress
Two paths, in order of preference:
- Instant AI Guru Chat Widget plugin (recommended) — Plugins → Add New, search “Instant AI Guru Chat Widget”, install and activate. The widget then appears on every page; no code editing is needed.
- Code-injection plugin — If not using our plugin, add the snippet to the site footer with a plugin such as WPCode. In a classic theme you can instead paste it into
footer.phpjust before<?php wp_footer(); ?>(block themes have nofooter.php, and many hosts disable the Theme File Editor).
WooCommerce
WooCommerce runs on top of WordPress, so the WordPress instructions apply directly. Use the Instant AI Guru Chat Widget plugin (recommended) or a code-injection plugin. The widget appears on shop pages, product pages, cart, checkout, and account pages alike.
Squarespace
- Settings → Advanced → Code Injection.
- Paste the snippet into the Footer field.
- Save. The widget loads on every page of the site. Code Injection needs a Squarespace plan that includes it (not the entry plan).
Adobe Commerce (Magento 2)
Two paths:
- Admin panel (no theme edit) — Content → Design → Configuration → Edit your store view (or Global) → HTML Head → Scripts and Style Sheets → paste the snippet → Save Configuration → flush the cache (System → Cache Management).
- Theme XML — In your custom theme, edit
app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default_head_blocks.xmland add<script src="https://widget.instantaiguru.com/chat-widget.min.js?v=1.67" src_type="url" defer="true"/>inside<head>. Requires deploying static content and clearing cache.
Wix
- Site Dashboard → Settings → Custom Code → Add Custom Code.
- Paste the snippet, give it a name (e.g., "InstantAIguru Widget"), set placement to Body — end, apply to All pages, and toggle on for Load code on each new page.
- Apply & Save.
Joomla
Two paths:
- Custom module — Content → Site Modules → New → Custom. Switch the editor to Toggle Editor (or set it to None) so the
<script>is not stripped, paste the snippet, assign it to your template’s footer position (Cassiopeia:footer), set Menu Assignment to all pages, save. - Template index.php — Edit your active template's
index.phpand add the snippet before</body>. Lost on template updates — the module approach is preferred.
Drupal
Two paths:
- Block (recommended) — Structure → Block layout → Place block → Add custom block. Body: paste the snippet in a text format that does not filter HTML (Drupal’s default Full HTML with CKEditor 5 may still strip
<script>; the library route below avoids this). Place in a footer region with visibility = All pages. - Theme info file / preprocess hook — For developers: add the asset library via your theme's
.libraries.ymlor usehook_page_attachments()to inject the script.
PrestaShop
- Install a code-injection module from PrestaShop Addons.
- Configure the module to add the snippet to the
displayFooterordisplayBeforeBodyClosingTaghook position. - Save. Alternatively, edit
themes/<your-theme>/templates/_partials/javascript.tpldirectly — lost on theme updates.
WHMCS
- FTP / file-manager into your WHMCS installation.
- Edit your active template's
header.tplat/templates/<your-template>/header.tpl, ORfooter.tplfor footer placement. - Paste the snippet inside the appropriate location and save. The widget appears on the client area pages. (A
ClientAreaFooterOutputhook does the same and survives template updates.)
/admin) use a separate template; embed the snippet only in the client-facing template unless you specifically want the widget on the admin side.
Webflow
- Site settings → Custom code.
- Paste the snippet into the Footer code field (code injected before the
</body>tag). - Save → Publish your site. Custom code needs a paid plan, and runs only on the published site.
Verifying Installation
After deploying, open your site in an incognito/private browser window. You should see the chat icon appear in the corner you chose once the page has loaded. Click it to open the chat — the Welcome message you set in Appearance → Words should appear.
If the icon doesn't appear:
- Open the browser developer tools (F12 / Cmd+Opt+I) → Console tab. Look for any error messages mentioning
chat-widgetorinstantaiguru. - Check the Network tab for the
chat-widget.min.jsrequest — it should return HTTP 200. If 404, the snippet URL is wrong; if blocked, a content-blocker or CSP is preventing the load. - If your site has a strict Content Security Policy (CSP), allow
https://widget.instantaiguru.cominscript-src;https://api.instantaiguru.comandhttps://stream.instantaiguru.com(plushttps://connect.instantaiguru.comif you use Live Support) inconnect-src;'unsafe-inline'instyle-src; andblob:inimg-src. - If you have a cookie-consent banner that blocks scripts until consent: ensure the InstantAIguru widget is allowed in the "necessary" or "functional" category, or grant consent to test.
The Chat Widget: What Your Visitors See
Everything above covers how you configure and deploy the widget. This section covers the other side of it: what a visitor can actually do once the widget is on your site. Nothing here needs to be switched on, with the single exception of Talk to a live agent, which appears only when Live Support is configured and an agent is currently reachable.
Header Controls
Left to right, after the header caption:
| Control | What it does |
|---|---|
| Talk to a live agent | Opens your Live Support page in a new tab, where the visitor can talk to an agent over audio or video. Shown only while Live Support is configured for the Guru and an agent is reachable; it appears and disappears on its own as agents come on and off duty, so visitors are never offered a handoff that would go unanswered. |
| Download Chat History | Saves the conversation to the visitor's device as a JSON file. |
| Delete Chat History | After a Keep / Remove confirmation, clears the conversation and starts fresh. |
| Expand / Shrink | Toggles a taller panel for long answers, then back again. |
| Close | Collapses the panel back to the chat icon. The conversation is kept for the rest of the visit in that browser tab, so reopening resumes it. |
The Input Row
| Control | What it does |
|---|---|
| Attach (paperclip) | Attaches images, audio files or PDFs to the message. See Attachments below. |
| Voice mode (microphone) | Turns on hands-free voice mode: the visitor speaks, the words appear in the message box and are sent after a short pause, and replies are read aloud. Shown only in browsers that support speech recognition. |
| Send | Sends the message. Enter works too. |
Each answer carries a thumbs-up / thumbs-down pair, so visitors can rate replies. A thumbs-up marks that reply Correct in the Chat Dashboard; a thumbs-down asks the visitor why, marks it Incorrect, and stores their reason in the Revised Answer column. Clicking the same thumb again clears the rating. A fixed line under the input row reads “Note: The Guru can make mistakes. Check important info.”; it is standard practice for AI assistants and is not configurable.
Attachments
Visitors can send the Guru things to look at rather than describe. Attached files appear as chips above the message box, each with its own remove button, and are sent along with whatever the visitor types:
| Rule | Detail |
|---|---|
| Accepted types | Images, audio files, and PDFs. Anything else is refused with an explanation rather than accepted and silently ignored. |
| How many | Up to 3 files per message. |
| Size | Audio files and PDFs up to 8 MB. Images have no stated limit because they are resized in the browser before upload, to 1280px on the longest edge. |
| What the Guru does with them | Images are described and read, so text inside a screenshot or a photographed receipt is available to the answer. Audio is transcribed. PDFs are read as documents. |
Moving the Widget
When Let visitors drag the widget is on (see Widget Placement), a visitor has two ways to move it out of their way, which matters when your own page has a button under it:
- Drag it. Dragging by the icon or the header moves the widget. It stays where it is dropped, measured from the nearest corner, so it holds that place when the window is resized.
- Right-click the icon. A menu lists all four corners, with the current one marked and greyed out, so the widget's possible positions are visible rather than something to be discovered by accident.
Wherever a visitor leaves it, the choice is remembered on that visitor's device only. It never affects other visitors, and it is dropped as soon as you change and save placement yourself. Turning the checkbox off removes both the drag and the menu.
Sending Media on the Other Channels
Attachments are not limited to the web widget. Each channel accepts what it can carry:
| Channel | What a customer can send |
|---|---|
| Photos, voice notes, and PDFs. Photos are described and any text in them is read; voice notes are transcribed. Message types that cannot be handled, such as video, stickers, contacts or location, get a short reply saying so and listing what is supported, rather than silence. | |
| SMS / MMS | The first 3 images or audio clips in a message (any beyond that are ignored). Images are described and read, with the text of the message treated as the caption for the first one; audio is transcribed. If nothing can be processed and no text was sent, the customer gets a reply explaining that, in English or Spanish. |
| Attachments on inbound mail. Every part is acknowledged: those that can be read are described or transcribed, and the rest are reported to the Guru with the reason they were not, so it can tell the sender their attachment arrived but could not be read. |
Flow Designer
The Flow Designer is a visual, IDE-style editor for building JSFE conversation flows and the custom tools they call — the deterministic, scripted logic that lets your Guru run multi-step tasks (OTP verification, payments, account lookups, Shopify actions) reliably instead of relying on the AI to improvise. Open it from the Design Flows button in the admin console’s top bar (visible to a platform administrator, or to a user with the Config permission); it launches in a separate window.
{{ }} expression system are documented in the repository at github.com/ronpinkas/jsfe (also on npm) — treat the repository as the source of truth for what each step does. This guide documents the Designer tool: how to author, test, and save flows visually.
Opening it & how changes are saved
When you click Design Flows, the admin hands the Designer your current flows, tools, global variables, and a short-lived auth token (used by the Test runner and the AI Guru). Nothing is saved automatically — persistence is a deliberate two-step flow:
- In the Designer, click Save → review the changes → Send to Admin. This hands your edited flows, tools and global variables back to the admin window.
- Switch to the admin and click its Save button to persist them (written via the Config permission).
All three travel in both directions, so global variables can now be created and edited here rather than only in the stored configuration.
flow-designer.html on its own (“standalone”) lets you load/download .flows files, but the Test runner and AI Guru will not work — they need the auth token that only the Design Flows button provides. If the browser blocks the pop-up, allow it and click Design Flows again.
The workspace
| Area | What it holds |
|---|---|
| Top toolbar | Flow & tool selectors, item actions (New / Duplicate / Delete), Undo/Redo, zoom controls, and the ✨ AI, Test and Save buttons (Load File instead when the Designer is opened on its own), and Close. |
| Left palette | A legend of the ten step types, plus the Flow Properties editor (name, id, version, prompt, prompt (ES), primary, description, parameters, variables). |
| Center canvas | The flow drawn as a vertical trunk of steps, with branches fanning out and sub-flows expandable inline. |
| Right inspector | Two tabs — Inspector (fields for the selected step) and JSON (the live {flows, tools} model). |
| Bottom test panel | The Flow Test Runner, hidden until you click Test. It also holds the Global Variables editor. |
The palette, inspector, and test panels are all drag-resizable, and your layout is remembered between sessions.
Working with flows
The flow selector lists every flow (primary flows are marked ★); the ALL / ★ PRI button filters to primary flows only. Use New, Duplicate, and Delete to manage flows — built-in system flows are read-only and cannot be deleted. The palette’s Flow Properties section edits the selected flow’s name, id, version, description, prompt and prompt (ES) (the natural-language description the AI uses to decide when to run a primary flow), the primary flag, and its parameters and variables.
Parameters and allowed values
Each parameter has a name, a type (string, number, boolean, object or array) and a description. A string parameter can also list its allowed values, one per line. When a parameter has allowed values, intent detection accepts only those: any other value is dropped, and the flow asks for it. Values are trimmed, matching ignores case, and clearing the list removes the restriction.
The editor flags the same problems the engine would reject when it loads the flow, so you see them while editing:
- A parameter name declared twice.
- Allowed values on a parameter that is not a string (for example, left behind after changing its type).
- The same value listed twice, ignoring case.
Building on the canvas
- Add a step: hover the trunk and click a green + insertion point, then pick a step type (or Paste).
- Select: click a step (single), Cmd/Ctrl-click to multi-select, Shift-click to range-select, or drag a marquee on empty canvas.
- Edit structure: Cmd/Ctrl+C / V to copy/paste, Delete/Backspace to remove (with confirmation).
- Navigate: two-finger scroll to pan, Ctrl/pinch or the + / − buttons to zoom, Fit to frame everything. Steps auto-arrange — you reorder by inserting/deleting and by moving branches up/down, not by dragging nodes freely.
- Sub-flows: a FLOW step can expand inline (chevron) to preview the called flow; a
rebootcall shows a jump arrow that navigates to the target flow.
The ten step types
Each insertion offers these step types. The table is a quick reference — for exactly what each does and how conditions and expressions evaluate, see the JSFE repository.
| Step | Purpose | Key fields |
|---|---|---|
| SAY | Send a message to the user. | Value, Value (ES), optional Digits, Outcome, Reason |
| SAY-GET | Send a prompt and capture the reply. | Value, Value (ES), Variable, optional Digits |
| SET | Assign or compute a variable. | Variable, Value (expression) |
| CASE | Conditional branching (if / else-if). | Branches (condition → step) + default |
| SWITCH | Match a variable’s exact value. | Variable, Branches (value → step) + default |
| FLOW | Call a sub-flow. | Target Flow, Call Type (call / replace / reboot), Parameters |
| CALL-TOOL | Invoke a registered tool. | Tool, Variable (result), Args, onFail |
| RETURN | Return a value / end the (sub)flow. | Value, Outcome, Reason |
| END | Return to the calling flow without a value. | Outcome, Reason |
| DISPATCH | End every active flow and handle this message as if no flow were running: intent detection picks a flow, and if none matches the AI answers. | Outcome, Reason |
Outcome and Reason
The steps that can end a flow (RETURN, END, DISPATCH, and a SAY that is a flow’s last step) can declare how the conversation ended. The engine records it when the flow finishes.
| Field | Description |
|---|---|
| Outcome | unresolved (the user was not helped), deflected (a decoy flow), resolved, or empty. |
| Reason | Free text explaining the outcome. |
Both fields accept {{…}} variables. Leave Outcome empty to declare nothing; clearing a field removes it from the step rather than saving an empty value. On DISPATCH the outcome is kept only when no flow matches the message.
resolved outcome.Select any step to edit it in the Inspector. CASE and SWITCH get a branch editor (add, reorder, and delete branches; the default branch always stays last). Object and array values — parameters, tool args, and tool schemas — use a recursive tree editor with add/rename/delete and type selection.
Tools
Tools are the actions your flows can call (an HTTP API call, or a platform-approved local function). The tool selector lists them; built-in system tools are marked 🔒 and are read-only. Selecting a tool opens the full-canvas Tool Editor:
| Section | Contents |
|---|---|
| Basic Info | ID, Name, Description. |
| Implementation | Type = HTTP (url, method, content-type, headers, timeout, response mapping) or Local (a platform-approved function, its args, timeout). |
| Parameters | A JSON-schema tree (type, properties, required) describing the tool’s inputs. |
| Response Mapping | (HTTP only) how the response maps back into flow variables. |
| Security | requiresAuth, auditLevel, and dataClassification. |
Flows invoke tools through CALL-TOOL steps. Create a new tool with New while a tool is selected (or via the AI Guru).
Global Variables
Global variables are values shared by every flow in your account — opening hours, a standard disclaimer, a return window — referenced from flow expressions as {{global_business_hours}} and so on. They belong to the account, not to any one flow.
The editor is the Global Variables tree at the bottom of the Test panel, under Session Variables. Click Test to open the panel. The Global Variables editor works there whether or not the test session starts, and a tenant with no globals yet still gets an editor to add the first one.
Globals sit outside the flow undo stack, so they are tracked separately: editing one turns the Save button blue on its own, is included by Ctrl/Cmd + S, and counts as unsaved work when you close the window. They ride back to the admin with your flows and tools on Send to Admin, and reach the account when you click Save there.
The JSON tab
The Inspector’s JSON tab shows the live {flows, tools} model and doubles as an import/export surface: edit it and click Update, or drag and drop a .flows / .json file onto it and click Update. Either way it accepts a bare flows array or a {flows, tools} object. Invalid JSON is flagged and not applied. System flows and tools are merged in for context but are never saved back as your own.
AI Guru (✨)
The ✨ AI button opens The Flows / Tools Guru — describe a flow or tool in plain language and it drafts one for you. Choose New Flow or Modify Current Flow (and the equivalents for tools), pick a model (Claude Sonnet 4.6 is recommended, with Muse Spark 1.3, GPT-6.1 Sol, GPT-6 Sol, GPT-5.6 Luna, Claude Opus 5.5, Claude Sonnet 5.5, Claude Sonnet 5, Claude Haiku 4.5, GPT-4.1 Mini and two Gemini Flash options also offered, ordered by how reliably they produce a well-formed flow), and watch it stream a live preview with an AI Response notes panel; click Done to apply. When modifying, it computes the flow’s dependency set and marks any flow that is also used elsewhere as read-only, so a change can’t silently break another flow. The AI Guru needs the auth token, so open the Designer from Design Flows.
Testing a flow
Click Test to open the bottom panel and start a live session: the Designer loads the real JSFE engine and runs your flows merged with the system (and Shopify, if enabled) libraries against the backend.
| Part | What it shows |
|---|---|
| Conversation | The simulated exchange, with You / JSFE / SYS / HOST roles. Type in the input box and Send when a SAY-GET prompt is waiting; each Send advances the engine one step. |
| Variables | Live Session Variables, cargo, and the editable Global Variables tree (available whether or not a session is running). |
| Debug log | Color-coded step / say / set / flow / tool / error entries, with an Info / Warn / Error level filter. |
Saving your work
The Save button turns blue when you have unsaved edits. Clicking it opens Review Changes: a diff of the added, removed and changed flows, steps and tools, plus a Global Variables section for any globals you edited. Flows are listed by name; each changed step is a drillable row you can open to see the individual fields.
Send to Admin hands the work back to the admin window and a toast reminds you to click Save in the admin to persist it. The admin only stages what actually differs: if you open the Designer and send without editing anything, it says “nothing changed — nothing to apply” and leaves the admin’s Save button dark.
There is no autosave; edits live in memory until you send or download them. (In standalone mode, Save downloads a .flows file instead.)
Keyboard shortcuts
| Shortcut | Action |
|---|---|
| Delete / Backspace | Delete the selected step(s) (with confirmation). |
| Cmd/Ctrl + C / V | Copy / paste steps. |
| Cmd/Ctrl + Z / Shift + Z | Undo / redo. |
| Cmd/Ctrl + S | Save (opens Review Changes). |
| Enter | In a single-line field, commit the value instead of inserting a newline. |
Troubleshooting
| Symptom | Fix |
|---|---|
| Designer won’t open / blank window | A pop-up blocker stopped it. Allow pop-ups for the admin and click Design Flows again. |
| Test says “No auth token”, or the AI Guru fails with an authorization error | You opened flow-designer.html standalone. Open it from the admin’s Design Flows button so it receives a token. |
| AI Guru is slow or times out | Large flow sets take longer to generate. Retry, or pick a model marked (fast). |
| A field or the JSON tab shows a red border | The JSON is invalid and was not applied. Fix the syntax (in the JSON tab, then click Update). |
| My changes didn’t stick | Remember the two-step save: Send to Admin in the Designer, then Save in the admin. |
| The admin says “nothing changed” | The Designer sends its whole registry every time, and the admin applies only what differs. If nothing you sent differs from what is already saved, that message is correct — check that your edit was committed (fields commit when you click away from them). |
| A global variable I edited isn’t live | Globals follow the same two-step save as flows. Confirm the Global Variables section appeared in Review Changes, then click Save in the admin. |
Chat Dashboard
The Chat Dashboard provides a comprehensive view of all conversations your Guru has had with visitors. Open it from Chat Dashboard in the admin console’s left menu; it opens in a new tab.
Controls & Filters
Date Range
| Control | Description |
|---|---|
| Start Date | The beginning of the log search range. Format: YY-MM-DD HH:MM:SS. Click the calendar icon to use a date picker. Default: today at 00:00 (local time). |
| End Date | The end of the log search range. Default: tomorrow at 00:00 (local time). |
| Timezone | Toggle between UTC and Local Time for all displayed timestamps. A live clock shows the current time in the selected timezone. |
View Mode
Toggle between two display modes:
- Normal (default) — Shows 20 essential columns for faster loading and easier scanning.
- Advanced — Shows 30 columns including technical details like Log ID, version, token counts, model info, RAG timing, and chat context.
If CSAT or an API call log is connected, CSAT, CSAT Note and API Calls columns are added at the end in both modes. Switching modes resets hidden columns and sorting and reloads the logs. Beside the mode switch, the CSAT and API switches (both on by default) decide whether this Guru’s CSAT surveys and API call log are pulled in with the logs; turn one off if its source is slow.
Loading Controls
| Button | Description |
|---|---|
| Load Logs | Fetches logs for the specified date range. Logs load automatically when the page opens. |
| Refresh | Incrementally fetches only new logs since the last load. The dashboard also auto-refreshes every 60 seconds when viewing a live time range. |
While a load is running, the Load Logs button shows a spinner; hover it and it turns into a pause control. Click to pause; the button then reads Resume and continues where it stopped. Clicking into a date field also pauses the load. A red Cancel button appears while a load is running or paused: it abandons the load and clears the results, and the 60-second auto-refresh stays off until you load again.
Theme Toggle
Click the moon/sun icon to switch between light and dark themes. The preference is saved to your browser.
Outbound calls and campaigns
Shown only to users with the Outbound permission. A Direction selector (All, Inbound or Outbound) filters the conversations; choosing Outbound adds a Campaign picker to narrow them to one campaign. The Campaigns button opens the Campaigns view.
The Campaigns view first lists your campaign runs, one row each. Click a run to open it; Close Campaigns returns to the logs.
| Column | Shows |
|---|---|
| Campaign | The campaign’s name. |
| Status | draft (a list is loaded, not yet started), running, paused, stopped, completed (every contact done) or ended (the list’s end time passed). A running campaign is paused on its own when the Outbound Call Agent is switched off or the campaign is deleted. |
| List | The number of its current daily list. |
| Call window | The list’s start and end. |
| Contacts / Reached / Exhausted / In flight | Contacts in the list, those who reached a person, those the campaign gave up on, and calls in progress. |
An open run shows its Status, when it last placed a call and when its window ends, with Refresh, Export CSV and a List picker for its earlier daily lists. ← All campaigns returns to the runs. Tiles sum it up:
| Tile | Shows |
|---|---|
| Contacts | All contacts in the list, split into queued, in flight and done. |
| Reached a person | Contacts a person answered for, with the contact rate among those dialled. |
| Exhausted | Contacts the campaign gave up on, counted by reason (see below). |
| Attempts | Calls placed, and attempts per contact dialled. |
| Last hour | Calls placed in the past hour, and when the queue drains at that pace. |
| Superseded | Shown only when some are: contacts still waiting when the next list was loaded, so never called from this one. |
Below the tiles is one row per contact: Name, Phone, Lang, Outcome, Attempts, Last attempt, Talk time (for a reached contact) and Conversation.
| Outcome | Meaning |
|---|---|
| queued | Waiting to be called, first or again. |
| dialing | A call is in progress. |
| Reached a person | A person answered. The contact is not called again in this list. |
| Exhausted (reason) | Every attempt was used without reaching a person. The reason is the last attempt’s: machine or fax (an answering machine or fax answered), no-answer, busy, failed, canceled, or error (the call could not be placed). no_line means the contact’s language has no line in the saved campaign, so it was never called. |
| superseded | Still waiting when the next list was loaded. |
Conversation says how a reached contact’s call ended, and how many turns it took: Transferred to an agent, Goodbye, Caller hung up, or Conversation for a call that ended any other way. Click it to open the transcript. It reads not in the loaded dates until the dashboard’s loaded dates (see Date Range) cover that call. Click a contact to see each attempt: when, the call status, who answered (human, or the answering-machine verdict), how long, and its result. Export CSV downloads the list with every contact’s state, outcome, reason, attempts, last attempt, talk time, conversation and the list’s own columns.
Statistics Summary Bar
The colored badges below the controls show counts for different interaction categories. They serve a dual purpose — information display and interactive filters:
Non-Clickable Statistics
| Badge | Shows |
|---|---|
| Logs | Total number of currently displayed (filtered) log entries. |
| Users | Count of unique visitors (identified by IP, user ID, or thread). |
| Conversations | Count of unique conversation threads. |
Clickable Filter Badges
Click a badge to include or leave out its category. A row stays visible while it matches any included category, so switching off one badge often hides little; to isolate a category, Ctrl+Click (Cmd+Click on Mac) it, and Ctrl+Click again to bring every category back.
| Badge | Color | Meaning |
|---|---|---|
| Unmarked | — (no colour) | Interactions not yet rated for quality. |
| Correct | Green | Interactions marked as correct/accurate. |
| Incorrect | Red | Interactions marked as incorrect. |
| Incomplete | Orange | Interactions where the AI apologized or gave a partial answer. |
| Rejected Replies | Light Blue | Responses that were rejected before being sent to the user. |
| Rejected URLs | Brown | Responses rejected due to invalid URL references. |
| Truncated | Royal Blue | Responses that were cut short due to length limits. |
| Live Agent | Purple | Calls transferred to your live agent line, as transfers (connected): the number in parentheses counts the transfers your agent line answered. |
| Handoff connected | — (no colour) | Transfers your agent line answered. Recorded for transfers from October 21, 2026 on. |
| Caller ended | — (no colour) | Answered transfers the caller hung up. |
| Agent ended | — (no colour) | Answered transfers ended from your side: by an agent, or by your contact center’s own system (a queue or message that hangs up). |
| L/A Interceptions | Dark Orange | Turns where a live-agent request was intercepted — the Virtual Agent offered to keep helping instead of transferring immediately. The badge shows total (returned-to-AI); turns where the caller accepted and returned to the AI are tinted Sea Green. |
| Goodbye | Dark Sea Green | Conversations that ended with a goodbye. |
| Call Ended | Gold | Voice calls that ended. |
| Switched to SMS | Lime Green | Voice calls that switched to SMS continuation. |
| Dark Green | WhatsApp chats (one row per chat, its last interaction). | |
| SMS | Steel Blue | SMS chats (one row per chat, its last interaction). |
| Teal | Email chats (one row per chat, its last interaction). | |
| Not answered | — (no colour) | Emails the Guru did not answer, on channels with Log emails the Guru does not answer on. Opening one shows the reason and the subject. |
| Reconnected | Crimson | Mid-call dropouts the caller was reconnected through. |
| Stopped | Slate Gray | Turns the caller stopped; not counted as a failure. |
| CSAT | Sea Green | Shown when CSAT is connected. Conversations with a CSAT survey; the number shows the count and average rating. Click to hide them, Ctrl/Cmd+Click to show only them. |
| Stars | — | Shown with the CSAT badge. Which ratings (1–5) count as CSAT; click a star to drop or restore it, Ctrl/Cmd+Click to keep only it. |
| API Calls | Purple | Shown when an API call log is connected. Conversations whose flows called your API: attached / pulled (conversations). Click hides them, Ctrl/Cmd+Click shows only them. |
| Failed Calls | Red | As API Calls, for failed calls. |
The JSFE Badge — Who Wrote the Reply
Every reply is authored by the AI, answering from your knowledge
base; by the JSFE workflow engine, reading out a line you scripted in the
Flow Designer; or — shown as PP — by the pre-processing step that answers some messages before the AI runs. The purple JSFE badge
at the end of the badge row counts the scripted ones, in the format
total (conversations involved) — so 2 (1) means two scripted replies,
inside a single conversation.
| State | How you get there | What you see |
|---|---|---|
| Default | — | Everything. The badge is only counting. |
| Exclude | Click | Scripted replies are hidden — what the AI itself produced, with the flows taken out. Click again to restore. |
| Only | Ctrl/Cmd+Click | Only scripted replies, marked by a gold ring on the badge. Your category filters still apply within them — so Only + Incorrect answers “which of my flows said the wrong thing?”. Repeat to restore. |
Log Table
The main table displays all log entries matching your date range and active filters. Each row represents a single interaction (one user question and one AI response).
Normal Mode Columns (20)
| Column | Description |
|---|---|
| # | Row number. |
| IP | Client IP address. |
| Browser | User agent / browser information. |
| Country | Geographic country of the visitor. |
| Postal | Postal/ZIP code. |
| Org | Organization/channel indicator. Shows the channel source: TwilioVoice, TwilioSMS, app., WhatsApp, Email, or the visitor's ISP/org for web traffic. |
| Thread ID | Unique conversation thread identifier. |
| Date Time | Timestamp of the interaction (in your selected timezone). |
| User ID | Visitor's identifier (email if known). |
| Full Chat | A clickable button showing the turn count. Click to open the full conversation in a modal — it leads with the session’s greeting (the AI’s opening line) and shows a timestamp beside every message. |
| Prompt | The visitor's question or message. |
| Reply | The response that was sent — from the AI or from a flow; see Src. For an email the Guru did not answer, it reads Not answered: and the reason, and Src is empty. |
| Src | Who authored the reply: AI for a model-written answer, JSFE for a line scripted in a flow. Present in both view modes, and filterable like any other column. Interactions old enough to predate this column show AI whether or not a flow wrote them, so don't read a scripted-reply count from a date range that reaches back before it. |
| Rejected Urls | URLs that were removed from the response by the URL validator. |
| Rejected Answers | Response attempts that were rejected before the final answer. |
| Total Time | End-to-end response time in milliseconds. |
| Documents | Source documents retrieved from the knowledge base (with relevance scores and URLs). |
| Pertinent Docs | Documents deemed most relevant to the query. |
| Correct | Quality rating. Color-coded to match the filter badges. |
| Revised Answer | The correction recorded with an Incorrect rating, including the reason a visitor typed after a thumbs-down. |
Additional Advanced Mode Columns
When Advanced view mode is enabled, these additional columns appear:
| Column | Description |
|---|---|
| Log ID | Unique identifier for this log entry. |
| Version | Software version that processed this interaction. |
| Chat Context | The conversation history sent with this prompt. Right-click to view as formatted chat bubbles. |
| Prompt Tokens | Token count for the prompt. |
| Analysis | The AI's analysis of the prompt, including any rephrased question. |
| Models | Which AI model(s) processed this interaction. |
| RAG Time | Time spent on document retrieval (Retrieval-Augmented Generation). |
| Attempts | Number of response generation attempts. |
| Completion Time | Time spent generating the final response. |
| Completion Tokens | Token count for the generated response. |
Table Interactions
- Click a column header to sort: ascending → descending → natural order (3-state cycle).
- Right-click a column header for a menu: Hide Column, Filter… (see Per-Column Filtering below), or Clear Filters.
- Hover over a truncated cell to see a tooltip with the full text.
- Right-click a truncated cell to open the full text in a modal. For Chat Context columns, this shows formatted chat bubbles.
- Click a Full Chat button to view the entire conversation thread — including the opening greeting bubble and a timestamp on every message.
- Rows are color-coded to match their category (green for correct, red for incorrect, orange for incomplete, etc.).
Reading a conversation: which turns were scripted
Inside the Full Chat modal, a reply written by a flow rather than by the AI is labelled FLOW instead of ASSISTANT and carries a purple stripe down its left edge. The interaction you opened the modal from keeps its green current outline at the same time, so a scripted current turn shows both marks — purple stripe, green outline.
This is the same fact as the JSFE badge and the Src column, read at conversation level: it shows where a scripted flow took over and where it handed back, which is usually what you want when a conversation went wrong and you need to know whether to fix a flow or the knowledge base.
Reading a conversation: what happened after a transfer
A call transferred to your live agent line ends with one line saying how the transfer went: whether your agent line answered, how long it took to answer, how long the caller stayed on it, and who hung up: the caller, or your side (an agent, or your contact center’s own queue or message). A transfer your line never answered says so, with the reason: no answer, busy or failed. Transfers before October 21, 2026 show no such line.
[flow] on an old interaction[flow] prefix inside the stored
transcript before the Src field replaced it. You may still see that text on
conversations from that period when you right-click a Chat Context cell. It is a
leftover label, not part of what the customer was sent, and it disappears as those logs age out.
Per-Column Filtering
Beyond the quick category badges, you can build precise filters on any column. Right-click a column header and choose Filter… to open the Filter Logs dialog. Each condition is a column, an operator, and a value; click + Add Condition to add more, and choose whether a row must match ALL or ANY of them. Right-clicking another header adds a condition for that column to the existing set — filters accumulate, they are not replaced.
| Operator | Keeps rows where the cell… |
|---|---|
| Equals | equals the value — compared as numbers when both sides are numeric, otherwise case-insensitive text. |
| Not Equal | does not equal the value. |
| From (≥) | is greater than or equal to the value (inclusive lower bound; numeric-aware). |
| To (≤) | is less than or equal to the value (inclusive upper bound; numeric-aware). |
| Starts with | begins with the value. |
| Ends with | ends with the value. |
| Includes | contains the value anywhere. |
| RegEx | matches the value as a regular expression (case-insensitive). |
Conditions are matched against the value shown in each cell, so From/To on Total Time filter by milliseconds — pairing them (e.g. Total Time From 100 To 500) builds an inclusive range. Click Apply to filter the table. Active conditions appear as removable chips above the table, and each filtered column shows a 🔎 cue in its header. Filtering also flows through to the Analytics Dashboard charts and every export. To clear filters, delete individual chips, click Clear all on the chip bar, or right-click any header and choose Clear Filters.
Export
Three export formats are available, each respecting your current filters and visible columns:
| Format | Description |
|---|---|
| CSV | Comma-separated values. Opens in any spreadsheet application. |
| JSON | Pretty-printed JSON array of objects. Useful for programmatic analysis. |
| XLSX | Excel workbook with a frozen header row, auto-sized columns, and styled headers. Best for sharing and analysis. |
Analytics Dashboard
Click Analytics Dashboard to open a full-screen overlay with charts and statistics based on your currently loaded and filtered logs.
Statistics Cards
At the top, 12 summary cards show key metrics:
- Total Interactions — Total number of log entries.
- Unique Users — Distinct visitor count.
- Total Conversations — Unique thread count.
- Multi-turn Conversations — Threads with more than one exchange.
- Multi-turn Rate — Percentage of multi-turn conversations.
- Avg Conversation Length — Average exchanges per thread.
- Longest Conversation — Maximum exchanges in a single thread.
- Accuracy Rate — Percentage of interactions not marked as incorrect.
- Avg Response Time — Average end-to-end response time.
- Countries — Number of distinct countries.
- Avg Prompt Tokens — Average input token usage.
- Avg Completion Tokens — Average output token usage.
Charts
The analytics dashboard includes up to 14 interactive charts. Some charts have a toggle to switch between "By Interactions" and "By Conversations" views:
- Usage by Hour of Day — Bar chart showing when visitors are most active.
- Answer Quality Distribution — Doughnut/bar chart of correct vs. incorrect vs. other categories. Toggle: by interactions or by conversations.
- Countries Analysis — Horizontal bar chart of top 10 countries. Toggle: by interactions or by conversations.
- Usage Trends — Line chart of daily interaction volume (last 7 days).
- Response Time Distribution — Bar chart with time buckets (0–1s, 2–5s, 6–10s, etc.).
- Conversation Length Distribution — Pie chart showing how many conversations are 1 turn, 2 turns, 3–4, etc.
- Conversation Quality by Length — Bar chart of accuracy rate by conversation length category.
- Model Usage — Stacked bar showing, for each pipeline role (qualifier, ranker, guru, and the JSON/guru intervention and fallback roles), which AI model(s) handled it — so you can see the model mix per role.
- Domain Activity — Doughnut chart showing activity per domain (hidden for single-domain accounts). Toggle: by interactions or by conversations.
- Channel Distribution — Pie chart of Web, WhatsApp, SMS, Email, Phone, and App channels. Toggle: by interactions or by conversations; by conversations, phone calls are split by how they ended: Live Agent, Goodbye, Call Ended, Switched to SMS or Other.
- RAG vs Google Sources — Pie chart showing the mix of RAG-only, Google-only, both, or no sources.
- Token Usage Trends — Line chart of average prompt and completion tokens per day.
- Accuracy Trends — Line chart of accuracy rate, correct %, and incorrect % over time.
- User Engagement Patterns — Bar chart of sessions bucketed by depth — Casual (1–2), Regular (3–5), Active (6–10), or Power (11+) interactions per session — plus a Repeat Users bar counting users with 2+ sessions.
Click Close Analytics to return to the log table view.
Saved Views
Save your current filter and display configuration for quick access later:
- Save View — Saves the view mode, hidden columns, sort, and the badge filter states under a name, in this browser only (column filters, the JSFE badge and the date range are not saved).
- Load View — Pick a view in the dropdown and click Load View.
- Reset to Default — Pick it in the dropdown and click Load View to show all columns, clear sorting and turn every badge back on.
Keyboard & Mouse Shortcuts
Chat Dashboard
| Action | How |
|---|---|
| Sort a column | Click the column header. Cycles: ascending → descending → natural order. |
| Hide a column | Right-click the column header, then select "Hide Column". |
| Filter a column | Right-click the column header, select "Filter…", then build one or more conditions. Right-click and choose "Clear Filters" to remove them. |
| View full text | Right-click a truncated cell and select "Show Full Text". |
| View chat context | Right-click a Chat Context cell and select "Show Chat". |
| View full conversation | Click the numbered button in the "Full Chat" column. |
| Toggle a filter | Click a colored badge in the statistics bar. |
| Show only one category | Ctrl+Click (or Cmd+Click) a badge. |
| Show all categories | Ctrl+Click any badge when not all are active. |
Admin Console
| Action | How |
|---|---|
| Open a section | Click it in the left menu. The address keeps the section, so a reload or a bookmark opens it again. |
| Collapse the menu | Click ⇤ beside the logo. Remembered in this browser. |
| Select / edit a user | Click a user card in Users, then click a field or the permission grid. |
| Expand/collapse a channel or integration | Click its card header. |
| Close the account menu | Esc. |
| Use a field’s example | In an empty field whose placeholder shows an example, press → (Right Arrow) to fill it in. Placeholders that are instructions, credential names or stand-in values such as [email protected] are never filled. |
Chat Widget
| Action | How |
|---|---|
| Open or close the chat | Ctrl+Shift+C |
| New line in a message | Shift+Enter |
Frequently Asked Questions
How do I connect Twilio for SMS and Voice?
In Channels, click Add Twilio number, then Connect your Twilio account. Approve InstantAIguru in Twilio, pick or buy a number, and calls are answered right away. For texting, fill in the Texting registration in the same dialog and we file it with US carriers for you. See Twilio Setup.
Why isn’t my chat widget appearing on my site?
Open your site in a private window and confirm the embed snippet is present before the closing </body> tag. Check the browser console for errors, that the script URL loads, and that a Content-Security-Policy or cookie-consent gate isn’t blocking it. The widget should appear once the page has loaded. See Verifying Installation.
How do I send post-call CSAT surveys, and what do I need?
In Integrations, turn on the CSAT — Post-call Survey card. By default we host CSAT for you (use Create CSAT Admin Login to view results); if you self-host, tick I self-host CSAT and paste your CSAT Site URL and CSAT Secret. Then set delivery: an A2P-registered Twilio number under SMS delivery (you can copy credentials from an existing SMS number) and/or Send CSAT Email. After a voice call the Guru then texts and/or emails the customer a survey link. See CSAT — Post-call Surveys.
How do I reveal a hidden Auth Token or secret so I can copy it?
Masked secrets — the Twilio Auth Token on SMS, Voice and CSAT and in Settings › Twilio account, the CSAT Secret, the Live Support secret, and the Shopify and ShipStation keys — have a Show button beside or beneath them. The WhatsApp Business Token is shown shortened (first and last ten characters); hover it to see the full value.
Why won’t my changes save?
Saving is blocked by field validation before anything is written: Matching documents to evaluate (Settings) must be 1–10; a self-hosted CSAT needs its Site URL, Secret and at least one delivery method (an SMS number with its SID and Auth Token, or Send CSAT Email); an enabled integration needs its required key or URL; Enforce and Forbid references cannot both be ticked; every user you edited in Users needs a first name, a valid email, and an email nobody else already uses; and the Outbound Call Agent needs at least one ticked line, and each campaign a name, call context, and a greeting and disclosure for each language. The form jumps to the offending field. Saving also fetches the latest server config first and offers a conflict-resolution dialog if another user changed the same fields. If Save is not purple, the console sees nothing to write. When it is purple, Exit or Re-index offers Review Changes, which shows exactly what Save would write. See Saving Changes.
What does “Read linked pages on other sites” do?
In General, turning on Read linked pages on other sites follows links that leave your domain while your site is read — useful when your knowledge spans linked external pages. Leave it off to read only your own domain. It takes effect on the next Re-index.
Why does a channel card say “Configuration Required”?
That banner means the channel was added from your subscription but is still missing credentials. Fill in the highlighted fields (for example, the Twilio Account SID and Auth Token) to activate it. See Channels.
How do I reply to customers from my own domain by email?
On an Email channel, type your address (e.g., [email protected]) into the From Address field and click Verify Domain. Add the three DKIM CNAME records and merge the Amazon SES include into your existing SPF record (do not add a second SPF). A status badge shows when the domain is verified. See Branded From Address.
Who can change the AI Model Set?
Only a platform administrator. The Model set panel in Settings is also shown, read-only, to users with the Config permission; everyone else does not see it. See Model Set.
How do I set live-agent transfer hours for phone calls?
Enter a Live Agent Phone Number on the Voice channel and the Live Agent Service Hours editor appears. Set a timezone and add one or more time ranges per day; once any day has hours, days with no ranges are treated as closed and won’t transfer calls; with no hours set on any day, transfers are not time-limited. See Live Agent Service Hours.
What are the Upload Flows, Upload Tools, and Design Flows buttons?
These top-bar buttons (shown to a platform administrator or to a user with the Config permission) manage the Guru’s interactive conversation flows and custom tools: Upload Flows and Upload Tools import JSON definitions, and Design Flows opens the visual Flow Designer to build them interactively — along with your global variables. All three routes stage the result as an unsaved change; nothing is written until you click Save, and an import identical to what is already stored applies nothing. See Flow Designer.
A new user never got their invitation. How do I resend it?
Open Users and click Resend invite on the user’s card (it is marked Invited). You can send it as many times as you need; nothing else about the account changes. A card marked Not saved yet has no account yet: click Save, and the invitation goes out by itself. (An older user shown with neither mark has a Send invite button instead.)
What does the Read Only permission actually allow?
Everything on the console stays visible and readable, and every control that would write something is switched off — forms, buttons, the flow and tool uploads, the Flow Designer, and Save. The top bar shows a Read-only badge so the disabled controls read as intentional. Two things still work: Re-index, which writes no configuration, and changing your own password, so an invited read-only account can still be activated. The server enforces the same restriction independently, so it holds even if the page is tampered with. See Permission Checkboxes.
What’s the difference between the Sole Proprietor and Standard A2P 10DLC paths?
Twilio routes your SMS registration by whether your company has a business/tax registration number. The Sole Proprietor path (no EIN) is limited to one campaign and one number, with low throughput, and the owner must confirm a code sent to their mobile; the Standard path requires a registered business and full Brand vetting but unlocks higher limits. See Sole Proprietor vs Standard Path.