GETTING STARTED

KnowDesk: AI Customer Support Platform with 300+ Agents

KnowDesk is more than a knowledge base chatbot - it is an AI customer support platform with 300+ purpose-built agents. Connect your docs (Google Docs, PDFs, Notion, Confluence, plain text) and deploy a branded AI widget in minutes. Support Agents handle WISMO queries, returns, and carrier claims. Brand Agents review ad copy, listings, and content for brand consistency. Retention Agents run abandoned cart flows, winback campaigns, and VIP segmentation. Mission Control aggregates GA4, Stripe, and Gorgias into one view with anomaly alerts. When a conversation needs a human, agents reply from the Live Inbox. When a customer asks about an order, the AI looks it up live.

This guide covers every feature - from your first widget deploy to configuring agents, Mission Control, QA Reviews, Vertical AI, and the Partner Integration API. Follow sections in order for your first setup, or jump using the left navigation.

🤖
300+ AI Agents
support · brand · retention · ops
💬
Live Agent Inbox
reply in real time
🛍️
Order Lookup
Stripe · Shopify · Paystack
✉️
Email Inbound
auto-tickets from email
⭐
QA Reviews
9-attribute agent scoring
🎯
Mission Control
GA4 · Stripe · Gorgias unified
🏷️
Brand Agents
gate · ad copy · voice audit
📧
Retention Agents
winback · churn · VIP
⚖️
Calibration
inter-reviewer alignment

Getting Started#

Follow these four steps to go from signup to a live widget on your website.

Create your account
Go to knowdesk.io/signup and enter your email, password, company name, and website. Choose a plan - you can start with the free trial on any plan. You'll be redirected to Stripe to complete payment, then straight to your dashboard.
Connect your knowledge source - Google Docs, Notion, or Confluence
In your dashboard, go to Knowledge Base and click + Add Source. KnowDesk is a chatbot that reads Google Docs, Notion pages, Confluence wikis, PDFs, and Help Center URLs - all directly from their source. Choose your source type, give it a name, and paste the file ID or URL. Click Add Source, then Sync to index it.
Configure your widget brand
Go to Widget Config. Set your brand name, colour, welcome message, and tone. The live preview on the right updates instantly as you type. Click Save Changes.
Embed on your website
Copy your embed code from the Widget Config page and paste it just before the </body> tag on any page. That's it - your widget is live.

Knowledge Base#

The knowledge base is the foundation of your AI support bot. KnowDesk is a knowledge base chatbot - it only answers from what you connect here, never from general internet knowledge. The more structured your content, the more accurate the answers.

CONNECTED SOURCES (3)+ Add Source
📁
Operations SOP
Google Drive · 24k chars
SYNCED⟳ Sync
📄
Brand Guidelines
PDF · 11k chars
SYNCED⟳ Sync
✏️
Escalation Playbook
Manual text · 6k chars
SYNCED⟳ Sync

Supported source types#

📁Google Drive (chatbot from Google Docs)
Paste the file ID from a Google Doc URL. KnowDesk reads your Google Docs live - the most popular way to build a chatbot from Google Docs without any training or reformatting.
From: docs.google.com/document/d/FILE_ID_HERE/edit
📄PDF / URL
Paste any publicly accessible PDF URL or website URL. KnowDesk fetches and indexes the content automatically.
Example: https://yoursite.com/handbook.pdf
✏️Manual Text
Paste SOPs, policies, Q&A pairs, or any text directly. Best for internal playbooks that aren't in a document system.
Supports up to ~50,000 characters per source
🎬Video / Audio
Upload tutorial videos, product walkthroughs, or audio recordings. KnowDesk automatically transcribes the content and indexes it with timestamps - the AI includes [M:SS] links in answers so users can jump to the exact moment in the video.
MP4, MOV, WebM, MP3, WAV - up to 500 MB per file

Adding a Google Drive source#

ADD NEW SOURCE
📁
Google Drive
📄
PDF URL
🌐
Website URL
✏️
Manual Text
SOURCE NAME
Operations SOP Q1 2026
FILE ID (from Google Drive URL)
1BxiMVs0XRA5nFMdKvBdBZjgmUUqp...
Add Source →

To connect a Google Doc:

  1. Go to Knowledge Base in your dashboard
  2. Click + Add Source
  3. Select Google Drive
  4. Give the source a descriptive name (e.g. "Operations SOP")
  5. Open your Google Doc and copy the file ID from the URL: docs.google.com/document/d/FILE_ID/edit
  6. Paste the file ID into the field and click Add Source
  7. Click Sync - the source status changes to SYNCED within a few seconds

Connecting ClickUp#

KnowDesk can read your ClickUp Spaces, Docs, and Chat channels as knowledge sources. Connect via OAuth - no API key needed.

Open the ClickUp integration panel
Go to Knowledge Base → Add Source and select ClickUp. You will see a "Connect ClickUp" button.
Authorise with ClickUp OAuth
Click Connect ClickUp. You are redirected to ClickUp's OAuth screen - log in and grant KnowDesk read access to your workspace. You are returned to KnowDesk automatically.
Browse and select content
After connecting, KnowDesk displays your ClickUp workspace. You can browse and enable:
  • Spaces - all tasks and content within a space
  • Docs - individual ClickUp document pages
  • Chat channels - message history from a ClickUp Chat channel
Add and sync
Toggle the items you want included, then click Add Selected. Each selected item becomes a separate knowledge source. Click ⟳ Sync to index the content immediately.

Syncing sources#

Connected sources that read a live copy - Google Docs, websites, sitemaps, help centres, GitHub and Airtable - re-sync on their own every few hours. Manual text, PDFs, videos, Notion, Confluence and ClickUp don't, so click the ⟳ Sync button after editing one of those, or to pull any change in right away. Syncing typically takes 2–10 seconds depending on document size.

Plan limits#

PLANKNOWLEDGE SOURCES
Starter1 source
Growth10 sources
Scale25 sources
EnterpriseUnlimited

Video Knowledge Base#

Upload your tutorial videos, product walkthroughs, onboarding recordings, or any audio content and KnowDesk automatically transcribes the content using AI. The transcript is indexed with timestamps, so the AI can reference the exact moment where relevant content appears - and users see clickable time links in the widget to jump directly to that point.

How it works#

Upload your video or audio file
Go to Knowledge Base → Add Source and select 🎬 Video / Audio. Give the source a descriptive name and choose your file. Supported formats: MP4, MOV, WebM, MKV, MP3, WAV, M4A - up to 500 MB.
File uploads directly to secure storage
The file uploads directly from your browser to Supabase Storage (no 4 MB limit). A progress bar shows the upload percentage. Large files (e.g. 200 MB) typically take 30–60 seconds on a standard connection.
AI transcribes the audio
Once uploaded, KnowDesk sends the file to AI for transcription. The source status switches to processing while this runs. Transcription typically takes 1–3 minutes depending on the video length. The dashboard auto-refreshes every 6 seconds and updates the status when done.
Timestamped content is indexed
When transcription completes, the transcript is stored as timestamped paragraphs in the format [2:14] Your content here. The source status changes to synced and the AI can immediately answer questions from the video.

When the AI answers a question from a video source, it includes the timestamp of the relevant moment - for example: "As shown at [2:14], you connect your account by clicking Settings → Integrations."

Users see a clickable chip below the answer that reads ▶ 2:14. Clicking it opens the video at that exact moment in a new tab. No extra setup needed - this works automatically for any synced video source.

WIDGET ANSWER EXAMPLE
To connect your Stripe account, go to Settings → Commerce Integrations and paste your Secret Key. As shown at [1:42], you'll see the integration turn green when connected successfully.
📹 Product Walkthrough
▶ 1:42
The ▶ chip links to the video at the exact timestamp. Clicking opens the video at that moment.

Supported file formats#

FORMATTYPENOTES
MP4 / MOVVideoMost common. Works with screen recordings, Loom exports, YouTube downloads.
WebM / MKVVideoBrowser-recorded video. Works with most recording tools.
MP3 / M4AAudioIdeal for podcast-style onboarding recordings or audio-only walkthroughs.
WAV / OGGAudioUncompressed audio. Large files - use MP3 for smaller uploads.

Widget Configuration#

The Widget Config page controls everything your users see - brand name, colour, welcome message, tone, and suggested prompts. Changes save immediately and take effect on your live widget without any redeployment.

WIDGET CONFIGURATION
BRAND NAME
AcmeCorp
BRAND COLOUR
#00F5E5 ●
TONE
Casual
DARK MODE
On
EMBED CODE
<script src="https://knowdesk.io/widget.js" data-key="kd_live_..."></script>

Brand settings#

Brand Name
Displayed in the widget header next to your logo. Typically your company name.
Brand Colour
Hex colour code used for the accent line, buttons, and message bubbles. Defaults to #00F5E5.
Logo URL
Optional. A public URL to your logo image. Displayed as a circle avatar in the widget header. Leave blank to use your brand initials.
Welcome Message
The first message your users see when they open the widget. Keep it short and action-oriented.

AI behaviour#

Tone - Controls how the AI writes responses:

  • Casual - Clear, direct, and conversational. Sounds like a knowledgeable teammate.
  • Formal - Complete sentences, professional language, structured responses.
  • Technical - Assumes domain knowledge, uses precise terminology.

Suggested Prompts - Up to 4 quick-start buttons shown in the widget before the user types. Enter one per line. Example: "How do I escalate a client issue?" or "What is our refund policy?"

Dark / Light mode#

Toggle whether the widget renders in dark or light mode. This affects only the widget appearance - not your dashboard. Choose whichever matches your website's background.

NEW

Voice AI - Phone Support#

Voice AI gives your business a dedicated phone number answered by a real-time AI agent - not a menu tree, an actual conversation. It automatically inherits the same knowledge base, brand tone, and Vertical AI tools you already configured in Widget Config, so there's nothing to rebuild - just a number to turn on.

1. Get a phone number#

Open Dashboard → Voice AI. The Numbers panel lets you provision a number two ways:

Buy a local number
Pick a country and, optionally, an area/city code. Local numbers activate instantly - no verification wait.
Buy a toll-free number
Toll-free numbers require business verification before they go live. Submit your details once; provisioning completes after approval.
Port an existing number
Already using a business line elsewhere? Use the Porting panel to bring it to KnowDesk - this is a carrier-to-carrier process that takes days, not minutes. You'll need the phone number and a Letter of Authorization (LOA) document.

Once a number is active, assign it to the widget whose knowledge base and Vertical AI setup should answer those calls. If you run multiple widgets, use the Widget selector at the top of the settings panel to switch between them.

2. Configure the caller experience#

Turn on voice for the widget
In the widget's settings panel, check Enable voice on this widget's number. This is per-widget - you can run Voice AI on one number while others stay chat-only.
Write the opening greeting
Set what the AI says the instant a call connects, e.g. Thanks for calling {{brand_name}} - how can I help?. The {{brand_name}} placeholder pulls from your widget's brand name automatically.
Pick a voice and language
Set a TTS voice ID (defaults to alloy) and a Language. Leave language on Auto-detect to let the AI follow whatever language the caller speaks - it switches fluidly mid-call without ever asking the caller to pick from a menu.
Choose what to collect from callers
Toggle Name, Email, and Phone. The AI asks for whichever you enable near the start of the call, reads emails back letter-by-letter to confirm accuracy, and saves them against the call record.
Set a transfer number for escalation (optional)
Add a Transfer number so the AI can warm-transfer a caller to a real person - it briefs your agent privately before connecting them. Without one, the AI still notifies your team by filing an escalated conversation in the Live Inbox instead of leaving the caller stuck. When a transfer number is set, also choose the after-hours action: take a voicemail and text the caller a live-chat link, or ring straight through anyway.
Set a max call duration
Caps how long a single call can run (defaults to 600 seconds / 10 minutes) - a safety limit against runaway calls.

Settings reference#

FieldTypeRequiredDescription
voice_greeting_scriptstringNoOpening line spoken when the call connects. Supports the {{brand_name}} placeholder.
voice_tts_voice_idstringNoText-to-speech voice, e.g. alloy. Defaults to alloy.
voice_languagestringNoauto, or an ISO code (en, es, fr, pt, de). auto follows whatever the caller speaks.
voice_max_call_durationnumberNoHard cap on call length, in seconds. Defaults to 600.
voice_forward_numberstringNoE.164 phone number for live warm transfer, e.g. +1 415 555 0100.
voice_after_hours_actionstringNovoicemail or forward - what happens on a transfer attempt outside your team's hours.
voice_collect_name / _email / _phonebooleanNoWhich caller details the AI actively asks for and saves.

Minutes, wallet, and overage#

The top of the Voice AI page shows three live numbers: minutes used this billing cycle, minutes included on your plan, and your prepaid wallet balance. When included minutes run out mid-cycle, calls continue drawing from the wallet rather than cutting off - top it up any time from the Buy Minutes panel.

Call log#

Every call is logged with its transcript, duration, and outcome - resolved by AI, transferred to a human, or escalated. Missed calls that couldn't be answered live appear in the callback queue so your team can follow up.

Embed the AI Chat Widget on Your Website#

Your embed code is a single script tag. It's the easiest way to embed an AI chat widget on any website - Webflow, WordPress, Shopify, Next.js, or plain HTML. Copy it from Widget Config → Embed Code and paste it before </body>.

Your embed code (example)HTML
<script 
  src="https://knowdesk.io/widget.js" 
  data-key="kd_live_your_api_key_here">
</script>

Where to paste it#

Paste the script tag just before the closing </body> tag on every page you want the widget to appear.

Example HTML pageHTML
<!DOCTYPE html>
<html>
  <head>
    <title>Your Website</title>
  </head>
  <body>
    <!-- Your website content -->

    <!-- KnowDesk Widget - paste here -->
    <script 
      src="https://knowdesk.io/widget.js" 
      data-key="kd_live_your_api_key_here">
    </script>
  </body>
</html>

Works on any platform#

✓ Webflow
✓ Framer
✓ WordPress
✓ Shopify
✓ Next.js
✓ HubSpot
✓ Wix
✓ Squarespace
✓ Any HTML site

Mobile apps: the Android and iOS SDK#

Put your support chat inside your own Android and iOS apps. It's the same chat as your website widget - AI answers from your knowledge base, hand-over to live agents, tickets, ratings, attachments, transcripts and browser calls - shown full-screen, plus push notifications when an agent replies. New widget features reach your app without an app update.

AndroidiOS
Packageio.knowdesk:knowdesk-androidKnowDesk (Swift Package or CocoaPods)
Minimum versionAndroid 6.0 (API 23)iOS 13
Push notificationsFirebase Cloud MessagingApple Push Notifications (or Firebase)
SizeNo third-party dependencies beyond AndroidXNo dependencies (UIKit + WebKit)

Before you start#

Open Widget Config → Mobile apps
Pick the widget your app should use. The install snippets there already contain its API key.
Optional: signed-in users
Create the identity secret if your app has accounts (see Signed-in users).
Optional: push notifications
Add your Firebase and/or Apple push keys (see Push notifications).

Android#

app/build.gradle.ktsKotlin
dependencies {
    implementation("io.knowdesk:knowdesk-android:1.0.0")
}
Application.onCreate() and your Help buttonKotlin
class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        KnowDesk.init(this, "kd_live_your_api_key")
    }
}

// e.g. in your Help screen
helpButton.setOnClickListener { KnowDesk.open(this) }

Push notifications on Android use your app's own Firebase project. Pass the token to KnowDesk and forward messages that arrive while the app is open:

Firebase MessagingKotlin
FirebaseMessaging.getInstance().token.addOnSuccessListener { KnowDesk.setPushToken(it) }

class MyMessagingService : FirebaseMessagingService() {
    override fun onNewToken(token: String) = KnowDesk.setPushToken(token)
    override fun onMessageReceived(m: RemoteMessage) {
        if (KnowDesk.handlePush(this, m.data, m.notification?.title, m.notification?.body)) return
        // ...your own messages
    }
}

// Your launcher activity: a tapped reply notification opens the chat
override fun onCreate(savedInstanceState: Bundle?) { /* ... */ KnowDesk.handleIntent(this, intent) }
override fun onNewIntent(intent: Intent) { super.onNewIntent(intent); KnowDesk.handleIntent(this, intent) }

// Android 13+: ask at a moment that makes sense, e.g. after the first chat
KnowDesk.requestNotificationPermission(activity)

iOS#

In Xcode choose File → Add Package Dependencies… and enter https://github.com/knowdesk/knowdesk-ios, or add pod 'KnowDesk' to your Podfile.

AppDelegate and your Help buttonSwift
import KnowDesk

func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    KnowDesk.configure(apiKey: "kd_live_your_api_key")
    return true
}

// e.g. in your Help screen
KnowDesk.present(from: self)

Add these to Info.plist so customers can attach photos and make browser calls from the chat:

KeyExample text
NSMicrophoneUsageDescriptionTalk to our support team from the chat.
NSCameraUsageDescriptionSend a photo to our support team.
NSPhotoLibraryUsageDescriptionAttach a photo to your support chat.
Push notifications (APNs)Swift
// after the user allows notifications
UIApplication.shared.registerForRemoteNotifications()

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken token: Data) {
    KnowDesk.setPushToken(token)          // or KnowDesk.setFirebaseToken(fcmToken) if you use Firebase on iOS
}

// UNUserNotificationCenterDelegate
func userNotificationCenter(_ c: UNUserNotificationCenter, willPresent n: UNNotification,
                            withCompletionHandler done: @escaping (UNNotificationPresentationOptions) -> Void) {
    done(KnowDesk.shouldPresentInForeground(n.request.content.userInfo) ? [.banner, .sound] : [])
}
func userNotificationCenter(_ c: UNUserNotificationCenter, didReceive r: UNNotificationResponse,
                            withCompletionHandler done: @escaping () -> Void) {
    KnowDesk.handleNotificationTap(r.notification.request.content.userInfo)   // opens the chat
    done()
}

Signed-in users#

When your app knows who the customer is, tell KnowDesk. Their chat history then follows them to every phone, they're never asked for their name and email, and agents see who they are. To stop anyone pretending to be another user, your server signs the user id with the widget's identity secret (HMAC-SHA256, hex) and the app passes that signature on. Never put the secret in the app.

In the app, after sign-inKotlin / Swift
// Android
KnowDesk.identify(user.id, userHashFromYourServer, user.name, user.email)
// iOS
KnowDesk.identify(userId: user.id, userHash: userHashFromYourServer, name: user.name, email: user.email)

// on sign-out (forgets the chat on this device, stops its notifications)
KnowDesk.logout()
On your serverNode.js / PHP / Python
// Node.js
const userHash = crypto.createHmac("sha256", process.env.KNOWDESK_IDENTITY_SECRET).update(String(user.id)).digest("hex");

// PHP
$userHash = hash_hmac("sha256", (string) $user->id, getenv("KNOWDESK_IDENTITY_SECRET"));

# Python
user_hash = hmac.new(os.environ["KNOWDESK_IDENTITY_SECRET"].encode(), str(user.id).encode(), hashlib.sha256).hexdigest()

Push notifications#

When an agent replies in the Live Inbox, KnowDesk sends the notification with your app's own push keys, so it carries your app's name and icon. Add them in Widget Config → Mobile apps:

ServiceWhat to addWhere to find it
Firebase Cloud MessagingThe service-account JSON fileFirebase console → Project settings → Service accounts → Generate new private key
Apple Push NotificationsKey ID, Team ID, Bundle ID and the .p8 keyApple Developer → Certificates, IDs & Profiles → Keys → + (Apple Push Notifications service)

Open the chat once in your app with notifications allowed, then use Send a test notification. For iOS development builds, tick Development builds (sandbox); untick it for TestFlight and the App Store.

Unread badge and events#

Listen for repliesKotlin / Swift
// Android
KnowDesk.listener = object : KnowDeskListener() {
    override fun onUnreadCountChanged(count: Int) { helpBadge.isVisible = count > 0 }
    override fun onError(message: String) { Log.w("KnowDesk", message) }
}

// iOS - class MyHelp: KnowDeskDelegate { func knowDesk(unreadCountChanged count: Int) { ... } }
KnowDesk.delegate = self

White-label partners#

If your clients use your own domain, load the chat from it so your brand is used throughout: KnowDeskOptions(baseUrl = "https://help.yourdomain.com") on Android, KnowDeskOptions(baseURL: URL(string: "https://help.yourdomain.com")!) on iOS.

Analytics#

The Analytics page gives you a unified view of all support activity across every channel - AI widget conversations, escalated tickets, live agent replies, and inbound email threads - in one dashboard.

Key metrics#

Messages This Week
Total messages sent and received across all conversations in the last 7 days.
Resolution Rate
Percentage of conversations fully resolved by the AI without a human handoff. Higher is better - it means your knowledge base covers what customers ask.
Escalated
Conversations where the AI directed the user to a manager or human, including email inbound tickets.
Conversations
Total unique chat sessions and email threads opened this week across all channels.
Agent Replies
Number of messages your team has sent through the Live Inbox. Tracks how much human intervention is happening alongside the AI.
Email Tickets
Inbound email threads converted to tickets this week. Compare to widget conversations to understand channel preference.

Channel breakdown#

The channel breakdown shows how support volume is split between the widget, email inbound, and agent-handled conversations. Use this to understand which channels your customers prefer and where to focus knowledge base improvements.

Conversation history#

Every conversation is logged and viewable in full - widget chats, agent replies, and email threads all in one place. Click any row to expand it and read the full exchange. Filter by status (open / resolved / escalated) or by source (widget / email).

NEW

Escalation & Ticketing#

When the AI can't fully resolve a conversation, KnowDesk automatically escalates it - creating a ticket in your helpdesk provider, populating it with the full conversation, and syncing its status back to your dashboard in real time. No copy-paste, no manual triage.

Escalates to
FD
Freshdesk
Most popular helpdesk
ZD
Zendesk
Enterprise support
IC
Intercom
Conversational support
ZH
Zoho Desk
Zoho CRM ecosystem
✉
Email
Any email inbox
⚙
Webhook
Custom integrations

How escalation works#

1
User triggers escalation
The user clicks "Talk to a human" in the widget, or the AI detects the conversation needs a human (e.g. complaint, billing dispute, complex issue).
2
Ticket created automatically
KnowDesk calls your configured provider API (Freshdesk, Zendesk, Intercom, Zoho Desk, email SMTP, or your webhook URL) and creates a ticket. The full conversation transcript is included as the ticket description.
3
AI enriches the ticket
If enabled on your plan, AI generates a concise ticket subject and assigns a priority (low / normal / high / urgent) based on the conversation content - no manual triage.
4
Status syncs back
KnowDesk polls your provider for status updates. When the ticket moves to resolved or closed in Freshdesk/Zendesk/Intercom/Zoho Desk, your KnowDesk dashboard reflects that status automatically.

Tickets dashboard#

All escalated conversations appear in your Tickets dashboard. You can filter by status (open, pending, resolved, closed), date range, and provider. Click any row to read the full conversation transcript and see the AI-generated subject and priority.

OPENPENDINGRESOLVED12 tickets
Can't access my account after password reset
HIGHFDOpen
Request for invoice copy for March 2026
NORMAL✉Pending
Widget not loading on Webflow site
NORMALZDResolved

AI-powered ticket enrichment#

✦ AI ticket subject
AI reads the conversation and writes a concise, descriptive subject line - so your helpdesk team can triage at a glance without opening every ticket.
✦ AI priority detection
AI analyses urgency cues (complaint language, billing keywords, account access issues) and assigns low, normal, high, or urgent priority automatically.

Per-widget configuration#

On Growth plans and up, each widget can have its own escalation destination. For example, your Sales widget can escalate to Freshdesk while your Support widget escalates to Zendesk. Configure this in Widget Config → Escalation.

Two-way status sync#

KnowDesk automatically polls Freshdesk, Zendesk, Intercom, and Zoho Desk for ticket status changes and mirrors them in your Tickets dashboard. Click ⟳ Sync Status at any time for an immediate refresh.

Custom webhook#

The webhook destination sends a POST request to any URL you configure whenever a ticket is created or updated.

Webhook payloadJSON
{
  "event":       "ticket.created",
  "ticket_id":   "kd_tk_abc123",
  "subject":     "Can't access my account after password reset",
  "priority":    "high",
  "status":      "open",
  "user_name":   "Jane Smith",
  "user_email":  "[email protected]",
  "description": "User: I've been locked out...

AI: Let me help...",
  "created_at":  "2026-06-06T12:34:56Z",
  "widget_id":   "wdg_abc123",
  "company_id":  "cmp_xyz456"
}
NEW · EVERY PLAN

Live Agent Inbox#

The Live Agent Inbox lets your team reply to widget conversations in real time, directly from the KnowDesk dashboard. When a conversation is escalated - either because the customer asked to speak to a human, or because the AI could not find an answer - it lands in the Live Inbox and your agents can take over instantly.

Replies appear in the customer's chat widget immediately. No separate live chat tool, no new tab, no copy-pasting between systems.

Live Inbox3Refreshes every 15s
Jane Smith
I need help with my invoice
widget2m ago
Email from customer
email8m ago
Anonymous
My order hasn't arrived
widget14m ago
Jane Smith · widget · 2m ago
I need help with my invoice from last month
Hi Jane! I can help with that. Could you share the invoice number?
Type a reply... (Enter to send)

How it works#

1
Conversation escalated
The customer clicks 'Talk to a human' or the AI detects it needs human review. The conversation is marked escalated and appears in the Live Inbox.
2
Agent opens the thread
Your agent clicks the conversation in the left panel. The full message history appears on the right, including all prior AI and user messages.
3
Agent replies
The agent types a reply and presses Enter. The reply is delivered to the customer's widget in real time - no page refresh needed.
4
Customer sees it instantly
The reply appears in the widget as a message from 'Agent', clearly distinguished from AI messages. The conversation continues seamlessly.

Refresh rate#

The conversation list refreshes automatically every 15 seconds. When you have a conversation open, the message thread refreshes every 6 seconds to pick up new customer messages without you having to do anything.

Sources#

The Live Inbox shows conversations from two sources - widget (escalated chat conversations) and email (inbound email tickets). Each conversation shows a source label so your agents can tell at a glance which channel they are handling.

To ask a teammate for help on a conversation, coach an agent with whispered replies, or call the customer - free in the browser or on their phone - see Huddle.

NEW · INCLUDED WITH THE LIVE INBOX · EVERY PLAN

Huddle: Team Chat & Calls#

Huddle puts team chat, voice calls and customer calling inside the Live Inbox, so an agent never leaves a conversation to get help, talk a problem through with a colleague, or speak to the customer. Open it with the Huddle button at the top of the Live Inbox.

Team chat#

Team channel and direct messages
One channel for the whole workspace plus one-to-one messages, with unread counts, @mentions and presence: online, busy, away or on a call.
Get help
On any conversation, Get help opens a team thread linked to it, with a 3-line AI summary of the chat (who the customer is, the issue, what was tried). Whoever joins becomes a collaborator and is shown in the conversation header. The customer sees nothing.
Whisper replies
Owners, admins and QA leads watching a live chat can draft a reply only the agent sees. The agent inserts it with one click, edits it if needed, and sends it as their own.
@KnowDesk
Ask @KnowDesk a question in any thread - for example “what is our refund policy for sale items?” - and it answers from the workspace's knowledge base.
Translation
Team messages can be shown in each reader's dashboard language.
Notifications
In-app, desktop and sound alerts for mentions, help requests and calls. Do not disturb silences all of them.

When a conversation is resolved or closed, its help threads are marked solved. QA reviewers see the help threads and who joined, whispered or called on the conversation's review page (hidden in blind reviews).

Calls between teammates#

Start a free voice call from a direct message, a help thread or the Team channel. Calls run in the browser - there are no call charges - with mute, screen share, microphone and speaker choice, a call-quality indicator and a speaking ring on each person. A call keeps going while you move between dashboard pages. Ringing reaches teammates on any dashboard page; unanswered calls show a missed-call notice, and the thread gets a call log line with who joined and for how long.

Choosing the call engine#

In Widget Config → Calls (Huddle), owners and admins choose the engine for each widget's calls:

EngineWhat it isSet-up
Cloudflare Calls (default)Managed by KnowDesk, with a built-in relay (TURN) for strict office networks.Nothing to set up.
LiveKitYour own LiveKit server or LiveKit Cloud.Server URL (wss://…), API key and API secret. The secret is stored encrypted and never shown again.

Use Test connection to check the choice. Saving LiveKit details while Cloudflare is selected keeps them as a fallback: if a call can't connect, it offers to move everyone to the other engine. Tick Use for team calls on the widget whose engine staff-to-staff calls should use.

Calling customers#

Open a conversation in the Live Inbox and choose 📞 Call in its header.

Free call in the browser
Send a secure call link in the chat, by email (when the customer gave one), by text message from your KnowDesk number, or copy it. You wait in the call; the customer opens the link and joins from any modern browser with no account or app - a microphone check, the recording question if you record, then the call. The page uses your widget's brand colour and logo, in the customer's language. Each link works for one browser only and expires (30 minutes unless you change it).
“Call in browser” in your widget
Switch on Show “Call in browser” in the widget in Widget Config → Calls with customers. Visitors see it next to “Call us”; tapping it rings the agents who are online, and the first to answer takes the call and the conversation. When nobody can answer, the visitor is told and can keep chatting.
Call a phone number
Choose Call a phone number and enter it in international format. Before you dial, KnowDesk shows the destination country, its rate in wallet minutes, your caller ID (your workspace's KnowDesk number) and the minutes you have left, plus caller-ID rules for that country. The call runs in your browser; minutes are charged from your plan allowance, then the voice wallet, after the call. Premium-rate numbers are refused.

Voice AI hand-over to an agent's browser#

Agents who switch on Take phone calls in this browser in the Huddle panel receive Voice AI hand-overs: when the AI decides a caller needs a person, it rings an online agent's browser with the AI's briefing on screen, before trying your forwarding number. The tab needs to stay open to receive calls.

AI on calls, recording and consent#

Setting (Widget Config → Calls with customers)What it doesDefault
Live transcript, suggested answers and call summaryTranscribes both sides as people speak, suggests answers from your knowledge base on the agent's screen, and after the call saves a summary and a QA score to the conversation as an internal note.On
Record callsRecords both sides. Owners, admins, QA and the agents on the call can play recordings from the conversation's call history and the QA review page.Off
Keep recordings (days)Recordings are deleted automatically after this many days (1-365).30
Call links expire after (minutes)How long an unopened call link stays valid (5-1440).30

Nothing is recorded or transcribed until the customer agrees. On a browser call they answer a question on the call page; on a phone call a spoken notice plays when they answer and the agent confirms the reply. If the customer says no, the call goes ahead without recording or transcript, and the conversation shows “Not recorded”.

NEW · GROWTH, SCALE & ENTERPRISE

Omnichannel - WhatsApp, Messenger, Instagram, Slack & Telegram#

Omnichannel lets customers reach you on the messaging apps they already use - WhatsApp Business, Facebook Messenger, Instagram, Slack, and Telegram - while your team answers everything from the single Live Agent Inbox. Inbound messages land in the same place as widget chats and email tickets, and every reply your team sends routes back automatically to the exact channel the customer wrote from - just like email. There is also a hosted WebChat page you can share as a plain link, with nothing to embed.

How it works#

1
Customer messages a connected channel
The customer sends a message to your WhatsApp Business number, your Telegram bot, your Facebook Page, an Instagram DM, a connected Slack channel, or your hosted WebChat link.
2
KnowDesk receives it and opens a conversation
The channel's webhook delivers the message to KnowDesk, which creates (or continues) a conversation in your Live Inbox. Each conversation carries a channel label - telegram, whatsapp, messenger, instagram, slack, webchat - so agents know at a glance where it came from.
3
The AI answers instantly
The same AI that powers your website widget replies from your knowledge base, and can run order lookup, collect escalation details, and follow your agent playbooks. If it cannot answer, or the customer asks for a human, the conversation is escalated.
4
Your reply routes back to the original channel
An agent replies from the Live Inbox (or the AI answers directly). KnowDesk delivers that message back through the exact channel it arrived on - the customer never has to leave WhatsApp, Telegram, Instagram, or wherever they started.

Supported channels#

Telegram
Growth+
Connect a Telegram bot in about a minute with a token from @BotFather.
Hosted WebChat
Growth+
A public chat page at knowdesk.io/chat/your-slug - share it as a direct link, no embed needed.
WhatsApp Business
Scale+
Two-way messaging on your WhatsApp Business number via the Meta connection.
Slack
Scale+
Bring customer or internal requests in from a Slack channel; replies post back to the thread.
Facebook Messenger
Enterprise
Messenger conversations from your Facebook Page arrive in the shared inbox.
Instagram
Enterprise
Answer Instagram DMs for the Professional account linked to your Page.

Email is also a channel in the same inbox - see Email Inbound for its setup.

Connecting a channel#

Every channel is configured per widget. Open Dashboard → Widgets → your widget → Omnichannel, then connect the channels you want. Connect once and the channel works everywhere that widget is embedded.

Telegram

  1. In Telegram, open @BotFather and send /newbot. Give the bot a name and username.
  2. BotFather replies with an HTTP API token (looks like 123456:ABC-DEF...). Copy it.
  3. In the KnowDesk Omnichannel card, click Connect next to Telegram.
  4. Paste the token and click Connect. KnowDesk registers the webhook and shows the bot username as the connection label.

WhatsApp, Messenger & Instagram (via Facebook)

  1. In the Omnichannel card, click Connect via Facebook.
  2. Sign in with the Facebook account that manages your Page / WhatsApp Business account and grant the requested permissions.
  3. Back in KnowDesk, choose which assets to attach to this widget: a Facebook Page for Messenger, an Instagram account, and/or a WhatsApp number.
  4. Click Confirm. KnowDesk subscribes each channel's webhook and the rows show as connected.

Slack

  1. Click Connect next to Slack in the Omnichannel card.
  2. Authorize the KnowDesk app in your Slack workspace and pick the channel to link.
  3. Messages posted in that channel become conversations in the Live Inbox; agent replies post back into the same Slack thread.

Hosted WebChat

  1. Click Enable next to WebChat.
  2. KnowDesk generates a public page at knowdesk.io/chat/your-slug.
  3. Share that link anywhere - an email signature, a QR code, a social bio, a support article. No website or embed code required.

How replies route back#

KnowDesk records the origin channel on every conversation. When the AI or an agent sends a message, it is delivered back through that same channel using the stored credentials - Messenger replies go to Messenger, Telegram replies go to Telegram, and so on. If a provider rejects a delivery (for example, WhatsApp's 24-hour customer-service window has closed), the failure is surfaced in the Live Inbox rather than failing silently.

Benefits#

  • One inbox for everything - agents handle every channel in one screen, with no app-switching and no lost context.
  • The same AI on every channel - knowledge-base answers, order lookup, escalation, and QA reviews all work identically no matter where the customer wrote from.
  • No friction for customers - people stay in the app they already use and get replies there natively.
  • Per-widget control - connect a channel to one widget or brand without affecting any other widget.
  • Full history and analytics - every channel conversation is logged, searchable, and included in analytics with a per-channel breakdown.
NEW · GROWTH, SCALE & ENTERPRISE

Order Lookup - Stripe, Shopify & Paystack#

Connect your payment processor or e-commerce store and the AI widget will be able to look up order and payment details directly in the chat. When a customer asks "where is my order?" or "was my payment processed?", the AI queries your connected platform in real time and shares the details - no human needed.

💳
Stripe
Looks up charges, payment intents, and subscriptions by email or charge ID. Ideal for SaaS businesses.
🛍️
Shopify
Looks up orders by customer email or order number. Returns status, fulfilment, tracking info, and line items.
🌍
Paystack
Looks up transactions and subscriptions by email or reference. Ideal for businesses serving African markets.

Connecting a platform#

  1. Go to Commerce Integrations in your dashboard navigation
  2. Click Connect next to the platform you want to add
  3. Enter your API credentials:
    • Stripe - Secret Key (starts with sk_live_)
    • Shopify - Store domain (e.g. mystore.myshopify.com) + Admin API token
    • Paystack - Secret Key (starts with sk_live_)
  4. Click Save. KnowDesk stores credentials encrypted and uses them for order lookups only.

How order lookup works in the chat#

Once connected, the AI automatically detects when a customer is asking about an order or payment. It then:

1
Asks the customer for their email address or order number
2
Queries your connected platform(s) in real time
3
Presents the order details - status, date, amount, items, tracking - directly in the chat

Security#

Your API credentials are stored encrypted in KnowDesk's secure storage. They are never exposed to the customer, logged in conversation history, or returned in any widget response. The lookup happens server-side on your Cloudflare Worker.

NEW · EVERY PLAN

Email Inbound - Support Emails as Tickets#

Email Inbound automatically converts every email your customers send to your support address into a ticket in the KnowDesk dashboard. The sender gets an instant acknowledgement. Your team handles everything from the Live Inbox. Nothing gets lost.

Email flow
✉️Customer emails [email protected]
→
📬Forwarded to KnowDesk inbound address
→
🎫Ticket created · Auto-reply sent · Appears in Live Inbox

Your inbound address#

Each widget has a unique inbound address in this format:

TEXT
inbound+{your_widget_api_key}@knowdeskio-workers.com

Find your full inbound address in Integrations → Email Inbound in your dashboard.

Setting up forwarding#

Gmail / Google Workspace
Settings → Forwarding and POP/IMAP → Add a forwarding address. Enter your KnowDesk inbound address and confirm with the verification code.
Outlook / Microsoft 365
Settings → Mail → Forwarding → Enable forwarding. Paste your KnowDesk inbound address.
Custom domain (DNS)
Add a forwarding rule in your email hosting control panel to route support@ (or any address) to your KnowDesk inbound address.

What happens when an email arrives#

→
Ticket created
KnowDesk parses the sender's name, email, and message body and creates a support ticket in your dashboard.
→
Auto-reply sent
The sender immediately receives: "We've received your message and created a support ticket - our team will be in touch shortly."
→
Appears in Live Inbox
The ticket shows up in the Live Inbox with a source label of 'email', alongside any widget escalations.
→
Agent replies
Your team reads the message and replies from the Live Inbox. The reply is sent to the customer's email address.

Workflow Automation#

Workflows let you automate support processes without code. Each workflow starts from a trigger - a chat intent, a live-call event, a QA outcome, a resolved conversation, or a manual run - then walks through paths of steps on a visual canvas, branching on any field the trigger or an earlier step produced. Steps call ready-made blocks: order lookups, returns, tickets, win-back emails, SLA checks, warm call transfers, custom webhooks and more.

You’ll find everything under Dashboard → Workflows, which has three tabs: Rules, Block Library and My Workflows.

Example · Refund request from chat

  1. TriggerChat intent · Return request
  2. ActionLook up order status
  3. Branchfound = true?
    1. YesActionStart a return / RMA
    2. ElseActionCreate a ticket for a human

Core concepts#

Trigger
What starts a run: a chat intent rule, a live-call event, a QA outcome, a resolved conversation, or a manual/test run.
Path
A box on the canvas holding an ordered list of steps. Every workflow has one entry path where the run begins.
Step
Either an action (calls a block) or a delay (waits up to 10 minutes). Steps in a path run top to bottom.
Branch
A connection from one path to the next. It can carry a condition, or be the “else” branch used when no condition matches.
Block
A reusable action from the Block Library - 42 blocks across 11 categories, each available on specific plans.
Run
One execution of a workflow. Every run is recorded with the status and output of each step.

The three tabs#

TabWhat it's for
RulesThe six chat-intent rules that detect what a customer is asking - order status, returns & refunds, carrier claims, address changes, wholesale inquiries and frustration/escalation. Each rule has editable trigger phrases (with * wildcards) you can tune or reset to defaults, plus a feed of recent activity.
Block LibraryEvery action a workflow can call, grouped by category, with a clear note of which plan each one needs.
My WorkflowsCreate workflows from a template or from scratch, build them on the canvas, test them safely, take them live and review their run history.

Triggers#

TriggerFires whenOptions
Chat intentA customer message matches one of your RulesOrder status question · Return request · Carrier claim · Address change · Wholesale inquiry · Frustrated / escalation
Live call eventSomething happens on a Voice AI callCall answered · ID verification passed or failed · Call running long · Voicemail reached
QA outcomeA QA review reaches an outcomeReview auto-fails
Conversation resolvedA conversation is marked resolved-
ManualYou run it yourself from the dashboardIdeal for testing or one-off jobs
Good to know
Chat rules cover every chat channelWebsite widget, WhatsApp, Messenger, Instagram, Slack, Telegram - and new inbound emails, which are checked against the same rules.
Once per conversationA workflow runs at most once per conversation, so a customer repeating themselves doesn’t trigger it again and again.
Manual means manualA Manual workflow never runs on its own and receives no conversation data - pick a trigger under “Name, status & trigger” for it to run on real chats or calls.
Change the trigger any timeUse the “Runs when” picker on the workflow - no need to rebuild it.

Build your first workflow#

Open My Workflows
Go to Dashboard → Workflows → My Workflows.
Start from a template or from scratch
Pick a ready-made template (see below), or create a blank workflow and choose its trigger - a chat intent, a call event, a QA outcome, conversation resolved, or manual.
Add steps to the entry path
On the canvas, add action steps (choose a block) and optional delay steps. Fill in each block’s settings - required ones are flagged, and common values are suggested for you.
Add more paths and connect them with branches
Drag new paths anywhere on the canvas. Connect a path to the next with a branch: give it a condition, or make it the “else” branch. Lines between paths appear once you pick a path as a branch target.
Use live data in messages
Click the field chips under any text setting to insert {{field}} placeholders - they’re filled in from the trigger and earlier steps when the workflow runs.
Test & verify
In Test & verify, run a Connection check (is every step connected?) and a Simulate run (does it take the right path?). Nothing is sent by either. Your canvas is saved automatically before each run - see Test & verify.
Go live and monitor
Click Go live. Every run appears in Run history with its status and step-by-step output. Use Pause, Resume or Archive at any time.

Branches and conditions#

When a path finishes its steps, its branches are checked in order. The first branch whose condition matches wins; if none match, the else branch is used; if there’s no else branch, the run ends. A path can have any number of branches (switch/case style), and several branches can lead back into the same path.

OperatorMatches when
equalsThe field's value equals the value you enter (compared as text).
not_equalsThe field's value is anything other than the value you enter.
existsThe field has a value (not empty, null or missing).
not_existsThe field is empty, null or missing.
containsThe field is text that includes your value - case-insensitive.

Conditions can read nested fields with dot paths, for example order.status or summary.total_conversations. The field picker suggests every output a block really returns, and where a field has known values (such as true / false), those are suggested too.

Templating with {{field}}#

Any text setting can include placeholders. When the step runs, each {{field}} is replaced with that value from the trigger or an earlier step - dot paths work here too. If a value doesn’t exist, the placeholder is left as-is so you can spot it in Run history.

Example message settingtext
Hi {{customer_name}}, your order {{order.id}} is {{order.status}}.
We've opened ticket {{ticket_id}} and will update you within 24 hours.

Built-in fields reference#

Every run carries a context: the fields its trigger supplies, plus everything each block returns as it finishes. Branch conditions and {{field}} placeholders read from it. These are the fields you can rely on.

From the trigger

Chat intent - widget, WhatsApp, social and inbound email:

FieldWhat it meansValues / example
conversation_idThe conversation that matched the rule. Steps use it to read the chat and update it.e.g. 3f2a9c1e-…
channelWhere the chat came from — branch on it to route by source.widget · email · whatsapp · messenger · instagram · slack · telegram · voice
messageThe customer message that matched the rule (for email: the email body).e.g. Where is my order?
matched_textThe text or phrase that matched the rule.e.g. where is my order
triggerWhich chat rule fired.wismo · returns · claims · edit · wholesale · urgency
customer_emailThe customer’s email, when the conversation has one.e.g. [email protected]
emailSame as customer_email — some blocks (e.g. order lookup) read this name.e.g. [email protected]
customer_nameThe customer’s name, when known.e.g. Jane Smith

Live call event (Voice AI):

FieldWhat it meansValues / example
call_idThe Voice AI call that raised the event.e.g. call_7c21…
toThe caller’s phone number — used by Send a follow-up SMS.e.g. +15555550123
customer_emailThe caller’s email, when identified.e.g. [email protected]
customer_nameThe caller’s name, when identified.e.g. Jane Smith
resultOnly on “ID verification passed or failed”: the outcome of the check.e.g. passed

QA outcome:

FieldWhat it meansValues / example
review_idThe review that auto-failed — Flag for coaching and Notify the QA manager use it.e.g. rev_31c8…
conversation_idThe conversation that was reviewed.e.g. 3f2a9c1e-…
agent_nameThe agent whose conversation was reviewed.e.g. Sam Rivera
overall_scoreThe review’s overall score (0–100).e.g. 41

Conversation resolved:

FieldWhat it meansValues / example
conversation_idThe conversation that was resolved.e.g. 3f2a9c1e-…
channelWhere the conversation came from.widget · email · whatsapp · messenger · instagram · slack · telegram · voice
customer_emailThe customer’s email, when known.e.g. [email protected]
customer_nameThe customer’s name, when known.e.g. Jane Smith

Manual:

A manual run supplies no fields - only what you enter in the test console’s Test data.

Channel values

channelWhere the chat came from
widgetYour website chat widget
emailA new inbound email
whatsappWhatsApp Business
messengerFacebook Messenger
instagramInstagram DMs
slackSlack
telegramTelegram
voiceA Voice AI phone call

From blocks (available after the step runs)

When a step finishes, its result merges into the context - a later step or branch can use these. Where a field only ever takes certain values, they’re listed (and the branch editor suggests them).

Support & Tickets

BlockFieldWhat it meansValues
Look up order statusokSucceededtrue · false
foundOrder foundtrue · false
File a carrier claimokSucceededtrue · false
statusClaim statusfiled
platform_note_writtenPlatform note writtentrue · false
Edit order addressokSucceededtrue · false
updatedAddress updatedtrue · false
Start a return / RMAokSucceededtrue · false
statusReturn statusapproved · initiated
auto_approvedAuto-approvedtrue · false
Route a wholesale inquiryokSucceededtrue · false
ticket_createdTicket createdtrue · false
Triage for escalationokSucceededtrue · false
decisionDecisioncontinue · escalate · priority_escalate
escalatedEscalatedtrue · false
priorityPrioritylow · normal · high · urgent

Email & Retention

BlockFieldWhat it meansValues
Send welcome emailokSucceededtrue · false
sentEmail senttrue · false
Send cart recovery emailokSucceededtrue · false
sentEmail senttrue · false
Send post-purchase surveyokSucceededtrue · false
sentEmail senttrue · false
Send win-back emailokSucceededtrue · false
sentEmail senttrue · false
Score churn riskokSucceededtrue · false
risk_scoreRisk score (0-100)Text / number
risk_levelRisk levellow · medium · high
factors.days_since_last_purchaseDays since last purchaseText / number
factors.order_countOrder countText / number
factors.total_spentTotal spentText / number
Tag VIP customersokSucceededtrue · false
segmentSegmentVIP · Loyal · At Risk · Dormant · New
metrics.order_countOrder countText / number
metrics.total_spentTotal spentText / number
send_time_recommendation.timeRecommended send timeText / number
Review campaign performanceokSucceededtrue · false
overallOverallon_track · needs_attention · underperforming
metrics.open_rateOpen rate %Text / number
metrics.click_rateClick rate %Text / number
metrics.unsub_rateUnsubscribe rate %Text / number
benchmark_flags.lengthNumber of benchmark flagsText / number

Ops & Reporting

BlockFieldWhat it meansValues
Pull performance snapshotokSucceededtrue · false
summary.total_conversationsTotal conversationsText / number
summary.team_csat_avgTeam CSAT averageText / number
summary.agents_activeActive agentsText / number
Check SLA breachesokSucceededtrue · false
summary.total_checkedConversations checkedText / number
breached.lengthNumber of breachesText / number
compliant.lengthNumber compliantText / number
Send weekly reportokSucceededtrue · false
Forecast staffing needsokSucceededtrue · false
analysis.avg_daily_ticketsAvg daily ticketsText / number
analysis.weekly_trendWeekly trendText / number
analysis.trend_pctTrend %Text / number

Content & Brand

BlockFieldWhat it meansValues
Check copy against brand guidelinesokSucceededtrue · false
approvedApprovedtrue · false
scoreCompliance score (0-100)Text / number
Check image against brand guidelinesokSucceededtrue · false
approvedApprovedtrue · false
scoreCompliance score (0-100)Text / number
Review ad copyokSucceededtrue · false
approvedApprovedtrue · false
QA a product listingokSucceededtrue · false
approvedApprovedtrue · false
scoreQuality score (0-100)Text / number
QA a translationokSucceededtrue · false
approvedApprovedtrue · false
scoreQuality score (0-100)Text / number
Check user-generated contentokSucceededtrue · false
compliantComplianttrue · false
actionActionapprove · flag · remove
sentimentSentimentpositive · neutral · negative · mixed
Review an email templateokSucceededtrue · false
approvedApprovedtrue · false
Audit brand voice driftokSucceededtrue · false

Mission Control

BlockFieldWhat it meansValues
Pull cross-platform overviewokSucceededtrue · false
knowdesk.conversations_totalTotal conversationsText / number
knowdesk.conversations_openOpen conversationsText / number
knowdesk.sla_breachedSLA breachesText / number
knowdesk.csat_avgCSAT averageText / number
Scan for anomaliesokSucceededtrue · false
metrics.current.volumeCurrent 7d volumeText / number
metrics.current.csat_avgCurrent 7d CSATText / number
metrics.current.sla_breach_rateCurrent SLA breach rateText / number
metrics.previous.volumePrevious 7d volumeText / number
Attribute revenueokSucceededtrue · false
attribution.conversations_resolvedConversations resolvedText / number
attribution.ecommerce_conversationsEcommerce conversationsText / number
attribution.estimated_revenue_at_risk.centsRevenue at risk (cents)Text / number
Fetch a department playbookokSucceededtrue · false
departmentDepartmentText / number

Vertical AI

BlockFieldWhat it meansValues
Search vertical dataokSucceededtrue · false
Write back a bookingokSucceededtrue · false
Look up ecommerce order (vertical)okSucceededtrue · false
Start ecommerce return (vertical)okSucceededtrue · false
Look up a transactionokSucceededtrue · false

Fintech

BlockFieldWhat it meansValues
Run a fintech taskokSucceededtrue · false
raw_statusUpstream HTTP statusText / number

Escalation

BlockFieldWhat it meansValues
Escalate & create ticketokSucceededtrue · false
ticket_idTicket IDText / number
priorityPrioritylow · normal · high · urgent
providerProviderText / number

Voice AI (calls)

BlockFieldWhat it meansValues
Send a follow-up textokSucceededtrue · false

QA

BlockFieldWhat it meansValues
Notify the QA managerokSucceededtrue · false
Flag for a coaching sessionokSucceededtrue · false

When is a field available?#

A field exists from the moment it’s created: trigger fields from the start, block fields only after that block’s step finishes. A placeholder for a field that doesn’t exist yet stays as written - for example {{ticket_id}} inside the very step that creates the ticket. The Connection check flags these: “only a later step creates it” or “this step is what creates it”.

You wantDo this
The new ticket’s ID in a Slack alertPut {{ticket_id}} in the Slack webhook step that runs after the ticket step.
A field from an earlier step in a branchBranch from the path that ran that step (or any path after it) - branches are checked once a path’s steps finish.
A value for testing that the trigger can’t supplyAdd it in Test data → Extra fields, e.g. {"priority": "urgent"}.

A step’s own settings always win over context fields with the same name - so an escalation step’s message setting is what gets sent, even though a chat trigger also carries the customer’s message.

Route by channel#

Steps in a path always run top to bottom, so to do something different per channel, branch on channel. Example: hand website chats to the Live Inbox, but turn emails into a help-desk ticket - and alert Slack only for urgent cases.

PathStepsBranches (first match wins)
Path 1Triage for escalationdecision equals continue → End · channel equals email → Email path · else → Path 2
Path 2Escalate & create ticket, type = live_chatpriority equals urgent → Path 3 · else → End
Email pathEscalate & create ticket, type = ticketpriority equals urgent → Path 3 · else → End
Path 3Call a custom webhook (Slack)-

Delays#

Add a delay step to wait before the next action - for example, a short pause before a follow-up. Delays are capped at 10 minutes per step. On live-call workflows, delay steps are skipped so callers never hear dead air.

Ready-made templates#

TemplateTriggerWhat it does
Auto-resolve order statusOrder status questionLooks up the order; if nothing is found, opens a ticket instead of leaving the customer stuck.
Frustrated customer → humanFrustrated / escalationRuns AI triage and escalates to a real ticket whenever it decides not to continue.
Damaged item → filed claimCarrier claimFiles the carrier claim, then opens a ticket so a human tracks it to resolution.
Wholesale inquiry routingWholesale inquiryRoutes the B2B inquiry and opens a ticket for your sales team.
Return / RMA kickoffReturn requestStarts the return; if policy blocks it, opens a ticket for manual review.
QA auto-fail → notify & flagReview auto-failsEmails the QA manager and flags the conversation for coaching.
Resolved conversation → win-back listConversation resolvedFeeds the customer into your win-back email flow (exploratory).

Custom webhooks (Slack, Teams or your own API)#

The Call a custom webhook block connects a workflow to anything that isn’t pre-built. It sends an HTTPSPOST with a JSON body containing the step’s own settings plus everything the trigger and earlier steps supplied.

Create an incoming webhook
In Slack, create an app with Incoming Webhooks enabled and copy its URL (it starts with https://hooks.slack.com/services/). Microsoft Teams and most tools offer the same.
Add the block and paste the URL
Add a Call a custom webhook step and paste the URL into Webhook URL.
Add the message as a setting
Slack reads a field called text, so add a setting named text and write your message with placeholders.
What Slack receivesjson
{
  "text": "🔔 Refund request from {{customer_email}} - order {{order.id}} is {{order.status}}",
  "customer_email": "[email protected]",
  "order": { "id": "4821", "status": "delivered" }
}

Escalate & create ticket: Live Inbox or help-desk ticket#

type settingWhat happens
live_chatHands the conversation to your Live Inbox. No help-desk ticket is created and no ticket_id is returned.
ticket (or any other value)Creates a ticket in your connected help desk (Email, Freshdesk, Zendesk, Intercom, Zoho or Webhook) with the conversation attached; returns ticket_id, priority and provider.

Want both? Add the step twice in the same path - live_chat first, then ticket - or route by channel (above).

Your message becomes an internal note
The step’s message setting is added to the conversation as an internal note from “Workflow” - never shown as something the customer said.
Closed conversations go back to the Queue
Escalating a closed or resolved conversation clears the previous agent and puts it back in the Queue.
Ticket integrations are per widget
A ticket uses the help desk connected to the widget the chat came in on. Connect it for every widget that should create tickets - the Connection check lists which widgets are covered.
AI subject & priority
On plans with AI priority, the ticket’s subject and priority are set by AI from the conversation.

Workflows on live calls#

Call-event workflows run inside the live call, so they can act on it directly with three Voice AI blocks: warm transfer to a human with a briefing, end the call, and send a follow-up SMS.

Call eventHow it runs
Call answeredIn the background - the conversation continues immediately.
ID verification passed or failedWaited on briefly, so a warm transfer can happen before the call moves on. Your existing verification handling always runs as normal.
Call running longIn the background.
Voicemail reachedIn the background.

Test & verify#

Every workflow has a Test & verify console with three modes. Your canvas is saved automatically before each run, and the execution log replays each step - click any line to inspect it in Step output.

ModeWhat it doesSends anything?
SimulateWalks your workflow with the test data - branches are evaluated for real, and each action shows the exact payload it would send.No
Connection checkChecks every step on every path can really run: plan access, store connection, active widget, help-desk integration per widget, server setup, webhook address (HTTPS and the domain resolves), fields that won’t be filled, trigger switched on. Each problem comes with a “How to fix”. Result: Ready, Warnings or Not ready.No - not even recorded as a run
Live runReally runs every step - tickets, emails, Slack posts and store updates happen. Only for Live workflows, and it asks you to confirm.Yes

Test data

The form matches your trigger. For chat rules it shows whether your message fires the rule, using your real phrases. Other fields:

Channel
Pretend the chat came from widget, email, whatsapp… to test channel branches.
Conversation ID (optional)
Paste a real conversation ID from the Live Inbox to test with its full chat. Left empty, your test message is used as the conversation.
Extra fields
Any other values as JSON, e.g. {"priority": "urgent"} to send a Simulate run down your urgent branch. In a Live run, block results replace these.

Every simulation and live run is also listed in Run history with a Test or Live badge, its status and each step’s output.

Limits and safety#

GuardrailLimit
Actions per company20 per minute across all workflows
Actions per run25
Delay per step10 minutes
Paths visited per run200 (protects against accidental loops)
Custom webhookHTTPS only · 8-second timeout · 100 KB response recorded
Plan accessRe-checked every time an action runs, not only when you save

Troubleshooting#

ProblemWhat to check
My workflow never firesMake sure its status is Live. For chat intents, check the matching rule's trigger phrases in the Rules tab cover how your customers phrase it.
A step shows “blocked”That block needs a plan your workspace isn't on, or the per-minute action limit was reached. Check the Block Library for plan requirements.
The wrong branch ranBranches are checked in order and the first match wins. Open the run in Run history to see the values each condition saw.
My webhook failedConfirm the URL is https and reachable, responds within 8 seconds, and returns a 2xx status.
A placeholder wasn't replacedThe field didn't exist at that point in the run. Check the spelling and dot path, and that an earlier step actually returns it.
“No URL set for this webhook”The webhook needs a setting named url (left box) with the https address as its value (right box). Typing the address into the name box is a common slip - the Connection check spots it.
It never runs on real chatsCheck the trigger isn’t Manual, the workflow is Live, and the chat rule is switched on in Rules. Run the Connection check.
{{conversation_id}} is never filledManual workflows have no conversation. Pick a chat, call, QA or resolved-conversation trigger.
“No ticket integration configured”The help desk isn’t connected for the widget the chat came in on. Connect it for that widget in Widget Config → Escalation & ticketing.
My urgent branch never runspriority is set by the triage AI from the conversation. Use Simulate with {"priority": "urgent"} in Extra fields to check the routing.
Triage fails with “transcript or conversation_id required”The run has no conversation. Real chat runs always have one; for tests, leave Conversation ID empty and enter a message - it’s used as the transcript.
QUALITY ASSURANCE

QA Reviews - Agent Quality Scorecard#

KnowDesk's built-in QA module lets you score any support conversation across 9 weighted attributes, run calibration sessions to align your QA team, and give every agent a private coaching portal - all without a separate tool. It is designed to replace ad-hoc spreadsheet reviews with a structured, auditable, data-driven process.

⭐
9-attribute scorecard
structured scoring per conversation
⚖️
Calibration sessions
inter-reviewer alignment & resolution
🎯
Agent coaching portal
private self-view with coaching insights
🤖
Smart Queue
AI-prioritised conversation sampling

The 9 QA Attributes#

Every review scores the following attributes on a 1–5 scale. Each can be independently weighted, have auto-fail enabled, or be disabled entirely from the Settings tab.

ATTRIBUTEWHAT IT MEASURESCAN BE N/A
Empathy & ToneHow well the agent acknowledged the customer's situation and matched the appropriate emotional registerNo
Problem ResolutionWas the customer's core issue actually resolved or meaningfully progressed?No
Response AccuracyWere the answers factually correct and aligned with company policy?No
Communication ClarityWas the agent's language clear, concise, and free of jargon?No
Response TimelinessDid the agent respond within expected SLA windows?Yes
Escalation HandlingWas escalation to human or other channels handled correctly and without delay?Yes
Policy ComplianceDid the agent follow company policies, scripts, and legal/compliance guidelines?No
Proactive AssistanceDid the agent anticipate follow-up needs and offer additional relevant help?No
Documentation QualityWere internal notes, ticket fields, and tags completed accurately?Yes

Score scale#

1
Poor
2
Needs Work
3
Acceptable
4
Good
5
Excellent

How to start a QA review#

Open the QA queue
Go to Dashboard → QA Reviews → Queue. You will see all escalated conversations that have been handled by live agents. Toggle Smart Queue to automatically surface high-priority conversations (negative sentiment, new agents, random 10% sample).
Start or continue a review
Click Start Review next to any conversation. KnowDesk opens the scorecard - the full conversation transcript on the left, the 9-attribute scoring panel on the right. The AI pre-fills suggested scores with reasoning; you can accept, override, or mark attributes as N/A.
Score and annotate
For each attribute, choose a score from 1–5 (or N/A). Optionally add a reviewer note per attribute and an overall coaching note for the agent. The overall score is computed as a weighted average across enabled attributes.
Submit the review
Click Submit Review. The status changes from draft to submitted. The agent is notified of their new score and can view it in their coaching portal. If you chose to add a coaching note, it is highlighted in their view.

Smart Queue - AI-prioritised sampling#

Enable Smart Queue from the toggle in the Queue tab. KnowDesk scores each conversation across four risk signals and surfaces the most important ones first:

⚠ Negative SentimentConversations containing words indicating frustration, urgency, or complaint (e.g. furious, unacceptable, never again, terrible)
🆕 New AgentAgent who has fewer than 3 submitted QA reviews - higher coaching value for early reviews
🎲 Random Sample10% of all conversations sampled randomly to ensure unbiased coverage
📋 UnreviewedAny conversation with no existing QA review whatsoever

Calibration Sessions#

Calibration ensures your QA reviewers are scoring consistently. In a calibration session, a second reviewer scores the same conversation independently - KnowDesk then computes a per-attribute and overall inter-reviewer agreement rate. A QA Lead (or admin/owner) resolves any differences and sets the final agreed scores.

Agreement rate calculation

SCORE DIFFERENCEAGREEMENT RATE
Exact match (diff = 0)100%
Off by 175%
Off by 250%
Off by 3 or more25%

The overall agreement rate is the average across all non-N/A attribute pairs. ≥80% is considered strong, 60–79% moderate, below 60% divergent and requires discussion before resolution.

Starting a calibration review

  1. Go to QA Reviews → Queue
  2. Find a conversation that already has a submitted review
  3. Click Calibrate next to that conversation
  4. A second draft review is created with the is_calibration flag
  5. A second QA reviewer opens the conversation and scores it independently - without seeing the first reviewer's scores
  6. After submission, a QA Lead navigates to QA Reviews → Calibration and clicks Compare & Resolve

Resolving a calibration session

On the calibration comparison page, the QA Lead sees Reviewer A scores and Reviewer B scores side by side for every attribute. For attributes where scores differ, quick-pick buttons let you Use A, Use B, or Average with one click. A resolution note documents the rationale. On submission, the original review's final scores are updated and the calibration review is marked resolved.

Agent Coaching Portal#

Every team member with the Member role gets a personal QA Scores page at /dashboard/qa/my-scores. This private portal shows all their submitted QA reviews, per-attribute score averages, coaching notes from reviewers, and an "Areas to Focus On" panel highlighting their three lowest-scoring attributes.

Agents are notified on their dashboard home when new unviewed QA reviews are waiting. The notification clears automatically once they visit their coaching portal. No email setup required - the notification is in-product.

QA Settings - Weights, Auto-Fail & Attribute Configuration#

Admin, owner, and QA Lead roles can configure the scorecard from QA Reviews → Settings. Three controls are available per attribute:

Weight (0–3)Controls how much this attribute contributes to the overall score. A weight of 2 makes the attribute twice as impactful as one with weight 1. Set to 0 to exclude from score calculation while keeping it visible.
Auto-FailIf enabled and the agent scores 1 (Poor) on this attribute, the entire review is automatically flagged as a compliance fail - regardless of other scores. Use for policy-critical attributes like Policy Compliance.
EnabledDisabled attributes are hidden from the scorecard entirely and excluded from all score calculations. Toggle this off for attributes not relevant to your team's workflow.

QA Analytics & Weekly Reports#

The Analytics tab inside QA Reviews shows aggregate metrics across all submitted reviews: total reviews, average QA score, open disputes, auto-fail count, agent leaderboard sorted by score, attribute performance heatmap (average score per attribute), and a weekly score trend chart.

Admin, owner, and QA Lead roles can click Send Weekly Report to generate a styled HTML email report covering the last 7 days - agent leaderboard, attribute averages, score trends - and preview it before sending. The report is logged in the qa_report_logs table for audit purposes.

Roles and QA access#

ROLESCORE CONVERSATIONSCALIBRATIONSETTINGS & REPORTSAGENT COACHING PORTAL
Owner✓✓ + resolve✓-
Admin✓✓ + resolve✓-
QA Lead✓✓ + resolve✓-
QA✓Score onlyView only-
Member---✓

Team Management#

Add your colleagues so they can access the dashboard. Each team member gets a role that controls what they can see and do.

Roles#

AdminFull access - can edit widget, knowledge sources, team members, billing, and all QA features including calibration resolution and template configuration.
QA LeadQuality Assurance Lead - all QA access plus calibration session resolution, QA template configuration (weights, auto-fail rules), and weekly report generation.
QAQuality Assurance - can score conversations, submit reviews, view analytics, and raise disputes. Cannot configure templates or resolve calibration sessions.
MemberSupport agent - can view dashboard, analytics, and their personal QA score coaching portal (/dashboard/qa/my-scores). Cannot change settings or billing.
ViewerRead-only access to conversations and analytics only.

Inviting a team member#

  1. Go to Team in your dashboard
  2. Click + Invite Member
  3. Enter their email address and choose their role
  4. Click Send Invite
  5. They receive a magic link by email - clicking it creates their account and gives them access

Billing & Plans#

All plans include a 7-day free trial. Toggle between monthly and annual pricing below - annual saves 20%.

MonthlyAnnual save 20%

Managing your subscription#

Billing is handled by Stripe. To upgrade, downgrade, or cancel - go to Billing → Manage Billing. This opens the Stripe customer portal where you can update your plan, payment method, or download invoices.

Shopify billing#

Merchants who install KnowDesk via the Shopify App Store are billed through Shopify's native billing system - not Stripe. Plan selection happens in the Shopify app on first install. To upgrade or cancel, manage app subscriptions directly from your Shopify admin.

Settings#

Company info#

Update your company name, website, and support email. These are used internally and on invoices.

Google Drive integration#

To allow KnowDesk to read your Google Docs, share them with the service account email shown in Settings → Google Drive Integration. Set the permission to Viewer. You only need to do this once per document.

Widget API key#

Your API key is the unique identifier in your embed code. It's safe to have in your website's HTML - it only authorises the widget to load content, not to modify data.

Password#

Change your password from the Settings page. Enter your new password twice to confirm. You'll remain logged in on your current device.

WordPress & Shopify Plugins#

KnowDesk is available as a free installable plugin for WordPress and Shopify. Both plugins embed your widget using your API key - no code changes needed on your site.

WordPress Plugin#

The KnowDesk WordPress plugin is available free on the official WordPress Plugin Directory. It works on any WordPress site running version 5.8 or higher, including WooCommerce stores and multisite networks.

WordPress5.8 or higher
PHP7.4 or higher
LicenceGPL v2 or later
MultisiteFully compatible

Installation

Install from WordPress.org
In your WordPress admin go to Plugins → Add New Plugin, search for KnowDesk, click Install Now, then Activate. Alternatively, download the zip from wordpress.org/plugins/knowdesk-widget and upload it via Plugins → Add New → Upload Plugin.
Open the plugin settings
Go to Settings → KnowDesk Widget in your WordPress admin. You will see a step-by-step onboarding banner if this is your first setup.
Paste your Widget API key
Copy your key from your KnowDesk dashboard at Widget Config → Embed Code. It starts with kd_live_. Paste it into the Widget API Key field and click Verify key to confirm it is active, then Save settings.
Configure display options
Choose which pages to show the widget on (all pages, front page only, posts only, or specific pages), which corner to display it in, and whether it shows to logged-in users, logged-out visitors, or both. Click Save settings.

Display settings reference

Show widget on
All pages and posts · Front page only · Posts only · Pages only
Exclude pages
Comma-separated post/page IDs where the widget will not appear
Widget position
Bottom right (default) · Bottom left
Visitor visibility
Logged-out visitors · Logged-in users · Both
Free on the WordPress Plugin DirectoryDownload WordPress plugin →

Shopify App#

The KnowDesk Shopify app embeds your widget on your storefront using a Theme App Extension - the modern Shopify standard that does not use the deprecated script_tags API. It is fully compliant with Shopify App Store review requirements.

Install methodShopify App Store
AuthOAuth 2.0 via Shopify
Admin UIEmbedded in Shopify admin
Widget injectionTheme App Extension

Installation

Install from the Shopify App Store
Search for KnowDesk in the Shopify App Store and click Install. You will be walked through Shopify's standard OAuth permission screen - the app only requires read_themes scope.
Paste your Widget API key
After installing, you land on the KnowDesk settings screen inside your Shopify admin. Paste your Widget API key (starting with kd_live_) from your KnowDesk dashboard. Click Verify key then Save settings.
Enable the widget in your Theme Editor
Go to Online Store → Themes → Customize. In the left panel click App embeds and toggle KnowDesk Widget on. Choose your widget position (bottom-right or bottom-left) and save. The widget appears on your storefront immediately.
INTEGRATION PARTNERS

Partner Integration API#

The KnowDesk Partner Integration API allows platforms - such as Freshdesk, Zendesk, Intercom, help desk tools, and app marketplaces - to track customer installs and payments and automatically earn revenue share commission. This API is for Integration Partners who list KnowDesk in their marketplace or plugin directory.

How it works#

The integration flow has three stages:

1
Install event
When a user installs KnowDesk from your marketplace, you send an install event to the KnowDesk API. We record the attribution.
2
Payment event
When that customer makes a payment to KnowDesk (monthly subscription), you send a payment event. We calculate and record your commission automatically.
3
Uninstall event
When a customer removes KnowDesk from your platform, you send an uninstall event. Commission stops generating from that point.

Authentication#

All API requests must include your API key in the X-Api-Key header. Your API key is available in the KnowDesk admin panel under Partners → Integration Apps.

FieldTypeRequiredDescription
X-Api-KeystringYesYour unique integration API key. Prefixed kd_int_live_ for production.
X-Webhook-SignaturestringNoHMAC-SHA256 signature of the raw request body. Recommended for security.
Content-TypestringYesMust be application/json
Example request headersHTTP
POST /api/integrations/freshdesk/track HTTP/1.1
Host: knowdesk.io
X-Api-Key: kd_int_live_a1b2c3d4e5f6g7h8i9j0
X-Webhook-Signature: sha256=3a5b8c...
Content-Type: application/json

For added security, sign each request body with your webhook_secret using HMAC-SHA256 and include the result in the X-Webhook-Signature header. KnowDesk verifies this signature before processing.

Signing exampleNode.js
const crypto = require('crypto');

function signPayload(body, secret) {
  return 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(JSON.stringify(body))
    .digest('hex');
}

const payload   = { event: 'install', external_account_id: 'fd_acct_123' };
const signature = signPayload(payload, process.env.KD_WEBHOOK_SECRET);

// Include in request:
// X-Webhook-Signature: sha256=3a5b8c9d...

Base URL#

TEXT
https://knowdesk.io/api/integrations/{your-app-slug}/track

Replace {your-app-slug} with the slug assigned to your integration (e.g. freshdesk, zendesk, intercom). Your slug is shown in the KnowDesk admin panel.

Event: install#

Send this event when a user in your platform installs or activates KnowDesk. This creates the attribution record that ties future payments to your integration.

POST/api/integrations/{slug}/track
FieldTypeRequiredDescription
eventstringYesMust be "install"
external_account_idstringYesYour platform's unique identifier for this customer account. Stable across sessions.
external_emailstringNoThe customer's email address. Used to match with their KnowDesk account if company_id is unavailable.
company_idstringNoThe KnowDesk company UUID, if known. Provides the most reliable attribution - skip if not available.
Install - request bodyJSON
{
  "event": "install",
  "external_account_id": "fd_acct_abc123",
  "external_email": "[email protected]",
  "company_id": null
}
Install - success response 200 OKJSON
{
  "ok": true,
  "event": "install_recorded"
}
Install - error responsesJSON
// 401 - Invalid or missing API key
{
  "error": "Invalid API key or app not found"
}

// 401 - Signature mismatch
{
  "error": "Invalid webhook signature"
}

// 500 - Database error
{
  "error": "Internal error - please retry"
}

Event: payment#

Send this event whenever the attributed customer makes a successful payment to KnowDesk. KnowDesk calculates your commission automatically based on the amount_cents and the commission percentage configured for your integration in the admin panel.

POST/api/integrations/{slug}/track
FieldTypeRequiredDescription
eventstringYesMust be "payment"
external_account_idstringYesSame identifier used in the install event.
amount_centsintegerYesThe payment amount in cents (e.g. 4900 for $49.00). Used to calculate your commission.
invoice_idstringNoThe Stripe invoice ID from the payment. Used for audit trail and duplicate prevention.
planstringNoOptional plan name - "starter", "growth", or "enterprise".
Payment - request bodyJSON
{
  "event": "payment",
  "external_account_id": "fd_acct_abc123",
  "amount_cents": 14900,
  "invoice_id": "in_1Abc2DefGhi3Jkl",
  "plan": "growth"
}
Payment - success response 200 OKJSON
{
  "ok": true,
  "event": "payment_recorded"
}

Behind the scenes, KnowDesk:

  1. Finds the integration_installs row for this external_account_id
  2. Calculates your commission: amount_cents × (commission_pct / 100)
  3. Creates a partner_earnings record with status: "pending"
  4. Updates the integration app's revenue_shared_cents total
  5. After 7 days the earning is confirmed and included in your next monthly payout

Event: uninstall#

Send this event when a customer removes or deactivates KnowDesk from your platform. Commission generation stops from this point. The customer's existing confirmed earnings are not affected.

POST/api/integrations/{slug}/track
FieldTypeRequiredDescription
eventstringYesMust be "uninstall"
external_account_idstringYesThe same account ID used at install time.
Uninstall - request bodyJSON
{
  "event": "uninstall",
  "external_account_id": "fd_acct_abc123"
}
Uninstall - success response 200 OKJSON
{
  "ok": true,
  "event": "uninstall_recorded"
}

Commission calculation#

Your commission percentage is configured by the KnowDesk admin team when your integration is approved. The default for Integration Partners is 20%. This can be adjusted by the KnowDesk team at any time from the admin panel.

Example commission calculation:
Customer pays$149.00/month (Scale plan)
Your commission rate20%
Commission this payment$29.80
Status after 7 daysConfirmed → included in next monthly payout

Viewing your earnings#

All commission records are visible in your integration's revenue dashboard in the KnowDesk admin panel under Partners → Integration Apps → [Your App] → Revenue. You can also query earnings programmatically:

GET/api/integrations/{slug}/earnings
Earnings query - requestHTTP
GET /api/integrations/freshdesk/earnings?from=2025-01-01&to=2025-12-31
X-Api-Key: kd_int_live_a1b2c3d4e5f6g7h8i9j0
Earnings query - response 200 OKJSON
{
  "app": "freshdesk",
  "period": {
    "from": "2025-01-01",
    "to":   "2025-12-31"
  },
  "install_count":        42,
  "total_revenue_cents":  328500,
  "total_commission_cents": 65700,
  "commission_pct":       20,
  "status_breakdown": {
    "pending":   12300,
    "confirmed": 18400,
    "paid":      35000
  },
  "recent_earnings": [
    {
      "id":             "pe_abc123",
      "amount_cents":   2980,
      "commission_pct": 20,
      "mrr_cents":      14900,
      "status":         "confirmed",
      "period_start":   "2025-05-01",
      "created_at":     "2025-05-03T14:22:11Z"
    }
  ]
}

Payout schedule#

Earnings follow this lifecycle:

Payment received - Earning recorded with status pending
Day 7 - Earning moves to confirmed if no chargeback
1st of next month - All confirmed earnings are batched and paid out
Minimum threshold - $50 USD. Earnings below this roll over to the following month
Payout methods - Bank transfer, PayPal, or Stripe - configured in your partner settings

Error reference#

STATUSERRORCAUSE
400Missing API keyX-Api-Key header not included
400Unknown event typeevent must be "install", "payment", or "uninstall"
401Invalid API key or app not foundAPI key does not match or the app is inactive
401Invalid webhook signatureX-Webhook-Signature does not match computed HMAC
404Install not foundpayment event sent for an external_account_id with no prior install event
429Rate limitedMore than 100 requests per minute from the same API key
500Internal errorTransient server error - safe to retry after 5 seconds

Full integration example#

Below is a complete Node.js example showing the full install → payment → uninstall flow using the KnowDesk Partner Integration API.

Complete integration flow - Node.jsNode.js
const crypto  = require('crypto');
const fetch   = require('node-fetch'); // or native fetch in Node 18+

const API_KEY    = process.env.KD_API_KEY;           // kd_int_live_...
const WH_SECRET  = process.env.KD_WEBHOOK_SECRET;
const BASE_URL   = 'https://knowdesk.io/api/integrations/your-slug/track';

function sign(body) {
  return 'sha256=' + crypto
    .createHmac('sha256', WH_SECRET)
    .update(JSON.stringify(body))
    .digest('hex');
}

async function track(payload) {
  const res = await fetch(BASE_URL, {
    method:  'POST',
    headers: {
      'Content-Type':       'application/json',
      'X-Api-Key':          API_KEY,
      'X-Webhook-Signature': sign(payload),
    },
    body: JSON.stringify(payload),
  });
  const data = await res.json();
  if (!res.ok) throw new Error(data.error || 'KnowDesk API error');
  return data;
}

// 1. Customer installs KnowDesk from your marketplace
await track({
  event:               'install',
  external_account_id: 'acct_abc123',
  external_email:      '[email protected]',
});

// 2. Customer's subscription payment succeeds (hook into Stripe webhook)
await track({
  event:               'payment',
  external_account_id: 'acct_abc123',
  amount_cents:        14900,        // $149.00
  invoice_id:          'in_stripe_invoice_id',
  plan:                'growth',
});

// 3. Customer uninstalls
await track({
  event:               'uninstall',
  external_account_id: 'acct_abc123',
});

Testing your integration#

Use the test API key (prefixed kd_int_test_) during development. Test events are processed identically to production but do not create real commission records. Your test API key is available alongside your live key in the KnowDesk admin panel.

Test environment base URLTEXT
https://knowdesk.io/api/integrations/your-slug/track
X-Api-Key: kd_int_test_a1b2c3d4e5f6g7h8i9j0
Ready to integrate?

Apply to the Integration Partner programme. Once approved (within 48 hours) you will receive your api_key, webhook_secret, and integration slug - everything you need to start tracking installs and earning 20% recurring commission on every paying customer.

Apply as Integration Partner →
PREMIUM ADD-ON

Vertical AI#

Vertical AI transforms your KnowDesk widget into an industry-specific AI assistant. Instead of a generic Q&A bot, visitors get a structured booking, intake, or product-lookup experience - all powered by your own data. Available on Growth, Scale and Enterprise plans.

🏠
Real Estate
Property search, availability lookup, and booking requests from your listings
🏥
Healthcare
Appointment booking and provider lookup from your schedule data
⚖️
Legal
Consultation scheduling and practice area intake from your calendar
🛒
Ecommerce
Order lookup, return policies, and post-purchase support from your store

Activating Vertical AI#

Open Widget Config
Go to Dashboard → Widget Config and select the widget you want to enable Vertical AI on.
Navigate to the Vertical AI tab
Click the Vertical AI tab inside Widget Config. If this tab is not visible, your plan does not include Vertical AI - upgrade from Billing.
Choose your vertical type
Select one of the four verticals: Real Estate, Healthcare, Legal, or Ecommerce. This controls which data source types and question flows are available.
Connect a data source
For Real Estate, Healthcare, and Legal - choose and configure a data source (see sections below). For Ecommerce - connect your platform(s) and configure order rules.

Real Estate#

The Real Estate vertical lets visitors search your property listings, ask about availability, and submit booking or viewing requests - all inside the widget. Your data is synced from a spreadsheet, database, or REST API.

Required data columns

COLUMNDESCRIPTIONREQUIRED
Property NameListing title shown to visitorsYes
LocationCity, neighbourhood, or full addressYes
PriceNumeric price or rent amountYes
Typeapartment, house, villa, office, etc.Yes
BedroomsNumber of bedroomsNo
BathroomsNumber of bathroomsNo
FeaturesComma-separated amenities (pool, parking, gym…)No
Statusavailable, under offer, sold, letYes
Image URLPublicly accessible image linkNo
Listing URLLink to the full listing pageNo

Healthcare#

The Healthcare vertical allows patients to check provider availability, ask about appointment types, and submit booking requests. Your appointment and provider data is pulled from a spreadsheet or API.

Required data columns

COLUMNDESCRIPTIONREQUIRED
Doctor NameFull name of the providerYes
DepartmentCardiology, General Practice, Dermatology, etc.Yes
DateAppointment date (YYYY-MM-DD)Yes
TimeStart time (HH:MM 24h or 12h AM/PM)Yes
DurationSession length in minutesNo
Statusavailable, booked, cancelledYes
NotesLocation, floor, or preparation instructionsNo

The Legal vertical allows prospective clients to check attorney availability, understand practice areas, and schedule consultations - directly inside the widget.

Required data columns

COLUMNDESCRIPTIONREQUIRED
Attorney NameFull name of the attorney or consultantYes
Practice AreaFamily Law, Corporate, Immigration, etc.Yes
DateSession date (YYYY-MM-DD)Yes
TimeStart timeYes
DurationSession length in minutesNo
Session Typein-person, video, phoneNo
Statusavailable, booked, cancelledYes

All three verticals use the same five data source types. Choose the one that matches where your data lives.

Google Sheets

Create or open your spreadsheet
Make sure the first row is a header row matching the required column names for your vertical. Every subsequent row is one property, appointment, or slot.
Share the sheet
Share the spreadsheet with the KnowDesk service account email (find it in Settings → Google Drive Integration). Set permission to Viewer.
Paste the Spreadsheet ID
Copy the ID from the Google Sheets URL: docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit. Paste it into the Spreadsheet ID field. Optionally specify the sheet tab name (defaults to the first sheet).
Save and sync
Click Save Data Source. The connection is validated immediately. Click ⟳ Sync to pull the latest rows. Sync again any time you add or update listings.

Airtable

Locate your Base ID and Table Name
Open Airtable and navigate to the base. The Base ID is in the URL: airtable.com/BASE_ID/.... The table name is the tab label at the top (e.g. "Listings").
Generate a Personal Access Token
In Airtable, go to Account → Developer Hub → Personal Access Tokens. Create a token with data.records:read scope on the target base.
Enter connection details
Paste the Base ID, Table Name, and your Personal Access Token into the Vertical AI data source form. Optionally enter a View Name to filter to a specific Airtable view.
Save and sync
Click Save Data Source then ⟳ Sync. KnowDesk fetches all records from your view.

REST API

Configure the endpoint
Enter the full URL of your API endpoint. Choose the HTTP method (GET or POST). If your API returns a nested array, enter the JSON path to the array (e.g. data.listings).
Set authentication
Choose None, Bearer Token, or API Key header. Paste your credential. KnowDesk stores it encrypted and uses it on every sync.
Map fields
Enter the column names your API returns. KnowDesk maps them to the vertical's expected fields automatically if they match the required column names.
Save and sync
Click Save Data Source. KnowDesk calls your endpoint immediately to validate. Then click ⟳ Sync to pull the current data.

CSV Upload

Prepare your CSV file
Export your data as a CSV. The first row must be the header row with column names matching the required fields for your vertical. Maximum 20,000 rows.
Upload the file
In the Vertical AI data source panel, drag your CSV file onto the upload zone or click to browse. KnowDesk parses it client-side and shows a preview of detected columns and row count.
Confirm and upload
Review the column preview. If the columns look correct, click Upload N rows. The data is sent to KnowDesk and immediately indexed - no further sync needed.
Replace when data changes
When your data changes, upload a new CSV using the Replace button shown on the existing upload. This replaces all rows instantly.

Notion

Get your Notion Database ID
Open the Notion database page. The Database ID is the 32-character string in the URL before any ?v= parameter: notion.so/yourworkspace/DATABASE_ID?v=....
Create a Notion integration
Go to notion.so/my-integrations and create a new internal integration. Give it read content permission. Copy the Internal Integration Token.
Share the database with the integration
Open the Notion database, click ... → Connections, and add your integration. Without this step, the API token cannot access the database.
Enter credentials and sync
Paste the Database ID and integration token into the Vertical AI data source form. Click Save Data Source then ⟳ Sync.

Ecommerce#

The Ecommerce vertical connects your store platform directly to the widget, enabling customers to look up orders, understand return policies, submit post-purchase issues, and complete intake forms - all without leaving the chat.

Platform connections

ShopifyConnect your Shopify store. Customers can look up orders by email or order number. KnowDesk reads live order status, fulfilment, and tracking directly from your Shopify admin.
WooCommerceConnect your WooCommerce store via the REST API (Consumer Key + Consumer Secret from WooCommerce → Settings → Advanced → REST API). Customers can look up orders by email or order number.
StripeConnect Stripe for subscription and payment lookup. Useful for SaaS products, digital services, and any store that bills through Stripe.
PaystackConnect Paystack for transaction and subscription lookup by email or reference number. Supports NGN, GHS, KES, and ZAR transactions.
Custom APIConnect any order management system or custom backend. Define the endpoint URL, auth method, and a field map that tells KnowDesk which response fields correspond to order ID, status, and customer email.

Setting up Shopify

Open the Ecommerce Platform panel
In Widget Config → Vertical AI → Ecommerce, click + Add Platform and select Shopify.
Enter your store domain
Paste your Shopify domain (e.g. yourstore.myshopify.com). Do not include https://.
Create a Custom App in Shopify
In your Shopify admin go to Apps → Develop Apps → Create an App. Under API credentials, generate an Admin API access token. Set the read_orders and read_customers scopes. Copy the token.
Paste the access token and save
Paste the token into the Access Token field in KnowDesk and click Save. KnowDesk validates the connection immediately.

Setting up WooCommerce

Generate WooCommerce API keys
In your WordPress admin go to WooCommerce → Settings → Advanced → REST API → Add key. Set permission to Read. Copy the Consumer Key and Consumer Secret.
Enter your store URL and keys
In KnowDesk, select WooCommerce, enter your store URL (e.g. https://yourstore.com), and paste the Consumer Key and Consumer Secret. Click Save.

Order lookup rules

Configure how customers identify their order. You can enable lookup by email address, order number, or both. You can also require the customer to provide both to match - useful for stores with high volume where order numbers may collide.

Return policy

Paste your return policy text in the Return Policy field. The AI reads this verbatim when customers ask about returns or refunds. Keep it plain text - no HTML or markdown needed.

Post-resolution actions

Choose what happens after the AI answers a post-purchase question. Options: escalate to live agent, create a support ticket (if escalation is configured), or show a custom message. You can set a different action per question type (refund request vs. delivery inquiry vs. general complaint).

Custom Question Flow Builder#

All four verticals include a question flow builder. This lets you define the structured questions the AI asks before fulfilling a visitor request - for example, asking for name, phone, and preferred viewing time before recording a property enquiry.

Adding a question

  1. In the Vertical AI panel, scroll to Intake Questions
  2. Click + Add Question
  3. Enter the question text (e.g. "What is your preferred viewing date?")
  4. Choose the response type: Text, Date, Phone, or Email
  5. Mark as Required if the visitor must answer before proceeding
  6. Click Save

Questions are shown to visitors in the order they appear in the list. Drag to reorder. The AI does not proceed to the booking confirmation step until all required questions are answered.

Confirmation emails

Enable Send confirmation email in the Vertical AI panel to automatically email the visitor a summary of their submission. The email includes their answers, the time of submission, and a reference number. No SMTP setup required - KnowDesk sends it from your configured support email.

What the visitor sees#

1
Opens the widget
The widget greets the visitor with a welcome message and a Vertical AI prompt (e.g. 'Looking for a property? Tell me what you need.')
2
States their request
The visitor types naturally - 'I need a 3-bed apartment under £2,000 in Manchester' or 'I'd like to see Dr. Patel this week'.
3
AI searches your data
KnowDesk searches your connected data source for matching records and presents the best matches with relevant details.
4
Visitor confirms interest
The visitor selects a listing or slot they are interested in.
5
Intake questions
The AI walks through your custom intake questions one by one, collecting name, contact details, and preferences.
6
Submission recorded
The completed intake is saved and visible in your dashboard under the Vertical AI submissions panel.
7
Confirmation sent
If enabled, the visitor receives a confirmation email with their submission details and a reference number.
8
Your team follows up
You receive an in-dashboard notification. The visitor's full intake is shown alongside the conversation transcript.
300+ PURPOSE-BUILT AGENTS

AI Agents#

KnowDesk ships 300+ AI agents across four categories - Support, Content & Brand, Email & Retention, and Ops & Reporting. Unlike generic chatbots, each agent is pre-trained for a specific workflow. You activate them from the Agents tab in your dashboard; no prompt engineering or custom training required.

Agent availability depends on your plan. Agents marked Growth+ require a Growth plan or higher. Agents marked Scale+ require a Scale plan. Enterprise agents are available on the Enterprise plan only.

🤖Support AgentsGrowth+

Support Agents handle the repetitive, high-volume tickets that drain CS team capacity. Each agent knows the precise data fields, API calls, and response templates for its use case.

WISMO Agent
Where is my order? The agent looks up the latest tracking status from Shopify, Stripe, or your 3PL in real time and replies with carrier name, tracking number, and estimated delivery - no copy-paste, no ticket queue.
Returns & RMA Agent
Accepts return requests, validates against your return policy window, generates RMA labels, and updates the order record. Integrates with Shopify Refunds API and Returnly.
Carrier Claims Agent
Files carrier damage or loss claims on behalf of the customer. Collects photo evidence, fills insurer forms, and tracks claim status with automated follow-ups.
Wholesale Routing Agent
Routes B2B wholesale enquiries to the correct account manager based on geography, product line, or minimum order value rules you configure.
Escalation Triage Agent
Reads incoming tickets, scores urgency using sentiment + recency + LTV signals, and routes high-risk conversations to the live inbox with a priority flag before a human has to read them.
FAQ Auto-Resolver Agent
Intercepts any question that matches your FAQ knowledge base with >90% confidence and resolves it instantly - no human touch required.
Order Edit Agent
Processes address changes, quantity edits, and cancellation requests within your configurable edit window. Syncs changes back to Shopify or your OMS.
Subscription Agent
Handles pause, skip, swap, and cancel requests for subscription products via ReCharge or Skio. Reduces involuntary churn by offering a pause before cancel.
🏷️Content & Brand AgentsScale+

Brand Agents enforce visual and verbal consistency across every customer-facing surface - ad copy, product listings, support replies, and UGC content.

Brand Gate Agent
Scans incoming content (text + optional image) against your Brand Profile - forbidden words, competitor names, tone rules, color compliance. Returns a pass/fail with highlighted violations and a suggested rewrite.
Ad Copy Review Agent
Reviews ad headlines, body copy, and CTAs against brand guidelines and platform-specific rules (Meta, TikTok, Google). Flags non-compliant claims before they go live.
Shopify Listing QA Agent
Audits product titles, descriptions, and tags across your Shopify catalogue for tone consistency, SEO best practices, and brand voice alignment. Outputs a per-listing score.
Translation QA Agent
Validates machine-translated copy in 30+ languages against your brand voice guidelines. Detects literal translations, awkward phrasing, and cultural misfits.
UGC Compliance Agent
Reviews user-generated content before amplification - checks for brand-safe language, regulatory compliance (FTC disclosure), and off-brand imagery.
Email Template Agent
Generates and QA-checks transactional and marketing email templates against your brand voice, subject line best practices, and deliverability rules.
Brand Voice Auditor
Runs a batch audit of any text corpus (support replies, help articles, social posts) to detect tone drift over time. Produces a drift score and recommended corrections per author.
📧Email & Retention AgentsScale+

Retention Agents run proactive outreach flows that recover revenue and extend customer lifetime value - without requiring a separate ESP or CRM automation tool.

Abandoned Cart Agent
Detects cart abandonment events from Shopify and sends a timed sequence of recovery emails (1 h, 24 h, 72 h). Personalises copy with product names, cart value, and a dynamic discount code.
Winback Agent
Re-engages lapsed customers who haven't purchased in N days (configurable). Sends a personalised winback sequence with product recommendations based on purchase history. Deduplication prevents double-sends per day.
Churn Scoring Agent
Scores subscription customers by churn risk using recency, frequency, and support ticket signals. Triggers a proactive outreach flow for high-risk accounts before they cancel.
VIP Segmentation Agent
Identifies high-LTV customers based on order count and spend thresholds. Tags them in Shopify for priority support routing, exclusive offers, and loyalty flows.
Campaign Review Agent
Reviews outbound campaign copy for brand compliance, spam-trigger words, and regulatory language before send - integrates with Klaviyo and Mailchimp.
Post-Purchase NPS Agent
Sends a one-question NPS survey 7 days after delivery. Detractors trigger an auto-response and a CS ticket; promoters are invited to leave a review.
📊Ops & Reporting Agents - Mission ControlEnterprise

Mission Control is KnowDesk's unified ops dashboard. It aggregates GA4, Stripe, and Gorgias data into one view, surfaces anomalies automatically, and gives ops teams a single pane of glass for revenue attribution and support performance.

Mission Control Dashboard
Single-view dashboard combining GA4 traffic, Stripe revenue, and Gorgias ticket volume. Surfaces daily delta summaries: revenue vs prior period, ticket volume trends, resolution rate, and customer satisfaction scores.
Anomaly Detection Agent
Monitors KPIs for statistically significant deviations. Sends an alert (Slack, email, or in-app) when conversion rate drops, ticket volume spikes, or refund rate exceeds your configured threshold - before you have to check the dashboard.
Revenue Attribution Agent
Matches resolved support tickets to subsequent purchase events to calculate the revenue impact of CS interactions. Shows which agent conversations led to a sale within 30 days.
SLA Reporting Agent
Calculates first-response time, resolution time, and breach rate per agent, team, and ticket category. Auto-generates weekly SLA reports and emails them to configured stakeholders.
Capacity Planner Agent
Analyses ticket volume trends by hour, day, and week to forecast staffing needs. Outputs a recommended schedule that keeps SLAs green without overstaffing.
Department Playbook Agent
Maintains a living ops playbook: captures recurring escalation patterns, tags them by category, and surfaces suggested standard responses for team leads to approve.
DATA MIGRATION

Migrating from Another Helpdesk#

KnowDesk includes a full data migration engine so you can switch from Intercom, Zendesk, Freshdesk, or Zoho Desk without losing your conversation history, customer context, or support intelligence. Your historical data is imported, your customers never notice the switch, and the AI has full context from day one.

What Gets Migrated#

Each imported record is normalised into a common schema and stored in your KnowDesk account:

  • Conversations - full message body, platform reference ID
  • Contacts - visitor name and email address
  • Topics / Tags - conversation labels mapped to KnowDesk topics
  • CSAT Scores - satisfaction ratings normalised to a 0–5 scale
  • Resolution Time - time-to-resolve in seconds, stored for analytics

How to Run an Import#

Go to Dashboard → Data Migration and follow the 6-step wizard:

  1. Select platform - choose your source helpdesk (Intercom, Zendesk, Freshdesk, or Zoho Desk)
  2. Upload file - drag and drop your export file (JSON, CSV, or XML, up to 50 MB). Auto-detection reads the file structure and identifies the platform automatically. You can override the detected platform if needed.
  3. Review field mapping - KnowDesk auto-maps source fields to its own schema. You can enable or disable any field before proceeding.
  4. Confirm - review the record count, contact count, and mapping summary before starting.
  5. Import - records are processed in the background in batches of 100. A live progress bar updates every few seconds. You can close the page - the import continues server-side.
  6. Done - a summary shows how many conversations and contacts were imported, how many errors occurred, and a link to download the error log if any records failed.

Exporting Data From Your Current Platform#

Before uploading to the import wizard, you need to export your data from your current helpdesk. Steps vary by platform:

Freshdesk
  1. Log in as Admin and click the Reports icon in the left sidebar.
  2. Open the Export tab and set Export type to Tickets.
  3. Choose your date range. Export in yearly chunks if you have more than 50 MB of data.
  4. Under Fields, include: Ticket ID, Subject, Description, Status, Priority, Created At, Requester Name, Requester Email, Tags.
  5. Select CSV format and click Export.
  6. Download the file from the link in the confirmation email or from Reports → Export History.
Zendesk
  1. Log in as Admin and open Admin Center (grid icon → Admin Center).
  2. Go to Tools → Reports → Full ticket export.
  3. Choose JSON (recommended - retains full conversation threads) or CSV.
  4. Click Request file. Zendesk emails you a download link when ready.
  5. Extract the file if it arrives as a ZIP.
Tip: JSON exports include all comment bodies and ticket history. CSV includes top-level fields only. Use JSON to preserve the full conversation thread.
Intercom
  1. Log in as Workspace Owner or Admin.
  2. Click the Settings gear in the bottom-left, then go to General → Export.
  3. Under Conversations, set your date range and click Request export.
  4. Download the ZIP file from the link in the email.
  5. Extract the ZIP and locate the conversations JSON file.
Tip: CSAT data is not in the standard export. Export it separately from Reports → Customer Satisfaction if needed.
Zoho Desk
  1. Log in as Administrator and click the Setup gear icon in the top bar.
  2. Go to Data Administration → Export.
  3. Select Tickets as the module, then choose CSV or XML format.
  4. Apply a Created Time date filter to limit the export size if needed.
  5. Click Export - Zoho Desk emails you when the file is ready.
  6. Download from Setup → Data Administration → Export History.
Tip: To include contact name and email, also export the Contacts module from the same screen. The import wizard auto-matches contacts to tickets via the Ticket Owner field.

AI Memory Layer#

After a successful import, KnowDesk automatically builds an AI Memory Layer - a profile for every unique contact in your imported data. Each profile aggregates:

  • Number of past conversations
  • Most common issue types (from conversation topics)
  • Average CSAT score
  • Date of last contact
  • A plain-text summary: "Customer name: Alice · Previous interactions: 4 conversations · Past issues: billing, shipping · Average satisfaction: 3.8/5 · Last contact: 12 July 2026"

When a returning visitor opens the widget and their email address is known (either from a pre-chat form or a previous session), KnowDesk injects this context into the AI system prompt automatically. The AI greets them by name and responds with awareness of their history - without you writing any code.

Contacts with an average CSAT score below 3.0 are automatically flagged as coaching needed, surfacing them for your QA team.

Platform Field Mapping Reference#

KnowDesk auto-maps these fields from each supported platform:

Source PlatformSource FieldKnowDesk Field
Intercomcontact.name / contact.emailvisitor_name / visitor_email
Intercomconversation.idref_id
Intercomconversation.bodycontent
Intercomconversation.tagstopics
Intercomresolution.timeresolution_time_seconds
Intercomcsat.scorecsat_score
Zendeskticket.requester_name / emailvisitor_name / visitor_email
Zendeskticket.idref_id
Zendeskticket.descriptioncontent
Zendeskticket.tagstopics
Freshdeskcontact.name / emailvisitor_name / visitor_email
Freshdeskticket.idref_id
Freshdeskticket.descriptioncontent
Freshdeskticket.tagstopics
Zoho Deskcontact.Last_Name / Emailvisitor_name / visitor_email
Zoho Deskidref_id
Zoho Deskdescriptioncontent
Zoho Deskcf.tagstopics

Import History#

Past import jobs are listed at the bottom of the Data Migration page with their status (queued, processing, complete, error), record counts, and timestamps. You can download the error log for any failed job in JSON format.

Frequently Asked Questions#

More than documentation

A complete self-service customer support portal - and the tools to keep it excellent

KnowDesk is more than a chatbot platform. It's a complete self-service customer support portal that deflects tickets, answers questions instantly, and monitors support quality - all from a single dashboard your entire team can access from day one.

If your priority is reducing ticket volume, the Knowledge Base and Widget Configuration sections of this documentation explain how to train your AI on existing content - product guides, policy documents, FAQs, Notion pages, and Confluence spaces - so customers get accurate answers without opening a ticket. A well-configured self-service portal typically deflects 60–80% of inbound queries without any human involvement.

For teams focused on accountability and continuous improvement, KnowDesk functions as customer service quality monitoring software through its built-in QA module. Team leads can score AI and agent responses, flag low-quality interactions, set passing thresholds, and generate QA reports across any time period. Every conversation is logged, searchable, and auditable - giving you the visibility to raise support standards across your whole team, not just spot-check individual agents.

KnowDesk also supports live agent inboxes, email inbound, Shopify and Stripe order lookups, multilingual conversations, and vertical AI agents tuned to specific departments. Use this documentation as your operational reference - and if you need help at any point, our support team is reachable via the chat widget in the bottom right corner, powered by KnowDesk itself.

Ready to go live?
300+ AI agents · AI answers 24/7 · Vertical AI for real estate, healthcare, legal & ecommerce · live agent inbox · QA Reviews · Stripe & Shopify order lookup · email inbound - all in one platform, live in under 2 minutes.