# Welcome to klink.cloud

Welcome to klink.cloud documentation! Find guides and tutorials to help you set up and use our omnichannel communication platform effectively.

### What is klink.cloud <a href="#what-is-messagebird" id="what-is-messagebird"></a>

klink.cloud is a comprehensive Omnichannel Customer Engagement platform, empowering Sales and Customer Support Teams to seamlessly manage communication across diverse channels, including Telephony, Social Media, Ecommerce Marketplace, allowing for efficient communication workflows, personalized messaging, and real-time customer engagement.

{% embed url="<https://www.loom.com/share/0c57e35d5afb4ba592c09d0af6195cc0?sid=9753a674-921a-4c9c-9e92-59d8f34fc18e>" %}

#### Install Channel

Choose one of the popular channels below

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Facebook Messenger</strong></td><td>Install your first channel as Facebook Messenger</td><td></td><td><a href="/files/DOmUHVbOTns2oEFDtW9D">/files/DOmUHVbOTns2oEFDtW9D</a></td><td><a href="/pages/SypQUTKv2fwi7xbFHBrq">/pages/SypQUTKv2fwi7xbFHBrq</a></td></tr><tr><td><strong>LINE Official Account</strong></td><td>Install your Line OA channel</td><td></td><td><a href="/files/bER4aILDVapjvSIOc1gD">/files/bER4aILDVapjvSIOc1gD</a></td><td><a href="/pages/OOwuwy3AnD2bEHr509CM">/pages/OOwuwy3AnD2bEHr509CM</a></td></tr><tr><td><strong>Instagram Channel</strong></td><td>Install your Instagram channel</td><td></td><td><a href="/files/AhFxONjfUGt5l0mPqrEK">/files/AhFxONjfUGt5l0mPqrEK</a></td><td><a href="/pages/RDbYuXHNhnRnz0tJB7hG">/pages/RDbYuXHNhnRnz0tJB7hG</a></td></tr><tr><td><strong>Viber Channel</strong></td><td>Install your Viber Channel</td><td></td><td><a href="/files/pZg8Gpxm9XuTUhXJUeAe">/files/pZg8Gpxm9XuTUhXJUeAe</a></td><td><a href="/pages/xUOroJRNy0nmrtryHkxM">/pages/xUOroJRNy0nmrtryHkxM</a></td></tr><tr><td><strong>Telegram Channel</strong></td><td></td><td></td><td><a href="/files/YTHfD9tAPkexotFkB244">/files/YTHfD9tAPkexotFkB244</a></td><td><a href="/pages/wuXX0hhb67Fu3B07iOgD">/pages/wuXX0hhb67Fu3B07iOgD</a></td></tr><tr><td><strong>In-App Chat (Web, Mobile)</strong></td><td>Install live chat widget on your website or mobile app</td><td></td><td><a href="/files/LO1dpwkWdNFpYymWjmvY">/files/LO1dpwkWdNFpYymWjmvY</a></td><td><a href="/pages/sr1YSkSs1GLU586geoNi">/pages/sr1YSkSs1GLU586geoNi</a></td></tr><tr><td><strong>WhatsApp Official Business (Meta)</strong></td><td>Install Meta Official WBA</td><td></td><td><a href="/files/EiSb2UzLm8hvgluqbfK2">/files/EiSb2UzLm8hvgluqbfK2</a></td><td><a href="/pages/eL7i7ux580rRlubIM3UB">/pages/eL7i7ux580rRlubIM3UB</a></td></tr><tr><td><strong>WhatsApp Mobile (QR Scan Device Link)</strong></td><td>Connect your existing whatsapp account (WhatsApp Personal (or) WhatsApp Business Mobile App)</td><td></td><td><a href="/files/EiSb2UzLm8hvgluqbfK2">/files/EiSb2UzLm8hvgluqbfK2</a></td><td><a href="/pages/SYMOO3SSu0CXTAK0A7gH">/pages/SYMOO3SSu0CXTAK0A7gH</a></td></tr><tr><td><strong>Lazada</strong></td><td>Install your Lazada shop</td><td></td><td><a href="/files/cYWNh0dtu6cCTNcePgSp">/files/cYWNh0dtu6cCTNcePgSp</a></td><td><a href="/pages/pJTaFbLNYfTdDmkOSOJR">/pages/pJTaFbLNYfTdDmkOSOJR</a></td></tr><tr><td><strong>Shopee</strong></td><td>Install your Shopee shop</td><td></td><td><a href="/files/n2Ge3FImle8KsCUy3mp2">/files/n2Ge3FImle8KsCUy3mp2</a></td><td><a href="/pages/5bdctzdw6jBLSGE2X6G9">/pages/5bdctzdw6jBLSGE2X6G9</a></td></tr><tr><td><strong>TikTok</strong></td><td>Install your TikTok Shop</td><td></td><td><a href="/files/4LIiGtln8AHuW2UOVbPz">/files/4LIiGtln8AHuW2UOVbPz</a></td><td><a href="/pages/fSRgKE18KqWYSs19vIBG">/pages/fSRgKE18KqWYSs19vIBG</a></td></tr><tr><td><strong>Zoho Mail</strong></td><td>Install Zoho Mail</td><td></td><td><a href="/files/Oed9KHIDw0jUXAfhs8Kd">/files/Oed9KHIDw0jUXAfhs8Kd</a></td><td></td></tr><tr><td><strong>Gmail</strong></td><td>Install Google Workspace</td><td></td><td><a href="/files/VuAqYiuzwfIoxllAhJ5R">/files/VuAqYiuzwfIoxllAhJ5R</a></td><td><a href="/pages/uUBAGzugoZGD6PQlUIc2">/pages/uUBAGzugoZGD6PQlUIc2</a></td></tr><tr><td><strong>Outlook</strong></td><td>Connect Microsoft 365</td><td></td><td><a href="/files/lFfkyoff4tlzZ95LyLux">/files/lFfkyoff4tlzZ95LyLux</a></td><td></td></tr><tr><td><strong>Telephony Channel</strong></td><td>[Contact Support]</td><td></td><td><a href="/files/Ahm4z97CsK6CrFpt2qHu">/files/Ahm4z97CsK6CrFpt2qHu</a></td><td></td></tr></tbody></table>


# Setup Channels

Connect with your customers effortlessly on klink.cloud. Reach them on Facebook Messenger, LINE OA, Instagram, and Viber. From social media to messaging apps, Klink.cloud brings all your interactions together for seamless and efficient customer engagement. Elevate your brand and provide top-notch support across these popular channels

{% hint style="info" %}
Follow below guides to connect Facebook Messenger, LINE OA, Instagram, Viber
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td></td><td>Setup Facebook Messenger</td><td></td><td><a href="/files/zAkPQUrTnbQ4sFzymIvm">/files/zAkPQUrTnbQ4sFzymIvm</a></td><td><a href="/pages/SypQUTKv2fwi7xbFHBrq">/pages/SypQUTKv2fwi7xbFHBrq</a></td></tr><tr><td></td><td>Setup LINE Official Account</td><td></td><td><a href="/files/bER4aILDVapjvSIOc1gD">/files/bER4aILDVapjvSIOc1gD</a></td><td><a href="/pages/OOwuwy3AnD2bEHr509CM">/pages/OOwuwy3AnD2bEHr509CM</a></td></tr><tr><td></td><td>Setup Instagram Chat</td><td></td><td><a href="/files/AhFxONjfUGt5l0mPqrEK">/files/AhFxONjfUGt5l0mPqrEK</a></td><td><a href="/pages/RDbYuXHNhnRnz0tJB7hG">/pages/RDbYuXHNhnRnz0tJB7hG</a></td></tr><tr><td></td><td>Google Workspace Email Setup                                      </td><td></td><td><a href="/files/VuAqYiuzwfIoxllAhJ5R">/files/VuAqYiuzwfIoxllAhJ5R</a></td><td><a href="/pages/uUBAGzugoZGD6PQlUIc2">/pages/uUBAGzugoZGD6PQlUIc2</a></td></tr><tr><td></td><td>Setup Viber for Business</td><td></td><td><a href="/files/pZg8Gpxm9XuTUhXJUeAe">/files/pZg8Gpxm9XuTUhXJUeAe</a></td><td><a href="/pages/xUOroJRNy0nmrtryHkxM">/pages/xUOroJRNy0nmrtryHkxM</a></td></tr><tr><td></td><td>Connect with Shopee</td><td></td><td><a href="/files/n2Ge3FImle8KsCUy3mp2">/files/n2Ge3FImle8KsCUy3mp2</a></td><td><a href="/pages/5bdctzdw6jBLSGE2X6G9">/pages/5bdctzdw6jBLSGE2X6G9</a></td></tr><tr><td></td><td>Setup Telegram Channel</td><td></td><td><a href="/files/YTHfD9tAPkexotFkB244">/files/YTHfD9tAPkexotFkB244</a></td><td><a href="/pages/wuXX0hhb67Fu3B07iOgD">/pages/wuXX0hhb67Fu3B07iOgD</a></td></tr><tr><td></td><td>Setup WhatsApp Business Channel (Meta)                    </td><td></td><td><a href="/files/EiSb2UzLm8hvgluqbfK2">/files/EiSb2UzLm8hvgluqbfK2</a></td><td><a href="/pages/eL7i7ux580rRlubIM3UB">/pages/eL7i7ux580rRlubIM3UB</a></td></tr><tr><td></td><td>Setup Whatsapp Mobile Channel</td><td></td><td><a href="/files/EiSb2UzLm8hvgluqbfK2">/files/EiSb2UzLm8hvgluqbfK2</a></td><td><a href="/pages/SYMOO3SSu0CXTAK0A7gH">/pages/SYMOO3SSu0CXTAK0A7gH</a></td></tr></tbody></table>

####


# Live Chat

How to Install Web Chat Widget on Your Website or Mobile App

This guide walks you through the steps to install the **Web Chat** widget on your website or mobile app using the klink.cloud platform.

{% embed url="<https://www.loom.com/share/97e32031b5274be5aff9b656bdd28f06?sid=e65b943b-b6f5-46e1-b39f-09a7299c470d>" %}

***

### 📌 Step-by-Step Instructions

#### 1. Navigate to Web Chat Setup

* Log in to your klink.cloud account.
* Go to **Integrations** > **Messaging Integration**.
* Select **Web Chat**.

***

#### 2. Create a New Web Chat Widget

* Enter a **name** for your Web Chat instance (e.g., “SalaryHero Website”).
* Add your **whitelisted domain(s)** (without `http://` or `https://`) to restrict where the widget can be embedded.

> Example:\
> `salaryhero.com`\
> `www.salaryhero.com`

***

#### 3. Customize Widget Appearance

* **Greeting Text:**\
  Customize the welcome message shown to users (e.g., “Hi, welcome! How can I assist you today?”).
* **Placeholder Text:**\
  Optional – you can use a placeholder like “Ask me anything.”
* **Logo Upload:**\
  Upload your brand logo to personalize the chat widget.
* **Bot Display Name:**\
  Set your AI assistant name (e.g., “SalaryHero AI Assistant”).
* **Theme Color:**\
  Set a theme color for your widget using HEX color codes (e.g., `#832015`).
* **Agent Name (Chat Bar):**\
  This name will appear in the chat bar (e.g., “SalaryHero Agent”).

***

#### 4. Optional: Add Privacy Policy

* Toggle the **Privacy Policy** option if you want to display an acceptance link before chat starts.
* Insert the URL to your privacy policy document.

***

#### 5. Save and Install

* Click **Save** to generate the embed code.
* Copy the generated **JavaScript snippet**.
* Paste it into your website or mobile app's HTML code, just before the closing `</body>` tag.

```html
htmlCopyEdit<script>
  // [Generated Web Chat Script Here]
</script>
```

***

### ✅ What It Looks Like

Once installed, the widget will appear as a chat bubble on your website. All customer messages will be sent to your klink.cloud unified inbox in real-time.

***

### 🧪 Test Before Go-Live

After embedding:

1. Visit your website.
2. Interact with the widget to confirm appearance and functionality.
3. Ensure messages are received correctly in your inbox.

***

### Need Help?

If you need further assistance, please contact our support team at <support@klink.cloud>.

Learn How to Install Live Chat Widget on Shopify Store - [Live Chat on Shopify Store](/getting-started/setup-channels/live-chat/live-chat-on-shopify-store)


# Live Chat on Shopify Store

This guide will walk you through the steps to install the AI Agent Live Chat widget into your Shopify store using a simple JavaScript code snippet.

{% embed url="<https://www.loom.com/share/ad05d40e24af4f328f5cf1ca59565919?sid=632e2fa9-948d-42b0-a858-36eee931c768>" %}

### 🔧 Step-by-Step Installation Guide

#### 1. **Access Your Live Chat Integration**

* Log into your klink.cloud dashboard.
* Navigate to `Integrations`.
* Go to **Message Integrations**.
* Select **Live Chat** and click **Edit**.

***

#### 2. **Add Whitelisted Domains**

* In the Live Chat settings, **add your Shopify domain** to the whitelist.
  * Example: `yourstore.myshopify.com`
* This ensures the live chat will appear and work on your store.

***

#### 3. **Copy the Installation Code**

* In the Live Chat integration settings, click on **“Install Code”**.
* Copy the provided **JavaScript snippet**.

***

#### 4. **Log Into Your Shopify Admin Panel**

* Go to Shopify Admin.
* In the left sidebar, click **Online Store > Themes**.
* Find your **current active theme**, and click **“... > Edit Code”**.

***

#### 5. **Edit the `theme.liquid` File**

* In the **Layout** folder, open the file named `theme.liquid`.
* Scroll to the bottom of the file and locate the `</body>` tag.
* Paste the JavaScript **just above the `</body>` tag**.

```liquid
liquidCopyEdit<!-- AI Agent Live Chat -->
<script>
  // Paste the copied Live Chat JavaScript code here
</script>
```

* Click **Save**.

***

#### 6. **Verify Installation**

* Visit your Shopify storefront.
* Your AI Agent Live Chat should now appear and be fully functional.

***

### ✅ Installation Complete!

Your AI Live Chat is now installed on your Shopify store. You can start engaging with your customers in real time!

***

### 💡 Tips

* Always double-check your domain is correctly whitelisted.
* Make sure to clear cache or open in incognito to test the widget.
* If you update your theme, repeat the steps to ensure the code remains active.

***

### 📞 Need Help?

If you face any issues, contact our support team at **<support@klink.cloud>** or chat with us via the AI Agent on our website.


# In‑App Chat for Mobile App

This guide shows how to embed the **klink.cloud** Web Chat Widget inside your iOS/Android Flutter app using `webview_flutter`.

> **Replace `YOUR_SCID_HERE`** with the `scId` from **klink.cloud → Settings → Message Integration → Web Chat Widget → Install Code**.

<figure><img src="/files/Sv6G5Vtqo8EFHGpdGMLx" alt=""><figcaption></figcaption></figure>

### 1) Choose a widget URL (3 UI options)

Pick the design that fits your mobile app:

* **Show Header**\
  `https://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&showHeader=true`
* **Hide Header**\
  `https://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&showHeader=false`
* **Chat Bubble Widget**\
  `https://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&view=widget`

### 2) Add dependencies

`pubspec.yaml`

```yaml
dependencies:
  flutter:
    sdk: flutter
  webview_flutter: ^4.8.0
  webview_flutter_android: ^3.16.0
  webview_flutter_wkwebview: ^3.13.0
```

Run:

```
flutter pub get
```

### 3) iOS & Android minimal setup

**Android** → `android/app/src/main/AndroidManifest.xml`

```xml
<uses-permission android:name="android.permission.INTERNET" />
```

**iOS** → `ios/Runner/Info.plist` (only if your chat needs camera/mic)

```xml
<key>NSCameraUsageDescription</key>
<string>Camera access is required to share images via chat.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone access is required for voice messages.</string>
```

### 4) Drop‑in WebView widget

Create `lib/klink_chat.dart` and paste:

```dart
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class KlinkChat extends StatelessWidget {
  const KlinkChat({super.key, required this.url});
  final String url; // one of the 3 URLs above

  @override
  Widget build(BuildContext context) {
    final controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..loadRequest(Uri.parse(url));

    return WebViewWidget(controller: controller);
  }
}
```

### 5) Where to add it (developer‑friendly)

Use the widget on any screen or inside a bottom sheet.

**A. Full‑screen chat page**

```dart
Navigator.of(context).push(
  MaterialPageRoute(
    builder: (_) => const Scaffold(
      appBar: AppBar(title: Text('Support')),
      body: KlinkChat(
        url: 'https://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&showHeader=false',
      ),
    ),
  ),
);
```

**B. Slide‑up sheet (keeps user in current screen)**

```dart
showModalBottomSheet(
  context: context,
  useSafeArea: true,
  isScrollControlled: true,
  builder: (_) => SizedBox(
    height: MediaQuery.of(context).size.height * 0.85,
    child: const KlinkChat(
      url: 'https://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&view=widget',
    ),
  ),
);
```

### 6) (Optional) Pass user identity

If your workspace enables identifying app users, append params you support (example):

```
...&userName=John&userEmail=john@klink.cloud
```

> For signed SSO (HMAC/TTL), follow your workspace’s security instructions and add the `signature`/timestamp params you require.

### 6.1) (Optional) Prefill a message with `defaultMessage`

You can prefill the chat input with a default message by passing a query parameter called `defaultMessage` in the widget URL.

#### Parameter

* **Name:** `defaultMessage`
* **Type:** `String`
* **Description:** The message you want to prefill (**must be URL-encoded**)

#### How it works

1. Add `defaultMessage` to the widget URL as a query parameter.
2. URL-encode the message (spaces, line breaks, and special characters).
3. When the chat loads, the text will appear automatically in the message/input field.

#### Example (URL-encoded)

```
https://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&showHeader=false&defaultMessage=Order%20number%3A%203388338%0AName%3A%20John%0APhone%3A%2093939838838
```

This prefills the input as:

```
Order number: 3388338
Name: John
Phone: 93939838838
```

Tips

* Use `%0A` for a new line.
* Always encode before appending (otherwise the URL can break or truncate the message).

### 7) Quick checklist

* [ ] Replace `YOUR_SCID_HERE` with your own `scId`
* [ ] Confirm `INTERNET` permission (Android)
* [ ] Add camera/mic usage descriptions if needed (iOS)
* [ ] Test both light/dark modes and rotation

***

**That’s it.** Your Flutter app now embeds the klink.cloud chat widget with your chosen design (header on/off or chat bubble).


# Live Chat on WordPress

This guide explains step-by-step how to install the **klink.cloud AI Agent Live Chat Widget** on your WordPress website using the **WPCode (formerly known as WBCoast)** plugin.

{% embed url="<https://www.loom.com/share/1fe0bf337daa4be1a9c71c46a9a20514>" %}

***

### ⚙️ Step 1: Log In to Your WordPress Admin Panel

1. Go to your WordPress admin dashboard (usually `https://yourdomain.com/wp-admin`).
2. Log in with your administrator credentials.

***

### 🧩 Step 2: Install the “WPCode” Plugin

1. In the left-hand menu, navigate to **Plugins → Add New**.
2. In the search bar, type **“WPCode”** (by WPBeginner — previously known as WBCoast).
3. Click **Install Now**, then **Activate** once the installation is complete.

***

### 💻 Step 3: Open the “Code Snippets” Section

1. After activation, you’ll see a new menu item labeled **Code Snippets** or **WPCode**.
2. Click **Code Snippets → Add New**.
3. Choose **Add Your Custom Code (New Snippet)**.

***

### 🧠 Step 4: Create a New JavaScript Snippet

1. Set a name for your snippet (e.g., **klink.cloud AI Agent Live Chat**).
2. In the **Code Type** dropdown, select **JavaScript Snippet**.
3. Copy your **AI Agent Live Chat JavaScript Code** from your **klink.cloud dashboard**.
4. Paste the code into the code editor area in WPCode.

***

### 🛠️ Step 5: Configure Snippet Settings

1. Under **Insertion**, choose **Auto Insert**.
2. Select **Site-Wide Header** (this ensures the live chat widget loads on every page).
3. Review to make sure all settings are correct.

***

### 💾 Step 6: Save and Activate the Snippet

1. Click **Save Snippet**.
2. Toggle the snippet to **Active** (Enable).
3. Then click **Update**.

***

### ✅ Step 7: Verify Installation

1. Visit your website in a new browser tab.
2. You should see the **AI Agent Live Chat Widget** appear at the bottom-right corner of your website.
3. If it doesn’t appear:
   * Clear your site and browser cache.
   * Make sure the snippet is **enabled** and **set to load in the header**.
   * Confirm that the JavaScript code copied from klink.cloud is correct.

***

### 🎉 You’re Done!

Your **klink.cloud AI Agent Live Chat Widget** is now successfully installed on your WordPress website.\
Visitors can now interact with your **AI Agent** or human support team directly through the live chat widget.

***

#### 🧾 Notes

* Ensure your website uses **HTTPS** so the chat widget loads securely.
* Any updates you make to the AI Agent settings inside **klink.cloud** will automatically apply to the widget.
* To temporarily disable the widget, toggle **Active → Inactive** in WPCode.


# Chat Widget - Custom Buttons & Programmatic Control

Embed the klink.cloud chat widget on your site, hide the default launcher, and open chat from your own buttons or events.

#### Installation

Add the script inside the `<head>` tag of your HTML. It uses `async` and `defer`, so it won't block page rendering.

html

```html
<head>
  <script>
    (function (d, t) {
      var timestamp = new Date().getTime();
      var SCRIPT_PATH = "https://webchat.klink.cloud/widget/klink-chat-widget.umd.js";
      var g = d.createElement(t),
          s = d.getElementsByTagName(t)[0];
      g.src = SCRIPT_PATH + '?v=' + timestamp;
      g.defer = true;
      g.async = true;
      s.parentNode.insertBefore(g, s);
      g.onload = function () {
        window.klinkChatSDK.run({
          serverUrl: "https://apigw.klink.cloud",
          scId: "YOUR_SC_ID_HERE",
        });
      };
    })(document, 'script');
  </script>
</head>
```

**Framework notes:** In Next.js, use `<Script strategy="afterInteractive">` in your root layout. In Vite or CRA, paste the snippet into `public/index.html`. In WordPress, use a headers plugin or edit `header.php`.

***

#### Configuration Options

| Option             | Type    | Required | Description                                        |
| ------------------ | ------- | -------- | -------------------------------------------------- |
| `serverUrl`        | string  | Yes      | Always `https://apigw.klink.cloud`                 |
| `scId`             | string  | Yes      | Your Social Channel ID from klink.cloud settings   |
| `showLaunchButton` | boolean | No       | Set to `false` to hide the default floating button |
| `authUser`         | object  | No       | Pre-fills visitor identity (`email`, `name`)       |

***

#### Hide the Default Button & Open Programmatically

To integrate chat into your own UI — a nav link, hero CTA, or custom icon — hide the default launcher and call `openWidget()` when you need it.

javascript

```javascript
window.klinkChatSDK.run({
  serverUrl: "https://apigw.klink.cloud",
  scId: "YOUR_SC_ID_HERE",
  showLaunchButton: false,
});
```

Then trigger it from any click:

html

```html
<button onclick="window.klinkChatSDK.openWidget()">
  Chat with Support
</button>
```

**React / Next.js**

jsx

```jsx
<button onClick={() => window.klinkChatSDK.openWidget()}>
  Talk to us
</button>
```

**Link**

html

```html
<a href="#" onclick="window.klinkChatSDK.openWidget(); return false;">
  Need help? Chat now
</a>
```

***

#### Passing Authenticated Users

For logged-in visitors, pass their identity so conversations attribute to a known contact instead of an anonymous session.

javascript

```javascript
window.klinkChatSDK.run({
  serverUrl: "https://apigw.klink.cloud",
  scId: "YOUR_SC_ID_HERE",
  showLaunchButton: false,
  authUser: {
    email: session?.user?.email,
    name: session?.user?.name,
  },
});
```

In React, wait for the session to hydrate before initializing:

jsx

```jsx
useEffect(() => {
  if (session?.user && window.klinkChatSDK) {
    window.klinkChatSDK.run({
      serverUrl: "https://apigw.klink.cloud",
      scId: "YOUR_SC_ID_HERE",
      showLaunchButton: false,
      authUser: {
        email: session.user.email,
        name: session.user.name,
      },
    });
  }
}, [session]);
```

***

#### Notes

* Initialize once per page — calling `run()` multiple times creates duplicate instances.
* Only pass `authUser` when you have real values; omit the field otherwise.
* If `window.klinkChatSDK` is undefined, the script hasn't finished loading yet.


# Identity Verification (Secure User Login)

Identity verification proves that the `authUser` passed to the K-Link chat widget really is the person your website says it is. Without it, anyone who opens the widget could claim any email address and read that user's conversation history.

It works the same way as Intercom's identity verification: your **server** computes an HMAC-SHA256 hash of the user's identity using a secret only you and K-Link know, and passes it to the widget as `userHash`. The chat backend recomputes the hash and only honors the identity when it matches. The secret never appears in the browser, so visitors cannot forge a hash for someone else's identity.

### Choosing the identity value

The identity is whatever stable, unique value identifies the user in your system — a customer id, email, phone number, or any other unique id. Pass it in the `identity` field. If you don't set `identity`, the widget uses `email` as the identity, so existing email-based integrations keep working unchanged.

**The one rule that matters:** the `userHash` must sign the exact value that serves as the identity — i.e. `identity` if you send it, otherwise `email`. That same value is what the backend uses to recognize a returning user, so pick one identity strategy per channel and stay with it. `email`/`phone` you also pass are stored as profile attributes for display; only the identity value is signed and deduplicated on.

### 1. Generate the channel's identity secret

Use the K-Link public API with your existing API token (`kpt_…`):

```bash
curl -X POST "https://apigw.klinkcx.com/api/v1/webchat/channels/<channelId>/identity-verification/secret" \
  -H "Authorization: Bearer kpt_xxxxxxxx"
# => { "requestId": "…", "secret": "9f2c4a…64 hex chars…" }
```

`<channelId>` is your klink.cloud webchat channel id — the same value passed to the widget as `scId`. The API only accepts channels that belong to your tenant.

The plaintext secret is returned only by this call. Store it in your server's secret manager — never in frontend code, HTML, or public repos. Calling the endpoint again rotates the secret (the old one stops working immediately).

### 2. Compute `userHash` on your server

Hash the **exact identity string** you pass to the widget — the value of `identity` (or `email` if you don't send `identity`). The comparison is byte-for-byte, so watch out for casing/whitespace differences. In the examples below `identity` is the customer id you pass as `authUser.identity`.

Node.js:

```js
const crypto = require("crypto");

const userHash = crypto
  .createHmac("sha256", process.env.KLINK_IDENTITY_SECRET)
  .update(identity) // e.g. user.id — or user.email if that's your identity
  .digest("hex");
```

PHP:

```php
$userHash = hash_hmac('sha256', $identity, getenv('KLINK_IDENTITY_SECRET'));
```

Python:

```python
import hashlib, hmac, os

user_hash = hmac.new(
    os.environ["KLINK_IDENTITY_SECRET"].encode(),
    identity.encode(),
    hashlib.sha256,
).hexdigest()
```

### 3. Pass it to the widget

Render the hash into the page for the logged-in user. Identify by any stable unique value via `identity`:

```html
<script>
  klinkChatSDK.run({
    serverUrl: "https://platform.klinkcx.com",
    scId: "<your-channel-id>",
    authUser: {
      name: "Jane Doe",
      identity: "cust_9931", // your stable user id; the value the hash signs
      email: "jane@example.com", // optional profile attribute
      phone: "+95912345678", // optional profile attribute
      userHash: "<hmac-of-identity-computed-on-your-server>",
    },
  });
</script>
```

If you identify users by email, omit `identity` and sign the email instead — the existing behavior:

```html
<script>
  klinkChatSDK.run({
    serverUrl: "https://platform.klinkcx.com",
    scId: "<your-channel-id>",
    authUser: {
      name: "Jane Doe",
      email: "jane@example.com", // used as the identity; sign this value
      userHash: "<hmac-of-email-computed-on-your-server>",
    },
  });
</script>
```

Anonymous visitors (no login) simply omit `authUser` — nothing changes for them.

### 4. Enable enforcement

While enforcement is off, identities without a `userHash` are still accepted (legacy behavior), but a **provided** hash is always validated — deploy step 3, watch the browser console for `[KLinkChat]` warnings, and once clean, turn enforcement on:

```bash
curl -X PUT "https://apigw.klinkcx.com/api/v1/webchat/channels/<channelId>/identity-verification" \
  -H "Authorization: Bearer kpt_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "enforce": true }'
```

From then on, any `authUser` without a valid `userHash` is rejected: the visitor is treated as anonymous, the server logs the rejection, and the widget prints the reason to the browser console. Check status at any time:

```bash
curl "https://apigw.klinkcx.com/api/v1/webchat/channels/<channelId>/identity-verification" \
  -H "Authorization: Bearer kpt_xxxxxxxx"
# => { "requestId": "…", "secretConfigured": true, "enforceIdentityVerification": true }
```

### Behavior summary

| Channel state               | `authUser` without hash | `authUser` with valid hash      | `authUser` with invalid hash    |
| --------------------------- | ----------------------- | ------------------------------- | ------------------------------- |
| No secret configured        | trusted (legacy)        | trusted (legacy, cannot verify) | trusted (legacy, cannot verify) |
| Secret set, enforcement off | trusted (legacy)        | verified ✓                      | rejected → anonymous            |
| Secret set, enforcement on  | rejected → anonymous    | verified ✓                      | rejected → anonymous            |

Here "hash" means a `userHash` that correctly signs the identity value. A hash that signs a different value (e.g. the email when `identity` is set) is treated as invalid.

Additional guarantees, regardless of enforcement:

* A user record that was ever verified can only be matched or updated by another verified claim — an unverified claim can never take over a verified user's conversation history or overwrite their profile.
* Message sender identity is stamped server-side from the registered session; a client cannot send messages as someone else.
* Switching a channel's identity strategy (e.g. from email to a customer id) keys returning users differently, so the same person may start a fresh record. Pick one identity value per channel and keep it stable.

### Notes

* Rotating a secret invalidates hashes computed with the old one. Deploy the new secret to your server at the same time; sessions registered in between fall back to anonymous rather than breaking the widget.
* The API endpoints use the same `kpt_` API token you already use for the K-Link public API, and only accept webchat channels that belong to your account.


# Facebook Messenger

Engage with your audience directly on Klink.cloud using Facebook Messenger. Seamlessly connect and communicate with customers on this widely used platform. Klink.cloud makes it easy for you to manage conversations, respond promptly, and deliver exceptional customer service—all within the convenience of Facebook Messenger.

{% hint style="info" %}
Follow below tutorials to connect Facebook Messenger
{% endhint %}

{% content-ref url="/pages/SypQUTKv2fwi7xbFHBrq" %}
[Connect to Facebook Messenger](/getting-started/setup-channels/facebook-messenger/connect-to-facebook-messenger)
{% endcontent-ref %}

{% content-ref url="/pages/SvcdkgXQ4bLRbmlKV3jV" %}
[Primary Routing Setup (Facebook & Instagram)](/getting-started/setup-channels/facebook-messenger/primary-routing-setup-facebook-and-instagram)
{% endcontent-ref %}

### FAQ

<details>

<summary>What is 24 Hour Messaging Window Policy by Meta</summary>

Facebook Messenger has a policy called the "24-hour rule" that applies to businesses interacting with users.

The 24-hour messaging window in Facebook Messenger is a rule aimed at preventing businesses from spamming users. Here's how it works:

* **Businesses have 24 hours to respond to users with any kind of message, including promotional content.** This window opens whenever a user initiates contact through a message, clicks a button within a Messenger ad, or replies to a previous message from the business.
* **Any interaction from the user resets the 24-hour window.** So if a user replies to your message within 24 hours, the business can continue the conversation free

</details>

<details>

<summary>How to Facebook Message reply after 24 Hour</summary>

#### After the 24-Hour Window

Once the 24-hour window closes, sending promotional or regular messages is restricted. Businesses can only send further messages using specific tags approved by Facebook, which include:

* **Post-Purchase Update**: Information about a user's recent transaction.
* **Account Update**: Important notifications about a user's account status.
* **Event Update**: Updates about events for which the user has registered interest.

![](/files/yAZhguEWLYRV5PsgoUkW)

\
These tags ensure that messages sent after the 24-hour window are necessary and non-promotional.

</details>


# Connect to Facebook Messenger

Reply to customer messages on multiple Facebook Messenger from klink.cloud

{% hint style="info" %}
You need to be —

* The owner or full admin of  your Facebook page.
  {% endhint %}

### Step 1 - Go to Settings > Message Integration > Available Channels&#x20;

Go to Settings > Message Integration > Available Channels, and then click "Messenger"

<figure><img src="/files/mCmtCl1BwDopCE5fPOfm" alt=""><figcaption></figcaption></figure>

### Step 2 - Click "Login to Facebook" and then login with your Facebook account

<figure><img src="/files/LdM7Bd3oP0MFqMpKKZ3R" alt=""><figcaption></figcaption></figure>

After that, choose your Facebook page which page do you want to link and Click "Next"

<figure><img src="/files/0nVPBGSatVjGt1deqteT" alt=""><figcaption></figcaption></figure>

**Click** "Done"

<figure><img src="/files/ovHEgIvjuCGDjhoJrnVr" alt=""><figcaption></figcaption></figure>

### Step 2 - Choose your Page and Click "Next" and then Click "Complete Setup"

<figure><img src="/files/xYSswvzQamnESpH5ZlBm" alt=""><figcaption></figcaption></figure>

Finally you will see your Facebook messaging channel on "Your Channels"

<figure><img src="/files/QD7hSkyjFUJZZMz07MSm" alt=""><figcaption></figcaption></figure>

{% content-ref url="/pages/SvcdkgXQ4bLRbmlKV3jV" %}
[Primary Routing Setup (Facebook & Instagram)](/getting-started/setup-channels/facebook-messenger/primary-routing-setup-facebook-and-instagram)
{% endcontent-ref %}


# Primary Routing Setup (Facebook & Instagram)

If you are not receiving full messages from your facebook / instagram, you need to setup as primary handover as in your facebook privacy setting. Please follow below step by step guides

{% embed url="<https://www.loom.com/share/f5653df0e49e4951977306fe289043ac?sid=f34f228b-0f17-40fb-b060-4a529cf01878>" %}

1. Go to your Facebook Page and click **Settings & Privacy (Switch Profile to your Business Page) > Advanced Messaging**

<figure><img src="/files/O1bqiWI9OLhCgPkJ4GPO" alt=""><figcaption></figcaption></figure>

2. Go to **New Pages Experiences**

<figure><img src="/files/xUeG5uWpXDO3Ctw1NR4F" alt=""><figcaption></figcaption></figure>

3. Go to **Advanced Messaging**

<figure><img src="/files/TLYYiTwTG1KK7a4arvwO" alt=""><figcaption></figcaption></figure>

4. Go to **App Settings Messenger / Instagram Receiver** and **chose klink.cloud as Primary receiver** for handover protocol&#x20;

<figure><img src="/files/0Pwqnoyv9U7FMHrAmyCq" alt=""><figcaption></figcaption></figure>

Done. You will sucesfully receive all message from Facebook Messenger & Instagram to your klink.cloud Inbox


# Facebook Feed

Integrate Facebook feeds directly into klink.cloud with ease. Display dynamic content from your Facebook page, engage visitors with the latest updates and enhance your site's interactivity. This integration allows you to effortlessly showcase posts, photos, and videos, providing a seamless experience for your audience while keeping them informed and engaged.

{% hint style="info" %}
Follow the below guides to connect to Facebook Feeds
{% endhint %}

{% content-ref url="/pages/YDW6EnxvSMuH9ANpVrdn" %}
[Connect to Facebook Feed](/getting-started/setup-channels/facebook-feed/connect-to-facebook-feed)
{% endcontent-ref %}

{% content-ref url="/pages/SvcdkgXQ4bLRbmlKV3jV" %}
[Primary Routing Setup (Facebook & Instagram)](/getting-started/setup-channels/facebook-messenger/primary-routing-setup-facebook-and-instagram)
{% endcontent-ref %}

### FAQ

<details>

<summary>What is 24 Hour Messaging Window Policy by Meta</summary>

Facebook Messenger has a policy called the "24-hour rule" that applies to businesses interacting with users.

The 24-hour messaging window in Facebook Messenger is a rule aimed at preventing businesses from spamming users. Here's how it works:

* **Businesses have 24 hours to respond to users with any kind of message, including promotional content.** This window opens whenever a user initiates contact through a message, clicks a button within a Messenger ad, or replies to a previous message from the business.
* **Any interaction from the user resets the 24-hour window.** So if a user replies to your message within 24 hours, the business can continue the conversation free

</details>

<details>

<summary>How to Facebook Message reply after 24 Hour</summary>

#### After the 24-Hour Window

Once the 24-hour window closes, sending promotional or regular messages is restricted. Businesses can only send further messages using specific tags approved by Facebook, which include:

* **Post-Purchase Update**: Information about a user's recent transaction.
* **Account Update**: Important notifications about a user's account status.
* **Event Update**: Updates about events for which the user has registered interest.

![](/files/yAZhguEWLYRV5PsgoUkW)

\
These tags ensure that messages sent after the 24-hour window are necessary and non-promotional.

</details>


# Connect to Facebook Feed

Reply to customer messages on multiple Facebook Feeds from klink.cloud

{% hint style="info" %}
You need to be —

* The owner or full admin of  your Facebook page.
  {% endhint %}

### Step 1 - Go to Settings > Message Integration > Available Channels&#x20;

Go to Settings > Message Integration > Available Channels, and then click "Facebook Feed"

<figure><img src="/files/V9t9Vx36MgC39PkDxIA4" alt=""><figcaption></figcaption></figure>

### Step 2 - Click "Login to Facebook" and then login with your Facebook account

<figure><img src="/files/LdM7Bd3oP0MFqMpKKZ3R" alt=""><figcaption></figcaption></figure>

After that, choose your Facebook page which page do you want to link and Click "Next"

<figure><img src="/files/0nVPBGSatVjGt1deqteT" alt=""><figcaption></figcaption></figure>

**Click** "Done"

<figure><img src="/files/ovHEgIvjuCGDjhoJrnVr" alt=""><figcaption></figcaption></figure>

### Step 2 - Choose your Page and Click "Next" and then Click "Complete Setup"

<figure><img src="/files/cZgcU3VvNDsn1NTOAWLK" alt=""><figcaption></figcaption></figure>

Finally, you will see your Facebook Feed channel on "Your Channels"

<figure><img src="/files/GIK5BpP14jNB4P8MDxa5" alt=""><figcaption></figcaption></figure>

{% content-ref url="/pages/SvcdkgXQ4bLRbmlKV3jV" %}
[Primary Routing Setup (Facebook & Instagram)](/getting-started/setup-channels/facebook-messenger/primary-routing-setup-facebook-and-instagram)
{% endcontent-ref %}


# Primary Routing Setup (Facebook & Instagram)

If you are not receiving full messages from your facebook / instagram, you need to setup as primary handover as in your facebook privacy setting. Please follow below step by step guides

{% embed url="<https://www.loom.com/share/f5653df0e49e4951977306fe289043ac?sid=f34f228b-0f17-40fb-b060-4a529cf01878>" %}

1. Go to your Facebook Page and click **Settings & Privacy**

<figure><img src="/files/O1bqiWI9OLhCgPkJ4GPO" alt=""><figcaption></figcaption></figure>

2. Go to **New Pages Experiences**

<figure><img src="/files/xUeG5uWpXDO3Ctw1NR4F" alt=""><figcaption></figcaption></figure>

3. Go to **Advanced Messaging**

<figure><img src="/files/TLYYiTwTG1KK7a4arvwO" alt=""><figcaption></figcaption></figure>

4. Go to **App Settings Messenger / Instagram Receiver** and **chose klink.cloud as Primary receiver** for handover protocol&#x20;

<figure><img src="/files/0Pwqnoyv9U7FMHrAmyCq" alt=""><figcaption></figcaption></figure>

Done. You will sucesfully receive all message from Facebook Messenger & Instagram to your klink.cloud Inbox


# WhatsApp

{% content-ref url="/pages/SYMOO3SSu0CXTAK0A7gH" %}
[WhatsApp Mobile (QR Scan)](/getting-started/setup-channels/whatsapp/whatsapp-mobile-qr-scan)
{% endcontent-ref %}

{% content-ref url="/pages/eL7i7ux580rRlubIM3UB" %}
[WhatsApp Official Business Account (WABA by Meta)](/getting-started/setup-channels/whatsapp/whatsapp-official-business-account-waba-by-meta)
{% endcontent-ref %}


# WhatsApp Mobile (QR Scan)

This tutorial will guide you how to connect your Whatsapp Mobile channel.

#### **Step 1 - Go to Setting -> Message integration -> Available Channels. Click "Whatsapp"**

<figure><img src="/files/WtENvb8c2evpm6RspPfm" alt="" width="563"><figcaption></figcaption></figure>

Click on the WhatsApp Mobile.

<figure><img src="/files/EQ8p1msfxXUgSriGQ6kk" alt="" width="375"><figcaption></figcaption></figure>

#### Step 2—Once you have selected Whatsapp Mobile, follow the instructions and Scan the QR code from your mobile device.

<figure><img src="/files/ipzTa9Yv9QThd1BVJBT9" alt="" width="375"><figcaption></figcaption></figure>

That's it! You have successfully connected your Whatsapp Account.

<figure><img src="/files/JuczUyEvBO8bN7HGOV9e" alt="" width="375"><figcaption></figcaption></figure>

You can view your connected WhatsApp channel under **Settings > Message Integration > Your Channel**.

<figure><img src="/files/gQ6Ou7T6PrWP6Kl2rRgN" alt="" width="375"><figcaption></figcaption></figure>

That's it! You've successfully connected your WhatsApp Mobile channel to Klink.Cloud. Now you can effortlessly manage all your WhatsApp messages in one place.

#### FAQ

**Q: My WhatsApp (QR Device Link Channel) is not receiving messages. What should I do?**

**A:** This usually happens when your WhatsApp device connection is no longer active.

Please follow these steps to fix the issue:

**✅ Step 1: Check WhatsApp Device Connection**

1. Open the **WhatsApp mobile app** on your phone
2. Go to **Linked Devices**
3. Check whether the device connection is still **active**

If there is **no active connection**, you will need to reconnect.

<div data-full-width="false"><figure><img src="/files/Iby6Moh86ICDPX8iOIIJ" alt="" width="375"><figcaption></figcaption></figure></div>

**🔄 Step 2: Reconnect WhatsApp in klink.cloud**

1. Log in to **klink.cloud**
2. Go to **Settings → Message Integration**
3. Click **Reconnect**
4. A **new QR code** will appear
5. Open WhatsApp on your phone and **scan the QR code** to link the device again

**⚠️ Important Notes**

* **Do NOT delete** the linked device from your WhatsApp mobile app
* Deleting the connection will immediately stop incoming messages
* If the connection is removed, you must reconnect using a new QR code

If the issue continues after reconnecting, please contact our support team for assistance.


# WhatsApp Official Business Account (WABA by Meta)

This tutorial will guide you how to connect your Whatsapp Official Business Account.

{% embed url="<https://www.loom.com/share/492c6e82ebc34c509611aa73c4d73d5d?sid=14adb51a-8cb8-4fb1-89ef-f553eda79b82>" %}

#### **Step 1 - Go to Setting -> Message integration -> Available Channels. Click "Whatsapp"**

<figure><img src="/files/WtENvb8c2evpm6RspPfm" alt=""><figcaption></figcaption></figure>

After that, you need to log in with your Facebook to continue.

<figure><img src="/files/7a3EADWl6rR01mGmMilE" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ohnzIwvtNpx9L14488Sq" alt="" width="375"><figcaption></figcaption></figure>

#### Step 2 - Once logged into your Facebook account, you can begin connecting your WhatsApp Business account.

<figure><img src="/files/gnAbPt4LErYWV63oMDaN" alt="" width="375"><figcaption></figcaption></figure>

Fill in your Business Information

<figure><img src="/files/fGJHDviEqZpLr6CWeSXB" alt="" width="375"><figcaption></figcaption></figure>

#### Step 3 - You can create a new WhatsApp Business account or select an existing one to connect.

<figure><img src="/files/5GPfs1cPfxsg4h0YSyTo" alt="" width="375"><figcaption></figcaption></figure>

Add a phone number for WhatsApp. \
**Note:** Ensure that the phone number has not been previously used for WhatsApp. This number must not be currently associated with any WhatsApp account.

<figure><img src="/files/P2dbl0nbbjO2jfZQAboI" alt="" width="375"><figcaption></figcaption></figure>

Verify your phone number with SMS OTP.

<figure><img src="/files/QiUPUO5kctocvsiTaHIW" alt="" width="375"><figcaption></figcaption></figure>

You have successfully created a WhatsApp business account.

<figure><img src="/files/C63on82gpMhK5SYtwk82" alt="" width="375"><figcaption></figcaption></figure>

#### Step 4 -After creating your WhatsApp Business account, you can proceed to set up the necessary information in **klink.cloud**.

<figure><img src="/files/MyY8UZ7rso6xaLpmCTdZ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/LFmF2Yasp3tmAzM1MkiO" alt=""><figcaption></figcaption></figure>

After completing the setup, you will see a confirmation message indicating that your WhatsApp has been successfully connected. **Note: You may see a status of "Waiting for approval" because the account is newly created and is under review by the Meta team. After a few minutes, it will appear as "Connected."**

<figure><img src="/files/ygKuRdoWZXDE5XYYtCDy" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/jAB8N8aYXkwnBrx4dNoB" alt=""><figcaption></figcaption></figure>

#### Step 5 -After the channel is connected, you can send a message to your Whatsapp Business channel, which will appear in the klink.cloud Inbox.

<figure><img src="/files/pfca9rEf1dSZFtXKHZQy" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/GW7C6G0o0UTh54LKZOyp" alt=""><figcaption></figcaption></figure>

That's it! You've successfully connected your WhatsApp Business channel to Klink.Cloud. Now you can effortlessly manage all your WhatsApp messages in one place.


# WhatsApp Business Account Profile Update Guide

Quick guide to updating your WhatsApp Business profile picture, description, and business information via Meta Business Suite.

### How to Update Your Profile

#### Access Settings

1. Go to: [`https://business.facebook.com/latest/settings/whatsapp_account`](https://business.facebook.com/settings/whatsapp-business-accounts)
2. Log in to your Meta Business account
3. Select your WhatsApp account from the list

<figure><img src="/files/Bb70WtoaS7eVCDPxAZQX" alt=""><figcaption></figcaption></figure>

#### Update Profile Picture

1. Click on your current profile picture
2. Upload a new image (JPG/PNG, 640x640px minimum)
3. Adjust and crop as needed
4. Click "Save"

**Tip:** Use your company logo for best results

#### Update Business Description

1. Find the "About" or "Description" field
2. Click "Edit"
3. Enter your business information (services, hours, location)
4. Click "Save"

#### Other Information You Can Update

* Business address
* Website URL
* Business category
* Contact email

### Important Notes

* Changes may take 24-48 hours to appear
* Some updates require Meta approval
* You need admin access to make changes

### Troubleshooting

* **Can't see settings?** Check you have admin permissions
* **Image won't upload?** Ensure it's JPG/PNG and not too large
* **Changes not showing?** Wait 24 hours or check approval status


# How to Delete a Number (Meta Business Manager)

To delete a number from a WABA:

In **Business Manager**, go to **Business Settings > WhatsApp Accounts > WhatsApp Manager > Phone Numbers**. or Go to <https://business.facebook.com/settings/whatsapp-business-accounts>

<figure><img src="https://docs.360dialog.com/docs/~gitbook/image?url=https%3A%2F%2F3527970750-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-M4sMxKjL6eJRvZn6jeG-887967055%252Fuploads%252FELO4BhjynCDBVIMHxXWI%252FScreenshot_4.png%3Falt%3Dmedia%26token%3D1d718397-795f-491a-bc08-5de9d1119cf1&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3a4620cc&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Find the number you want to delete and **click the** **trash icon**.

<figure><img src="https://docs.360dialog.com/docs/~gitbook/image?url=https%3A%2F%2F3527970750-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-M4sMxKjL6eJRvZn6jeG-887967055%252Fuploads%252FkNcL7eUxIUSi1oJZy8XR%252FScreenshot_1.png%3Falt%3Dmedia%26token%3Dea5d4682-e38a-450c-8b49-5e6bd8fed576&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=ab9bcc27&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Confirm the phone to be deleted and press **Next**.

<figure><img src="https://docs.360dialog.com/docs/~gitbook/image?url=https%3A%2F%2F3527970750-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-M4sMxKjL6eJRvZn6jeG-887967055%252Fuploads%252Fde8Kdg7mNlVhfrmUjax9%252FScreenshot_2.png%3Falt%3Dmedia%26token%3D2b074e53-9cf1-4a3e-b960-3e9146cab056&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3474b1dd&#x26;sv=2" alt=""><figcaption></figcaption></figure>

**Enter** your **pasword** and **select the reason for deletion**.

<figure><img src="https://docs.360dialog.com/docs/~gitbook/image?url=https%3A%2F%2F3527970750-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-M4sMxKjL6eJRvZn6jeG-887967055%252Fuploads%252FpZzDsvv2TP2dLuHcQhSV%252FScreenshot_3.png%3Falt%3Dmedia%26token%3D544e0863-9846-419c-8759-bfe2558493cb&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=e7db0386&#x26;sv=2" alt=""><figcaption></figcaption></figure>

Press **delete** to finish the process.

Once deleted, the number can be:

* Registered again in the WhatsApp Business Platform, or
* Used in WhatsApp or WhatsApp Business App.


# Troubleshooting: WhatsApp Business Account Stuck in "Waiting for Approval"

If your WhatsApp Business Account is stuck in the **"Waiting for Approval"** state for several hours after connecting with your official WhatsApp number, you may need to manually disable **Two-Step Verification** from Meta Business settings.

Follow the steps below to resolve this issue:

{% embed url="<https://www.loom.com/share/b6e946a8f431440e9622d46ae0fa86b6?sid=178da333-b7e7-464b-880a-023eec4caca1>" %}

***

#### ✅ Step-by-Step Instructions

**Step 1: Log in to Meta Business Settings**

1. Go to <https://business.facebook.com>.
2. Navigate to your **Business Settings**.

**Step 2: Access WhatsApp Business Account**

1. In the left menu, click **Accounts → WhatsApp Accounts**.
2. Select the **WhatsApp Business Account** that you connected.

**Step 3: Open WhatsApp Manager**

1. Click on the selected WhatsApp Business Account.
2. Then click **WhatsApp Manager**.

**Step 4: Disable Two-Step Verification**

1. Inside **WhatsApp Manager**, go to **Settings**.
2. Find and click on **Two-Step Verification**.
3. Click **Disable Two-Step Verification**.
4. You may receive a confirmation email from Meta – follow the link in the email to complete the process.

<figure><img src="/files/5xrJxshjHTaEW1DcIZjT" alt=""><figcaption></figcaption></figure>

**Step 5: Refresh and Wait**

1. After disabling Two-Step Verification, refresh the WhatsApp Manager page.
2. The "Two-Step Verification" status should now show as **disabled**.
3. Wait a few minutes — your WhatsApp channel should now connect automatically with the platform (e.g., klink.cloud).

***

#### 🧠 Important Notes

* This is only necessary if your account remains in "Waiting for Approval" for **more than a few minutes**.
* Two-Step Verification may block the system from completing the integration process.
* Always ensure you have access to the email associated with the WhatsApp Business account to complete this process smoothly.

***

####


# WhatsApp Official Business Account (Blue Badge)

The Official Business Account (OBA) displays a blue verification badge next to your business name in WhatsApp conversations, confirming your brand's authenticity.

### What is an Official Business Account?

When you have OBA status, your WhatsApp conversations show:

* A blue checkmark badge in your profile and chat headers
* Your business name (instead of phone number) in all views
* Enhanced trust and recognition from customers

### Requirements for OBA Status

To qualify for the blue badge, your business must meet all of these requirements:

1. **Platform Registration**: Active on WhatsApp Business Platform for at least 30 days
2. **Business Verification**: Completed Meta Business Verification for your company
3. **Display Name**: Your display name has been approved by Meta
4. **Two-Step Verification**: Enabled on your business phone number
5. **Compliance**: Following WhatsApp Business Messaging Policy
6. **Notability**: Your business is well-known and frequently searched online

#### What is Notability?

Your business must be notable - meaning it's a recognized brand with substantial presence in online news articles from publications with large audiences. Meta does not consider:

* Paid or promotional content
* Your own website articles
* Business or app directory listings

**Note**: Notability is different from Business Verification. Verification confirms you're a legal entity, while notability confirms you're a well-known brand.

### How to Check if You Have OBA

In K-LINK, you can verify your OBA status through your WhatsApp channel settings. The blue badge will be visible once approved by Meta.

### Application Process

#### Option 1: Apply Through WhatsApp Manager

1. Go to **Phone numbers** > **Settings** in WhatsApp Manager
2. Navigate to the **Profile** section
3. Click **Submit Request**
4. Provide up to 5 supporting links showing your business notability

#### Option 2: Apply Through K-LINK

Contact K-LINK support to assist with your OBA application. We can help if:

* Your account was created through K-LINK (OBO signup)
* You need to appeal a rejected decision
* You need expert guidance through the process

### Tips for a Successful Application

Before submitting your request, ensure:

* **Website clarity**: Clear information about products/services mentioning your display name
* **Name matching**: Display name matches your website and business registration
* **Media coverage**: At least 3 recent external media links (newspapers, magazines) from the last 12 months
  * Don't use your own website articles
  * Don't use articles older than 12 months
* **Social proof**: Strong Facebook page presence with high engagement
* **Business details**: Complete information about employees and profitability
* **Two-step verification**: Configured and active

### Important Notes

* **OBA is tied to your display name**: If you change your display name after receiving OBA, you'll need to reapply
* **No guaranteed approval**: Meta's Trust & Safety team reviews all requests - approval is not guaranteed
* **30-day waiting period**: If rejected, you must wait 30 days before resubmitting
* **No SLA**: Meta does not provide a specific timeline for review

### If Your Request is Denied

If Meta denies your OBA request:

1. Wait 30 days before resubmitting
2. Strengthen your notability presence online
3. Ensure all requirements are met
4. Consider appealing through K-LINK support

### Need Help?

Contact K-LINK support for assistance with:

* Checking your OBA eligibility
* Submitting your OBA application
* Appealing a rejected decision

***

**Note**: K-LINK cannot guarantee OBA approval as the final decision is made by Meta's Trust & Safety team.


# 📱 How to Migrate an Existing WhatsApp Number to WhatsApp Official Business API (WABA)

This guide explains how to migrate a phone number that is currently active on WhatsApp Personal or WhatsApp Business App (mobile) to the WhatsApp Official Business API (WABA)

This guide explains how to migrate a phone number that is currently active on **WhatsApp Personal** or **WhatsApp Business App (mobile)** to the **WhatsApp Official Business API (WABA)** so it can be connected to Klink.Cloud.

***

### ⚠️ Important: Why This Step Is Needed

When setting up WhatsApp Official Business (Meta) on Klink.Cloud, the phone number you register **must not be currently associated with any WhatsApp account** — including personal WhatsApp or the WhatsApp Business mobile app.

If your number is already in use on WhatsApp mobile, you must **free the number first** by following the steps below before connecting it to Klink.Cloud.

***

### 📋 Before You Start — Checklist

Complete all of these before beginning the migration:

* \[ ] **Backup your chat history** — Exporting important conversations from WhatsApp before deleting the account (Settings → Chats → Export Chat). Once deleted, chat history cannot be recovered.
* \[ ] **Note your contacts and groups** — Your contact list will remain on your phone, but WhatsApp groups tied to this account will be affected.
* \[ ] **Ensure the phone number can receive SMS or an international voice call** — This is required for OTP verification during WABA registration.
* \[ ] **Have access to a Meta Business Manager account** — You will need this to create or connect a WhatsApp Business Account (WABA). If you don't have one, you can create one at [business.facebook.com](https://business.facebook.com/).
* \[ ] **Prepare your business details** — Legal business name, address, website, and business phone number are required for Meta Business Manager.

***

### 🚀 Step-by-Step Migration Guide

#### Step 1 — Export & Backup Important Chats (Optional but Recommended)

Before deleting your WhatsApp account, export any important chat conversations:

1. Open **WhatsApp** on your phone
2. Open the chat you want to export
3. Tap the **three dots (⋮)** → **More** → **Export Chat**
4. Choose **With Media** or **Without Media**
5. Save or send the export file to your email or cloud storage
6. Repeat for all important chats

***

#### Step 2 — Delete Your WhatsApp Account from Mobile

> ⚠️ **This will permanently delete your WhatsApp account and message history on this number. This action cannot be undone.**

**On Android:**

1. Open **WhatsApp**
2. Go to **Settings** (three dots ⋮) → **Account** → **Delete Account**
3. Enter your phone number with country code
4. Tap **Delete My Account**
5. Confirm by tapping **Delete My Account** again

**On iPhone:**

1. Open **WhatsApp**
2. Go to **Settings** → **Account** → **Delete Account**
3. Enter your phone number with country code
4. Tap **Delete My Account**
5. Confirm deletion

Once deleted, the number is now free and ready to be registered as a WhatsApp Business API number.

> 💡 **Note:** After deletion, wait **2–5 minutes** before proceeding to the next step to ensure Meta's systems have fully released the number.

***

#### Step 3 — Set Up WhatsApp Official Business on Klink.Cloud

Now that the number is free, you can connect it to Klink.Cloud as a WABA channel.

1. Log in to your **Klink.Cloud** dashboard
2. Go to **Settings** → **Message Integration** → **Available Channels**
3. Click **WhatsApp** (the Official Business / Meta option)
4. Log in with your **Facebook/Meta account** when prompted
5. Fill in your **Business Information**
6. Choose to **Create a new WhatsApp Business Account (WABA)** or select an existing one
7. Add your phone number (the one you just freed from mobile)
8. Verify via **SMS OTP or voice call**
9. Complete the setup

After completing setup, you will see a confirmation that your WhatsApp channel has been connected.

> 💡 **Note:** You may briefly see a **"Waiting for Approval"** status. This is normal — Meta reviews newly created accounts and it typically changes to **"Connected"** within a few minutes.

***

#### Step 4 — Complete Meta Business Verification (If Not Already Done)

For full access and higher messaging limits, your Meta Business Manager must be verified.

1. Go to [business.facebook.com](https://business.facebook.com/) → **Business Settings** → **Security Center**
2. Click **Start Verification** and follow the steps
3. Provide legal business documents as requested
4. Wait for Meta's approval (typically 1–5 business days)

> 💡 Even before Business Verification is complete, you can still receive inbound messages and respond within the 24-hour customer service window.

***

### ✅ Post-Migration Verification

Once everything is set up, verify the following in your Klink.Cloud dashboard:

* \[ ] WhatsApp channel shows **"Connected"** status in Settings → Message Integration
* \[ ] Inbound messages appear in the **Inbox**
* \[ ] You can send outbound messages using approved **Message Templates**
* \[ ] AI Agent (if configured) responds correctly to test messages

> 💡 **Note:** WhatsApp messaging fees are handled directly by Klink.Cloud. You do not need to add a payment method to your Meta Business Manager for messaging charges.

***

### ❓ Frequently Asked Questions

**Q: Will I lose my WhatsApp contacts after deleting the account?** Your phone contacts remain saved on your device. However, you will lose WhatsApp-specific data like chat history, groups, and profile information tied to the deleted account.

**Q: Can I keep using WhatsApp on a different number after migration?** Yes. You can register a new personal WhatsApp account on a different phone number at any time.

**Q: How long does the migration take?** The full process typically takes **15–30 minutes**, including account deletion, WABA setup, and OTP verification. Meta Business Verification may take additional days.

**Q: What if I see an error during WABA registration saying the number is already in use?** Wait 5–10 minutes after deleting your WhatsApp account and try again. If the issue persists, contact Klink.Cloud support.

**Q: Can I migrate a WhatsApp Business App number without losing chat history?** Not with full migration. If preserving history is critical, consider asking your Klink.Cloud representative about **WhatsApp Coexistence** as an alternative approach.

***

### 🆘 Need Help?

If you encounter any issues during the migration process, contact the Klink.Cloud support team via the in-app chat or email support.

***

*Related Articles:*

* *How to set up WhatsApp Official Business Channel (Meta)*
* *WhatsApp Business Account Profile Update Guide*
* *Troubleshooting: WhatsApp Business Account Stuck in "Waiting for Approval"*


# LINE OA

### Overview of LINE Official Account

Seamlessly integrate with LINE Official Account through Klink.cloud, expanding your communication capabilities. Our platform enables a smooth and direct connection to LINE OA, allowing you to engage with your audience effortlessly. Enhance your customer interactions and leverage the power of LINE messaging to provide personalized and efficient support, all within the unified framework of Klink.cloud.

{% embed url="<https://youtu.be/1GQtN9vSkTw>" %}

{% hint style="info" %}

### Follow below tutorials to connect with LINE OA

{% endhint %}

{% content-ref url="/pages/j9iKoEMuG62Wd1vknGYg" %}
[Get Channel Secret and Channel Access Token](/getting-started/setup-channels/line-oa/get-channel-secret-and-channel-access-token)
{% endcontent-ref %}

{% content-ref url="/pages/RClw5mZ1DpxVvHNM41yy" %}
[Connect to LINE OA](/getting-started/setup-channels/line-oa/connect-to-line-oa)
{% endcontent-ref %}

### FAQ about LINE OA Messaging API

<details>

<summary>Is LINE OA Message is Free ?</summary>

No. LINE OA Messaging API is free for only 500 Message. If you use more than 500 Message, you will need to upgrade to premium plan. Go to Setting and upgrade your LINE OA Plan

![](/files/WWSXTLNec6E0zJLV2iMC)

</details>

<details>

<summary>If Agent manually response chat from LINE OA, it will show / sync in klink.cloud platform</summary>

No, it won't show or sync with klink.cloud platform if Agent manually reply from LINE OA Manager. We recommend all agents reply through only klink.cloud platform

</details>

<details>

<summary>If Agent reply from klink.cloud platform, it will show / sync in LINE OA Manual Chat ?</summary>

Yes, all chat messages from klink.cloud will be sync back to LINE OA Manual Chat

</details>

<details>

<summary>If we don't disconnect LINE OA from klink.cloud platform, will chat histroy deleted in LINE OA Manual Chat ?</summary>

No, it won't delete and all chat history will sync in LINE OA Platform

</details>


# Get Channel Secret and Channel Access Token

{% hint style="info" %}
To connect with LINE OA, you must have full administrator access to

* [LINE OA Manager](https://manager.line.biz/)
* [LINE Developer Console](https://developers.line.biz/)
  {% endhint %}

### Step 1 - Go to LINE OA Manager Settings

Go to [LINE OA Manager](https://manager.line.biz/) > Settings > Messaging API > Copy <mark style="color:red;">**Channel Secret**</mark>

<figure><img src="/files/cwxTCqeIdifKl3wDBpoJ" alt=""><figcaption></figcaption></figure>

### Step 2 - Go to LINE Developer Console Settings

Go to [LINE Developer Console](https://developers.line.biz/) > Messaging API > Copy <mark style="color:red;">**Channel access token**</mark>

<figure><img src="/files/R8hn1Tk07LFwUX2PPNwC" alt=""><figcaption></figcaption></figure>

### Done - Follow below guide to finalize LINE OA Connection

{% content-ref url="/pages/RClw5mZ1DpxVvHNM41yy" %}
[Connect to LINE OA](/getting-started/setup-channels/line-oa/connect-to-line-oa)
{% endcontent-ref %}


# Connect to LINE OA

This tutorial will guide you how to connect your existing LINE OA

{% hint style="info" %}
You will need following information to connect your existing LINE OA Channel. Follow below tutorial to get required information.

* Channel Secret
* Channel Access Token
  {% endhint %}

{% content-ref url="/pages/j9iKoEMuG62Wd1vknGYg" %}
[Get Channel Secret and Channel Access Token](/getting-started/setup-channels/line-oa/get-channel-secret-and-channel-access-token)
{% endcontent-ref %}

After you get Channel Secret & Channel Access Token, follow below steps to connect

### Step 1 - Go to Settings > Message Integration > Available Channel > Install LINE

Enter **Channel Secret** and **Channel Access Token** below

<figure><img src="/files/qBru2N7jU8t0gWT0gbDo" alt=""><figcaption></figcaption></figure>

### Step 2 - Click Next

<figure><img src="/files/C8zyiMvd6M0ASeROqoam" alt=""><figcaption></figcaption></figure>

### Step 3 - Enter your Channel Name

You can enter your LINE OA Account Name below and click **Complete Setup**

<figure><img src="/files/T0ZU5fyDdCtvCvoY7vDH" alt=""><figcaption></figcaption></figure>

### Step 4 - Go to LINE Developers Console > Enable Webhook

Go to >  [LINE Developers Console](https://developers.line.biz/en/), Messaging API > Enable Webhook

<figure><img src="/files/6YmHnK3hIgmlvUs0f6KB" alt=""><figcaption></figcaption></figure>

### Done  -Compelete Setup

You will see your LINE OA Channel will be connected and you will be able to receive messages from your customers via LINE OA

<figure><img src="/files/tmyFcT4VyytTq4M9LCKA" alt=""><figcaption></figcaption></figure>


# Enable Group Chat

This tutorial will guide you how to enable the Group Chat feature for your LINE Official Account.

{% hint style="info" %}
Before enabling group chats, please ensure you have already connected your LINE Official Account to Klink.cloud.
{% endhint %}

{% content-ref url="/pages/RClw5mZ1DpxVvHNM41yy" %}
[Connect to LINE OA](/getting-started/setup-channels/line-oa/connect-to-line-oa)
{% endcontent-ref %}

After you connect your LINE OA, follow the below steps to enable the group chat feature.

### Step 1 - Go to LINE Official Account Manager > Enable GroupChat&#x20;

#### Go to > [LINE Official Account Manager](https://manager.line.biz/) > Settings > Account settings

<div data-with-frame="true"><figure><img src="/files/F6wWq1X0u8bCO0id5Jnx" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
**Important Note:** A LINE user must add your LINE Official Account as a friend first before they can successfully invite the bot into any group chat.
{% endhint %}

#### Done - Complete Setup

Once you have saved your settings, your LINE Official Account is fully ready to join group channels. Klink.cloud will now automatically handle incoming group message flows seamlessly.


# Instagram

Reply to customer messages on multiple Instagram channel from klink.cloud

{% hint style="info" %}
You need to be —

* The owner or full admin of  your Instagram page.
  {% endhint %}

### Step 1 - Go to Settings > Message Integration > Available Channels&#x20;

Go to Settings > Message Integration > Available Channels, and then click "Instagram"

<figure><img src="/files/rjXlUpS6nWXLnr7xcPcR" alt=""><figcaption></figcaption></figure>

### Step 2 - Click "Login to Instagram" and then login with your Instagram account

<figure><img src="/files/f9RxEhXqmhHjcdPExQBp" alt=""><figcaption></figcaption></figure>

After that, choose your Instagram page which page do you want to link and Click "Next"

<figure><img src="/files/vrP46aVk9ZA0PYHWxZtD" alt=""><figcaption></figcaption></figure>

**Click** "Next"

<figure><img src="/files/hkGAgxvzJcp4UvAwqzYN" alt=""><figcaption></figcaption></figure>

**Click** "OK"

<figure><img src="/files/OoDqoCJ2LD8P7QmI84fm" alt=""><figcaption></figcaption></figure>

### Step 3 - Choose your Page and Click "Next" and then Click "Complete Setup"

<figure><img src="/files/LvGEeodjudlxHqqc0gQr" alt=""><figcaption></figcaption></figure>

Finally you will see your Instagram channel on "Your Channels"

<figure><img src="/files/a7M2VKmTRD2xHQgO5l9Q" alt=""><figcaption></figcaption></figure>


# Instagram Messages Not Showing Up? Here's How to Fix It

Instagram messages not showing up in klink.cloud? Your account may need to be switched to Professional and linked to a Facebook Page.

{% embed url="<https://www.loom.com/share/6a394bd7c979446c966080add64e75fe>" %}

### Overview

If you have successfully connected your Instagram account to klink.cloud but are **not receiving any messages**, the most common cause is that your Instagram account is either:

* A **Personal Account** (not a Professional or Business account), or
* **Not linked to a Facebook Page**

Both conditions are required for the Instagram Messaging API to function correctly with klink.cloud.

***

### Why This Happens

Instagram restricts access to its messaging features to **Professional and Business accounts only**. Personal accounts cannot send or receive messages through third-party platforms like klink.cloud. Additionally, Instagram Business messaging requires your account to be connected to a **Facebook Page** to authenticate and route messages properly.

***

### Step 1 — Convert to a Professional or Business Account

If your Instagram account is still a Personal account, you need to upgrade it before messages will flow into klink.cloud.

1. Open the **Instagram app** on your mobile device
2. Go to your **Profile** (bottom right corner)
3. Tap the **hamburger menu** (☰) in the top right
4. Tap **Settings and privacy**
5. Tap **Account type and tools**
6. Tap **Switch to Professional Account**
7. Select **Business** as your account type
8. Follow the on-screen prompts to complete the setup

📖 For official Instagram guidance, refer to: [**https://help.instagram.com/502981923235522**](https://help.instagram.com/502981923235522)

***

### Step 2 — Link Your Instagram Account to a Facebook Page

Once your account is a Professional or Business account, you must connect it to a Facebook Page. This is done from **Facebook**, not Instagram.

1. Log in to **Facebook** on desktop or mobile
2. Go to your **Facebook Page** (the page you want to link)
3. Click **Settings** on your Page
4. In the left menu, click **Linked Accounts**
5. Select **Instagram**
6. Click **Connect Account** and log in with your Instagram credentials
7. Follow the prompts to complete the link

> **Note:** You must be an **Admin** of the Facebook Page to link accounts. If you do not have admin access, contact your Facebook Page administrator. Make sure to enable Allow access to Instagram Message in Inbox

<figure><img src="/files/rTcIpHki4bGmNWVRcObH" alt=""><figcaption></figcaption></figure>

***

### Step 3 — Reconnect Instagram in klink.cloud

After completing Steps 1 and 2, reconnect your Instagram channel in klink.cloud to refresh the connection:

1. Log in to your **klink.cloud dashboard**
2. Go to **Settings → Channels**
3. Find your Instagram channel and click **Disconnect**
4. Click **Connect Instagram** again and follow the authentication flow
5. Verify that messages are now appearing in your inbox

If you are still experiencing issues after completing all the steps above, please contact **klink.cloud Support** and our team will assist you.


# Viber for Business

This tutorial will guide you how to connect your Viber channel

> You will need to purchase Viber Business Account from Viber's Official Partner first to get API Key. Contact our support team, <suport@klink.cloud> if you need to apply official viber business account

### Step 1 - Go to Setting -> Message integration -> Available Channels. Click "Viber"

<figure><img src="/files/2nxwjPTKiJn8g5cZ6EhM" alt=""><figcaption></figcaption></figure>

After that, you will be see like this

<figure><img src="/files/gkNqVVsnkallUT6vVWzm" alt=""><figcaption></figcaption></figure>

### Step 2 - Go to [Viber Partner](https://partners.viber.com/login) and then copy "token" from your Viber Channel&#x20;

<figure><img src="/files/mdQvULHDp50axMSVza1j" alt=""><figcaption></figcaption></figure>

And then, fill your Viber token and Click "Next"

<figure><img src="/files/ZQCg0tN13KiEC9u8oVoj" alt=""><figcaption></figcaption></figure>

### Step 3 - Type your "Viber Channel Name" and Click "Complete Setup"

<figure><img src="/files/f3S9zXl9bXWjKxr7q5PC" alt=""><figcaption></figcaption></figure>

Finally, you will be see that Viber channel on "Your Channels"

<figure><img src="/files/HfbNb5TnoBiTklOZATA7" alt=""><figcaption></figcaption></figure>


# Emails

{% content-ref url="/pages/yqdOKUaXvN8X2JQAct9w" %}
[Setup Email Channels](/getting-started/setup-channels/emails/setup-email-channels)
{% endcontent-ref %}

{% content-ref url="/pages/1EqXpcbGdWzX6GI7wuPa" %}
[Microsoft Email Integration - Admin Consent Guide](/getting-started/setup-channels/emails/microsoft-email-integration-admin-consent-guide)
{% endcontent-ref %}


# Setup Email Channels

klink.cloud supports email integration through multiple providers, allowing you to manage customer emails directly within the platform.

### Setup Instructions

#### Step 1: Access Email Integration Settings

1. Navigate to **Settings** in your klink.cloud dashboard
2. Select **Message Integration**
3. Click on **Email**

<figure><img src="/files/noCh22NB9g6JqXga3ouj" alt=""><figcaption></figcaption></figure>

#### Step 2: Choose Your Email Provider

You'll be redirected to the login page where you can select from three options:

* **Google** (Gmail, Google Workspace)
* **Microsoft** (Outlook, Office 365, Exchange)
* **SMTP/IMAP** (Custom email servers)

#### Step 3: Authenticate Your Account

Select your provider and follow the authentication process:

**For Google Users**

* Sign in with your Google account
* Grant the necessary permissions when prompted
* Your inbox will be connected automatically

<figure><img src="/files/jGu2NReUVtEH0SUxkZlZ" alt=""><figcaption></figcaption></figure>

**For Microsoft Users**

* Sign in with your Microsoft account
* Grant the necessary permissions when prompted

**Note:** If you encounter an "Admin Approval Required" message, your organization requires IT administrator consent before you can proceed.

**Need Admin Approval?** Follow our Microsoft Admin Consent Guide below, or share it with your IT Department to grant the necessary permissions. [Microsoft Email Integration - Admin Consent Guide](/getting-started/setup-channels/emails/microsoft-email-integration-admin-consent-guide)

**For SMTP/IMAP Users**

* Enter your email server details:
  * Incoming mail server (IMAP)
  * Outgoing mail server (SMTP)
  * Port numbers
  * Username and password
  * SSL/TLS settings
* Test the connection and save

#### Step 4: Configure Email Settings

Once connected, configure your preferences:

* Set up automatic routing rules
* Configure response templates
* Enable AI-powered email categorization
* Set business hours and SLA targets

### Need Help?

Contact klink.cloud support at <support@klink.cloud> or through the in-app chat for assistance with email integration.


# Microsoft Email Integration - Admin Consent Guide

Quick guide for IT admins to approve Microsoft email integration when users see "Need admin approval" error in klink.cloud.

### What's Happening?

When connecting Microsoft email accounts to klink.cloud, users may see **"Need admin approval"** message. This means your IT admin must grant permission first.

***

### Quick Fix (Choose One)

#### Option 1: Via K-LINK (Easiest)

1. Sign in to [app.klink.cloud](https://app.klink.cloud) with any user account
2. Go to **Settings** > **Message Integration** > **Email**
3. Click **"Connect with Microsoft"**
4. **Sign in with admin account** (not regular user)
5. Click **"Accept"** to approve

✅ Done! All users can now connect their emails.

***

#### Option 2: Via Azure Portal

1. Sign in to [portal.azure.com](https://portal.azure.com) with admin account
2. Go to **Azure Active Directory** > **Enterprise Applications**
3. Search for **"Unipile"**
4. Click **Permissions** > **"Grant admin consent"**
5. Click **"Accept"**

***

### Technical Details

* **Integration Provider:** Unipile (Microsoft verified partner)
* **App Name:** UNIPILE
* **Redirect URL:** `https://api19.unipile.com:14915/api/v1/hosted/microsoft_auth_request_callback`
* **Required Permissions:** Mail.Read, Mail.Send, Mail.ReadWrite, User.Read

***

### FAQ

**Is this safe?**\
Yes. Uses Microsoft's OAuth 2.0 standard. Unipile is a verified Microsoft partner.

**What data is accessed?**\
Only emails and basic profile info. No access to OneDrive, Teams, or calendars.

**Can we revoke access?**\
Yes, anytime via Azure Portal > Enterprise Applications > Delete Unipile.

**Still having issues?**\
Contact: <support@klink.cloud> or Chat with us within your account


# SMS


# Vonage SMS Integration Guide

#### **Overview**

This guide explains how to connect your **Vonage SMS Provider** with the **klink.cloud** platform.\
Once integrated, you can send and receive SMS messages directly from your klink.cloud inbox, manage customer interactions, and automate workflows — all within a unified omnichannel communication dashboard.

{% embed url="<https://www.loom.com/share/285304f6f24245e5a3154cd56d972dbb>" %}

***

### **1. Prerequisites**

Before starting, ensure that you have:

* A **klink.cloud** account with admin or integration access.
* A **Vonage (formerly Nexmo)** account.
* At least one **active phone number** purchased in your Vonage account.
* Your **Vonage API Key** and **API Secret**.
* Internet access to log in to both dashboards.

***

### **2. Step-by-Step Setup Instructions**

#### **Step 1: Access the Messaging Channel Settings**

1. Log in to your **klink.cloud** dashboard.
2. Navigate to:\
   **Settings → Message Channels → Add Channel → SMS.**
3. A new setup window will open.
4. Enter a **Channel Name** — this helps you identify the SMS line (e.g., *Demo SMS*, *Sales SMS*, or *Support Line*).
5. Optionally, you can use your **phone number** as the channel name for clarity.

***

#### **Step 2: Select Vonage as the SMS Provider**

1. Under **SMS Provider**, select **Vonage** from the dropdown list.
2. In the **Mobile Number** field, log in to your Vonage account and choose one of your available numbers.
   * If you don’t have one yet, go to your Vonage dashboard → **Numbers → Buy Number**, and select one for your region.
3. Copy the number (e.g., `6581234567`) and paste it into the **Mobile Number** field on klink.cloud.

   > **Important:** Do *not* include the country code (“+65” or “+1”) in this field.

***

#### **Step 3: Configure Sender ID (Optional)**

* If your Vonage account supports a **Sender ID** (also known as a Brand Name or Sender Name), enter it under **Sender ID**.
* The Sender ID will replace your phone number in outbound messages when allowed by the recipient country’s carrier.
* If you don’t have a Sender ID, you may **leave this field blank**.

***

#### **Step 4: Retrieve and Add Your Vonage API Credentials**

1. In your **Vonage Dashboard**, go to **API Settings** → **API Keys**.
2. Copy your **API Key** and **API Secret**.
3. Paste them into the following fields in klink.cloud:
   * **API Key** → `Your Vonage API Key`
   * **API Secret** → `Your Vonage API Secret`
4. If you don’t have an API secret yet:
   * Click **Create New Secret** in Vonage, copy it, and then paste it into klink.cloud.

***

#### **Step 5: Configure Webhook for Inbound SMS**

To ensure klink.cloud receives inbound messages:

1. In klink.cloud, copy the **Webhook URL** displayed on your SMS channel setup page.
   * This webhook URL allows Vonage to forward all incoming SMS to klink.cloud.
2. Go to your **Vonage Dashboard** → **Numbers → Edit Number**.
3. Locate the field labeled **Inbound Webhook URL** (or **Webhook for Incoming Messages**).
4. Paste the **Webhook URL** you copied from klink.cloud.
5. Save the settings in your Vonage dashboard.

> ✅ **Tip:** This ensures that every SMS received on your Vonage number is automatically routed to your klink.cloud inbox for real-time visibility.

***

#### **Step 6: Complete and Save Channel Setup**

1. After filling all the required fields — *Channel Name, Provider, Mobile Number, API Key, API Secret, and Webhook URL* — click **Save Channel**.
2. The channel will appear in your list of active SMS channels.
3. Status will show **Connected** once klink.cloud successfully communicates with Vonage’s API.

***

### **3. Testing the Integration**

To verify your connection:

1. Open your mobile phone and send a test SMS to the Vonage number you linked.
2. Check your klink.cloud **Inbox** → **SMS Channel** to see if the message appears.
3. Try replying directly from klink.cloud — this should deliver a message back to your phone.

> **If both inbound and outbound messages are successful**, your Vonage SMS integration is complete.


# Telegram

This tutorial will guide you how to connect your Telegram channel.

{% embed url="<https://www.loom.com/share/651ee350c9e749579cfff52de59d0330?sid=e404a23d-ebe6-47a1-a97d-03a2a24ed69a>" %}

### Step 1 - Go to Setting -> Message integration -> Available Channels. Click "Telegram"

<figure><img src="/files/fBy9SZTNne1p0jMcxjSz" alt=""><figcaption></figcaption></figure>

After that, you will be seen like this

<figure><img src="/files/7fRezMapQ9eTNAFGZKhF" alt=""><figcaption></figcaption></figure>

### Step 2 - Go to the Telegram app and then search for "Botfather"&#x20;

<figure><img src="/files/WCZqIs3lzAsfJEGRaRAb" alt=""><figcaption></figcaption></figure>

Send the command /newbot and follow the instructions.

<figure><img src="/files/Fa3F4QhIKTrZt3IiDnlg" alt=""><figcaption></figcaption></figure>

### Step 3 - Once the bot is created, you will receive a message with the token. Copy the token and paste it into Klink.cloud

<figure><img src="/files/MUZgw4rNRV8xrmh8lKZk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/07Gl6SSPSRHZMZENKs8V" alt=""><figcaption></figcaption></figure>

After that Choose your channel name and click Complete Setup. It will appear in "Your Channel"&#x20;

<figure><img src="/files/uynhcjosuse51k65MhaZ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/iKoHslQGrH3uLuwtwyi0" alt=""><figcaption></figcaption></figure>

### Step 4 - After the channel is connected, you can send a message to your Telegram channel, which will appear in the klink.cloud Inbox.

<figure><img src="/files/xNgwehkXXyMyD5JGtFjq" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/AMRQQlj4WsVTK01ZnJSZ" alt=""><figcaption></figcaption></figure>

That's it! You've successfully connected your Telegram channel to Klink.Cloud. Now you can effortlessly manage all your Telegram messages in one place.


# How to setup Telegram Business Account

Follow below step by step instructions how to activate Telegram Business Account. Before you connect to telegram business, you must have Telegram Bot Channel First. If you don't know how to how to setup Telegram Bot Channel, follow below Documentation first

{% content-ref url="/pages/wuXX0hhb67Fu3B07iOgD" %}
[Telegram](/getting-started/setup-channels/telegram)
{% endcontent-ref %}

#### Step 1 - Activate Business Settings to your Telegram Bot

Go to BotFather -> Edit Bot -> Bot Settings -> Turn On Business Mode

<figure><img src="/files/bw2IE8ZcD4PjnhqkThd2" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/E77L8ZLguHSK7GbTlLvs" alt="" width="228"><figcaption></figcaption></figure>

<figure><img src="/files/d9VOnb96CUqrMlH38ltV" alt="" width="226"><figcaption></figcaption></figure>

#### Step 2 - Buy Telegram Business&#x20;

Telegram business is paid features of Telegram and you will need to buy subscription inside telegram app.

<figure><img src="/files/A63qmO39QpWIkOaApY0N" alt="" width="223"><figcaption></figcaption></figure>

<figure><img src="/files/io3ZNXYA2ftTieeps73g" alt="" width="201"><figcaption></figcaption></figure>

#### Step 3 - Go to Telegram Business -> Chatbots -> Enter Bot Name

<figure><img src="/files/H8x4tWggO7b6GBt9wBWe" alt="" width="204"><figcaption></figcaption></figure>

<figure><img src="/files/8ujgGimADQuULMCk9AO5" alt="" width="204"><figcaption></figcaption></figure>

<figure><img src="/files/Y6ezmnSbws7H0Cy5aSAI" alt="" width="188"><figcaption></figcaption></figure>

After connected to your Telegram Bot with your Telegram Business Account, all customer conversations from Telegram Business Account will appear in klink.cloud Inbox


# Custom Channel

The **Custom Channel** allows you to connect **any third-party messaging platform** to **klink.cloud** using webhooks.

Once connected, messages from your system will appear in the **klink.cloud Unified Inbox**, and agent replies can be sent back to your platform automatically. Text and media messages (images, videos, audio, and files) are supported in both directions.

***

#### Where to Find Custom Channel

1. Go to **Settings**
2. Click **Message Integration**
3. Select **Custom Channel**
4. Click **Create / Setup Custom Channel**

***

#### How Custom Channel Works

Custom Channel uses **two webhooks**:

* **Outbound Webhook**\
  klink.cloud → sends agent replies to your server
* **Inbound Webhook**\
  Your server → sends customer messages into klink.cloud

Both are required for two-way messaging.

***

#### Step 1: Set Up Outbound Webhook

*(klink.cloud → Your System)*

This step allows klink.cloud to deliver agent replies to your server.

<figure><img src="/files/3Z67Tz2XJli4xbuPjdCf" alt=""><figcaption></figcaption></figure>

**Steps**

1. In **Outbound Webhook**, enter your server URL:

   ```
   https://your-webhook-server.com/webhook
   ```
2. (Optional) Add headers if your server requires authentication:

   ```
   Authorization: Bearer YOUR_API_KEY
   ```
3. Click **Next**

**What This Does**

Whenever an agent (or bot) replies in klink.cloud, the reply — text or media — is sent to your server in real time as an HTTPS POST request.

***

#### Step 2: Set Up Inbound Webhook

*(Your System → klink.cloud)*

This step allows your system to send messages **into** klink.cloud.

<figure><img src="/files/1br4v07U27WyH2MJCC6U" alt=""><figcaption></figcaption></figure>

**Steps**

1. Copy the **Inbound Webhook URL** shown on screen\
   Example:

   ```
   https://me.klink.cloud/custom-channel/xxx/xxx/webhook
   ```
2. Use this URL in your backend or application to send messages to klink.cloud
3. Click **Complete Setup**

> 🔒 Keep this URL private. Anyone with this URL can send messages to your inbox.

***

#### Sending Messages to klink.cloud (Inbound Webhook)

**Endpoint**

```
POST {Inbound Webhook URL}
```

**Headers**

```
Content-Type: application/json
```

**Text Message**

```json
{
  "messageId": "msg-001",
  "content": "Hello from our custom platform",
  "sender": {
    "id": "user-123",
    "name": "John Doe",
    "email": ""
  },
  "timestamp": 1765440758023,
  "type": "text",
  "conversationId": "ca7de328-32da-4468-bae0-872e94f56be0"
}
```

**Field Reference**

| Field            | Required     | Description                                                                                                 |
| ---------------- | ------------ | ----------------------------------------------------------------------------------------------------------- |
| `type`           | ✅            | `text`, `image`, `video`, `audio`, or `file`                                                                |
| `conversationId` | ✅            | Your conversation identifier. Reuse the same value to continue a conversation; a new value starts a new one |
| `sender.id`      | ✅            | Unique ID of the customer in your system                                                                    |
| `sender.name`    | ✅            | Display name of the customer                                                                                |
| `sender.email`   | Optional     | Customer email                                                                                              |
| `content`        | ✅ for `text` | Message text. For media types it is an optional caption                                                     |
| `timestamp`      | ✅            | Message time in milliseconds since epoch                                                                    |
| `messageId`      | Optional     | Your unique message ID. If omitted, klink.cloud generates one                                               |
| `attachment`     | ✅ for media  | See **Sending Media Messages** below                                                                        |

***

#### Sending Media Messages (Images, Videos, Audio, Files)

Media messages are sent inline as a **Base64-encoded attachment**.

```json
{
  "messageId": "msg-003",
  "content": "Optional image caption",
  "sender": {
    "id": "user-123",
    "name": "John Doe",
    "email": ""
  },
  "timestamp": 1765440900000,
  "type": "image",
  "conversationId": "ca7de328-32da-4468-bae0-872e94f56be0",
  "attachment": {
    "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB...",
    "fileName": "photo.png",
    "mimeType": "image/png",
    "fileSize": 68
  }
}
```

**Attachment Fields**

| Field      | Required | Description                                                                        |
| ---------- | -------- | ---------------------------------------------------------------------------------- |
| `data`     | ✅        | File content as Base64 — either a raw Base64 string or a `data:<mime>;base64,` URL |
| `fileName` | ✅        | File name including extension (e.g. `invoice.pdf`)                                 |
| `mimeType` | ✅        | MIME type (e.g. `image/png`, `video/mp4`, `audio/mpeg`, `application/pdf`)         |
| `fileSize` | ✅        | Size of the **decoded** file in bytes — must exactly match the decoded Base64 data |

> **Important:** The maximum attachment size is **2.5 MB (2,621,440 bytes)** after Base64 decoding. Requests with a larger attachment, or where `fileSize` does not match the decoded size, are rejected with a `400` error.

***

#### Receiving Messages from klink.cloud (Outbound Webhook)

klink.cloud sends a POST request to your **Outbound Webhook URL** whenever an agent or bot replies. Your configured request headers are included on every call. Respond with a `2xx` status code to acknowledge delivery.

**Text Reply**

```json
{
  "type": "text",
  "conversationId": "ca7de328-32da-4468-bae0-872e94f56be0",
  "channelId": "0196c8a1-1111-2222-3333-444455556666",
  "userId": "user-123",
  "content": "How can I help you?",
  "messageId": "8f14e45f-ceea-4a7a-9f3a-1c1d2e3f4a5b",
  "sender": {
    "id": "agent-001",
    "name": "Support Agent"
  }
}
```

**Media Reply**

For `image`, `video`, `audio`, and `file` replies, the payload includes an `attachment` with a **download URL** instead of Base64 data:

```json
{
  "type": "image",
  "conversationId": "ca7de328-32da-4468-bae0-872e94f56be0",
  "channelId": "0196c8a1-1111-2222-3333-444455556666",
  "userId": "user-123",
  "content": "",
  "messageId": "9a25f56a-dffb-4b8b-8e4b-2d2e3f4a5b6c",
  "sender": {
    "id": "agent-001",
    "name": "Support Agent"
  },
  "attachment": {
    "url": "https://media.klink.cloud/…signed-url…",
    "fileName": "photo.png",
    "fileSize": 245120,
    "mimeType": "image/png"
  }
}
```

> **Note:** Attachment URLs are time-limited signed links. Download the file promptly (or forward the URL immediately) rather than storing the link long-term.

***

#### Testing the Integration

* Use the **Sample Inbound Payloads** provided in the UI (both text and image examples are included)
* Send them via Postman, cURL, or your backend
* Confirm the message appears in the inbox

***

#### Security Best Practices

* Always use **HTTPS**
* Use headers for authentication
* Do not expose inbound webhook URL publicly
* Validate all incoming requests

***

#### Supported Message Types

| Type            | Inbound (to klink.cloud)      | Outbound (from klink.cloud) |
| --------------- | ----------------------------- | --------------------------- |
| Text            | ✅ Supported                   | ✅ Supported                 |
| Image           | ✅ Supported (Base64, ≤2.5 MB) | ✅ Supported (signed URL)    |
| Video           | ✅ Supported (Base64, ≤2.5 MB) | ✅ Supported (signed URL)    |
| Audio           | ✅ Supported (Base64, ≤2.5 MB) | ✅ Supported (signed URL)    |
| File / Document | ✅ Supported (Base64, ≤2.5 MB) | ✅ Supported (signed URL)    |

***

#### Typical Use Cases

* Custom chat applications
* Internal company messengers
* AI bots & agents
* CRM or ERP messaging
* Legacy system integrations

***

#### Need Help?

* 📘 Documentation: <https://docs.klink.cloud>
* 💬 Support: <support@klink.cloud>


# Zendesk

Connect Zendesk to klink.cloud and reply with AI Agent.

#### Overview

This guide walks you through connecting your Zendesk account to klink.cloud. Once connected, all of your Zendesk tickets appear directly in the klink.cloud Inbox, and you can configure an AI Agent to automatically respond to incoming Zendesk conversations.

#### What You'll Need

* Admin access to your Zendesk account
* Access to your klink.cloud workspace (app.klink.cloud)
* Permission to create workflows in klink.cloud

***

### Part 1 — Generate a Zendesk API Token

**Step 1: Open the API Token settings in Zendesk**

1. Log in to your Zendesk account as an administrator.
2. Go to **Admin Center** > **Apps and integrations** > **APIs** > **API Configuration > Enable APIs**

<figure><img src="/files/LGYcmZsACR9dviHK1I1q" alt=""><figcaption></figcaption></figure>

**Step 2: Create the API Token**

1. Make sure **Token Access** is enabled.
2. Click **Add API token** (or the plus icon).
3. Optionally add a description, for example "klink.cloud integration", so you can identify it later.

<figure><img src="/files/4HA913p9FpPal87InzUd" alt=""><figcaption></figcaption></figure>

**Step 3: Copy the API Token**

1. Copy the generated token and store it somewhere safe.
2. Click **Save** to finalize the token.

> **Important:** The full token is only shown once at creation. If you lose it, you will need to generate a new one. You will also need your Zendesk subdomain (the part before `.zendesk.com` in your URL) and your admin email address to complete the connection.

***

### Part 2 — Connect Zendesk in klink.cloud

**Step 4: Open the integration settings**

1. Go to **app.klink.cloud** and log in.
2. Navigate to **Message & Integration**.

**Step 5: Connect Zendesk**

1. Select **Connect Zendesk**.
2. Enter your Zendesk subdomain, admin email, and paste the API Token you copied in Part 1.
3. Save the connection.

<figure><img src="/files/WY6yMHaVIIAGnjW2y3Q8" alt=""><figcaption></figcaption></figure>

Once the connection is successful, your Zendesk tickets will start syncing into klink.cloud.

**Step 6: View Zendesk tickets in the Inbox**

After setup, open the **Inbox** in klink.cloud. All of your Zendesk tickets will appear there alongside your other channels, giving you a single unified view to manage every conversation.

***

### Part 3 — Enable the AI Agent

To have the AI Agent automatically handle incoming Zendesk conversations, create a workflow that routes new Zendesk chats to the AI Agent.

**Step 7: Create the workflow**

Set up a workflow with the following logic:

| Component | Configuration                  |
| --------- | ------------------------------ |
| Trigger   | When a new chat room is opened |
| Condition | Channel is Zendesk             |
| Action    | Assign to AI Agent             |

In plain terms: When a new chat room is opened, and the channel is Zendesk, assign the conversation to the AI Agent.

**Step 8: Save and activate**

1. Save the workflow.
2. Make sure the workflow is active.

New Zendesk conversations will now be automatically routed to the AI Agent, which will reply on your behalf.

#### Summary

1. Generate an API Token in Zendesk Admin Center.
2. Connect Zendesk in klink.cloud under Message & Integration.
3. View all Zendesk tickets in the klink.cloud Inbox.
4. Create a workflow to assign new Zendesk chats to the AI Agent.


# TikTok

Connect with TikTok Shop Chat Inbox and streamline customer communications

**Overview**

This guide walks you through connecting your TikTok Shop to klink.cloud. Once connected, buyer conversations from your TikTok Shop appear directly in the klink.cloud Inbox alongside your other channels.

klink.cloud connects through your **own TikTok Shop app**: you first create a free app in the TikTok Shop Partner Center, then enter its credentials in klink.cloud. Everything is done in a web browser — no coding needed.&#x20;

> **Note:** This channel connects TikTok Shop buyer–seller chat — the conversations buyers start from your TikTok Shop. It does not cover TikTok direct messages or comments on TikTok videos.

**What You'll Need**

* Admin access to your TikTok Shop Seller Center account
* Access to your klink.cloud workspace (app.klink.cloud)
* An available channel slot on your plan

***

#### Part 1 — Create Your TikTok Shop App

**Step 1: Register for developer (Partner Center) access**

1. Go to **partner.tiktokshop.com**.
2. Click **Register / Sign up** and choose to sign up as a **Developer**.
3. Sign in with the same **TikTok Shop seller account** that owns your shop.
4. Complete the registration form and submit. Verify your email if asked.

**Step 2: Create an app**

1. Open **Manage apps** (may be shown as **App management**).
2. Click **Create app** and give it a name you'll recognize, for example "klink.cloud Integration".
3. Save. TikTok shows the app's detail page with an **App Key** and an **App Secret** — you will need both in Part 2.

**Step 3: Enable permissions**

1. In your app's settings, enable the **Customer Service / Message** permissions. If TikTok also asks for basic **Authorization / Shop info** permissions, enable those too.
2. Save.

> **Note:** If a permission shows "Pending review," that's normal — TikTok reviews some permissions before they become active.

**Step 4: Generate an authorization code**

1. On your app's page, open **Authorization** and click **Authorize**.
2. Log in with your TikTok Shop seller account and grant access to your shop.
3. After you authorize, the page you land on carries an authorization code in its URL (`auth_code=ROW_...`). Copy the code value.

> **Important:** The authorization code is single-use and expires quickly. Generate it right before you connect in klink.cloud, and complete Part 2 immediately after copying it.

***

#### Part 2 — Connect TikTok in klink.cloud

**Step 5: Open the integration settings**

1. Go to **app.klink.cloud** and log in.
2. Navigate to **Settings** > **Message & Integration**.
3. Under **Available Channels**, select **TikTok**.

**Step 6: Enter your app credentials**

Fill in the connect form:

| Field                  | What to enter                                                                           |
| ---------------------- | --------------------------------------------------------------------------------------- |
| **App Key**            | From your app's detail page in the Partner Center (Manage apps > your app > App detail) |
| **App Secret**         | Shown next to the App Key on the same page — keep it private                            |
| **Authorization Code** | The `auth_code` you copied in Step 4                                                    |
| **Display Name**       | A name to recognize this channel by — it appears in reports, settings, and inbox rooms  |

Click **Connect**. Once the connection is successful, you will see a "TikTok connected successfully" confirmation and the channel appears in your connected channels list.

**Step 7: View TikTok conversations in the Inbox**

After setup, open the **Inbox** in klink.cloud. New buyer messages from your TikTok Shop will appear there alongside your other channels, giving you a single unified view to manage every conversation.

**What syncs:**

| Direction                     | Supported message types |
| ----------------------------- | ----------------------- |
| Incoming (buyer → Inbox)      | Text and images         |
| Outgoing (your reply → buyer) | Text and images         |

Replies your team sends from TikTok Seller Center also appear in the conversation thread, so the history stays complete. Other TikTok message types (product cards, order cards, system notifications) are not shown in the Inbox.

***

**Summary**

1. Register as a developer in the TikTok Shop Partner Center and create an app.
2. Enable the Customer Service / Message permissions and generate an authorization code.
3. In klink.cloud, open **Message & Integration** > **TikTok** and enter the App Key, App Secret, and Authorization Code.
4. Manage all your TikTok Shop buyer chats in the klink.cloud Inbox.


# Call

### Overview of Call Features

Discover the full potential of Klink.cloud – your comprehensive communication platform. Engage seamlessly with Inbound and Outbound Calls, while enhancing your interactions through features like Call Recordings, Call Notes, Call Tags, and more. Elevate your communication strategy and gain valuable insights effortlessly with Klink.cloud.

Check below documentations for more details

{% content-ref url="/pages/KzDzXEqMXi1EB05r4vjx" %}
[Inbound Call Handling](/how-to-use/call/inbound-call-handling)
{% endcontent-ref %}

{% content-ref url="/pages/XIa8gCej1L3gPbP7hT2Q" %}
[Outbound Call Handling](/how-to-use/call/outbound-call-handling)
{% endcontent-ref %}


# Inbound Call Handling

{% hint style="info" %}
This tutorial will guide you how to handle Inbound Call from Start to Finish
{% endhint %}

### Step 1 - Inbound Call Receive

If Agent is available state, you will receive Inbound Call like this.&#x20;

<figure><img src="/files/TnyXc2yBuASyv9Y7MlSo" alt=""><figcaption></figcaption></figure>

### Step 2 - Automatically Open Customer Profile

When you Answer the call, it will automatically open customer profile. You can see all previous customer call history, ticket history, & all CRM Contact Details in single page.

<figure><img src="/files/rZn2ewTUxGiidLDkER9o" alt=""><figcaption></figcaption></figure>

### Step 3 - Write Call Notes & Tags

In order to properly collect customer query, customer can write down notes and create Tags. These data can be review by supervisor or any other team members for future calls in order to provide personlized customer experiences.

<figure><img src="/files/QaPjhG3CT5PdWSrbi192" alt=""><figcaption></figcaption></figure>

### Step 4 - Case Tracking Setup (Post-Call Wrap-Up Data Entry Form)&#x20;

After the Call Ends, the Agent can fill Wrap-up form and call outcomes such as Resolved, Follow-up, Transfer, Escalated, or any data.&#x20;

<figure><img src="/files/BfHlxFr944CQVbMEE2Tw" alt=""><figcaption></figcaption></figure>

This information helps the contact center and its management to understand the nature of customer inquiries, measure the effectiveness of support, and identify areas for improvement.

### Done

Interaction between Customer & Agent is automatically recorded with a Case ID. You can view all history in CX Log Table

<figure><img src="/files/PwbupAWNJsp0vwDmt4WR" alt=""><figcaption></figcaption></figure>

For More Information related to Calls, you can view the following reports

* [CX Interaction Log Table](/dashboard-and-reports/reporting/cx-log)
* [Call Details Records (CDR)](/dashboard-and-reports/reporting/cdr)
* [Call Recordings](/dashboard-and-reports/reporting/recording)
* [Call Reports](/dashboard-and-reports/reporting/call-reports)


# How to Enable Inbound Call Notifications

Enable browser notifications to receive instant alerts for inbound calls, even when klink.cloud is running in the background

### How It Works

1. Enable notifications when prompted on klink.cloud dialpad
2. Inbound calls trigger desktop notifications with sound
3. Click the notification to open klink.cloud and answer the call
4. Works even when browser is minimized or tab is in background

***

### Setup Instructions

#### Step 1: Enable Notifications in klink.cloud

1. Open klink.cloud dialpad
2. Click **"Enable Notifications"** on the green banner
3. Click **"Allow"** in Chrome's popup dialog

<figure><img src="/files/yvWNrnqCHlTjur9XlNE3" alt=""><figcaption></figcaption></figure>

#### Step 2: Configure Chrome Permissions

1. Click the **lock icon** (🔒) in Chrome address bar (next to klink.cloud URL)
2. Click **"Site settings"**
3. Set these to **"Allow"**:
   * **Notifications** → Allow
   * **Pop-ups and redirects** → Allow
   * **Sound** → Allow
4. Refresh the page

✅ **Done!** You're all set to receive inbound call notifications.

<figure><img src="/files/9dlmRj5BRo0dNioe45Ke" alt=""><figcaption></figcaption></figure>

***

### Troubleshooting

**Not receiving inbound call notifications?**

* Check that all three permissions above are set to "Allow"
* Ensure computer volume is not muted
* Refresh the browser page

**Need help?** Contact <support@klink.cloud>


# Inbound Call Queue Groups

### 📞 Inbound Call Queue Groups

**Overview:**\
Inbound Call Queue Groups allow you to route incoming calls to different groups of agents based on business needs. This helps manage call distribution effectively, ensuring that the right team handles the right type of call.

***

#### 🔧 What is a Queue Group?

A **Queue Group** is a collection of agents who are assigned to handle a specific type of incoming call. Each group can have its own **ring strategy**, business hours, and agent members.

***

#### 🧩 Why Use Multiple Queue Groups?

Using multiple queue groups helps:

* Separate teams by department (e.g., Sales, Support, Billing)
* Prioritize VIP customers to a special queue
* Route calls based on language preference, location, or service type

***

#### ✅ Example Setup:

Let’s say your business has two teams: **Sales Team** and **Support Team**.

You can create two separate queue groups:

1. **Sales Queue Group**
   * Ring Strategy: Ring All
   * Agents: Alice, Bob, Carol
   * Used for: Inquiries from new customers or product demos
2. **Support Queue Group**
   * Ring Strategy: Fewest Calls
   * Agents: David, Emma, Frank
   * Used for: Existing customer support requests

When a customer calls:

* If the caller presses **1 for Sales**, they are routed to the **Sales Queue Group**
* If the caller presses **2 for Support**, they are routed to the **Support Queue Group**

**Call Queue Ring Strategies – How Incoming Calls Are Assigned to Agents:**

When a call enters the queue, the system uses a “ring strategy” to decide which agent gets the call. Here are the available options:

* **Ring All**: Rings all available agents at the same time. Whoever picks up first handles the call.
* **Least Recent**: Sends the call to the agent who hasn’t received a call in the longest time.
* **Fewest Calls**: Sends the call to the agent who has handled the fewest number of calls so far.
* **Random**: Rings agents in a completely random order.
* **Round Robin (Rrmemory)**: The system remembers the last agent it tried and rings the next agent in line.
* **Linear**: Always rings agents in a fixed order, starting from the top of the list every time.


# Outbound Call Handling

{% hint style="info" %}
This tutorial will guide you how to handle Outbound Call from Start to Finish
{% endhint %}

### Step 1 - Using Dialpad or Call from Existing Contact

Option #1 - You can dial numbers directly from Dialpad

<figure><img src="/files/IftHiCfnCixfVgG85Baw" alt="" width="375"><figcaption><p>Call from Dialpad</p></figcaption></figure>

Option #2 - You can go to exisitng contact and just click to call directly from contact profile

<figure><img src="/files/SVEm1DjLl32R8OqmYdHk" alt="" width="375"><figcaption></figcaption></figure>

### Step 2 - Automatically Open Customer Profile

When you Answer the call, it will automatically open customer profile. You can see all previous customer call history, ticket history, & all CRM Contact Details in single page.

<figure><img src="/files/rZn2ewTUxGiidLDkER9o" alt=""><figcaption></figcaption></figure>

### Step 3 - Write Call Notes & Tags

In order to properly collect customer query, customer can write down notes and create Tags. These data can be review by supervisor or any other team members for future calls in order to provide personlized customer experiences.

<figure><img src="/files/QaPjhG3CT5PdWSrbi192" alt=""><figcaption></figcaption></figure>

### Step 4 - Case Tracking Setup (Post-Call Wrap-Up Data Entry Form)&#x20;

After Call End, the agent can fill out a Wrap-up form and call outcomes such as Resolved, Follow-up, Transfer, Escalated, or any data.

This information helps the contact center and its management to understand the nature of customer inquiries, measure the effectiveness of support, and identify areas for improvement.

<figure><img src="/files/BfHlxFr944CQVbMEE2Tw" alt=""><figcaption></figcaption></figure>

### Done

Interaction between Customer & Agent is automatically recorded with a Case ID. You can view all history in CX Log Table

<figure><img src="/files/PwbupAWNJsp0vwDmt4WR" alt=""><figcaption></figcaption></figure>

For More Information related to Calls, you can view following reports

* [CX Interaction Log Table](/dashboard-and-reports/reporting/cx-log)
* [Call Details Records (CDR)](/dashboard-and-reports/reporting/cdr)
* [Call Recordings](/dashboard-and-reports/reporting/recording)
* [Call Reports](/dashboard-and-reports/reporting/call-reports)


# Chat

## Overview of Chat Features

Unlock the power of omnichannel communication with Klink.cloud's robust chat feature. Seamlessly connect with your audience on popular platforms including Facebook Messenger, Instagram, LINE OA, WhatsApp, Viber, Telegram, Emails, Web Chat, Lazada, and Shopee. Whether it's social media, messaging apps, or e-commerce channels, Klink.cloud brings them all together, empowering you to engage with your customers effortlessly and efficiently.

**Check below documentations for more details**

{% content-ref url="/pages/LCuZ3GXwqUIjlbVM9haq" %}
[Inbound Chat Handling](/how-to-use/chat/inbound-chat-handling)
{% endcontent-ref %}

{% content-ref url="/pages/1n9gL3G4NBHk7pnu0WBG" %}
[Outbound Chat Handling](/how-to-use/chat/outbound-chat-handling)
{% endcontent-ref %}

{% content-ref url="/pages/P3a0f9902pYxpQAvGgzz" %}
[Broken mention](broken://pages/P3a0f9902pYxpQAvGgzz)
{% endcontent-ref %}


# Inbound Chat Handling

{% hint style="info" %}
This tutorial will guide you how to handle Inbound Chat from Start to Finish
{% endhint %}

### Step 1 - Inbound Chat Receive

All new inbound chats will be received in **"Unassigned**" Tab as below.&#x20;

<figure><img src="/files/bir98B73VnrBQP84f5Mg" alt=""><figcaption></figcaption></figure>

### Step 2 - Assign to me

Click Assign to me to handle the Inbound Chat and reply to the customer.

<figure><img src="/files/Z85a1rbCTkA64kMXEQjS" alt=""><figcaption></figcaption></figure>

### Step 3 - Write Chat Notes & Tags

To enhance the efficiency of customer query collection, our Klink.cloud platform allows users to take detailed notes and apply relevant tags. This valuable information can be later accessed by supervisors and team members to facilitate personalized customer experiences during future interactions. By leveraging these recorded insights, your team can deliver tailored and insightful responses, ultimately elevating the overall quality of customer service.

<figure><img src="/files/kuavlxThCJhezsUZpAcs" alt=""><figcaption></figcaption></figure>

### Step 4 - Case Tracking Setup (Post-Chat Wrap-Up Data Entry Form)&#x20;

After agent successfully completes the conversation, the Agent can fill Wrap-up form and call outcomes such as Resolved, Follow-up, Transfer, Escalated, or any data.

<figure><img src="/files/BfHlxFr944CQVbMEE2Tw" alt=""><figcaption></figcaption></figure>

### Done

Interaction between Customer & Agent is automatically recorded with a Case ID. You can view all history in CX Log Table

<figure><img src="/files/Q0Rma6QFer09hnXHkpG1" alt=""><figcaption></figcaption></figure>

For More Information related to Calls, you can view following reports

* [CX Interaction Log Table](/dashboard-and-reports/reporting/cx-log)

If you need more info, reach out to <support@klink.cloud>


# Outbound Chat Handling

{% hint style="info" %}
This tutorial will guide you on how to handle Outbound Chat from Start to Finish
{% endhint %}

### Step 1 - Initiate Outbound Chat

Go to a specific channel or customer profile, then click **"Start a new room"**

<figure><img src="/files/O61mKI4FeNBH1N8nFIQz" alt=""><figcaption></figcaption></figure>

### Step 2 - Send Chat Messages

<figure><img src="/files/yDej8EQukFwcV4WYQU8E" alt=""><figcaption></figcaption></figure>

### Step 3 - Write Chat Notes & Tags

To enhance the efficiency of customer query collection, our Klink.cloud platform allows users to take detailed notes and apply relevant tags. This valuable information can be later accessed by supervisors and team members to facilitate personalized customer experiences during future interactions. By leveraging these recorded insights, your team can deliver tailored and insightful responses, ultimately elevating the overall quality of customer service.

<figure><img src="/files/a4OiWxihnYZyrvnW7jbS" alt=""><figcaption></figcaption></figure>

### Step 4 - Case Tracking Setup (Post-Chat Wrap-Up Data Entry Form)

After agent successfully completes the conversation, the Agent can fill Wrap-up form and call outcomes such as Resolved, Follow-up, Transfer, Escalated, or any data.

<figure><img src="/files/BfHlxFr944CQVbMEE2Tw" alt=""><figcaption></figcaption></figure>

### Done

Interaction between Customer & Agent is automatically recorded with a Case ID. You can view all history in CX Log Table

<figure><img src="/files/Q0Rma6QFer09hnXHkpG1" alt=""><figcaption></figcaption></figure>

For More Information related to Calls, you can view following reports

* [CX Interaction Log Table](/dashboard-and-reports/reporting/cx-log)


# Facebook Feed Handling

{% hint style="info" %}
This tutorial will guide you on how to handle Facebook Feed from Start to Finish
{% endhint %}

### Step 1 - Initiate Feed Comment

Once you get a comment from your social channel, Go to a specific channel or customer profile.

<figure><img src="/files/ruA9ICc6PhlHPvDvPh3a" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZeZJQyU35CmPT3yMJAlP" alt=""><figcaption></figcaption></figure>

### Step 2 - Assign Feed and reply to customer comment

<figure><img src="/files/84xuWS85V3kEllkyQ86e" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/lScZrgzuOMBJS1AsXFav" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/F2WszMVK1YCVrvsMKyk8" alt=""><figcaption></figcaption></figure>

### Step 3 - Write Feed Notes & Tags

To enhance the efficiency of customer query collection, our Klink.cloud platform allows users to take detailed notes and apply relevant tags. This valuable information can be later accessed by supervisors and team members to facilitate personalized customer experiences during future interactions. By leveraging these recorded insights, your team can deliver tailored and insightful responses, ultimately elevating the overall quality of customer service.

<figure><img src="/files/HZoTt7Sl49Nf46nISvrl" alt=""><figcaption></figcaption></figure>

### Step 4 - Case Tracking Setup (Post-Feed Wrap-up Data Entry Form)

After the agent completes the conversation, the agent needs to click "**Closed**".\
The Agent can fill Wrap-up form and call outcomes such as Resolved, Follow-up, Transfer, Escalated, or any data.

<figure><img src="/files/1wPxremjq570TMPGIGqm" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mAxJD2khN7IjXuNRGg5z" alt=""><figcaption></figcaption></figure>

### Done

Interaction between Customer & Agent is automatically recorded with a Case ID. You can view all history in CX Log Table

<figure><img src="/files/MzD9bYo3HqGEOxOcYz59" alt=""><figcaption></figcaption></figure>

For More Information related to Calls, you can view the following reports

* [CX Interaction Log Table](/dashboard-and-reports/reporting/cx-log)


# Tickets

## Overview of Ticket Features

Experience streamlined ticket management with Klink.cloud's comprehensive features tailored for contact centers and customer service teams. Our platform supports essential ticket management functionalities, ensuring efficiency and organization in handling customer inquiries. From ticket creation to resolution, Klink.cloud provides a seamless experience, empowering your team to deliver top-notch customer service with ease

{% content-ref url="/pages/cnM429FkAZZ5V6R4tWaf" %}
[Create a Ticket](/how-to-use/tickets/create-a-ticket)
{% endcontent-ref %}

{% content-ref url="/pages/bU2juODS4UB6AmWKLebp" %}
[Assign / Transfer Ticket](/how-to-use/tickets/assign-transfer-ticket)
{% endcontent-ref %}


# Create a Ticket

This tutorial will show how to manage tickets from start to finish

### Step 1 - Go to Contact Profile

Go to customer profile that you want to create. Click <mark style="color:purple;">**+ New Ticket**</mark>

<figure><img src="/files/xSgtJe4UGnaK8E8aH43j" alt=""><figcaption></figcaption></figure>

### Step 2 - Enter Ticket Details & Information

Enter ticket information as per below. You can customize your own ticket form in the settings.

Follow this tutorial to customize ticket fields

<figure><img src="/files/cy9JpIde7SQnkCyDgWiH" alt=""><figcaption></figcaption></figure>

### Step 3 - Collaborate Tickets with Team Members

You can mention / comment to your team members on the tickets within your organization.&#x20;

<figure><img src="/files/Yxhy085NMK1aVij8nQL3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/BTv7eZKvVJhco7ljXKDY" alt="" width="349"><figcaption><p>You can use @mention your team in the comments </p></figcaption></figure>

### Step 4 - Resolved

After ticket is resolved, you can click **"Resolved"** button

<figure><img src="/files/n7NV8Mk7Mk4BWPEmtrlz" alt="" width="210"><figcaption></figcaption></figure>

### Done

For more about tickets reporting, visit the following tutorials


# Assign / Transfer Ticket

This tutorial will show you how to transfer / assign tickets to other team members

### Step 1 - Go to Ticket Page

you can assign your tickets to other team members as per below

<figure><img src="/files/YzIvV5oq4YZQneadEJcq" alt=""><figcaption></figcaption></figure>

### Step 2 - Your Team Member will receive ticket notification

your team member will receive notifcation

<figure><img src="/files/SR1hzf47dPrea387DUgJ" alt="" width="375"><figcaption><p>In-App Notification</p></figcaption></figure>

<figure><img src="/files/N5yYAp29iH71iedLjdqp" alt="" width="375"><figcaption></figcaption></figure>

### Done


# Contact


# How to Import Leads / Contacts

This tutorial will show how to import Contacts with CSV , Excel Files

1. Go to Contacts > Import CSV

{% embed url="<https://www.loom.com/share/f8907c6d9cb546b7934b68eca777a226?sid=89954605-7c3d-42cc-acb0-6ca7c705fe44>" %}


# Contact Custom Fields

This tutorial will guide you how to setup & organize your customer profiles

### Step 1 - Go to Settings > Contact Fields

You can organize & create custom attributes for your contact information. We support all types of custom fields including Dropdown, Select, Calendar Format, Attachment & More

<figure><img src="/files/IWBIpzPK1hRdEUJ2Ts0S" alt=""><figcaption></figcaption></figure>

### Step 2 - Click <mark style="color:purple;">+ Add Property</mark>

<figure><img src="/files/lLu60pGGSuI0MVTnKBpg" alt=""><figcaption></figcaption></figure>

### Step 3 - Create Custom Data Fields

Below example create Member Type profile for contact. After creating custom fields, you will be able to see these fields when you create / edit contacts

<figure><img src="/files/XUmSu8I0e8v4biUcX3tK" alt=""><figcaption></figcaption></figure>


# Individual Contacts

This tutorial will guide you how to manage & organize your contacts

### Step 1 - Go to Contacts

<figure><img src="/files/lzFDPFxAKvu66BYyLpBI" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/UPnrw7OcLrreGB1AMlmm" alt="" width="375"><figcaption></figcaption></figure>

### Step 2 - Successfully Created Contacts

<figure><img src="/files/FAdgbT3PDVMUk806Aqn1" alt=""><figcaption></figcaption></figure>


# Company Contacts

This tutorial will guide you how to manage company contacts

{% hint style="info" %}
You can create company contact fileds. Before creating new company contacts, we recommend to create custom fields in the company contact settings
{% endhint %}

### Step 1 - Go to Settings >  Company Contact Fields

<figure><img src="/files/muZTDC6TDgXH4viaYQQX" alt=""><figcaption><p>Settings > Company  Fields in contact</p></figcaption></figure>

### Step 2 - Click <mark style="color:purple;">+ Add Property</mark>

<figure><img src="/files/N9aRV8egWtNhJDCK5KDT" alt=""><figcaption></figcaption></figure>

### Step 3 - Go to Contacts > Companies

You can add Companies contacts. These companies can associate with Individual contacts in the future.

<figure><img src="/files/R9UgcJ1dDxMGo2N4tOQv" alt=""><figcaption></figcaption></figure>


# Import / Export CSV

This tutorial will guide how to Import / Export Individual Contacts with CSV File

{% hint style="info" %}
Before CSV Import, we recommend to create contact custom fields in the settings.&#x20;

Follow below tutorials if you want to add custom attributes for contacts

* [How to add custom fields in Contacts](/how-to-use/contact/contact-custom-fields)
  {% endhint %}

### Step 1 - Go to Contacts > Click Import Contacts

<figure><img src="/files/ryyfICvC8rsoQNnZBpxk" alt=""><figcaption></figcaption></figure>

### Step 2 - Download a Template

Download CSV Template to input contact data

<figure><img src="/files/buSPMxbe8tAkfyyd30Io" alt="" width="375"><figcaption><p>download csv template here</p></figcaption></figure>

### Step 3 - Prepare CSV Template File

<figure><img src="/files/lQBKOMMPbWIZEBuOAKJA" alt=""><figcaption><p>You can prepare CSV Template Excel File like this</p></figcaption></figure>

### Step 4 - Upload your CSV File and Click Complete

<figure><img src="/files/GcNY6g6KPuIXpMrG2J63" alt="" width="375"><figcaption></figcaption></figure>

### Step 5 - Finish Import

You will see successfully imported contacts

<figure><img src="/files/CAM0RmSQtHhpBzMpoDS4" alt=""><figcaption></figcaption></figure>


# Setup Workflow Automation

### Workflow Automation in klink.cloud

#### What is Workflow Automation?

Workflow Automation in klink.cloud is a feature that allows you to automatically route customer conversations, assign agents, and trigger specific actions based on predefined rules. It helps reduce manual tasks, ensuring your team can respond quickly and efficiently to customer inquiries.

#### Why Use Workflow Automation?

Automating your workflows can:

* Save time by reducing manual assignment.
* Improve response speed by routing conversations to the right teams automatically.
* Ensure every customer gets the right support based on their needs and inquiry type.
* Standardize your customer service process for consistency.

#### Key Features of Workflow Automation

* **Automated Routing:** Automatically assign conversations to specific queues based on customer inquiry type, language, or source channel.
* **Customizable Conditions:** Set conditions like message content, customer location, or communication channel to trigger the correct workflow.
* **Multi-Channel Support:** Automate workflows across multiple channels, including WhatsApp, Telegram, Facebook, and more.
* **Agent Assignment:** Assign the right agent or queue based on availability and workload.
* **Time-Sensitive Actions:** Ensure that SLAs (Service Level Agreements) are met by setting triggers based on response times.

#### How to Set Up a Workflow Automation

Follow these steps to create a workflow automation in klink.cloud:

**Step 1: Access Workflow Settings**

1. Go to the **Settings** section in your klink.cloud dashboard.
2. Click on **Workflow Automation**.

<figure><img src="/files/TwGmBiOp6qQttgnyyZyJ" alt=""><figcaption></figcaption></figure>

**Step 2: Create a New Workflow**

1. Click **Create Workflow**.
2. Give your workflow a **Name** (e.g., Tech Support Routing).

<figure><img src="/files/qBcDW74VNGodihezCZHp" alt=""><figcaption></figcaption></figure>

**Step 3: Set the Trigger**

1. Choose a **Trigger Event**, such as:
   * **When a Chat Room is Opened:** When a customer sends their first message.
   * **When a Message is Received:** When any message is received.
2. Define the **Conditions** for the workflow (optional), such as:
   * **Channel:** WhatsApp, Telegram, Facebook, etc.
   * **Message Content:** Specific keywords like “support” or “pricing.”
   * **Language:** Based on detected customer language.

<figure><img src="/files/nJyUpIGM7lS4GaB4TXez" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/12avf8Z36keWUgvUkQ4J" alt=""><figcaption></figcaption></figure>

**Step 4: Assign Actions**

1. Choose an **Action** to perform when conditions are met, such as:
   * **Assign to Queue:** Route the conversation to a specific queue (e.g., Tech Support Queue)
   * **Assign to Agent:** Directly assign the chat to a particular agent.
   * **Send Auto-Response:** Send a welcome message or acknowledgment.

<figure><img src="/files/AfndUfLCxrPWKhV1rNzl" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/JjGUhqHr0CPMtprbbLpP" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/0kSZ0tpWtlrWBY2YrtRj" alt=""><figcaption></figcaption></figure>

**Step 5: Activate the Workflow**

1. Review your workflow setup.
2. Click **Enable** and **Save**.
3.

```
<figure><img src="/files/Ktm8qSELB0QqVf73d6Px" alt=""><figcaption></figcaption></figure>
```

#### Example Workflow Scenarios

| Workflow Name         | Trigger                  | Condition                  | Action                           |
| --------------------- | ------------------------ | -------------------------- | -------------------------------- |
| Tech Support Routing  | When Chat Room is Opened | Channel is Telegram        | Assign to Tech Support Queue     |
| Sales Inquiry Routing | When Chat Room is Opened | Message contains 'pricing' | Assign to Sales Queue            |
| Thai Support Routing  | When Chat Room is Opened | Language is Thai           | Assign to Thailand Support Queue |

#### Benefits of Workflow Automation

* **Efficiency:** Automatically handle repetitive tasks.
* **Accuracy:** Ensure every message reaches the right team.
* **Faster Response:** Reduce response times by routing inquiries instantly.
* **Better Customer Experience:** Deliver timely and relevant support.

#### Need Help?

If you need assistance setting up workflow automation, contact our support team anytime.

***

Start optimizing your customer support today with Workflow Automation in klink.cloud!


# AI CSAT Scoring Workflow

## AI CSAT Scoring

***

### Overview

AI CSAT automatically scores customer satisfaction when a chat room is closed. The AI analyzes the conversation and assigns a score based on sentiment, tone, and resolution outcome — no manual rating required.

**Works across:** WhatsApp, LINE, Facebook, Email, Live Chat, Voice

***

### CSAT Score Reference

| Score | Label            | Criteria                                                                               |
| ----- | ---------------- | -------------------------------------------------------------------------------------- |
| 5     | Very Satisfied   | Customer was happy, praised the agent, or issue fully resolved with positive sentiment |
| 4     | Satisfied        | Issue resolved, customer content, but no strong positive emotion                       |
| 3     | Neutral          | Transactional or mixed interaction, no clear emotion                                   |
| 2     | Unsatisfied      | Mild frustration, disappointment, or issue only partly resolved                        |
| 1     | Very Unsatisfied | Customer clearly angry, frustrated, or issue completely unresolved                     |

***

### How It Works

klink.cloud's **AI Conditions** node evaluates one condition at a time. If the condition is met, the workflow proceeds to the **Actions** step. Because of this, you need **5 separate workflows** — one per score — all triggered when a chat room closes.

```
Trigger → Conditions (AI Conditions) → Actions (Set CSAT Score)
```

<figure><img src="/files/vNaaYUmrPdT0tKYHvsQr" alt=""><figcaption></figcaption></figure>

***

### Setup

#### Workflow 1 — Very Satisfied (Score 5)

1. Go to **Automation → Workflows** and click **Create Workflow**
2. Set **Trigger** to **Chat Room Closed**
3. Under **Conditions**, add **AI Conditions** and enter this prompt:

```
The customer was clearly happy, praised the agent, or the issue was fully resolved with positive sentiment.
```

4. Under **Actions**, add **Set CSAT Score** and select **Very Satisfied**
5. Save and activate

***

#### Workflow 2 — Satisfied (Score 4)

1. Create a new workflow
2. Set **Trigger** to **Chat Room Closed**
3. Under **Conditions**, add **AI Conditions** and enter this prompt:

```
The issue was resolved and the customer was content, but no strong positive emotion was shown.
```

4. Under **Actions**, add **Set CSAT Score** and select **Satisfied**
5. Save and activate

***

#### Workflow 3 — Neutral (Score 3)

1. Create a new workflow
2. Set **Trigger** to **Chat Room Closed**
3. Under **Conditions**, add **AI Conditions** and enter this prompt:

```
The interaction was transactional or mixed, and no clear positive or negative emotion was shown.
```

4. Under **Actions**, add **Set CSAT Score** and select **Neutral**
5. Save and activate

***

#### Workflow 4 — Unsatisfied (Score 2)

1. Create a new workflow
2. Set **Trigger** to **Chat Room Closed**
3. Under **Conditions**, add **AI Conditions** and enter this prompt:

```
The customer showed mild frustration or disappointment, or the issue was only partly resolved.
```

4. Under **Actions**, add **Set CSAT Score** and select **Unsatisfied**
5. Save and activate

***

#### Workflow 5 — Very Unsatisfied (Score 1)

1. Create a new workflow
2. Set **Trigger** to **Chat Room Closed**
3. Under **Conditions**, add **AI Conditions** and enter this prompt:

```
The customer was clearly angry or frustrated, or the issue was completely unresolved.
```

4. Under **Actions**, add **Set CSAT Score** and select **Very Unsatisfied**
5. Save and activate

***

### Recommended Priority Order

All 5 workflows fire at the same time. Set priority so stronger signals are evaluated first.

| Priority | Workflow           |
| -------- | ------------------ |
| 1        | Very Unsatisfied   |
| 2        | Very Satisfied     |
| 3        | Unsatisfied        |
| 4        | Satisfied          |
| 5        | Neutral ← fallback |

> Place **Neutral** last — it catches any conversation without a clear signal.

***

### Viewing Scores

Go to **CX Log → CSAT Column** to filter scores by agent, team, channel, or date range.

***

### Notes

* Write prompts to be **mutually exclusive** — overlapping conditions may cause a conversation to receive multiple scores
* **Neutral** should be broad enough to catch anything that doesn't match a stronger signal
* Short conversations with no customer messages will typically score as **Neutral**
* AI CSAT supports all languages — prompts can be written in English, Spanish, even for Thai, Arabic, or French conversations


# Setup Queue Group

#### What is a Queue?

A Queue is a group of team members who handle specific types of customer conversations. Queues help route incoming messages to the right teams based on their expertise, availability, and language preferences. This ensures that customers get quick and accurate support.

#### Why Use a Queue?

Queues are essential when your business handles customer inquiries across multiple countries, languages, and support topics. By creating separate queues, you can:

* Assign customer conversations to the appropriate teams.
* Improve response times and customer satisfaction.
* Automate the assignment of cases based on agent availability.
* Organize your support workflow efficiently.

#### How to Create a Queue

Follow these steps to create a queue in klink.cloud:

**Step 1: Access Queue Settings**

1. Go to the **Settings** section in your klink.cloud dashboard.
2. Click on **Queue Settings**.

<figure><img src="/files/FojaJwRGPCD3ZTC1lJQe" alt=""><figcaption></figcaption></figure>

**Step 2: Create a New Queue**

1. Click on the **Create Queue** button.
2. Enter a **Queue Name** that represents the type of support, such as:
   * Tech Support Queue
   * Sales Inquiry Queue
   * Thailand Support Queue

<figure><img src="/files/PrVQJmjYz11DeTnEZJux" alt=""><figcaption></figcaption></figure>

**Step 3: Assign a Queue Manager**

1. Select the **Queue Manager** from your team. This person will oversee and manage the queue.
2. The manager will be able to monitor performance, adjust settings, and manage team members.

<figure><img src="/files/1Ym9Qv3oMZz4s4T1fLFj" alt=""><figcaption></figcaption></figure>

**Step 4: Add Team Members**

1. Select the team members (agents) who will handle the conversations assigned to this queue.
2. You can assign multiple agents to a queue.

<figure><img src="/files/dP3f0z8IklIPKHp0FRoX" alt=""><figcaption></figcaption></figure>

**Step 5: Configure Assignment Rules**

1. **Automatic Assignment:** The system will automatically assign cases to agents based on their availability.
2. **Max Cases per Agent:** Set a limit on how many cases an agent can handle simultaneously. For example:
   * Set **15** as the maximum number of cases per agent.

<figure><img src="/files/5UmEyrEM821qtiUiVivH" alt=""><figcaption></figcaption></figure>

3. **Case Assignment Distribution Strategy**

   The **Distribution Strategy** determines how agent cases are assigned based on different allocation methods. Users can select from the following three strategies:

   1. **Round Robin** (Default Selection)
      * Cases are distributed evenly among all available agents in a sequential manner.
      * This ensures a balanced workload for each agent.
   2. **Fewest Assignments**
      * The case is assigned to the agent with the fewest active cases.
      * This strategy helps maintain workload efficiency by prioritizing agents with lower assignments.
   3. **Random**
      * Cases are assigned randomly to any available agent.
      * This method provides an unpredictable but fair distribution of cases.

<figure><img src="/files/cccXSxdcFMnUO9ZqWSQk" alt=""><figcaption></figcaption></figure>

**Step 6: Save Your Queue**

1. Click **Create Queue** to save your settings.
2. Your queue is now ready to handle incoming conversations.

#### Example Use Cases

| Queue Name             | Purpose                                                | Assigned Team         |
| ---------------------- | ------------------------------------------------------ | --------------------- |
| Tech Support Queue     | Handles technical issues and troubleshooting           | Tech Support Team     |
| Sales Inquiry Queue    | Handles sales-related inquiries like pricing and demos | Sales Team            |
| Thailand Support Queue | Handles customer support for Thai-speaking customers   | Thailand Support Team |

#### How Queues Work with Workflows

Once you create a queue, you can set up a **Workflow Automation** to route incoming messages to the appropriate queue. For example:

* Route messages from Thai-speaking customers to the **Thailand Support Queue**.
* Route technical questions to the **Tech Support Queue**.
* Route pricing inquiries to the **Sales Inquiry Queue**.

#### Benefits of Using Queues

* **Faster Response Times:** Customers get help from the right team quickly.
* **Efficient Team Management:** Assign cases based on agent availability.
* **Specialized Support:** Each team focuses on their area of expertise.
* **Better Organization:** Easily track and manage different types of inquiries.

#### Need Help?

If you need assistance setting up queues or configuring workflows, reach out to our support team anytime.

***

Start organizing your customer support today by creating your first queue in klink.cloud!


# Queue Visibility & Management

### **1. Overview**

The **Queue Feature** defines how agents and queue managers view and manage conversations within their assigned **team queues**.

It ensures that:

* Each team has **full visibility** of their own queue’s conversations (Open, Hold, and Closed).
* Conversations remain **private** between teams.
* Collaboration and reassignment can happen smoothly when needed.

***

### **2. Roles and Permissions**

#### **Queue Manager**

* Can **see all conversations** (Open, Hold, and Closed) in their assigned queue.
* Can **assign or reassign** conversations to:
  * Agents within the same queue.
  * Other queues (for inter-team handover).
* Can **monitor**, **transfer**, and **track** conversation progress.

#### **Queue Agent**

* Can **see all conversations** (Open, Hold, and Closed) in their assigned queue.
* Can **reply only** to conversations **assigned to them**.
* Can view other conversations for context but **cannot reply** or **reassign** them.

***

### **3. Queue Visibility Rules**

| **User Type** | **Can View All Conversations (Open / Hold / Closed) in Own Queue?** | **Can Reply to Conversations?** | **Can Assign/Reassign Conversations?** | **Can See Other Queues?** |
| ------------- | ------------------------------------------------------------------- | ------------------------------- | -------------------------------------- | ------------------------- |
| Queue Manager | ✅ Yes                                                               | ✅ Yes                           | ✅ Yes                                  | ❌ No                      |
| Queue Agent   | ✅ Yes                                                               | ✅ Only assigned conversations   | ❌ No                                   | ❌ No                      |

***

### **4. Queue Isolation Between Teams**

Each queue is linked to a specific team.\
Members of one team can view only their own queue’s conversations.

**Examples:**

* **Sales Team** → Can view all (Open, Hold, and Closed) conversations in the **Sales Queue** only.
* **Tech Support Team** → Can view all (Open, Hold, and Closed) conversations in the **Tech Support Queue** only.
* Sales and Tech Support teams **cannot** see each other’s queues.

***

### **5. Unrouted Conversations (Before Queue Setup)**

Before queues are set up:

* Any **existing conversations not routed** to a queue are **visible to all users**.
* Once queues are created and routing is applied:
  * Those conversations will be **restricted** to their assigned queue.
  * Other queues will **no longer see** them.

**Note:**\
Only **unrouted conversations** remain visible globally.\
Once routed, they are visible **only** to the corresponding queue.

***

### **6. Conversation States**

Every conversation can have one of three states:

| **State**  | **Description**                                                                      | **Visible To**                       |
| ---------- | ------------------------------------------------------------------------------------ | ------------------------------------ |
| **Open**   | Active conversations that require action or response.                                | Queue Manager + Agents in same queue |
| **Hold**   | Conversations temporarily paused, awaiting customer reply or internal input.         | Queue Manager + Agents in same queue |
| **Closed** | Resolved conversations that require no further action but can be viewed for history. | Queue Manager + Agents in same queue |

All three states (**Open, Hold, and Closed**) are **visible** to both queue managers and agents within the same team.

***

### **7. Conversation Flow Example**

1. A new conversation arrives in the **Sales Queue**.
2. The **Sales Queue Manager**:
   * Assigns it to **Agent A**, or
   * Reassigns it to another queue (e.g., **Tech Support**) if needed.
3. **Agent A** can now respond and manage the conversation.
4. If the customer stops responding, the conversation may be moved to **Hold**.
5. Once resolved, it’s marked as **Closed**.
6. All **Sales team members** can still view it, but only **Agent A** (assigned) or the **Manager** can take action.
7. If reassigned to another team, the conversation disappears from Sales and becomes visible in the destination queue.

***

### **8. Typical Use Cases**

* **Queue Managers** monitor and manage all Open, Hold, and Closed conversations.
* **Agents** handle their assigned conversations and review others for context.
* **Cross-queue transfers** happen when a conversation belongs to another department.
* Before queue setup, all unrouted conversations are visible; after setup, visibility becomes queue-specific.

***

## ❓ **Frequently Asked Questions (FAQs)**

***

#### **Q1: What conversation states are available?**

There are three states:

1. **Open** – Active conversations in progress.
2. **Hold** – Paused conversations awaiting response.
3. **Closed** – Completed or resolved conversations.

All are visible to agents and managers within the same queue.

***

#### **Q2: Can I see conversations in other queues?**

No. You can only see conversations in your **own team’s queue**.

***

#### **Q3: Can I reply to any conversation I can see?**

No. You can **only reply** to conversations that are **assigned to you**.

***

#### **Q4: What happens before queues are set up?**

Before queues are configured:

* All unrouted conversations are **visible to all users**.\
  After setup, visibility is **restricted** by queue.

***

#### **Q5: Can a queue manager move a conversation to another team?**

Yes. Queue managers can **reassign** or **handover** conversations between queues when needed.

***

#### **Q6: Can agents see conversations on Hold or Closed?**

Yes. Agents can view all Open, Hold, and Closed conversations in their queue.\
However, they can only **reply** to their **assigned** conversations.

***

#### **Q7: What happens if a conversation is moved to another queue?**

It becomes **visible** in the destination queue and **disappears** from the original one.

***

#### **Q8: Why can I see conversations that others can’t?**

Visibility depends on:

* The **queues** you’re assigned to, and
* Whether the conversation is **unrouted** (visible to all) or **queued** (visible only to that team).

***

#### **Q9: Who can move a conversation from Hold to Open or Closed?**

* **Queue Managers** can change states at any time.
* **Agents** can change the status for their assigned conversations (depending on system permissions).

***

#### **Q10: What’s the difference between Hold and Closed?**

* **Hold** means the conversation is temporarily paused — waiting for action or customer reply.
* **Closed** means it’s fully resolved and no further action is needed.

***

## 🧩 **Summary Table**

| **Feature**                                         | **Queue Manager**  | **Agent**          |
| --------------------------------------------------- | ------------------ | ------------------ |
| View all Open/Hold/Closed conversations (own queue) | ✅                  | ✅                  |
| Reply to assigned conversations                     | ✅                  | ✅                  |
| Assign/reassign conversations                       | ✅                  | ❌                  |
| Move conversations between queues                   | ✅                  | ❌                  |
| View other queues                                   | ❌                  | ❌                  |
| View unrouted (pre-setup) conversations             | ✅ (visible to all) | ✅ (visible to all) |

***

Would you like me to format this version into:


# Setup SLA Targets

### SLA (Service Level Agreement) Overview

#### What is SLA?

SLA stands for **Service Level Agreement**. It’s a way to measure how quickly your team is responding to and resolving customer issues. Tracking SLA performance helps ensure that your customers are getting timely and efficient support.

#### How We Calculate SLA?

We make it easy to understand your SLA performance using a simple formula:

**(Cases Handled Within SLA / Total Cases) x 100**

* **Cases Handled Within SLA:** The number of customer cases your team solved within the target time.
* **Total Cases:** The total number of customer cases during a specific period.

Your SLA performance is shown as a percentage, so you can quickly see how well your team is meeting response and resolution goals.

#### Key SLA Metrics

* **SLA Met Percentage:** Shows the percentage of cases that were resolved within the target time.
* **SLA Breached Cases:** Displays the number of cases that took longer than the target time.

#### SLA Status in CX Log Table (Case Log)

In your **CX Log Table (Case Log)**, each case is marked with an SLA status:

* **SLA Meet:** The case was resolved within the target time.
* **SLA Unmeet:** The case took longer than the target time to resolve.

This allows you to quickly see which cases met their SLA targets and which did not.

#### Where to See Your SLA Data

You can check your SLA performance anytime in the Analytics Dashboard:

1. Open your klink.cloud dashboard.
2. Go to **Analytics**.
3. Find the **SLA Performance** section.
4. You’ll see your SLA Percentage
5. You can also review individual case statuses in the **CX Log Table** to see which cases met or missed their SLA targets.

<figure><img src="/files/0ugXFgqNUw3xZ5RgBaSP" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/hwbpcOoe6jlY17cop0JK" alt=""><figcaption></figcaption></figure>

#### Setting Up SLA Targets

Admins can customize SLA targets based on your team’s needs. You can set different time goals depending on:

* **First Response Time:** How quickly your team replies to a customer’s first message.
* **Resolution Time:** How fast your team fully resolves a customer’s issue.
* **Business Hours:** You can set SLA targets to apply only during your business operating hours.

#### Advanced SLA Settings

You can create different SLA targets for specific customer groups or case types. For example:

* VIP customers can have faster response and resolution targets.
* High-priority cases can be handled with shorter time goals.

To customize SLA targets:

1. Go to **Settings > SLA Management**.
2. Adjust the time limits based on **First Response Time**, **Resolution Time**, or **Business Hours**.
3. Set special targets for VIP customers, urgent cases, or any other condition that suits your business.
4. Click **Save**, and your SLA performance will reflect these custom settings.

<figure><img src="/files/Rhc0HFTxCKK1UEAyoX2r" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/jbhgVEo1FV7vdHNKGpxB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2tb06qpZBmdKFwTRldwe" alt=""><figcaption></figcaption></figure>

#### Why Tracking SLA Matters

* **Better Customer Satisfaction:** Quick responses keep customers happy.
* **Identify Bottlenecks:** See where your team is struggling and improve processes.
* **Optimize Performance:** Make data-backed decisions to improve your team’s efficiency.


# Setup Queue, Workflow, and SLA

## How to setup up Queue, Workflow Auto Assign, and SLA Target

{% embed url="<https://www.loom.com/share/64d8fca3ee0845ce8ca59b242e3df5a7?sid=03449579-d8f7-4653-ad86-3672fcd7b4f2>" %}

### 1. Introduction

This guide provides step-by-step instructions on how to set up a queue, configure workflow automation, and establish Service Level Agreements (SLA) in klink.cloud.

***

### 2. Setting Up a Queue

A queue is a group of team members who handle customer conversations from various channels and regions. Follow these steps to set up a queue:

#### Steps:

1. **Navigate to Queue Settings**
   * Go to **Settings**.
   * Click on **Queue Settings**.

<figure><img src="/files/nryhqj0tLBRrUx67e6On" alt=""><figcaption></figcaption></figure>

2. **Create a New Queue**

* Click **Create Queue**.
* Enter a **Queue Name** (e.g., Tech Support, Sales Support, Local Support).
* Assign a **Queue Manager** (e.g., Team Lead for the support team).
* Add team members to the queue.

<figure><img src="/files/PrVQJmjYz11DeTnEZJux" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/1Ym9Qv3oMZz4s4T1fLFj" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/dP3f0z8IklIPKHp0FRoX" alt=""><figcaption></figcaption></figure>

3. **Set Up Auto Assignment**

* Configure **Automatic Assignment** based on agent availability.
* Set the **maximum number of cases per agent** (e.g., 10 or 15 cases per agent).

<figure><img src="/files/5UmEyrEM821qtiUiVivH" alt=""><figcaption></figcaption></figure>

4. **Create Queues for Different Purposes**

* Example:
  * **Tech Support Queue** for handling technical inquiries.
  * **Sales Queue** for handling pricing, quotations, and demos.
  * **Localized Queue** (e.g., Thai Support) for specific languages or regions.

***

### 3. Configuring Workflow Automation

Workflow automation routes conversations to the appropriate queue based on predefined rules.

#### Steps:

1. **Go to Workflow Automation**
   * Navigate to **Settings**.
   * Click on **Workflow Automation**.

<figure><img src="/files/HgXqOlsV6VGH0mfDITGh" alt=""><figcaption></figcaption></figure>

2. **Create a New Workflow**

* Click **Create Workflow**.
* Name the workflow (e.g., Tech Support Workflow).
* Set the **Trigger Condition** (e.g., when a customer sends a message).

<figure><img src="/files/uSlwuhUiEycJaETYsyO5" alt=""><figcaption></figcaption></figure>

3. **Define Workflow Rules**

* Choose conditions based on message type, issue category, or channel.
* Example conditions:
  * If a message is received via **Telegram**, route to the **Tech Support Queue**.
  * If a conversation is about **pricing**, route to the **Sales Queue**.

<figure><img src="/files/LcwfQZtqTqyqutVMUnY5" alt=""><figcaption></figcaption></figure>

4. **Assign to a Queue**

* Under **Assign Agent**, select **Queue Assignment**.
* Choose the appropriate queue (e.g., Tech Support Queue).

<figure><img src="/files/AfndUfLCxrPWKhV1rNzl" alt=""><figcaption></figcaption></figure>

5. **Enable and Save the Workflow**

* Click **Enable** and **Save** the workflow.

Now, all incoming messages matching the criteria will be automatically routed to the designated queue.

***

### 4. Setting Up SLA (Service Level Agreement)

SLAs define response and resolution times for customer inquiries.

#### Steps:

1. **Go to SLA Settings**
   * Navigate to **Settings**.
   * Click on **SLA Setting**.
2.

```
<figure><img src="/files/Rhc0HFTxCKK1UEAyoX2r" alt=""><figcaption></figcaption></figure>
```

3. **Create a New SLA**
   * Click **Create SLA**.
   * Name the SLA (e.g., Tech Support SLA).
   * Define **Target Conditions** (e.g., for a specific channel like Telegram).

<figure><img src="/files/2f8PhVw9WC7muWk0y5pF" alt=""><figcaption></figcaption></figure>

4. **Set SLA Targets**

* **First Response Time**: Set the maximum time for the first reply (e.g., 5 minutes).
* **Resolution Time**: Define the timeframe for resolving the issue (e.g., 1 hour).

<figure><img src="/files/PcICfP5Wu7XCwHwZPQlm" alt=""><figcaption></figcaption></figure>

5. **Save and Apply the SLA**

* Click **Save**.
* The SLA will now be enforced for all relevant conversations.

***

### 5. Testing and Monitoring

To test the setup:

1. Send a message from a customer account (e.g., via Telegram).
2. Check if the message is routed to the correct queue.
3. Ensure that an agent is assigned automatically.
4. Verify SLA compliance in the conversation logs.
5. Review the case details (e.g., response time, resolution time).

***

### 6. Conclusion

By following these steps, you can efficiently manage queues, automate workflows, and ensure SLA compliance in klink.cloud. If you need further assistance, reach out to support or sign up for a free trial.


# 🧩 Queue Setup, Visibility & Workflow

#### Streamline your team routing and conversation ownership with klink.cloud Queues

klink.cloud helps you organize your customer conversations by **Queue**, automate **chat routing**, and control **who sees what** — ensuring efficiency, fairness, and privacy across your teams.

***

### ⚙️ Step 1 — Create a Queue

1. Go to **Settings → Queues**.
2. Click **Create Queue**.
3. Enter a **Queue Name** (e.g., *Sales Team*, *Support Team*).
4. Optionally add a short **description**.
5. Click **Save**.

💡 *Each Queue represents a team or department where conversations are grouped.*

***

### 👥 Step 2 — Add Members & Manage Visibility

1. Open your newly created Queue.
2. Add a **Queue Manager** — responsible for overseeing conversations and workload.
3. Add **Agents** — members who handle chats within that queue.

#### Visibility Rules

| Role              | Visibility                                             |
| ----------------- | ------------------------------------------------------ |
| **Admin**         | Can view all chats and all queues                      |
| **Queue Manager** | Can view all chats within assigned queues              |
| **Agent**         | Can view chats only in their queue or assigned to them |
| **Non-member**    | Cannot access any chat from that queue                 |

#### 🔒 Hide Connected Channels&#x20;

To prevent agents from seeing all connected channels:

1. Go to **Settings → Roles and Permissions**.
2. Edit the **Agent Role**.
3. Under **Inbox**, set **Connected Channels → Cannot see**.\
   ✅ This hides all connected channels from the agent’s view.

💡 *This setup is ideal for teams that should only focus on their own assigned queue or region.*

***

### 🔁 Step 3 — Enable Auto Assign

klink.cloud can automatically distribute new chats among agents to balance workload.

1. Go to **Queue Settings**.
2. Turn **Assign Automatically** → **ON**.
3. Choose your **Distribution Strategy → Round Robin**.
4. (Optional) Set **Maximum Assign per Agent** to limit concurrent cases.

✅ *Now new chats are automatically routed and distributed evenly among available agents.*

***

### ⚡ Step 4 — Create Workflow Automation

Workflows ensure chats are routed to the right Queue automatically.

1. Navigate to **Settings → Workflow Automation**.
2. Click **Create Workflow**.
3. **Trigger:** Select **When chat room is opened**.
4. **Action:** Choose **Assign to Queue Group** (e.g., *Sales Queue*).
5. Click **Save & Activate**.

💡 *Every new chat will automatically assign to the correct team’s queue — no manual intervention needed.*

***

### 🧪 Step 5 — Test Your Setup

1. Start a new test conversation from your connected channel (e.g., Web Chat or WhatsApp).
2. Confirm it automatically routes to the correct Queue.
3. Verify that:
   * Only queue members can view and respond.
   * Auto-assignment distributes new chats evenly.
   * Agents without permissions cannot see hidden channels.

***

### ✅ Quick Summary

| Feature                 | Description                               |
| ----------------------- | ----------------------------------------- |
| **Queue**               | Organizes team-specific conversations     |
| **Auto Assign**         | Automatically assigns new chats to agents |
| **Workflow Automation** | Routes new chats to the correct queue     |
| **Visibility Control**  | Restricts what agents can see             |
| **Roles & Permissions** | Fine-tunes channel and inbox visibility   |

***

### 💡 Best Practice

* **Use separate queues** for Sales, Support, and Partners to simplify routing.
* **Enable Auto Assign** with **Round Robin** to ensure fairness.
* **Use workflows** to automate routing and reduce human errors.
* **Review Roles & Permissions** regularly for privacy and compliance.

***

### 🔗 Related Articles

* [Setup Queue Workflow and SLA](https://docs.klink.cloud/advanced-setup/setup-queue-workflow-and-sla)
* Manage Roles & Permissions
* Workflow Automation Basics


# How to setup AI Agent (Step by Step Guide)

### 🔧 Overview

Kai is your AI Agent built into the klink.cloud platform to automate customer conversations across messaging channels like WhatsApp, Facebook, Instagram, LINE, and website live chat.

This guide walks you through setting up a fully functional Kai AI Agent—from knowledge base creation to deployment on messaging channels.

{% embed url="<https://www.loom.com/share/4e22af09cdc1448aaa2dc82e24f1be14>" %}

### 🛠️ Step 1: Create a New AI Agent

1. Go to the AI Agent section.
2. Click “Create New Agent”.
3. Give your agent a name (e.g., “Escape Bar Reservation Agent”).
4. Set Activity Timeout (default: 10 minutes). This means a conversation will automatically close if inactive for 10 minutes.
5. Click “Create” and then go to the Studio to configure your agent.

***

### 📚 Step 2: Create a Knowledge Base

1. Navigate to Knowledge Base tab.
2. Click “Create New Knowledge Base”.
3. Choose one of three training sources:
   * Write your own Q\&A
   * Upload PDF documents
   * Sync website content via URL

<br>

Example:

To sync with a website:

* Choose “Website URL”
* Paste the business website (e.g., <https://escapebangkok.com>)
* Select:
  * Crawl single page (for 1 URL), or
  * Crawl all pages under the domain
* Click “Sync” and wait for training to complete.

***

### 🤖 Step 3: Configure AI Agent Behavior in Studio

1. In the Studio, click “Add Agent”.
2. Select the type of agent you want:
   * Example: “Reservation Agent”
     * Description: Handles reservations from 5PM to 1AM
     * Add happy hour info if needed
3. Write a prompt like:

   > “You are a reservation agent for Escape Bar, open from 5PM–1AM. Help customers book tables and inform them about happy hour from 6–8PM.”
4. Set fallback or transition rules:
   * For example, if a customer asks about “menu” or “wine”, transfer the conversation to the Knowledge Base Agent.

***

### 🔄 Step 4: Create Agent Transitions (Optional but Recommended)

1. In the Studio, click “Transition”.
2. Add conditions like:

```
If user message contains "menu", "drinks", "wine"
→ Transfer to Knowledge Base Agent
```

3. Select the appropriate Knowledge Base you created earlier.
4. Connect agents with drag-and-drop to visualize the flow.

### 🧪 Step 5: Test the AI Agent (Emulator)

1. Use the built-in Emulator to simulate conversations.
2. Try different messages like:
   * “Can I reserve a table for next Friday at 7PM?”
   * “Do you have a wine menu?”
3. The AI will respond based on the configured prompt and transition to Knowledge Agent if needed.

***

### 🌐 Step 6: Connect Messaging Channels

1. Go to Settings > Messaging Channel.
2. Choose from:
   * WhatsApp
   * Facebook Messenger
   * Instagram
   * LINE
   * Website Live Chat
3. For WhatsApp:
   * Simply scan the QR code to connect
   * No complex WhatsApp Business API setup needed

***

### ⚙️ Step 7: Set Workflow Trigger

1. Go to Workflow Automation.
2. Click Create New Workflow.
3. Add Trigger:
   * When thread is opened
4. Add Condition:
   * If channel = \[LINE, Facebook, WhatsApp, etc.]
5. Action:
   * Assign to AI Agent → Select your created agent
6. Enable and save the workflow.

***

### ✅ Final Test

<br>

Send a real message through the connected channel and check:

* Does the AI respond correctly?
* Does it switch to the knowledge base agent when appropriate?
* Are all reservation details correctly captured?

***

### 🎉 You’re Done!<br>

You’ve now successfully built and deployed an Omni-Channel AI Agent with:

* Reservation capabilities
* Website-trained knowledge
* Multi-channel deployment
* Automated workflows

***

For questions or setup support, contact our team or book a 1-on-1 session.

Start building smarter customer conversations today with Kai AI Agent on klink.cloud.


# Wait Timer & Follow-Up Setup

**Overview**

This guide explains how to configure an automated follow-up sequence: when a customer stops replying, the system waits a set period, then a Follow-Up agent re-engages them with a personalized message.

<figure><img src="/files/wDJ1yXMVULS7CCPb7k10" alt=""><figcaption></figcaption></figure>

***

**How the Flow Works**

The setup connects four blocks in sequence:

**1. Conversation Agent**\
The primary agent handles the customer conversation — answering support and sales questions. When the conversation pauses (customer goes quiet), the flow moves to the Wait block.

**2. Wait Block**\
This is your timer. It pauses the flow for a defined period (e.g. *1 minute*) before checking whether the customer has responded. Configure the duration to match your business needs — a few minutes for live chat, or longer for slower channels.

**3. Reply Checker ("Did they reply?")**\
After the wait period ends, this block checks for customer activity and branches two ways:

* **Customer replied** → conversation continues normally (no follow-up needed).
* **Timed out (no reply)** → routes to the Follow-Up agent.

**4. Follow-Up Agent**\
Triggered only when the customer hasn't replied. It sends a personalized re-engagement message to win the customer back and encourage a response.

***

**Setup Steps**

1. **Add the Wait block** after your main Conversation Agent and set the timer duration (click the block to edit the wait time).
2. **Connect the Wait block to the Reply Checker** so the system evaluates the customer's response after the timer expires.
3. **Configure the two Reply Checker outputs:**
   * Connect *Customer replied* back to your normal conversation path.
   * Connect *Timed out (no reply)* to the Follow-Up agent.
4. **Set up the Follow-Up agent** with instructions to re-engage customers personally — reference the earlier conversation so the message feels tailored, not generic.

***

**Personalization Tip**

The Follow-Up agent works best when its prompt tells it to reference what the customer was previously asking about. If a customer was asking about a specific product, the follow-up can continue that thread naturally — checking in on their choice and offering tailored recommendations rather than sending a generic "just checking in" message.


# AI Agent Tools & Actions

Connect your AI Agents to external systems via webhooks, automate workflows, and execute tasks across CRMs, email, calendars, and thousands of third-party tools.

## AI Agent Tools & Actions: Webhook Integration Guide

### Overview

The **Tools & Actions** feature in klink.cloud AI Agent Studio enables your AI agents to interact with external systems and execute real-world tasks. By connecting your agent to any service via webhook endpoints, you can automate workflows, trigger actions, and integrate with thousands of third-party tools.

<figure><img src="/files/faiE5490YWFuO3nQ0hPl" alt=""><figcaption></figcaption></figure>

### What Are Tools & Actions?

Tools & Actions allow your AI agent to:

* **Execute tasks** in external systems during conversations
* **Send data** to automation platforms, CRMs, databases, and APIs
* **Trigger workflows** in tools like Zapier, Make.com, n8n
* **Perform operations** like sending emails, creating tickets, updating records
* **Connect with any service** that provides a webhook or API endpoint

### How It Works

```
Customer Conversation → AI Agent Collects Data → Executes Action → External System Performs Task
```

1. Your AI agent engages in conversation and collects required information
2. When conditions are met, the agent calls a configured action
3. Data is sent to the webhook endpoint
4. The connected system (Zapier, API, etc.) executes the task
5. Agent continues the conversation and confirms completion

***

### Setup Guide

#### Step 1: Create Webhook Endpoint

Choose your automation platform:

* **Zapier** - Easy, no-code automation
* **Make.com** - Visual workflow builder
* **n8n** - Self-hosted automation
* **Custom API** - Your own backend system

**Example using Zapier:**

1. Create a new Zap
2. Select **Webhooks by Zapier** as trigger
3. Choose **Catch Hook**
4. Copy the webhook URL provided

#### Step 2: Configure Action in AI Agent Studio

1. Open your AI agent in klink.cloud AI Agent Studio
2. Navigate to **Tools & Actions**
3. Click **Add New Action**
4. Select **API Call**

**Configuration:**

* **Name:** Descriptive name (e.g., "Send Email", "Create Ticket")
* **Description:** What this action does
* **URL:** Paste your webhook endpoint
* Click **Next**

#### Step 3: Define Data Properties

Specify what data to send to the webhook:

**Methods:**

* **AI Generate:** Let AI suggest relevant fields
* **Manual Entry:** Define custom properties

Click **Next** after configuring properties.

#### Step 4: Add Agent Instructions

In your agent's system prompt, add instructions for when to execute the action:

```
When you have collected [required information], use the [action_name] function to [describe task].
```

**Example:**

```
When you have all the required reservation information (name, email, phone, date, time, number of guests), 
send reservation confirmation email using the send_email function.
```

#### Step 5: Configure External Action

Complete the automation in your chosen platform (Zapier, Make.com, etc.) to define what happens when the webhook receives data.

***

### Example Use Cases

#### 1. Restaurant Reservation System (Demo Example)

{% embed url="<https://www.loom.com/share/51a2310b602d43e1a97dd1ef297f17eb>" %}

**Scenario:** Automate reservation confirmations via email

**Workflow:**

1. AI agent collects: name, email, phone, date, time, guests, special requests
2. Sends data to Zapier webhook
3. Zapier sends confirmation email via Gmail
4. Agent confirms booking to customer

**Properties Configured:**

```
- customer_name
- email
- phone_number
- reservation_date
- reservation_time
- number_of_guests
- special_requests
```

**Agent Instruction:**

```
When you have all required information, send reservation confirmation email using the send_email function.
```

**Zapier Configuration:**

1. Trigger: Catch Hook (receives reservation data)
2. Action: Gmail - Send Email
   * To: {{email}}
   * Subject: "Reservation Confirmed"
   * Body: Reservation details with all collected information

***

#### 2. Customer Support Ticket Creation

**Scenario:** Automatically create support tickets in your helpdesk system

**Workflow:**

1. Customer describes their issue to AI agent
2. Agent collects: issue description, priority, category, contact info
3. Creates ticket in Zendesk/Freshdesk via webhook
4. Provides ticket number to customer

**Properties Configured:**

```
- customer_name
- email
- issue_category
- priority_level
- issue_description
- phone_number
```

**Agent Instruction:**

```
After understanding the customer's issue and collecting their contact information, 
create a support ticket using the create_ticket function and provide them with the ticket number.
```

**Integration Options:**

* Zendesk API
* Freshdesk webhook
* Jira Service Management
* Custom ticketing system

***

#### 3. Lead Capture & CRM Integration

**Scenario:** Automatically add qualified leads to your CRM

**Workflow:**

1. AI agent qualifies leads through conversation
2. Collects: name, company, email, phone, budget, timeline
3. Sends to CRM (Salesforce, HubSpot, Pipedrive)
4. Assigns to sales representative

**Properties Configured:**

```
- full_name
- company_name
- email
- phone_number
- industry
- budget_range
- purchase_timeline
- pain_points
```

**Agent Instruction:**

```
When you have qualified the lead and collected all required information, 
add them to the CRM using the add_lead function.
```

**CRM Integration via Zapier/Make:**

1. Receive webhook data
2. Create/update contact in CRM
3. Assign to sales team based on territory
4. Trigger follow-up email sequence

***

#### 4. Appointment Scheduling

**Scenario:** Book appointments and sync with calendar

**Workflow:**

1. Agent checks availability (can integrate with calendar API)
2. Collects customer preferences and contact info
3. Creates calendar event via Google Calendar/Outlook
4. Sends confirmation and calendar invite

**Properties Configured:**

```
- customer_name
- email
- phone_number
- service_type
- preferred_date
- preferred_time
- duration
- notes
```

**Agent Instruction:**

```
Once the customer confirms their appointment time and you have their contact details, 
create the appointment using the schedule_appointment function.
```

**Integration Options:**

* Google Calendar API
* Microsoft Outlook Calendar
* Calendly webhook
* Custom booking system

***

#### 5. Order Processing & Inventory Update

**Scenario:** Process orders and update inventory in real-time

**Workflow:**

1. Customer places order through chat
2. Agent collects: items, quantities, delivery address, payment method
3. Sends order to inventory system
4. Updates stock levels and creates delivery order

**Properties Configured:**

```
- customer_name
- email
- phone_number
- order_items (array)
- quantities (array)
- delivery_address
- payment_method
- special_instructions
```

**Agent Instruction:**

```
After confirming the order details and payment method with the customer, 
process the order using the create_order function.
```

**Backend Integration:**

1. Webhook receives order data
2. Check inventory availability
3. Create order in database
4. Update stock levels
5. Generate invoice
6. Trigger fulfillment process

***

#### 6. Survey & Feedback Collection

**Scenario:** Collect customer feedback and store in database

**Workflow:**

1. AI agent conducts satisfaction survey
2. Collects ratings and feedback
3. Stores in Google Sheets/Airtable/Database
4. Triggers alerts for negative feedback

**Properties Configured:**

```
- customer_name
- email
- satisfaction_rating
- product_rating
- service_rating
- feedback_comments
- would_recommend
```

**Agent Instruction:**

```
After collecting all feedback responses, save the survey results using the save_feedback function.
```

**Data Storage Options:**

* Google Sheets via Zapier
* Airtable database
* Custom database API
* Analytics platform

***

#### 7. E-commerce Returns & Refunds

**Scenario:** Process return requests automatically

**Workflow:**

1. Customer initiates return request
2. Agent collects: order number, reason, items to return
3. Creates return label and case in system
4. Emails return instructions to customer

**Properties Configured:**

```
- order_number
- customer_email
- items_to_return (array)
- return_reason
- condition
- refund_or_exchange
```

**Agent Instruction:**

```
Once you have verified the order and collected return details, 
initiate the return process using the process_return function.
```

***

#### 8. Multi-Channel Notification System

**Scenario:** Send notifications across multiple channels

**Workflow:**

1. AI agent collects notification preferences
2. Triggers messages across email, SMS, WhatsApp
3. Logs notification in system

**Properties Configured:**

```
- recipient_name
- email
- phone_number
- notification_message
- urgency_level
- preferred_channels (array)
```

**Integration Options:**

* Email: SendGrid, Mailgun, Gmail
* SMS: Twilio, MessageBird
* WhatsApp: klink.cloud WhatsApp API
* Push: Firebase, OneSignal

***

### Advanced Configuration

#### Multiple Actions in One Agent

You can configure multiple tools/actions for different purposes:

```
Actions:
1. send_email - Send email notifications
2. create_ticket - Create support tickets
3. schedule_callback - Schedule callbacks
4. update_crm - Update customer records
```

Each action has its own trigger conditions in the agent instructions.

#### Conditional Action Execution

**Example instruction:**

```
If the customer's issue is urgent (priority: high), create a ticket using create_ticket 
and also send an alert email using send_alert.

If the issue is low priority, only create a ticket using create_ticket.
```

#### Error Handling

Configure fallback behavior in your agent:

```
If the action execution fails, apologize to the customer and offer alternative 
contact methods. Log the error details for review.
```

***

### Testing Your Actions

1. **Emulator Testing:**
   * Use AI Agent Studio emulator
   * Complete full conversation flow
   * Verify action executes at correct time
2. **Webhook Verification:**
   * Check automation platform (Zapier) history
   * Verify data received correctly
   * Confirm all fields populated
3. **End-to-End Testing:**
   * Test complete workflow
   * Verify external system receives/processes data
   * Check customer receives expected outcome

***

### Best Practices

#### 1. Clear Action Naming

Use descriptive names that indicate what the action does:

* ✅ `send_booking_confirmation`
* ✅ `create_support_ticket`
* ❌ `action1`, `webhook_call`

#### 2. Validate Data Before Sending

Ensure agent collects all required information:

```
Required fields: name, email, phone
Optional fields: special_requests, notes
```

#### 3. Confirm Action Execution

Always have agent acknowledge the action:

```
"I've created your support ticket #12345 and sent a confirmation email to your address."
```

#### 4. Handle Failures Gracefully

Provide fallback options if action fails:

```
"I apologize, but I'm having trouble processing your request right now. 
I can take your information and have someone contact you shortly."
```

#### 5. Data Privacy & Security

* Only send necessary data
* Comply with GDPR/data protection regulations
* Use secure webhook endpoints (HTTPS)
* Implement authentication where needed

#### 6. Rate Limiting Awareness

* Consider API rate limits
* Implement queuing for high-volume scenarios
* Monitor usage and costs

***

### Supported Automation Platforms

#### No-Code Platforms

* **Zapier** - 5,000+ app integrations
* **Make.com** - Visual workflow automation
* **IFTTT** - Simple if-this-then-that logic
* **Integromat** - Advanced automation scenarios

#### Developer Platforms

* **n8n** - Self-hosted, open-source automation
* **Pipedream** - Code-based workflows
* **Custom APIs** - Your own backend services

#### Direct Integrations

Connect directly to APIs:

* CRM systems (Salesforce, HubSpot)
* Communication tools (Twilio, SendGrid)
* Project management (Asana, Jira)
* E-commerce platforms (Shopify, WooCommerce)
* Database systems (Airtable, PostgreSQL)

***

### Pricing Considerations

**klink.cloud:** Action executions included in AI resolution pricing

**External Platforms:**

* Zapier: Starts free (100 tasks/month), paid plans for higher volume
* Make.com: Starts free (1,000 operations/month)
* n8n: Self-hosted (free), cloud plans available
* Custom APIs: Based on your infrastructure

***

### Troubleshooting

#### Action Not Executing

* ✓ Verify webhook URL is correct
* ✓ Check agent instruction syntax
* ✓ Ensure all required data is collected
* ✓ Test webhook endpoint independently

#### Missing Data in Webhook

* ✓ Confirm property names match
* ✓ Verify data types are correct
* ✓ Check agent collected all fields

#### External System Not Responding

* ✓ Verify automation platform is active
* ✓ Check API credentials
* ✓ Review error logs in platform
* ✓ Test endpoint with manual trigger

***

### Getting Started

1. **Identify Use Case** - What task do you want to automate?
2. **Choose Platform** - Zapier for simplicity, custom API for flexibility
3. **Configure Webhook** - Set up your endpoint and get URL
4. **Create Action** - Add action in AI Agent Studio
5. **Define Properties** - Specify data to send
6. **Write Instructions** - Tell agent when to execute
7. **Test Thoroughly** - Verify end-to-end workflow
8. **Deploy & Monitor** - Launch and track performance

***

### Need Help?

Send email to <support@klink.cloud> or chat via In-App Live Chat

**Pro Tip:** Start with a simple use case (like the restaurant reservation example) to understand the flow, then expand to more complex scenarios.


# Agentic Workflow Guide

### Building Reliable Conversational Workflows with Agentic Architecture

***

### 🧠 What is the Agentic Workflow?

The **Agentic Workflow** is a structured method for designing multiple AI agents to collaborate effectively in customer conversations. It mirrors a real-world support team setup—with a **Manager Agent** acting like a supervisor, and **Specialized Agents** each handling a specific task (like order tracking, product recommendations, or FAQs).

This approach reduces hallucination, improves task accuracy, and makes it easy to scale or debug.

{% embed url="<https://www.loom.com/share/d034aa1eef01456cb159a548ef470fd3>" %}

***

### 🔑 Key Components of Kai’s Agentic System

***

#### 1. 🤝 **Manager Agent (Coordinator Agent)**

The **Manager Agent** is the first and central point of contact in the AI system.

**Responsibilities:**

* Greets the user.
* Understands and classifies the **intent** of the user message.
* Routes the conversation to the correct **Specialized Agent**.
* Receives conversation back after task completion to reassess the next intent.

**Prompt Example:**

> "You are Tammy, the Manager Agent of Kai. Your job is to greet the user, identify their intent (e.g., order tracking, product recommendation, FAQ), and route them to the correct specialized agent. You do not solve the problem yourself."

> If the user message is unclear, ask a polite follow-up to clarify intent.

***

#### 2. 👩‍🔧 **Specialized Agents**

Each **Specialized Agent** is designed to perform **one single, clearly defined task**. These agents are autonomous—they analyze the user’s message, take action (often via API or knowledge base), and complete their task before handing control back to the Manager Agent.

**Example Specialized Agents:**

| Agent Type                       | Description                                                                                                             |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Order Tracking Agent**         | Retrieves real-time order status using order ID or email via API.                                                       |
| **Product Recommendation Agent** | Extracts product interests (e.g., “shade tree”) and recommends matching items from the catalog using Shopify API.       |
| **FAQ Agent**                    | Answers common questions such as return policy, warranty, or shipping times from the company’s internal knowledge base. |
| **Returns Agent**                | Handles return, warranty, and refund requests.                                                                          |

**Prompt Template:**

> "You are the \[Agent Type] for \[Business Name]. Your job is to complete \[specific task]. Use API or internal tools as needed. Once complete, return to the Manager Agent with a summary."

***

#### 3. 🔁 **Transition Node (Routing Back to Manager Agent)**

Once a specialized agent finishes its task, it must **return control back to the Manager Agent** to handle the next intent or clarify the next steps. This is done via a **Transition Node**, which acts as a switch point.

**Why This Is Crucial:**

* Prevents the AI from getting “stuck” in one agent.
* Helps reevaluate new user questions.
* Ensures the AI behaves like a human support team would—with clear boundaries and responsibilities.

**Transition Prompt Example:**

> “If the task is complete or the question falls outside your scope, return the conversation to the Manager Agent. Include the original user message and your output summary.”

***

### 🧩 How It All Connects – Full Workflow Overview

#### 🔄 Example: User Wants to Track an Order, Then Get Product Suggestions

1. **User says:** "Where is my order?"
2. **Manager Agent** detects intent → routes to **Order Tracking Agent**.
3. **Order Tracking Agent** requests order ID/email → calls Shopify API → shows tracking info → returns control to **Manager Agent**.
4. **User says:** "Can you recommend a shade tree?"
5. **Manager Agent** detects new intent → routes to **Product Recommendation Agent**.
6. **Product Recommendation Agent** extracts product type → fetches catalog → suggests items with Add-to-Cart links → returns to **Manager Agent**.
7. **User says:** "How long will shipping take?"
8. **Manager Agent** routes to **FAQ Agent**.

✅ This flow continues with seamless transitions between agents.

***

### 🛠 Best Practices When Building with Kai’s Agentic Workflow

1. **Always Start with a Manager Agent**\
   The Manager is your foundation. It holds the map for intent detection and routing logic.
2. **Define Clear Agent Roles**\
   Avoid multifunction agents. Each one should do **one job well**.
3. **Use Transition Nodes Consistently**\
   Always bring the conversation back to the Manager before redirecting. This avoids hallucination and lets users change topics naturally.
4. **Maintain Stateless Behavior**\
   Each specialized agent should only focus on the message and available context—it should not try to continue a conversation indefinitely.
5. **Fallback to Human Agent When Needed**\
   Set up human takeover options in cases of confusion, dissatisfaction, or sensitive inquiries.

***

### 🚀 Benefits of Agentic Design for Kai AI Agent

| ✅ Advantage   | 🌟 Benefit                                                            |
| ------------- | --------------------------------------------------------------------- |
| **Modular**   | Easy to test, maintain, or replace individual agents.                 |
| **Reliable**  | Reduces hallucination by avoiding all-in-one agents.                  |
| **Scalable**  | Add more agents for new functions anytime.                            |
| **Efficient** | Each agent can be optimized for its own task using API, KB, or tools. |

***

### 🧪 Testing & Troubleshooting

* Always simulate full flows: order inquiry → product query → FAQ → return flow.
* If the agent doesn’t return to the manager, check for **missing transition nodes**.
* If intent detection is incorrect, refine the **Manager Agent’s prompt examples**.

***

### 📞 Support

Need help configuring your agent tree or writing better prompts?\
Contact our team at **<support@klink.cloud>**  or chat with us — we’ll guide you step by step.


# Multi-Language AI Agent Setup Guide

### 🎯 **Objective**

This guide explains how to build a **multilingual AI agent system** by separating each language into its own dedicated agent.\
This ensures accurate responses, prevents mixed-language outputs, and provides a smooth experience for users communicating in different languages.

### 🧭 Overview

The **Greeting Agent** is the first interaction point for users.\
Its purpose is to **greet the user**, **detect the language**, and **route the conversation** to the correct language-specific agent (for example, English Agent or Thai Agent).

This ensures a seamless multilingual experience without mixing responses between languages.

### 💬 Example Prompt

```
You are an agent — a multilingual greeting assistant. 
Your role is to warmly welcome users and identify the language they are using.

Follow these steps:
1. Greet the user politely and ask how you may assist them.  
2. Detect the language of the user's response accurately.  
3. Based on the detected language, transfer the conversation seamlessly to the respective specialized agent who can assist further in that language.  

Rules:
- Always be friendly, professional, and concise.  
- If language detection is uncertain, politely ask the user to confirm their preferred language before transferring.  
- Do not attempt to answer complex or topic-specific queries yourself; always route to the specialized agent responsible for that language.  
- Maintain user privacy at all times and never share personal information.  
- Keep interactions short, clear, and helpful.  

```

### Example Agent Flow

<figure><img src="/files/HwYSXte14u2jEUrADFl9" alt=""><figcaption></figcaption></figure>

### ⚙️ How to Implement in Kai Builder

#### **Step 1: Create a New Agent**

1. Go to your **Kai Builder dashboard**.
2. Click **“Create New Agent”** → select **Conversation Agent**.
3. Name it **Greeting Agent (Language Detector)**.
4. Paste the **example prompt** (above) into the **Instructions** field.

***

#### **Step 2: Add Language-Based Transitions**

Create separate transitions to route users based on detected language.

**Example Transitions:**

| Transition Name           | Condition                           | Next Agent                                                                         |
| ------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------- |
| Transfer to English Agent | If user message detected in English | English CS Agent                                                                   |
| Transfer to Thai Agent    | If user message detected in Thai    | Thai CS Agent                                                                      |
| Ask for Confirmation      | If language uncertain               | Stay in Greeting Agent and ask “Could you please confirm your preferred language?” |
|                           |                                     |                                                                                    |

#### **Step 3: Set Up the Language-Specific Agents**

1. Create one **Conversation Agent** for each language (e.g., English Agent, Thai Agent, Japanese Agent).
2. Inside each, define:
   * Language-specific instructions (respond only in that language)
   * Tone and style appropriate to local culture
   * Connection to language-specific FAQ or knowledge base

**Example Rule for English Agent:**

```
You are an English-language customer assistant. 
Respond 100% in English and never switch languages.
```

**Example Rule for Thai Agent:**

```
คุณเป็นเจ้าหน้าที่บริการลูกค้าภาษาไทย ตอบกลับเป็นภาษาไทยเท่านั้น
```

***

#### **Step 4: Add Shared Agents for Cancellations or Escalations**

After each language agent, you can route special intents (like **refunds**, **account issues**, or **human escalation**) to shared agents:

* **Cancellation Agent**
* **Human Agent**

This ensures a unified escalation experience regardless of the user’s language.

***

#### **Step 5: Test the Flow**

1. Open the test console in Kai Builder.
2. Type in both **English** and **Thai** messages to confirm routing works correctly.
3. Check that:
   * English messages trigger the **English Agent**.
   * Thai messages trigger the **Thai Agent**.
   * Uncertain language prompts a polite confirmation message.

***

### 🧠 Best Practices

* Keep each agent **language-isolated** — do not mix bilingual replies.
* Add **strict language rules** inside each agent to avoid confusion.
* Maintain separate **FAQ or knowledge base** per language for higher accuracy.
* Use **short greetings** and transfer quickly — the Greeting Agent should not handle support queries.
* Monitor routing analytics regularly to refine detection accuracy.


# Prompt Instruction Examples

### Translation Prompt

Use this prompt to translate entire conversations into user's original languages

```
#Rule
Always respond in the same language as the user’s message. Detect the language of every user input and reply only in that language. Do not mix languages unless explicitly requested. If the knowledge base or source content is in English but the user uses another language, translate it into the user’s language with a friendly, natural, and conversational tone. If the user switches language mid-conversation, continue using the latest detected language. Never produce bilingual or mixed-language responses unless explicitly requested.

Examples:
	•	User (Malay): “Boleh jelaskan pelan harga?” → Reply entirely in Malay.
	•	User (Mandarin): “请介绍一下订阅方案。” → Reply entirely in Mandarin.
	•	User (English): “Explain your pricing model.” → Reply entirely in English.

Additional Notes:
If the knowledge base is English-only, rewrite the content naturally in the user’s language — avoid direct word-by-word translation. Use polite, friendly phrasing that sounds natural for native speakers.
```

#### Strict Language Rule

If your instruction prompt is mixed with Multiple Languauge. Use this prompt at the top of the Agent Instruction to strictly follow languages

```
#Strict Language Rule
Before replying, detect the user's latest message language and respond only in that language.
Rules:
-If user types in English → respond 100 % in English.
-If user types in Thai → respond 100 % in Thai.
-If user types in Chinese → respond 100 % in Chinese.
-If user types in Burmese → respond 100 % in Burmese.
-If user types in Japanese → respond 100 % in Japanese.

Never mix languages.
-If user switches languages mid-conversation, switch to that new language immediately.
-This rule overrides all prior examples or memory context.
```


# Creating a Voice AI Agent

Build a voice AI agent that answers calls and handles tasks like taking restaurant reservations — in under 5 minutes

{% embed url="<https://www.loom.com/share/351ca024f7b1470b9588f94bb6bc3701>" %}

Build a voice AI agent that answers calls and handles tasks like taking restaurant reservations — in under 5 minutes. This guide uses a restaurant booking example, but the same steps work for any use case.

### What you'll need

* Access to the AI Agent dashboard
* The website URL of the business the agent represents
* A microphone (to test the agent)

### 1. Create a new agent

1. Copy the business website link.
2. Go to the dashboard → **Agents** → **Create New Agent**.

### 2. Describe what you want

Creating the agent works like chatting with an AI assistant. In the chat box, type what you want it to do — in plain language.

Example:

> I want to create a reservation agent for Oju Bangkok. Here is our website. Plan everything from our website — reservation agent.

The AI analyzes the website and builds the agent automatically. This takes a few seconds to a few minutes.

### 3. Choose a voice

Pick a voice profile (for example, "Laura"). You can change it later in **Settings**.

> 💡 Many voice profiles are available across multiple languages and providers.

### 4. Test it

Use the built-in emulator to try the agent before going live.

1. Click **Start Web Call**.
2. Talk to the agent like a customer would — give a name, phone number, email, and a date and time.
3. End the call when done.

### 5. Review the call log

After each call, open the **Call Log** to see:

* An AI-generated summary
* Call duration and cost
* The full transcript
* The call recording (playable)

### 6. Edit and refine

To change anything, go back to the agent and type your change in the chat box.

For more control, open **Advanced Mode** to edit the prompt directly or switch to a different voice provider or language.

### 7. Go live

Connect the agent to a phone number so it can take real calls.

* Buy a number in the platform, searchable by country.
* Numbers are available across Southeast Asia, the US, and Europe.
* Can't find your country? Contact us to connect a number manually.

***

Building a voice AI agent takes less than 5 minutes. Schedule a demo to learn more.


# Reporting

## Call Reports Overview

klink.cloud platform provides intuitive visual call reports, which allow you to check call statistics of different objects, such as agents, trunks, queues, ring groups, etc. This topic describes category of call reports, and methods of getting an instant call report.

### Category of Call Reports

Call Reports are categorized as **Basic Reports** and Advanced Reports. Which reports are accessible depends on the plan that your PBX supports.

| Category         | Reports                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Basic Reports    | <ul><li><a href="/pages/vh0GGhJQVT8ORiw9pNU9">Agent Call Statistics</a></li><li><a href="/pages/MDYT4qJzW0VvVhSaPnZJ">Agent Call Activity</a></li><li><a href="/pages/Pu1FL9v2TPMpQmQlT1dE">Trunk Activity</a></li></ul>                                                                                                                                                                                                                                                                                                            |
| Advanced Reports | <ul><li><a href="/pages/sJa5c6O6vCFusQeTew8e">Queue AVG Waiting & Talking Time</a></li><li><a href="/pages/86KOgfiC43JMApMIvBWV">Queue Performance</a></li><li><a href="/pages/qLIDbmrGBYSO90PsjJII">Agent Missed Call Activity</a></li><li><a href="/pages/e6aBbJhw2tF1w4A9Yst8">Agent Call Summary</a></li><li><a href="/pages/zxq8uikO0AbEQnz3eRDU">Satisfaction Survey</a></li><li><a href="/pages/amU5lOYn6RMDQxccIviu">Agent Status Report</a></li><li><a href="/pages/J9Ln8C50XC5I89Pv51MD">CX Interaction Log</a></li></ul> |


# CDR

The Call Detail Record (CDR) feature provides information about calls over klink.cloud platform

**CDR parameters**

A CDR contains the following information:

* **Time**: When the call was made or received.
* **Call From**: The number or the name of the caller.
* **Call To**: The number or the name of the callee.
* **Call Duration**: The time between the call started and the call ended.
* **Ring Duration**: The time between the call started and the call answered.
* **Talk Duration**: The time between the call answered and the call ended.

**Status**: This indicates the outcome of the call, which can be one of the following:

* **ANSWERED**: The call was completed successfully.
* **NO ANSWER**: The call was not answered.
* **BUSY**: The receiver was busy.
* **FAILED**: The call attempt failed.
* **VOICEMAIL**: The call was redirected to voicemail.

![](https://prod-files-secure.s3.us-west-2.amazonaws.com/7af79dc0-fc8e-4f26-bc09-19a95ea7e860/663ad0ba-c6c9-4ecd-8dac-a370f94fd56b/Screen_Shot_2023-12-19_at_8.31.53_PM.png)

<figure><img src="/files/V91H24LIBXhj8u9O9vVm" alt=""><figcaption><p>Call Details Records (CDR) Table</p></figcaption></figure>


# Recording

You can search all call recording audio files here

1. Go to Reporting > Recordings

<figure><img src="/files/qBsza0wsS5sFfCYwj8h4" alt=""><figcaption></figcaption></figure>


# Call Reports

klink.cloud provides intuitive visual call reports, which allow you to check call statistics of different objects, such as extensions, trunks, queues, ring groups, etc. This topic describes category o

**Category of Call Reports**

* [Agent Call Statistics](/dashboard-and-reports/reporting/call-reports/agent-call-statistics)
* [Agent Call Activity](/dashboard-and-reports/reporting/call-reports/agent-call-activity)
* [Trunk Activity](/dashboard-and-reports/reporting/call-reports/trunk-activity)
* [Queue AVG Waiting & Talking Time](/dashboard-and-reports/reporting/call-reports/queue-avg-waiting-and-talking-time)
* [Queue Performance](/dashboard-and-reports/reporting/call-reports/queue-performance)
* [Agent Missed Call Activity](/dashboard-and-reports/reporting/call-reports/agent-missed-call-activity)
* [Agent Call Summary](/dashboard-and-reports/reporting/call-reports/agent-call-summary)
* [Satisfaction Survey](/dashboard-and-reports/reporting/call-reports/satisfaction-survey)


# Agent Call Statistics

{% hint style="info" %}
'Agent Call Statistics' report is a summary report displayed in pie chart, which makes it possible for you to query statistics of calls that have been made or received by a specific agent or agents within a specific group/organization, and view percentage and proportional data of call statistics.
{% endhint %}

### Report details

The following table lists the related parameters for Agent Call Statistics report.

| Parameter           | Description                                                                                                                                                                  |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Answered            | The total number of calls that the agent answered.                                                                                                                           |
| No Answered         | The total number of calls that were routed to the designated destination when the agent didn't answer the calls.                                                             |
| Busy                | The total number of calls that were routed to the designated destination when the agent was busy.                                                                            |
| Failed              | The total number of calls that were failed to be made by the agent.                                                                                                          |
| Voicemail           | The total number of voicemails that the extension received.                                                                                                                  |
| Total Ring Duration | The total time between calls started and calls answered.Note:This parameter is displayed only when you set Communication Type filter to All, Inbound, Outbound, or Internal. |
| Total Talk Duration | The total time between calls answered and calls ended.                                                                                                                       |
| Total               | The total number of calls for each agent                                                                                                                                     |

### Report example

<figure><img src="/files/GhoOSF6A9bCL2wax9L9m" alt=""><figcaption></figcaption></figure>

\ <br>


# Agent Call Activity

{% hint style="info" %}
'Agent Call Activity' report is a summary report displayed in line graph, which makes it possible for you to query statistics of calls that have been made or received by a specific agent or agents within a specific group/organization. The report allows you to track changes of call activity over a specific period of time, or compare changes over the same period of time.
{% endhint %}

### Report details

\
The following table lists the related parameters for Extension Call Activity report.

| Parameter           | Description                                                                                                       |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Answered            | The total number of calls that the agents answered.                                                               |
| No Answered         | The total number of calls that were routed to the designated destination when the agents didn't answer the calls. |
| Busy                | The total number of calls that were routed to the designated destination when the agents were busy.               |
| Failed              | The total number of calls that were failed to be made by the agents.                                              |
| Voicemail           | The total number of voicemails that the agents received.                                                          |
| Total Ring Duration | The time between the call started and the call answered.                                                          |
| Total Talk Duration | The time between the call answered and the call ended.                                                            |

### Report example

The following report shows hourly call statistics of all the agents.&#x20;

You can filter by Hourly , Daily, Monthly, Assigned Agents , Inbound or Outbound<br>

<figure><img src="/files/jxKnpoVWyppl1lRpwuwq" alt=""><figcaption></figcaption></figure>


# Trunk Activity

{% hint style="info" %}
'Trunk Activity' report is a summary report displayed in line graph, which makes it possible for you to query how many inbound and outbound calls have been received or made via a specific trunk. The report allows you to track changes of trunk activity by hour, by date, or by month.
{% endhint %}

### Report example

\
The following report shows hourly call statistics of trunk

<figure><img src="/files/PBjF5xQSJvjtlvLeeszs" alt=""><figcaption></figcaption></figure>


# Queue AVG Waiting & Talking Time

{% hint style="info" %}
'Queue AVG Waiting & Talking Time' report provides information about the average amount of time that callers are waiting in a queue, and the average amount of time that an agent spends in handling calls. The report helps you to identify the peak times of queue calls, and allocate your agent accordingly. This topic describes the report details, and shows you a report example.
{% endhint %}

### Report details

The Queue AVG Waiting & Talking Time includes a graph and a table that shows the following information for each queue:

| Parameter            | Description                                                                                  |
| -------------------- | -------------------------------------------------------------------------------------------- |
| Average Waiting Time | The average amount of time that it takes for an incoming call to be distributed to an agent. |
| Average Talking Time | The average amount of time that a caller talks to an agent.                                  |

### Report example

The following report shows the daily average waiting & talking time

<figure><img src="/files/cMxlqrtqIEuJYUKFiGra" alt=""><figcaption></figcaption></figure>


# Queue Performance

{% hint style="info" %}
'Queue Performance' report provides information about how calls are handled by queues. This topic describes the report details, and shows you a report example.
{% endhint %}

### Report details

The following table lists the related parameters for Queue Performance report.

| Parameter            | Description                                                                                                                          |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| Total Calls          | The total number of calls that queue received.                                                                                       |
| Answered             | The total number of calls that queue answered.                                                                                       |
| Missed               | The total number of calls that queue missed.                                                                                         |
| Abandoned            | The total number of calls that callers abandoned before connecting to an agent.                                                      |
| Average Waiting Time | The average amount of time that it takes for an incoming call to be distributed to an agent.                                         |
| Max Waiting Time     | The longest time a caller waited in the queue before an agent answered the call.                                                     |
| Answered Rate        | The percentage of answered calls in relation to the total received calls.                                                            |
| Missed Rate          | The percentage of missed calls in relation to the total received calls.                                                              |
| Abandon Rate         | The percentage of abandoned calls in relation to the total received calls.                                                           |
| SLA                  | The Service Level Agreement (SLA) for the queue. SLA is the percentage of conversations answered within a predefined amount of time. |

\
**Report example**

The following report shows the performance of Queue

<figure><img src="/files/OmKDNm0jEFmT2aiyfonM" alt=""><figcaption></figcaption></figure>

<br>


# Agent Missed Call Activity

{% hint style="info" %}
'Agent Missed Call Activity' report provides the missed call information for each agent. The report helps you assess an agent’s efficiency. This topic describes the report details, and shows you a report example.
{% endhint %}

### Report details

| Parameter           | Description                                                                                                                                                                                                            |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Time                | The date and time that an agent missed a call.                                                                                                                                                                         |
| Waiting Time        | The amount of time that the caller waited for the assigned agent to answer the call.                                                                                                                                   |
| Call From           | The caller's caller ID.                                                                                                                                                                                                |
| Polling Attempts    | The number of polling attempts to call an agent.                                                                                                                                                                       |
| Agent Missed Reason | <p>The reason why the call was not answered.</p><ul><li>Abandoned: The caller hung up the call.</li><li>Missed: The call was not answered in the key destination, or was routed to the failover destination.</li></ul> |
| Queue Status        | The final status of missed calls, indicating whether the missed calls were answered by other agents.                                                                                                                   |

### Report example

The following report shows the missed call activities of all agents in Queue

<figure><img src="/files/RppsHI3LQwE59gkG3JCi" alt=""><figcaption></figcaption></figure>


# Agent Call Summary

{% hint style="info" %}
'Agent Call Summary' report provides information about the number of incoming and outgoing calls that were received and placed by each agent. This topic describes the report details, and shows you a report example.
{% endhint %}

### Report details

<table><thead><tr><th width="269">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>Inbound</td><td>The number of incoming calls received by an agent.</td></tr><tr><td>Outbound</td><td>The number of outgoing calls placed by an agent.</td></tr><tr><td>Talk Duration</td><td>The amount of time an agent spent in incoming calls or outgoing calls.</td></tr><tr><td>Total calls</td><td>The total number of incoming calls and outgoing calls handled by an agent.</td></tr><tr><td>Total Talk Duration</td><td>The total amount of time an agent spent in incoming calls and outgoing calls.</td></tr><tr><td>Average Talking Time</td><td>The average amount of time an agent spent in incoming calls and outgoing calls.</td></tr></tbody></table>

### Report example

The following report shows the call summary of all agents in Queue

<figure><img src="/files/JnQcpN516vcNivXs0T9O" alt=""><figcaption></figcaption></figure>


# Satisfaction Survey

{% hint style="info" %}
'Satisfaction Survey' report provides statistics about the key pressed collected from callers for a queue and its agents. This topic describes the report details, and shows you a report example.
{% endhint %}

### Report details

| Parameter                             | Description                                                             |
| ------------------------------------- | ----------------------------------------------------------------------- |
| KEY: {key\_pressed}({numeric} Points) | The key pressed by caller and corresponding score for the key.          |
| Total KEY                             | The total number of keys that were collected for the queue or an agent. |
| Total Points                          | The total satisfaction survey scores for the queue or an agent.         |
| Average Points                        | The average satisfaction survey scores for the queue or an agent.       |

{% hint style="info" %}
Note: Average Points ＝ Total Points / Total KEY, where the calculated average points will be truncated to two decimal places without rounding up.
{% endhint %}

### Report example

The following report shows the satisfaction survey of Queue.

<figure><img src="/files/wnCF12AezW0ISzX1EUU3" alt=""><figcaption></figcaption></figure>


# Agent Status Report

{% hint style="info" %}
Agent status Report provides all agent activities such as Lunch Break, DND, Available & all login / logout history
{% endhint %}

### Report example

<figure><img src="/files/CVK8KDBUikrt4jKkwPxj" alt=""><figcaption></figcaption></figure>


# CX Log

{% hint style="info" %}
All Customers Interactions from all channels between Agent & Customers will logged as Case. All these Cases will be showing in CX Interaction Log Table
{% endhint %}

### Report example

{% embed url="<https://www.loom.com/share/ade902900a0a40e1b783e677a3f22087?sid=f66b50e8-3153-402a-9ef1-5779a9408631>" %}
Quick Video Example of CX Log Table
{% endembed %}

<figure><img src="/files/c1EnBYT4H8o2utF2souw" alt=""><figcaption><p>Explanation of CX Log Table Data</p></figcaption></figure>

### Report details

<table><thead><tr><th width="256">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>Case ID</td><td>This is a unique identifier assigned to each customer interaction or case logged within the system, helping track and reference specific issues or requests.</td></tr><tr><td>Contact</td><td>The name or ID of the customer or contact person involved in the interaction. This can help agents quickly identify the individual or organization for reference.</td></tr><tr><td>Contact Label</td><td>A tag or label that categorizes the type of contact, such as support tier (e.g., “Tier 2: Support”) or VIP status. This assists in prioritizing interactions based on customer importance or service level.</td></tr><tr><td>Channel</td><td>Indicates the communication channel used for the interaction, such as phone or chat. Understanding the channel helps CX teams tailor responses and track engagement per channel.</td></tr><tr><td>Queue</td><td>Shows the specific queue the case is assigned to within the support system, which can be based on issue type, priority level, or agent specialization.</td></tr><tr><td>First Assignee</td><td>The first agent assigned to handle the case. This is useful for tracking the case’s initial handling and for performance metrics.</td></tr><tr><td>Current Assignee</td><td>The agent currently assigned to the case if it has been transferred or escalated. This shows who is currently responsible for the case.</td></tr><tr><td>Closed By</td><td>Indicates the agent who closed the case, marking it as resolved or completed. This helps in accountability and tracking case resolution.</td></tr><tr><td>Direction</td><td>Specifies whether the interaction was an Inbound (initiated by the customer) or Outbound (initiated by the agent) interaction. This helps differentiate between customer-initiated requests and proactive outreach.</td></tr><tr><td>Start Date / Time</td><td>The date and time when the interaction began. This timestamp is crucial for calculating response and resolution times.</td></tr><tr><td>Total Hold Duration</td><td><p>The total time the case was put on hold while waiting for additional information, approvals, or follow-ups.<br></p><p><em>Why it matters: This helps track how much time was spent in “pause mode” rather than actively solving the issue.</em></p></td></tr><tr><td>Handled Time</td><td>The time your team actually worked on the case, excluding the time it was on hold.<br><br><em>Why it matters: This gives a clear picture of how much time was spent actively addressing the issue.</em></td></tr><tr><td>Full Handled Time</td><td>The total time from when the case was created until it was closed, including time spent working on the case and time it was on hold.<br><br><em>Why it matters: It reflects the overall time the case was open before being fully resolved.</em></td></tr><tr><td>First Response Time</td><td>The time it took for your team to send the first reply to the customer after the case was created.<br><br><em>Why it matters: This shows how quickly your team acknowledges customer issues, which is crucial for great customer service.</em></td></tr><tr><td>Resolution Time</td><td>The actual working time spent resolving the case, not counting the time it was on hold.<br><br><em>Why it matters: This tells you how efficiently your team worked to solve the customer’s issue.</em></td></tr><tr><td>Full Resolution Time</td><td>The total time from when the case was created to when it was closed, including all hold periods and active work time.<br><br><em>Why it matters: This helps you understand the overall time it took to fully resolve a customer’s issue, from start to finish.</em></td></tr><tr><td>Wrap-up Duration</td><td><p>The time spent by the agent finalizing and completing tasks related to a case after the interaction with the customer has ended.<br></p><p>• Examples of activities:</p><p>• Writing case notes or summaries.</p><p>• Updating customer information.</p><p>• Logging the resolution details.</p><p>• Categorizing or tagging the case for future reference.</p><p>• Why it matters:<br></p><p>Wrap-Up Duration reflects the efficiency of post-call/chat or post-interaction processes. Reducing this time without compromising accuracy can improve agent productivity and overall workflow.</p></td></tr><tr><td>Recording</td><td>A link to an audio recording of the interaction, if available. Recordings can be reviewed for quality assurance, training, and compliance.</td></tr><tr><td>Disposition</td><td>Disposition refers to the final outcome or classification of an interaction once it has been resolved or closed. It provides a summary of how the interaction was handled or the result achieved, such as “Resolved,” “Escalated,” “Pending Follow-up,” “No Solution,” or “Customer Callback Scheduled.”</td></tr><tr><td>Tags</td><td>Tags are custom labels added to interactions or cases to categorize them based on common themes, issues, or characteristics. They help in organizing, filtering, and analyzing interactions more effectively. Tags can represent specific topics (e.g., “Billing Issue,” “Technical Support”), customer segments (e.g., “VIP Client,” “New Customer”), or even actions needed (e.g., “Follow-up Required,” “Escalation”).</td></tr><tr><td>Note</td><td>Any additional comments or notes added by the agent regarding the interaction. Notes can provide context for future reference or escalations.</td></tr><tr><td>Sentiment Score</td><td>A metric indicating the customer’s emotional tone during the interaction, based on sentiment analysis. This helps gauge customer satisfaction and emotional state.</td></tr><tr><td>CSAT Score</td><td>The Customer Satisfaction (CSAT) score, which quantifies the customer’s satisfaction with the interaction. This is a direct indicator of service quality.</td></tr><tr><td>SLA</td><td>Service Level Agreement status, which shows if the interaction met the required response or resolution times. “Meet” indicates compliance with SLA standards, while “Unmeet” shows that the interaction did not meet the expected performance metrics.</td></tr></tbody></table>

<br>


# Analytics Dashboard


# Call Dashboard

This guide explain about how our Call Analytics works!

### Dashboard Parameters

The following table lists the related parameters for Call Analytics Dashboard

<table><thead><tr><th width="253">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>Service Level</td><td>The Service Level Agreement (SLA) for the queue. SLA is the percentage of conversations answered within a predefined amount of time.</td></tr><tr><td>Total Calls</td><td>The total number of calls that queue received.</td></tr><tr><td>Missed Calls</td><td>The total number of calls that queue missed.</td></tr><tr><td>Abandoned Calls</td><td>The total number of calls that callers abandoned before connecting to an agent.</td></tr><tr><td>Answered Calls</td><td>The total number of calls that queue answered.</td></tr><tr><td>Average Waiting Time</td><td>The average amount of time that it takes for an incoming call to be distributed to an agent.</td></tr><tr><td>Average Call Duration</td><td>The average amount of time that agents handled the calls</td></tr><tr><td>Queue Comparison</td><td>Percentage distribution of calls to different queue groups</td></tr><tr><td>Call End Results</td><td>Classification of the outcome of a customer interaction or contact. When an agent completes a conversation with a customer, they typically log the result or disposition of that interaction for tracking and analysis purposes. This information helps the contact center and its management to understand the nature of customer inquiries, measure the effectiveness of support, and identify areas for improvement.</td></tr><tr><td>Call Tags</td><td>Category / Topics related to calls (For Example, Complaint Calls, Membership Renewal Calls etc.)</td></tr></tbody></table>

### Dashboard example

<figure><img src="/files/qmrs6WOiYPTqEpTuxTCw" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/J0vGg0J24sNayU6qAGxx" alt=""><figcaption></figcaption></figure>


# Chat Dashboard

This guide explain about how our Chat Analytics Dashboard works!

Dashboard Parameters

The following table lists the related parameters for Chat Analytics Dashboard

### Conversation activity

<table><thead><tr><th width="253">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>New Customers</td><td>Total New Customers that we receive across all chat channels</td></tr><tr><td>Existing Customers</td><td>Total number of existing customers</td></tr></tbody></table>

<figure><img src="/files/QCP90Ajx5PzHVU8GTght" alt=""><figcaption></figcaption></figure>

### Message Status

<table><thead><tr><th width="245">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>Total Created</td><td>Total numbers of chat cases received</td></tr><tr><td>Active Cases</td><td>Total number of chat rooms that are currently handled by the agents</td></tr><tr><td>Closed Cases</td><td>Total numbers of chat cases that are handled by agents and successfully resolved &#x26; closed</td></tr><tr><td>Unassigned Cases</td><td>Total number of chat cases waiting in the queue</td></tr><tr><td>Hold Cases</td><td>Total number of chat cases held by agents</td></tr></tbody></table>

<figure><img src="/files/MN6Sq3a16MgHr8DULlfS" alt=""><figcaption></figcaption></figure>

### Message Status Detail

<figure><img src="/files/CSsKRE9vDqvRhsw0MEkx" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/yDIGkCPxsgIjdMlIlGQo" alt=""><figcaption></figcaption></figure>

### Average First Response Time

{% hint style="info" %}
the average amount of time it takes for a customer to receive the first response after initiating contact with a customer support agent. This metric is commonly used to assess the efficiency and responsiveness of a contact center in addressing customer inquiries or issues.
{% endhint %}

<figure><img src="/files/CKlXuDf8GQfRLF6UVssZ" alt=""><figcaption><p>Example Average First Response Time (AFRT) showing on Monthly Basic</p></figcaption></figure>

### Average Resolution Time

{% hint style="info" %}
The average amount of time it takes for a customer issue or inquiry to be resolved from the moment it is first reported through a chat conversation. It measures the efficiency of the support team in addressing and resolving customer problems in the chat channel.
{% endhint %}

<figure><img src="/files/NDuGZQLYcQUpcPiqtNJh" alt=""><figcaption><p>Example Average Resolution Time (ART) showing on Monthly Basic</p></figcaption></figure>

### Resolution Rate

{% hint style="info" %}
The percentage of customer issues or inquiries that are successfully resolved by a support agent during a chat conversation. This metric is used to evaluate the effectiveness of the support team in resolving customer problems and providing satisfactory solutions within the chat channel.
{% endhint %}

<figure><img src="/files/ZR4txy3bpTPzGdZYjYC3" alt=""><figcaption><p>Example Resolution Rate showing on Monthly Basic</p></figcaption></figure>

### Members Check-in Status

<table><thead><tr><th width="232">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>Live status</td><td>Indicates the current online status of the member.</td></tr><tr><td>First login time</td><td>The timestamp of the member's first login session for the current day or period.</td></tr><tr><td>Last logout tume</td><td>The timestamp of the member's most recent logout session.</td></tr><tr><td>Total login duration</td><td>The total time the member has been logged in during the current day or period.</td></tr></tbody></table>

<figure><img src="/files/aOFw1l9qx7WgqsEEvimh" alt=""><figcaption></figcaption></figure>

### Member message status

<figure><img src="/files/EWRuNfq2vGYSLVFaAzOB" alt=""><figcaption></figcaption></figure>

### Member Status&#x20;

<figure><img src="/files/M3xSzaraqSrqJc7di213" alt=""><figcaption><p>Example Member status  showing on Monthly Basic</p></figcaption></figure>

### Member Details Status

<table><thead><tr><th width="218">Parameter</th><th>Descriptions</th></tr></thead><tbody><tr><td>First time login</td><td>The timestamp of the member's first login session on the given date.</td></tr><tr><td>Last logout time</td><td>The timestamp of the member's most recent logout session on the given date.</td></tr><tr><td>Total login duration</td><td>The total time the member was logged in during the given date.</td></tr><tr><td>AVG response time</td><td>The average time it took for the member to provide an initial response to inquiries or requests on the given date.</td></tr><tr><td>AVG resolution time</td><td>The average time it took for the member to resolve issues or complete tasks on the given date.</td></tr><tr><td>Total handled time</td><td>The total time the member spent handling tasks or inquiries on the given date.</td></tr></tbody></table>

<figure><img src="/files/X9uXch6Xzz9bxtk8y0x4" alt=""><figcaption></figcaption></figure>

### Message Volume

{% hint style="info" %}
The volume of messages received in our contact center on an hourly basis over a 24-hour period. This intuitive representation allows users to quickly identify peak message times and patterns, facilitating efficient resource allocation and ensuring timely response to customer inquiries. The visual insights provided by the heatmap contribute to effective decision-making and enhance overall operational efficiency in managing contact center activities.
{% endhint %}

<figure><img src="/files/jhC3QJho3BNnbjmVW1vv" alt=""><figcaption></figcaption></figure>

### Inbound Cases

{% hint style="info" %}
Percentage of Incoming Chat Rooms from across all channels
{% endhint %}

<figure><img src="/files/vPZn8IVyCvIPojrDkGIr" alt=""><figcaption></figcaption></figure>

### Case Tags

{% hint style="info" %}
A list of case tags, their associated names, and the number of times each tag has been used. Case tags are labels or keywords applied to cases (e.g., support tickets, incidents, issues) to categorize and organize them based on relevant attributes. This allows for efficient filtering, searching, and analysis of cases.
{% endhint %}

<figure><img src="/files/XWN6w0X9aKnettJdl9Ou" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/TAMjUgPNPqozqlAvJuIC" alt=""><figcaption></figcaption></figure>

### Message Dispositions

{% hint style="info" %}
Classification or categorization of the outcome of a chat interaction between a customer and an agent.
{% endhint %}

<figure><img src="/files/W46LLbh3Hq9nE9AWQGL5" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ujX2fgxWGXAftBpE78dv" alt=""><figcaption></figcaption></figure>


# Ticket Dashboard

This guide explain about how our Ticket Analytics Dashboard works!

### Ticket Analytics Report

The summary of tickets will show in this dashboard

<figure><img src="/files/EnTisNOgy8qQKibO6Llq" alt=""><figcaption><p>Example of Ticket Dashboard</p></figcaption></figure>

### Long Duration Tickets

If tickets are pending and taking long time to resolve, it will show in this dashboard

<figure><img src="/files/B8RQ8LBihJR5sZiQWw92" alt="" width="375"><figcaption><p>Example of Long Duration Tickets</p></figcaption></figure>

### Ticket Tags

Categories & Topics of tickets will show in this dashboard

<figure><img src="/files/oFjSZAjCDhD5IQRImp2r" alt=""><figcaption></figcaption></figure>


# Webhook Integration Guide

### Overview

klink.cloud provides **real-time webhook events** that allow external systems to receive **inbound and outbound chat messages** from your workspace.

Using webhooks, you can:

* Send chat notifications to **Slack** or **Microsoft Teams**
* Trigger workflows in **Zapier**, **Make.com**, or **n8n**
* Sync chat data with CRMs, ticketing systems, or internal tools
* Build custom automation or AI workflows

***

### Supported Automation Platforms

klink.cloud webhooks can be consumed by any HTTPS endpoint, including:

* **Zapier**
* **Make.com**
* **n8n (Cloud or Self-Hosted)**
* Custom backends (Node.js, Python, Go, PHP, etc.)

***

### Creating a Webhook in klink.cloud

1. Log in to **klink.cloud Admin Panel**
2. Navigate to **Settings → Developer Tools**
3. Click **Create App**
4. Configure:
   * **Webhook URL** (Zapier / Make / n8n endpoint)
   * **Webhook Events** (e.g. `message.inbound`, `message.outbound`)
5. Save the App

Once saved, klink.cloud will immediately start sending webhook events to the configured URL.

***

### Webhook Events

| Event              | Description                                   |
| ------------------ | --------------------------------------------- |
| `message.inbound`  | Triggered when a customer sends a message     |
| `message.outbound` | Triggered when an agent or AI sends a message |

***

### Webhook Request Specification

* **Method:** `POST`
* **Content-Type:** `application/json`
* **Payload Encoding:** UTF-8

#### Headers

```json
{
  "content-type": "application/json",
  "x-signature": "6ec15ebc99508d2b789b9a2dd8ae37388f108abfa277539fc374112cb6ee885d",
  "x-real-ip": "15.235.232.70"
}
```

#### Header Description

| Header         | Purpose                                  |
| -------------- | ---------------------------------------- |
| `x-signature`  | Webhook signature for request validation |
| `x-real-ip`    | Origin IP address                        |
| `content-type` | Always `application/json`                |

***

### Webhook Payload Example

#### Inbound Message (`message.inbound`)

```json
{
  "event": "message.inbound",
  "timestamp": "2025-12-23T11:16:55.943Z",
  "data": {
    "id": "39206a79-bc74-40c3-9dca-823f13cb7026",
    "type": "text",
    "direction": "incoming",
    "message": "thanks. ill think about it first",
    "createdAt": "2025-12-23T11:16:52.949Z",
    "contactId": "050823aa-8443-4fed-9951-f58d3b18c4eb",
    "roomId": "1f13f5d8-e426-42c7-9ce1-f50862f21965",
    "platformId": "waapi-66650491488@c.us",
    "room": {
      "isGroup": true,
      "isAiAgentRoom": true,
      "channel": {
        "type": "whatsapp",
        "name": "klink.cloud WA"
      },
      "lastMessage": "thanks. ill think about it first",
      "unreadCount": 5
    }
  }
}
```

***

### Key Payload Fields

#### Message Object (`data`)

| Field        | Description                            |
| ------------ | -------------------------------------- |
| `id`         | Unique message ID                      |
| `type`       | Message type (text, image, file, etc.) |
| `direction`  | incoming / outgoing                    |
| `message`    | Message content                        |
| `contactId`  | Customer contact ID                    |
| `roomId`     | Conversation ID                        |
| `platformId` | Messaging platform identifier          |

#### Room Object (`data.room`)

| Field           | Description                        |
| --------------- | ---------------------------------- |
| `isGroup`       | Group or 1-on-1 chat               |
| `isAiAgentRoom` | Chat handled by AI Agent           |
| `channel.type`  | whatsapp, livechat, telegram, etc. |
| `lastMessage`   | Latest message                     |
| `unreadCount`   | Number of unread messages          |

***

## Microsoft Teams Integration

klink.cloud webhook notifications can be sent to **Microsoft Teams** using Zapier, Make.com, or n8n.

### Authentication Options

#### Option A: Zapier / Make.com (Recommended)

Zapier and Make.com provide **built-in Microsoft authentication**.

✔ Users can authenticate using their **Microsoft Admin account**\
✔ No Azure app setup required\
✔ Fastest and easiest option

***

#### Option B: n8n Self-Hosted (Azure App Required)

For **n8n self-hosted**, users must register their own Microsoft OAuth application in **Microsoft Azure / Entra ID**.

***

### Microsoft Azure App Registration (n8n Self-Hosted)

#### Step 1: Register Application

1. Open **Microsoft Application Registration Portal**
2. Select **Register an application**
3. Enter an **Application Name**\
   *Example:* `klink-cloud-n8n-integration`

#### Step 2: Supported Account Types

Select:

> **Accounts in any organizational directory (Any Azure AD directory – Multi-tenant) and personal Microsoft accounts (e.g. Skype, Xbox)**

***

#### Step 3: Configure Redirect URI

4. In **n8n**, open Microsoft credential settings
5. Copy the **OAuth Callback URL**
6. In Azure:
   * Redirect URI → **Select a platform**
   * Choose **Web**
   * Paste the OAuth Callback URL
7. Click **Register**

***

#### Step 4: Configure Client ID in n8n

8. Copy the **Application (client) ID**
9. Paste it into n8n as the **Client ID**

Your n8n instance is now connected to Microsoft OAuth.

***

### Microsoft Permissions (Typical)

Depending on the workflow, admin consent may be required for:

* Microsoft Teams message posting
* Channel access
* User profile read access

Permission requirements depend on the n8n node and action used.

***

### Example Use Cases

* 🔔 Notify Sales team on new WhatsApp leads
* 🧑‍💼 Alert Support team on VIP messages
* 🤖 Trigger AI workflows on inbound messages
* 📊 Sync chat data to CRM or analytics tools

***

### Best Practices

* Always return **HTTP 200 OK** to acknowledge webhook receipt
* Process webhooks asynchronously
* Validate `x-signature` for security
* Use filters (channel, keyword, unread count) to reduce noise

***

### Supported Channels

* WhatsApp
* Live Chat
* Telegram
* Social Messaging
* Email (if enabled)

***

### Support

For integration help or questions:

* 📧 **<support@klink.cloud>**


# Slack Notification Setup

Get real-time notifications from klink.cloud in your Slack channel

This guide explains how to send **Slack notifications automatically whenever a new inbound message is received** (from WhatsApp, Live Chat, Instagram, etc.) using **Webhook + n8n workflow automation**.

{% embed url="<https://www.loom.com/share/c8fcff4cfa4a43d391cbb4cb9bfdb94c>" %}

***

### Overview

**What this setup does:**

* Listens for **new inbound messages** in your system
* Sends a **real-time notification to a Slack channel**
* Works for **all channels** (WhatsApp, Live Chat, Instagram, etc.)

**Tools used:**

* K-LINK Developer Tools
* Webhook (Inbound Message Event)
* n8n (workflow automation)
* Slack App (Bot + Permissions)

***

### Step 1: Create a New App in Developer Tools

1. Go to **Settings → Developer Tools**
2. Click **Create New App**
3. Enter:
   * **App Name:** `Slack Noti` (or any name)
   * **Environment:** Production
4. Click **Create App**
5. Click **Manage** on the created app

***

### Step 2: Enable Inbound Message Webhook

1. Scroll to **Webhook / Notification Settings**
2. Enable:
   * **Inbound Message Received**
3. This event will trigger whenever:
   * A new message arrives from **any channel**
   * WhatsApp, Live Chat, Instagram, etc.

📌 The system will now send a webhook payload when a new message comes in.

***

### Step 3: Create a Webhook in n8n

#### 3.1 Create a New Workflow

1. Open **n8n**
2. Create a **New Workflow**
3. Add a **Webhook Node**
   * **HTTP Method:** `POST`
   * **Path:** auto-generated
4. Save the node

***

#### 3.2 Copy Webhook URL

1. Copy the **Test Webhook URL**
2. Go back to **Developer Tools → App Settings**
3. Paste the webhook URL into the **Inbound Message Webhook Endpoint**
4. Click **Save**

***

### Step 4: Test the Webhook

1. In n8n, click **Listen for Webhook**
2. Send a test message from any channel (e.g. Live Chat)
3. Confirm:
   * Webhook receives payload
   * Message content appears in n8n

✅ If you see the message data, webhook is working correctly.

***

### Step 5: Create a Slack App

#### 5.1 Create Slack App

1. Go to **Slack API → Your Apps**
2. Click **Create New App**
3. Choose **From Scratch**
4. Enter:
   * **App Name:** `K-LINK`
   * **Workspace:** Select your workspace
5. Click **Create App**

***

#### 5.2 Configure OAuth & Permissions

1. Go to **OAuth & Permissions**
2. Under **Bot Token Scopes**, add:
   * `chat:write`
   * `channels:read`
   * `channels:write`
3. Click **Install App to Workspace**
4. Copy:
   * **Bot User OAuth Token**
   * **Signing Secret**

***

### Step 6: Connect Slack to n8n

1. In n8n, add a **Slack Node**
2. Choose **Send Message**
3. Create **New Credentials**
4. Paste:
   * **Access Token:** Bot User OAuth Token
   * **Signing Secret**
5. Save credentials

***

### Step 7: Send Webhook Data to Slack

1. Connect:
   * **Webhook Node → Slack Node**
2. Configure Slack node:
   * Select Slack Channel
   * Message content example:

     ```
     New inbound message received:
     {{message.text}}
     From: {{sender.name}}
     Channel: {{channel}}
     ```
3. Save workflow
4. Activate workflow

***

### Step 8: Final Test

1. Send a new message from any channel
2. Confirm:
   * Webhook receives message
   * Slack receives notification instantly

🎉 Done! Slack notifications are now live.


# Google Chat Notification Setup

Get real-time notifications from klink.cloud in your Google Chat space.

### Prerequisites

* Google Chat workspace access
* N8N, Zapier, or Make.com account
* klink.cloud Developer App access

### Step 1: Create Google Chat Webhook

1. Open Google Chat and navigate to your desired space
2. Click the space name → **Settings** → **Webhooks**
3. Click **Add webhook**
4. Enter a name (e.g., "klink.cloud Notifications")
5. Click **Save** and copy the webhook URL

<figure><img src="/files/iCux5MT7cET7ymVooHjW" alt=""><figcaption></figcaption></figure>

### Step 2: Enable klink.cloud Inbound Webhook

1. Log in to [klink.cloud](https://klink.cloud)
2. Go to **Settings** → **Developer App**
3. Enable **Inbound Message Webhook**
4. Enter your webhook URL in Event notification endpoint URL

<figure><img src="/files/lLL2LRFLfG3zilnOF5cx" alt=""><figcaption></figcaption></figure>

### Step 3: Setup Automation (N8N Example)

#### Create Workflow:

1. **Webhook Trigger Node**
   * Method: POST
   * Path: /klink-notifications
   * Paste this as your klink.cloud Inbound Webhook URL
2. **HTTP Request Node**
   * Method: POST
   * URL: \[Your Google Chat webhook URL from Step 1]
   * Body Content Type: JSON
   * Body:

json

```json
   {
     "text": "New message from klink.cloud:\n{{ $json.message }}"
   }
```

3. Activate the workflow

### Message Customization

Customize your notification format:

json

```json
{
  "text": "📧 *New klink.cloud Notification*\nFrom: {{ $json.customer_name }}\nMessage: {{ $json.message }}\nChannel: {{ $json.channel }}"
}
```

### Using Zapier or Make.com

Same concept applies:

* **Trigger:** Webhook (use your klink.cloud webhook URL)
* **Action:** HTTP Request to Google Chat webhook URL with JSON body

***

**Need help?** Contact klink.cloud support via Live Chat or <support@klink.cloud>&#x20;


# Ecommerce Marketplace

## Ecommerce Channels Overview

klink.cloud empowers businesses by seamlessly integrating with leading ecommerce channels, specifically Lazada and Shopee. By connecting with these channels, your agents gain the ability to efficiently respond to customer inquiries directly within the Klink.Cloud interface.

### Supported Ecommerce Platforms

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Connect with Lazada</td><td></td><td></td><td><a href="/files/cYWNh0dtu6cCTNcePgSp">/files/cYWNh0dtu6cCTNcePgSp</a></td><td><a href="/pages/pJTaFbLNYfTdDmkOSOJR">/pages/pJTaFbLNYfTdDmkOSOJR</a></td></tr><tr><td>Connect with Shopee</td><td></td><td></td><td><a href="/files/n2Ge3FImle8KsCUy3mp2">/files/n2Ge3FImle8KsCUy3mp2</a></td><td><a href="/pages/5bdctzdw6jBLSGE2X6G9">/pages/5bdctzdw6jBLSGE2X6G9</a></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>

{% hint style="info" %}
Ecommerce Marketplace Integration is only available to Enterprise Custom Package. For more information about Ecommerce Integration, contact <support@klink.cloud>
{% endhint %}

### Supported Countries

* Singapore
* Thailand
* Malaysia
* Vietnam
* Indonesia
* Philippines


# Shopee Integrations

Connect Shopee Store Chat Inbox and streamline customer communications

{% hint style="info" %}
To connect with Shopee store, you will need following information

* [Shopee Open Platform](https://open.shopee.com/)
* Shopee Merchant Admin Account
  {% endhint %}

After connecting Shopee Channel, it will be look like this

<figure><img src="/files/MGDyBGGDoXj9ILCp1UE7" alt=""><figcaption><p>Example of Shopee Integration</p></figcaption></figure>

{% hint style="info" %}
Shopee Integration is only available to Enterprise Package. For more information about Shopee Integration, contact <support@klink.cloud>
{% endhint %}

### Supported Countries

* Singapore
* Thailand
* Malaysia
* Vietnam
* Indonesia
* Philippines


# Lazada Integrations

Connect Lazada Store Chat Inbox and streamline customer communications

{% hint style="info" %}
To connect with Lazada store, you will need following information

* [Lazada Open Platform](https://open.lazada.com/)
* Lazada Merchant Admin Account
  {% endhint %}

After connecting Lazada Channel, it will be look like this

Shopee Integration is only available to Enterprise Package. For more information about Shopee Integration, contact <support@klink.cloud>

{% embed url="<https://www.loom.com/share/619cb29bc70d472a8b063ae3a59f985d?sid=25f5d8f8-646a-460a-bf27-7881f3ea5f67>" %}

<figure><img src="/files/pKnpFmgldMgUeR6qkbAe" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Lazada Integration is only available to Enterprise Package. For more information about Lazada Integration, contact <support@klink.cloud>
{% endhint %}

### Supported Countries

* Singapore
* Thailand
* Malaysia
* Vietnam
* Indonesia
* Philippines

#### How to Apply Lazada Open Platform Access

1. Go to <https://open.lazada.com/> and create account. You will need to upload all your company information , documents during the sign up process.&#x20;
2. After approved by Lazada, login to your Open Platform Account, go to Development > App Management > Create App

<figure><img src="/files/e8rO51XjemVwmVd7pXNb" alt=""><figcaption></figcaption></figure>

3. Choose In-House IM Chat and click Apply

<figure><img src="/files/Xg9bC8wFQCX4hz729CRM" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/KALjlsC6O2TihS6Ru4m6" alt=""><figcaption></figcaption></figure>

4. After applied, there will be pending status. You will need to wait for a few days to get approval from Lazada Team. If you are official store owner / merchant in Lazada Platform, please contact to your Key Account Manager to get faster approval process.

<figure><img src="/files/j65jIZb0ujiCIJHVhBqW" alt=""><figcaption></figcaption></figure>

5. After approved, please contact our K-LINK Team for next steps of integration process. We will provide API Key, Callback URL and other required information to setup your Lazada Messaging Channel inside klink.cloud Inbox.


# CRM Integrations

{% hint style="info" %}
CRM Integrations is only Enterprise Custom Package. For more information about CRM Integrations, contact <support@klink.cloud>
{% endhint %}

### Supported CRM Integrations

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Hubspot</td><td></td><td></td><td><a href="/files/tpcWVasauauTY8NwGngS">/files/tpcWVasauauTY8NwGngS</a></td><td></td></tr><tr><td>Salesforce</td><td></td><td></td><td><a href="/files/6QeSp6PaAP4Pw8ateK7i">/files/6QeSp6PaAP4Pw8ateK7i</a></td><td><a href="/pages/Uv5iuhY4jGMkrvnlIVQ2">/pages/Uv5iuhY4jGMkrvnlIVQ2</a></td></tr><tr><td></td><td>Micorsoft Dynamics</td><td></td><td><a href="/files/OgsdVGIvRlvpEaeF2R3K">/files/OgsdVGIvRlvpEaeF2R3K</a></td><td></td></tr><tr><td>Pipedrive</td><td></td><td></td><td><a href="/files/8LC8L1KuZZJYn9Uy4Aas">/files/8LC8L1KuZZJYn9Uy4Aas</a></td><td></td></tr><tr><td>ZOHO CRM</td><td></td><td></td><td><a href="/files/rEYKw1nqPsfIEHjiTALU">/files/rEYKw1nqPsfIEHjiTALU</a></td><td></td></tr><tr><td>Zendesk Sell</td><td></td><td></td><td><a href="/files/2DLZj6MWUuhxV9hE8uaL">/files/2DLZj6MWUuhxV9hE8uaL</a></td><td></td></tr></tbody></table>


# Salesforce CRM Integration

klink.cloud integrate with Salesforce CRM, sync Salesforce Contacts, Logged Phone Calls, Chat & More

{% hint style="info" %}
Only available for Enterprise Customers, contact us for more details.
{% endhint %}

#### Minimum Requirements

* You must have Full Administrator Access in your Salesforce CRM to fully integrate with klink.cloud
* To check Administrator Acces, go to Salesforce > Setup > Apps Manager&#x20;

<figure><img src="/files/3fo7qc9XvO9VCtQY7bSJ" alt=""><figcaption><p>Example of Salesforce Integration</p></figcaption></figure>

#### Supported Salesforce API Objects

* Contacts
* Engagement Types
* Engagements
* Leads
* Notes
* Opportunities
* Stages
* Tasks
* Users

Below is example of supported Salesforce API Objects Examples

**Contact Object**

The `Contact` object is used to represent an existing point of contact at a company in a CRM system.<br>

```
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "first_name": "Gil",
  "last_name": "Feig",
  "account": "0958cbc6-6040-430a-848e-aafacbadf4ae",
  "owner": "b8fbfc30-0982-420e-8c20-dab07b70b9d6",
  "addresses": [
    {
      "street_1": "50 Bowling Green Dr",
      "street_2": "Golden Gate Park",
      "city": "San Francisco",
      "state": "CA",
      "postal_code": "94122",
      "country": "US",
      "address_type": "Shipping",
      "created_at": "2021-09-15T00:00:00Z",
      "modified_at": "2021-10-16T00:00:00Z"
    }
  ],
  "email_addresses": [
    {
      "email_address": "hello@klink.cloud",
      "email_address_type": "Work"
    }
  ],
  "phone_numbers": [
    {
      "phone_number": "+13785579223",
      "phone_number_type": "Mobile",
      "created_at": "2021-09-15T00:00:00Z",
      "modified_at": "2021-10-16T00:00:00Z"
    }
  ],
  "last_activity_at": "2022-02-10T00:00:00Z",
  "remote_created_at": "2021-11-10T00:00:00Z",
  "remote_was_deleted": true,
}
```

**Engagement Object**

The `Engagement` object is used to represent an interaction noted in a CRM system.

```
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "owner": "0358cbc6-2040-430a-848e-aafacbadf3aa",
  "content": "Call for negotiation",
  "subject": "Call from customer",
  "direction": "INBOUND",
  "engagement_type": "0358cbc6-2040-430a-848e-aafacbadf3aa",
  "start_time": "2022-02-10T00:00:00Z",
  "end_time": "2022-02-10T00:05:00Z",
  "account": "025fjlc6-6000-430a-848e-aafacbadf4fe",
  "contacts": [
    "a7c55bc6-2940-c80a-848e-bbfacbfdf4fg"
  ],
  "remote_was_deleted": true,
Show advanced fields
}
```

**Engagement Type**

The `Engagement Type` object is used to represent an interaction activity. A given `Engagement` typically has an `Engagement Type` object represented in the engagement\_type field.<br>

```
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "activity_type": "CALL",
  "name": "First Call",
  "remote_fields": [
    {
      "remote_field_class": {
        "id": "string",
        "display_name": "string",
        "remote_key_name": "string",
        "description": "string",
        "is_custom": true,
        "is_required": true,
        "field_type": "string",
        "field_format": "string",
        "field_choices": [
          "string"
        ],
        "item_schema": {
          "item_type": "string",
          "item_format": "string",
          "item_choices": [
            "string"
          ]
        }
      },
      "value": "string"
    }
  ]
}
```

**Leads**

The `Lead` object is used to represent an individual who is a potential customer.<br>

```
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "owner": "0358cbc6-2040-430a-848e-aafacbadf3aa",
  "lead_source": "API Blogger",
  "title": "Co-Founder",
  "company": "K-LINK",
  "first_name": "Gil",
  "last_name": "Feig",
  "addresses": [
    {
      "street_1": "50 Bowling Green Dr",
      "street_2": "Golden Gate Park",
      "city": "San Francisco",
      "state": "CA",
      "postal_code": "94122",
      "country": "US",
      "address_type": "Shipping",
      "created_at": "2021-09-15T00:00:00Z",
      "modified_at": "2021-10-16T00:00:00Z"
    }
  ],
  "email_addresses": [
    {
      "email_address": "hello@klink.cloud",
      "email_address_type": "Work"
    }
  ],
  "phone_numbers": [
    {
      "phone_number": "+16789932455",
      "phone_number_type": "Mobile",
      "created_at": "2021-09-15T00:00:00Z",
      "modified_at": "2021-10-16T00:00:00Z"
    }
  ],
  "remote_updated_at": "2022-02-10T00:00:00Z",
  "remote_created_at": "2021-11-10T00:00:00Z",
  "converted_date": "2022-03-10T00:00:00Z",
  "converted_contact": "025fjlc6-6000-430a-848e-aafacbadf4fe",
  "converted_account": "9c9de072-29cf-48e3-9578-1ca5b145b40e",
  "remote_was_deleted": true,
}
```

**Notes**

The `Note` object is used to represent a note on another object.

```
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "owner": "0358cbc6-2040-430a-848e-aafacbadf3aa",
  "content": "K-LINK is hiring!",
  "contact": "025fjlc6-6000-430a-848e-aafacbadf4fe",
  "account": "fba1fbc6-67c0-4cb2-a176-7896acd2ffd5",
  "opportunity": "754a244e-dd67-4731-a8d3-9bff9dc10465",
  "remote_updated_at": "2022-02-10T00:00:00Z",
  "remote_created_at": "2021-11-10T00:00:00Z",
  "remote_was_deleted": true,
}
```

**Opportunities**

The `Opportunity` object is used to represent a deal opportunity in a CRM system.<br>

```
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "name": "Needs Integrations",
  "description": "Needs a Unified API for Integrations!",
  "amount": 100000,
  "owner": "0358cbc6-2040-430a-848e-aafacbadf3aa",
  "account": "0958cbc6-6040-430a-848e-aafacbadf4ae",
  "stage": "1968cbc6-6040-430a-848e-aafacbadf4ad",
  "status": "WON",
  "last_activity_at": "2022-02-10T00:00:00Z",
  "close_date": "2022-02-10T00:00:00Z",
  "remote_created_at": "2021-11-10T00:00:00Z",
  "remote_was_deleted": true,
}
```

**Stages**

The `Stage` object is used to represent the stage of an opportunity.<br>

```
{
  "id": "0358cbc6-2040-430a-848e-aafacbadf3aa",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "name": "Proposal",
  "remote_was_deleted": true,
}
```

**Tasks**

The `Task` object is used to represent a task, such as a to-do item.

```
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "subject": "Contact about Integration Strategy",
  "content": "Follow up to see whether they need integrations",
  "owner": "0358cbc6-2040-430a-848e-aafacbadf3aa",
  "account": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "opportunity": "550e8400-e29b-41d4-a716-446655440000",
  "completed_date": "2022-02-11T00:00:00Z",
  "due_date": "2022-02-10T00:00:00Z",
  "status": "OPEN",
  "remote_was_deleted": true,
}
```

**Users**

The `User` object is used to represent a user with a login to the CRM system.

```
{
  "id": "0358cbc6-2040-430a-848e-aafacbadf3aa",
  "remote_id": "19202938",
  "created_at": "2021-09-15T00:00:00Z",
  "modified_at": "2021-10-16T00:00:00Z",
  "name": "Gil Feig",
  "email": "hello@klink.cloud",
  "is_active": true,
  "remote_was_deleted": true,
}
```


# Single Sign-On (SSO)

Let your team sign in to klink.cloud through your company identity provider using OpenID Connect

Single Sign-On lets your team sign in to klink.cloud with the credentials they already use for work. Instead of a separate klink.cloud password, users authenticate against your company identity provider (IdP) — Okta, Microsoft Entra ID, Google Workspace, Zitadel, or any provider that supports OpenID Connect.

klink.cloud SSO uses **OpenID Connect (OIDC)** with the Authorization Code flow. Any IdP publishing a standard discovery document (`/.well-known/openid-configuration`) will work.

Only workspace members with the **Owner** or **Admin** role can view or change SSO settings.

***

<figure><img src="/files/Jo7KBbzEJGsP7HmRnNVY" alt=""><figcaption></figcaption></figure>

### How it works

1. A user enters their work email at the login page.
2. klink.cloud matches the email domain against your configured connections.
3. On a match, the user is redirected to your identity provider.
4. The user authenticates — including any MFA or conditional access you enforce.
5. Your IdP returns the user to klink.cloud, and they are signed in.

Users never enter a klink.cloud password.

***

### Before you begin

* **Owner** or **Admin** access to your klink.cloud workspace
* Administrator access to your IdP, with permission to create an OIDC application
* Your company email domain, e.g. `acme.com`
* The klink.cloud redirect URI: `https://app.klink.cloud/auth/sso/callback`
* A test user who exists in both your IdP and your klink.cloud workspace

> **Keep a break-glass admin.** Retain at least one administrator who can sign in with email and password, so a misconfiguration or IdP outage cannot lock you out.

***

### Step 1 — Create an OIDC application in your IdP

Create a new application with these settings:

| Setting              | Value                                       |
| -------------------- | ------------------------------------------- |
| Application type     | Web application (confidential client)       |
| Grant type           | Authorization Code                          |
| Sign-in redirect URI | `https://app.klink.cloud/auth/sso/callback` |
| Scopes               | `openid`, `email`, `profile`                |

Then copy three values from your IdP:

* **Discovery URL** — your issuer URL plus `/.well-known/openid-configuration`
* **Client ID**
* **Client secret** — copy it immediately; most providers show it only once

Provider-specific paths are in [Identity provider notes](https://claude.ai/chat/ab1c7e52-ebc4-46fe-9dce-0e76cf71d7cf#identity-provider-notes).

***

### Step 2 — Add the connection in klink.cloud

1. Go to **Settings → SSO**.
2. Click **Add connection**.
3. Fill in the dialog using the reference below.
4. Click **Create connection**.

#### Field reference

<table><thead><tr><th width="211.96875">Field</th><th width="82.0625">Required</th><th>Description</th></tr></thead><tbody><tr><td><strong>Display name</strong></td><td>No</td><td>A label to identify this connection, e.g. <code>Acme Okta</code>. Visible to admins only.</td></tr><tr><td><strong>OIDC discovery URL</strong></td><td>Yes</td><td>Your provider's OpenID configuration URL, e.g. <code>https://acme.okta.com/.well-known/openid-configuration</code>. klink.cloud reads all endpoints from this document, so you don't enter them individually.</td></tr><tr><td><strong>Client ID</strong></td><td>Yes</td><td>The client identifier issued by your IdP.</td></tr><tr><td><strong>Client secret</strong></td><td>Yes</td><td>The client secret issued by your IdP. Stored encrypted and never displayed again after saving.</td></tr><tr><td><strong>Email domain</strong></td><td>No</td><td>The domain used to route logins automatically, e.g. <code>acme.com</code>. Users entering an email on this domain are sent to this connection.</td></tr><tr><td><strong>Scopes</strong></td><td>No</td><td>Defaults to <code>openid email profile</code>, which is correct for most deployments. Change only if your IdP needs extra scopes to release the user's email.</td></tr><tr><td><strong>Enabled</strong></td><td>—</td><td>When on, users can sign in through this connection. On by default.</td></tr><tr><td><strong>Auto-provision users</strong></td><td>—</td><td>When on, a member account is created automatically on a user's first successful SSO login. When off, only pre-invited users can sign in. Off by default.</td></tr></tbody></table>

> **Tip:** Test with **Auto-provision users** off first. Once a pre-invited user can sign in successfully, turn it on if you want hands-off onboarding.

***

### Step 3 — Test

1. Open a private browser window.
2. Go to the klink.cloud login page and enter a test user's work email.
3. Confirm the redirect to your identity provider.
4. Authenticate, and confirm you land back in klink.cloud signed in as the correct user.

Keep your break-glass admin active until this test passes. If it fails, see [Troubleshooting](https://claude.ai/chat/ab1c7e52-ebc4-46fe-9dce-0e76cf71d7cf#troubleshooting).

***

### Step 4 — Roll out

1. Turn on **Auto-provision users** if new staff should be created on first login.
2. Assign the klink.cloud application to the right groups in your IdP.
3. Tell your team to sign in with their work email — no password needed.

***

### Email domain and login routing

The **Email domain** field is what makes SSO automatic. When someone enters an email address at login, klink.cloud matches everything after the `@` against your enabled connections.

* **Domain matches an enabled connection** → the user is redirected to that identity provider.
* **No match** → the user signs in with email and password as normal.

**Multiple domains.** Create one connection per domain. Each can reuse the same discovery URL, client ID, and client secret if they point at the same IdP application.

**Subdomains** are not matched automatically — `mail.acme.com` needs its own connection.

**Guests and contractors** on outside domains are unaffected and continue using email and password.

***

### Provisioning and access

**Auto-provision on.** The first time someone authenticates through the connection, klink.cloud creates a member account from the email and name returned by your IdP. No invite needed. Use this when everyone assigned the app in your IdP should have access.

**Auto-provision off.** Only existing workspace members can sign in. Anyone else authenticates at the IdP but is refused by klink.cloud. Use this when you want to control the member list explicitly.

**Removing access.** Disabling a user in your IdP blocks future sign-ins immediately. It does not delete their klink.cloud member record or their historical data — to fully offboard someone, also remove them under **Settings → Team**.

***

### Managing connections

<table><thead><tr><th width="267.14453125">Action</th><th>Effect</th></tr></thead><tbody><tr><td><strong>Edit</strong></td><td>Changes apply at the next login. Re-enter the client secret if you rotate it in your IdP.</td></tr><tr><td><strong>Disable</strong> (toggle <strong>Enabled</strong> off)</td><td>Logins stop immediately; users on that domain fall back to email and password. Configuration is retained.</td></tr><tr><td><strong>Delete</strong></td><td>Permanently removes the configuration. Member accounts remain, but can no longer sign in via SSO.</td></tr><tr><td><strong>Add another</strong></td><td>Multiple connections can be active at once — useful for multiple domains or migrating between providers.</td></tr></tbody></table>

**Rotating a client secret.** Generate the new secret in your IdP, then edit the connection and paste it in. Do this during a maintenance window — sign-ins between the two steps will fail.

***

### Identity provider notes

#### Okta

**Applications → Create App Integration → OIDC – OpenID Connect → Web Application.** Add the redirect URI, assign groups, then copy the Client ID and secret from the **General** tab.

Discovery URL: `https://<your-org>.okta.com/.well-known/openid-configuration` With a custom authorization server: `https://<your-org>.okta.com/oauth2/<server-id>/.well-known/openid-configuration`

#### Microsoft Entra ID (Azure AD)

**Microsoft Entra ID → App registrations → New registration.** Set the redirect URI type to **Web**. Copy the Application (client) ID and Directory (tenant) ID from **Overview**, then create a secret under **Certificates & secrets** and copy the **Value** immediately. Confirm `openid`, `email`, and `profile` are granted under **API permissions**.

Discovery URL: `https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration`

> Entra ID client secrets expire on a fixed schedule. Set a reminder before the expiry date — an expired secret breaks SSO for everyone on that domain.

#### Google Workspace

Set the **OAuth consent screen** to **Internal**, then **Credentials → Create Credentials → OAuth client ID → Web application.** Add the redirect URI and copy the Client ID and secret.

Discovery URL: `https://accounts.google.com/.well-known/openid-configuration`

#### Zitadel

1. In the Zitadel Management Console, open an existing **Project** (or create one), then in the **Applications** section click **New**.
2. Give the application a name, e.g. `klink.cloud`.
3. For **Type of application**, choose **Web**.
4. For **Authentication Method**, choose **Code**. This issues a client secret, which klink.cloud requires — do not choose PKCE.
5. Under **Redirect URIs**, enter `https://app.klink.cloud/auth/sso/callback`. Optionally add your login page as the **Post Logout URI**.
6. Review the summary and click **Create**. The **Client ID** and **Client Secret** are shown once — copy them now. You can regenerate the secret later if you lose it.
7. Open the application's **Token Settings** tab and enable **User Info inside ID Token**. Without this, Zitadel may not return the user's email address and login will fail.

Discovery URL: `https://<your-instance>.zitadel.cloud/.well-known/openid-configuration` Self-hosted or with a custom domain: `https://<your-domain>/.well-known/openid-configuration`

You can also find this under **URLs** in the console's left sidebar, listed as the Discovery Endpoint.

> If your Zitadel project requires authorization on authentication, make sure your users are granted access to the project — otherwise they will authenticate successfully but be rejected before returning to klink.cloud.

#### Other OIDC providers

You need a discovery URL, a client ID, and a client secret for a confidential web client using the Authorization Code grant, with the klink.cloud redirect URI registered. Everything else is read from the discovery document. To check your discovery URL, open it in a browser — you should see JSON containing `issuer`, `authorization_endpoint`, `token_endpoint`, and `jwks_uri`.

***

### Signing in with SSO (for end users)

1. Go to the klink.cloud login page.
2. Enter your work email address.
3. You'll be redirected to your company sign-in page.
4. Sign in as you would for any other company application, completing MFA if prompted.
5. You'll be returned to klink.cloud, signed in.

If you're asked for a klink.cloud password, your email domain may not be configured for SSO — contact your workspace administrator.

***

### Security notes

* **Client secrets are encrypted at rest** and never shown again after saving. If you lose one, generate a new secret in your IdP and update the connection.
* **MFA is enforced by your IdP**, not by klink.cloud. Configure it in your provider's policies.
* **Email is the identity key.** klink.cloud matches users on the email address returned by your IdP. If a user's email changes in your directory, update it in klink.cloud too, or they'll be treated as a new user.
* **Signing out of your IdP** does not automatically end an active klink.cloud session.
* **Restrict who can manage SSO.** Only Owners and Admins can view or edit connections. Review these role assignments periodically.

***

### Troubleshooting

| Symptom                                                        | Likely cause                                                | Fix                                                                                                                                        |
| -------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `redirect_uri_mismatch` at the IdP                             | The redirect URI doesn't exactly match                      | Re-enter `https://app.klink.cloud/auth/sso/callback` in your IdP. Check for a trailing slash, `http` vs `https`, or a typo in the host.    |
| User is asked for a password instead of being redirected       | Domain not configured, or connection disabled               | Confirm **Email domain** matches the user's domain exactly and **Enabled** is on.                                                          |
| "Unable to load provider configuration" when saving            | Discovery URL unreachable or invalid                        | Open the URL in a browser. It must return a valid OpenID configuration document and be publicly reachable — internal-only URLs won't work. |
| `invalid_client`                                               | Wrong client ID, or an incorrect or expired secret          | Re-copy both values. If the secret was rotated or expired, generate a new one and update the connection.                                   |
| Authentication succeeds but klink.cloud says no account exists | **Auto-provision users** is off and the user wasn't invited | Invite the user under **Settings → Team**, or turn on **Auto-provision users**.                                                            |
| Login loops back to the sign-in page                           | The IdP isn't returning an email claim                      | Confirm the `email` scope is requested and that your IdP releases the email claim. Some providers require this in claims mapping.          |
| SSO suddenly stopped working for everyone                      | Expired client secret                                       | Check the secret's expiry in your IdP, generate a new one, and update the connection.                                                      |

Still stuck? Contact support with the connection's display name, the exact error text, and the approximate time of the failed attempt.


# Changelog

{% updates format="full" %}
{% update date="2026-08-18" %}

## Automate Insights with New AI Workflow Actions

We have expanded Workflow Setup with new AI-powered actions, allowing you to automatically evaluate conversations and streamline case logging without manual agent input.

* **AI CSAT Score:** Let AI analyze the chat transcript and automatically score customer satisfaction upon workflow execution.
* **AI Sentiment Score:** Automatically detect and rate overall customer sentiment by analyzing full transcript content within your automated flows.
* **Auto Case Log:** Automatically read conversation transcripts and auto-fill any empty case log fields, saving agent time and improving data consistency.

{% endupdate %}

{% update date="2026-07-30" %}

## Flexible Ticket Queue Assignment & Filtering

We have added direct Queue Assignment options and a new Queue Column with filtering capabilities across your ticket views:

<div data-with-frame="true"><figure><img src="/files/DmQidtsPHjBWM4fRCsUL" alt=""><figcaption></figcaption></figure></div>

* **Direct Queue Assignment:** You can now assign tickets directly to a Queue when creating a new ticket, viewing details, or editing an existing ticket.
* **Queue Column in Ticket Listings:** A dedicated Queue column is now available in ticket tables, allowing you to quickly see which queue or department is handling each item.
* **Filter by Queue:** With the new Queue column, you can easily filter your ticket list by specific queues to monitor workload distribution across your team.
  {% endupdate %}

{% update date="2026-07-23" %}

## Enhanced Accuracy for Agent Login Duration & Member Status Analytics

We have updated our session tracking logic across the Analytics Dashboard to ensure precise monitoring of active agent working hours and status metrics.

<div data-with-frame="true"><figure><img src="/files/wFKPPAUeg8tvfyxl5X7e" alt=""><figcaption></figcaption></figure></div>

**Real-Time Session Detection:** The system now accurately registers logout timestamps when an agent manually logs out, loses Wi-Fi connection, or puts their device to sleep.

**Precise Total Login Duration:** The Total Login Duration metric now reflects active time spent using Klink and automatically excludes offline time, network disconnections, or system sleep states.

**Accurate Status Bar Charts:** Member status bar charts and duration breakdowns now reflect actual active operational status times, filtering out offline gaps to present true team activity analytics.

*<mark style="background-color:$info;">**Tip for Accurate Analytics:**</mark>*\
Please manually log out or close your Klink tab before leaving for the day to ensure accurate daily active duration and login status metrics.
{% endupdate %}

{% update date="2026-07-16" %}

## Maximize Inbox Management with Global Agent Capacity for Queues

We have introduced Global Agent Capacity settings for chat routing queues, offering an alternative to standard per-queue limits and providing complete control over total agent workload.

<div data-with-frame="true"><figure><img src="/files/Oxn25wv15hkGSpwFs4ZD" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/iY9Fw5Bz7Um7ciyHHis4" alt=""><figcaption></figcaption></figure></div>

* **Unified Capacity Across Queues:** A global queue evaluates the combined volume across all connected channels. Once an agent's total open conversations across all active global queues reach their assigned threshold, the system automatically pauses incoming assignments across all global channels until slots open up.
* **Flexible Feature Configuration:** You can seamlessly toggle the "Use global agent capacity" option on or off for individual queues. When toggled off, the channel falls back to standard per-queue tracking, counting only the interactions resting inside that specific queue.
* **Workload Safety Valve:** If an agent's global capacity profile limit is left blank or set to 0, global queues automatically fall back to their default per-queue rules to ensure operational continuity.

{% endupdate %}

{% update date="2026-07-09" %}

## Organize Your Workspace with Custom Ticket Views and Kanban Boards

We have launched a powerful new Ticket View management system, allowing you to build, filter, and save custom workspaces tailored to your exact daily operational needs.

<div data-with-frame="true"><figure><img src="/files/K3SSuHOdplzaGd02ZIam" alt=""><figcaption></figcaption></figure></div>

* **Default & Custom Views:** Your dashboard comes with standard default views like ***All Tickets*** ***and*** ***My Tickets.*** You can now expand on these by creating your own customized views. Choose to keep them private (For Me), share them globally (Everyone), or grant access to Selected users only.
* **Manage Access Permissions:** When sharing custom views with others, you can configure permission settings—such as setting a view to View only—to protect your filter setups from accidental changes.
* **Multi-Layered Filtering:** Build precise workspaces by stacking advanced filter rules. Filter tickets instantly based on specific criteria like Ticket ID, Contact, Status, Priority, Assignee, and custom parameters.
* **Switch Between List & Kanban Layouts:** Visualize your workload exactly how you prefer. Toggle between a traditional data spreadsheet List layout or a visual Kanban board divided cleanly into status columns (Open, Pending, Resolved, Closed).
  {% endupdate %}

{% update date="2026-07-09" %}

## TikTok Shop Messaging Integration Now Available

You can now connect your TikTok Shop directly to Klink to manage all customer messages and conversations from a single, centralized dashboard.

* **Unified Inbox:** View, track, and reply to incoming TikTok Shop customer chats in real time alongside your other messaging channels.
* **Streamlined Operations:** Improve response times and simplify team workflows by handling commerce inquiries without switching platforms.

*(**Note**: Setting up this channel requires a quick, one-time configuration via the TikTok Shop Partner Center. Check out our step-by-step setup guide in the Help Center to get started!)*
{% endupdate %}

{% update date="2026-07-03" %}

## Fixed Missing Content and Text in PDF Downloads

**PDF Encoding & Font Rendering Fix:** Resolved an issue where downloading certain PDF documents with specific font configurations (such as Thai characters) would result in corrupted/missing text or entirely incomplete pages. Our PDF encoding engine has been upgraded in production, ensuring that when you download and open a document, all text, pages, and regional fonts render accurately without corruption.
{% endupdate %}

{% update date="2026-07-03" %}

## Fixed Password-Protected PDF Downloads

* **File Encryption Fix:** Resolved a file download service bug that corrupted password-protected PDFs during the encoding process, causing them to open as blank documents. These encrypted files will now download normally with all original layout details and password protection fully intact.
  {% endupdate %}

{% update date="2026-06-30" %}

## Unsend Sent Messages in Web Chat

We have introduced a helpful message control feature to the Web Chat interface, allowing agents to quickly correct mistakes or accidental submissions during live customer chats.

* **5-Minute Grace Period:** Agents can now unsend a sent message within a 5-minute window after it is delivered.
* **Seamless Message Removal:** Hovering over a recent chat bubble and selecting the "*Unsend*" option will securely pull the message back, ensuring total control over your conversation flow and reducing miscommunication.

{% endupdate %}

{% update date="2026-06-30" %}

## Customize Columns for CX Log Exports

We have introduced column selection toggle for CX Log data exports, giving you complete control over your report sizes.

* **Customizable Column Selection:** When exporting your logs, a new configuration window will now appear listing all available data fields. You can check or uncheck individual columns to customize exactly what data you want to include before generating the report.
* **Faster Downloads & Lighter Files:** By unchecking heavy, data-dense columns like "*Transcript*" or "*Recording*" when they aren't actively needed, your exported files will stay light, prevent loading delays, and open much faster in your spreadsheet applications.

{% endupdate %}

{% update date="2026-06-29" %}

## AI Language Condition for Workflow Automation

We have enhanced our Workflow Automation engine with AI-powered language detection for images, allowing you to route incoming customer screenshots with precision.

<div data-with-frame="true"><figure><img src="/files/rXtaKKofbaZiYBppTnW3" alt=""><figcaption></figcaption></figure></div>

* **Advanced AI Language Condition:** You can now select "AI Language" when setting up filters in your workflow setup. Instead of relying only on plain text routing, the system can analyze the text within customer-submitted images.
* **Text Detection in Images:** The AI reads and detects language directly from text inside images sent by customers, ensuring that image-based inquiries are routed to the correct language queue.
* **Smart Mixed-Text Evaluation:** When an image contains a mix of languages (such as both Thai and English), the AI intelligently counts the dominant vocabulary. For example, if a customer sends a screenshot where English words are more prominent than Thai, the system will accurately identify and classify the interaction as English.
  {% endupdate %}

{% update date="2026-06-29" %}

## Rich Text Editing & Attachments Now Available in Ticket Comments

We have upgraded our ticketing system to give you complete control over how you format your messages and share information with your customers.

* **Rich Text Editor:** You can now format your ticket comments using a built-in text editor. Easily apply styling like bold text, *italics*, underlining, bulleted lists, and even insert custom tables to organize complex details clearly.
* **File Attachments:** Share documents, images, and files directly within a ticket comment thread. Simply click the folder icon or drag and drop your assets into the editor container to upload them instantly.

{% endupdate %}

{% update date="2026-06-24" %}

## Transcript Data (CX Logs Export)

* **Added a new 'Transcript' column exclusively to the CX Logs export file.** \
  \
  This field captures and displays the full conversation logs or chat history from the interaction room, allowing you to review the detailed communication details directly within your exported reports.
  {% endupdate %}

{% update date="2026-06-24" %}

## New Queue Metrics for Accurate SLA Tracking

We have introduced new logging metrics across our reporting tables and data exports. These updates provide deeper visibility into total queue waiting thresholds, allowing you to accurately track customer wait times and fulfill strict SLA reporting requirements.

* **Queue First Response Time (CX Logs)**: Added a brand new 'Queue First Response Time' column to both the CX Logs view and the CX Logs export data sheets. This metric tracks the total ring duration of the queue call itself before an interaction is established, ensuring consistency in high-level operational performance metrics.
* **Queue Ring Duration Tracking:** Included the raw 'queue\_ring\_duration' data field across multiple core telephony reporting assets. You can now view and utilize this metric within:
  * CDR Table & CDR Exports
  * Call Log Table & Call Log Exports

{% endupdate %}

{% update date="2026-06-19" %}

## Web Chat Settings Redesign & Custom CSAT Images

We have completely redesigned the Web Chat configuration workflow to centralize your widget customization tools and give you deeper branding control.

<div data-with-frame="true"><figure><img src="/files/teeAnoFZsKrxzmZDxsUE" alt=""><figcaption></figcaption></figure></div>

* **Unified Settings Modal:** Clicking Edit on your web chat channel now opens a centralized configuration modal covering your basic info, greetings, appearance, and preferences in one place.
* **Custom Images for CSAT:** Within the newly integrated CSAT settings tab, you can now change your scale style to "Custom image". This allows you to upload unique images or custom icons for each of your 1–5 scale options to match your company's unique branding.

{% endupdate %}

{% update date="2026-04-09" %}

## Kai can now see and understand images

Your AI agent can now analyze images sent by customers — and respond intelligently based on what it sees.

<figure><img src="/files/8jJJXqqL9sR0i2uRFNLG" alt=""><figcaption></figcaption></figure>

\
**Visual product inquiries**

Customers can share a photo of a product, receipt, or screenshot — Kai identifies it and replies with the right answer.

**Custom analysis instructions**

Write your own prompt to control how Kai analyzes images — from damage inspection to document verification to menu lookups.

**Works across all channels**

Image understanding is available on WhatsApp, LINE, web chat, and Facebook Messenger — wherever your customers already send photos.

**Example use case**

*"Analyze the product image sent by the customer. Identify the item, check if it matches our catalog, and suggest the correct SKU and price."*
{% endupdate %}

{% update date="2026-03-05" tags="workflow" %}

## 🚀 New Workflow Actions&#x20;

<figure><img src="/files/J2tDogvHCpu8Leqsq8yg" alt=""><figcaption></figcaption></figure>

We've expanded the **Actions** menu in Workflow Automation with 8 powerful new actions, giving you more control over how conversations are tagged, scored, and categorized automatically.

**What's new**

**Add Contact Label** — Automatically fill a customer's contact label based on workflow triggers, keeping your contact records organized without manual effort.

**Add Chat Tags** — Append CX log tags to conversations dynamically, making filtering and reporting faster across your team.

**Add Note** — Automatically insert contextual notes into case logs at any point in a workflow — great for logging AI decisions or escalation reasons.

**Set Disposition** — Define the outcome of a case log automatically, ensuring consistent disposition tracking across all resolved conversations.

**Set Categories** — Assign categories to case logs on the fly, streamlining ticket classification without agent input.

**Set Type** — Automatically set the case log type based on conversation context or routing rules.

**Set CSAT Score** — Programmatically set CSAT scores within workflows, useful for scenarios where satisfaction can be inferred from conversation signals.

**Set Sentiment Score** — Assign sentiment scores to case logs automatically, enabling richer analytics and smarter routing decisions.
{% endupdate %}

{% update date="2026-02-27" %}

## Send Rich Message Action

<figure><img src="/files/pXkax1PY6hNOd7r05TEI" alt=""><figcaption></figcaption></figure>

You can now send rich messages as an action step inside Workflow Automation — including text, images, videos, and file attachments.

**What's new:**

* New **Send Rich Message** action available in Workflow Automation
* Type `/` to insert media or attachments via command menu
* Click **Apply** to save the action and continue your workflow
  {% endupdate %}

{% update date="2026-02-27" %}

## AI Conditions Workflow

<figure><img src="/files/br9ePTwN8Ie6z1vatreJ" alt=""><figcaption></figcaption></figure>

You can now set workflow automation conditions using plain English — no coding, no complex logic required. Simply describe the situation, and AI will detect it automatically.

**What's new**

* Added **AI Conditions** as a new condition type in Workflow automation
* Write conditions in natural language — just describe what the customer is doing or asking
* AI automatically detects customer intent and triggers the workflow when the condition is met
* Works across all channels — WhatsApp, LINE, Viber, Messenger, and more

**Example use cases**

* Detect when a customer is asking for a refund or cancellation
* Route frustrated or escalating customers directly to a human agent
* Identify customers interested in upgrading or purchasing
* Flag complaints about missing or damaged orders
* Detect billing disputes or payment issues

**How to use it**

1. Go to **Workflow** → **Conditions** → **Add**
2. Select **AI Conditions**
3. Describe the situation in plain English
4. Click **Save Condition** and connect your actions

***

*AI Conditions is available on all plans. The more specific your description, the more accurate the detection.*
{% endupdate %}

{% update date="2026-02-25" tags="inbox" %}

## Internal Comments

<figure><img src="/files/BaZd3INTsLCMKN3JYDp3" alt=""><figcaption></figcaption></figure>

Teams can now leave private, internal comments on conversations — visible only to agents and never to customers.

**Key highlights:**

* **Private by default** — Internal comments are clearly marked and never sent to the customer across any channel
* **@mention teammates** — Tag specific agents or teams to loop them in on a conversation
* **Text & image support** — Add written notes or paste/upload images such as screenshots, references, or visual context
* **Real-time visibility** — Team members see new internal comments instantly without refreshing

**Why it matters:** No more switching to Slack or email to discuss a tricky customer case. Agents can collaborate, share context, and hand off conversations seamlessly — all within klink.cloud Unified Inbox.
{% endupdate %}

{% update date="2026-02-23" %}

## Live Chat Widget — File Attachment Upgrade

Customers can now send large files—including videos—directly through the live chat widget, with attachment support increased to **150MB**.
{% endupdate %}

{% update date="2026-02-20" %}
Customer Feedback Tag Support for Facebook Messenger<br>
--------------------------------------------------------

<figure><img src="/files/RdiF6ZAe9z4Qpjewy8uL" alt=""><figcaption></figcaption></figure>

Agents can now send post-conversation follow-ups using the **Customer Feedback (Recommended)** tag after the 24-hour messaging window expires, keeping all outbound messages compliant with Meta's policy.

**Example:** After a customer's conversation window closes, an agent can still send:

> *"Hi! How would you rate your recent support experience with us?"*

Messages sent outside this approved tag after the 24-hour window will be blocked by Meta.
{% endupdate %}

{% update date="2026-02-20" tags="ai-agent" %}

## AI Correction: Media File Support

<figure><img src="/files/iKH8ZYytdEj4RggepWKT" alt=""><figcaption></figcaption></figure>

**What's new:** You can now attach media files — photos and videos — when training your AI through corrections.

Previously, corrections were limited to text responses only. With this update, when you add a correction to guide your AI's behavior, you can include images and videos as part of the corrected response. The AI will then be able to send that media across all connected channels when responding to similar queries.

**Why it matters:** Many customer interactions require visual context — product images, tutorial videos, promotional content, or visual instructions. This update ensures your AI can deliver richer, more helpful responses just like a human agent would.
{% endupdate %}

{% update date="2026-02-19" %}

## Offline Agent Assignment Toggle

<figure><img src="/files/uJpYRpV7CiJzsBjExuT4" alt=""><figcaption></figcaption></figure>

We've added a new option under automatic assignment settings that allows you to control whether cases should be assigned to offline agents.

WHAT'S NEW

* New toggle option "Offline Agents Assignment" in the automatic assignment settings
* When enabled, incoming cases are distributed to both online and offline agents
* When disabled, cases are only assigned to agents who are currently online
* Works seamlessly with existing distribution strategies (round robin, least busy, etc.)

HOW IT WORKS

Navigate to Settings > Queue Setting > Assign automatically. You'll now see an "Offline Agents Assignment" toggle that lets you control this behavior.

BENEFITS

* Better workload distribution across all shifts and time zones
* Agents can start working immediately when they log in
* Reduces case backlog during off-peak hours
* Ideal for 24/7 support operations
  {% endupdate %}

{% update date="2026-02-11" tags="ai-agent" %}

## AI Translate: Arabic Language Support

AI Translate now supports Arabic, enabling agents to communicate seamlessly with Arabic-speaking customers. Agents can write responses in their native language, and AI Translate will automatically convert them to Arabic (or any other supported language) directly within the Inbox.

This expansion brings our total language support to 50+ languages, making it easier for teams to deliver localized customer experiences without language barriers.

<figure><img src="/files/8kCT3flS2hNk3vshBHyH" alt=""><figcaption></figcaption></figure>
{% endupdate %}

{% update date="2026-02-10" %}

## Close Date Filter

**Release Date:** Feb 10, 2026

### What's New

Added **Close Date filtering** to accurately track when cases are resolved, not just when they're created.

### Updates

✅ **CX Log** - Filter cases by close date\
✅ **Analytics Dashboard** - "Closed Cases" metric now uses closure date\
✅ **CX Log API** - New `closed_at` filter parameters

<figure><img src="/files/qUNTGehbpraq9bNSZHKu" alt=""><figcaption></figcaption></figure>

### Why It Matters

Get accurate daily productivity metrics. If your team closed 18 cases today, you'll see 18 closed cases in today's report—regardless of when those cases were originally created.
{% endupdate %}

{% update date="2026-02-05" %}

## RTL Support for Arabic

Right-to-Left (RTL) Text Support<br>

We've added native RTL support for Arabic-speaking customers. All Arabic text now displays correctly in the proper right-to-left direction when agents reply to customers, ensuring a natural and professional communication experience for Arabic markets.

This enhancement improves readability and user experience for both agents and customers using Arabic language across all messaging channels.
{% endupdate %}

{% update date="2026-01-07" %}

## Agent status log improvements

* Cleaner, more readable Agent Status log interface.
* Added **search** so supervisors can quickly find specific status changes.
* The **reason** field is now optional, making it faster for agents to update their status.
  {% endupdate %}

{% update date="2026-01-06" %}

## Direction filter in Inbox

* New **Direction** filter in Inbox lets you quickly view **inbound** vs **outbound** conversations.
* Helps teams focus on the right messages faster and manage workloads more efficiently.

{% endupdate %}

{% update date="2026-01-05" %}

## Smarter AI handoff for WhatsApp & Facebook Messenger

* When user(agent) switch to sending messages from WhatsApp or Facebook Messenger, the AI Agent now stops auto-replying.
* This prevents duplicate or conflicting responses and keeps the conversation clear.
  {% endupdate %}

{% update date="2025-12-31" %}

## File Upload inside AI Agent Editor (Attach Files to AI Prompts)

You can now upload files and images directly into the AI Agent Prompt Editor and reference them in your prompt instructions. This allows AI Agents to automatically send the right attachment (such as price lists, brochures, or FAQs) to customers on channels like WhatsApp and Messenger.

**What’s new**

* Upload PDFs, images, and other files directly in the AI Agent Prompt Editor
* Reference files by name in prompt instructions (for example, `pricelist.pdf`)
* AI Agents automatically attach and send the referenced files when the prompt conditions are met
* Supports sending attachments over supported messaging channels (for example, WhatsApp and Facebook Messenger)

**Why it matters**

* Ensures customers receive consistent, up-to-date documents directly in the conversation
* Reduces manual steps for agents to look up and send files
* Makes AI-driven responses richer and more actionable
  {% endupdate %}

{% update date="2025-12-24" %}

## **Add Direction Inbound/Outbound Filter in Agent Inbox**

* **What’s new:** Adds a direction filter (Inbound/Outbound) in the Agent Inbox.
* **Benefit:** Makes it easier for agents to focus on either incoming messages from customers or outgoing responses, improving triage and workload management.

{% endupdate %}

{% update date="2025-12-24" %}

## **Message Notification Sound Setting**

* **What’s new:** Adds an on/off toggle for message notification sound in the profile settings.
* **Benefit:** Lets users control whether they hear a sound for new messages, which is helpful in quiet environments or when they don’t want audio alerts.
  {% endupdate %}

{% update date="2025-12-19" %}

## Email Integration Update

* Removed the legacy Email Inbox from the left sidebar and deprecated the old Email Integration page.
* All new email integrations are now available directly inside the **Main Unified Inbox**, providing a more seamless and consistent email experience across channels.
  {% endupdate %}

{% update date="2025-12-18" %}

## New Billing Updates: Conversation-Based Pricing Now Live

We’ve rolled out new billing enhancements to give you more flexibility and better visibility into your usage.

#### 💬 New Conversation-Based Pricing Plans

You can now subscribe to our **conversation-based pricing plans**, designed to scale with your team’s activity.

* **Growth Plan** starts with **1,000 resolved conversations per month**
* Ideal for growing sales and support teams

➡️ **To subscribe:** go to **Settings → Plan & Billing**

#### 📈 Pay-As-You-Grow Usage Billing

If you exceed your monthly included conversations:

* Additional usage is billed at **$0.2 per resolved conversation**
* No service interruption — pay only for what you use

#### 📊 Real-Time Usage Meter

Stay in control with our new **Usage Meter Indicator**:

* Monitor resolved conversations in real time
* See how much usage you’ve consumed in the current billing cycle
* Plan ahead and avoid unexpected charges

{% endupdate %}

{% update date="2025-12-17" %}

## Inbox Visibility Control & “Mine” Menu Relocation

<figure><img src="/files/mSHfzPTsydnNCKUmzbar" alt=""><figcaption></figcaption></figure>

* Mine inbox has been moved to the left sidebar for quicker access.
* Added role-based permissions to control visibility of:
  * All Opened
  * All Closed
* Admin Role Users can view Mine, All Opened, and All Closed.
* Agent Role Users can only view Mine (private conversations).
* Inbox visibility can be configured via Settings → Roles & Permission → Inbox.

{% endupdate %}

{% update date="2025-12-17" %}

## CRR Report Accuracy Improved

We’ve released an update to fix an issue where call records were occasionally displayed in the wrong order in the Call Detail Records (CDR).

🛠 **What’s Fixed**

* Resolved an issue where call date/time sorting was sometimes incorrect
* Call records are now displayed in the correct chronological order

✨ **Why This Matters**

* Agents can now review call history in the correct sequence
* Easier and more accurate call tracking, audits, and investigations
* Improved reliability of CDR reports for daily operations and reporting

📌 **Scope**

* Applies to **Report > CDR**&#x20;

{% endupdate %}

{% update date="2025-12-05" %}

## CSAT for Web Chat Widget

You can now collect **Customer Satisfaction (CSAT)** feedback in Webchat.

<figure><img src="/files/G7iIt7qBoe8VJQktEqIP" alt="" width="563"><figcaption></figcaption></figure>

**How it works:**

1. Go to **Settings → Message Channel → Enable CSAT Setting**
2. Select your desired **disposition status** (e.g. *Resolved*)
3. When an **AI or Human Agent** closes a conversation with the selected disposition, CSAT is automatically sent to the customer
4. Customers can submit feedback:
   * Very Satisfied
   * Satisfied
   * Neutral
   * Unsatisfied
   * Very Unsatisfied
5. Submitted CSAT results are available in the **CX Log Table**

Measure customer experience instantly and improve conversation quality with real-time feedback.

###

{% endupdate %}

{% update date="2025-12-02" %}

## Custom Messaging Channel

<figure><img src="/files/qj6dwZPRwB7F4F0CB11C" alt="" width="563"><figcaption></figcaption></figure>

You can now connect **any third-party messaging platform** to **klink.cloud** using webhooks.

**What’s included:**

* Two-way messaging via **Inbound & Outbound Webhooks**
* Messages appear instantly in the **Unified Inbox**
* Agent replies are sent back to your system in real time
* Supports conversation events (created, closed, sent, received)
* Secure webhook setup with optional authentication headers

**Supported today:** Text messages\
**Coming soon:** Images & files

**Use cases:** Custom chat apps, CRMs, AI bots, internal tools, and legacy system integrations

{% endupdate %}
{% endupdates %}

{% updates format="full" %}
{% update date="2025-12-01" %}

## File, Image & Video Uploads in Web Chat

<div align="center" data-full-width="true" data-with-frame="true"><figure><img src="/files/rtrOfiaZAzfeesd5auxX" alt="" width="409"><figcaption></figcaption></figure></div>

You can now upload **files, images, and videos (up to 50MB)** directly in the Webchat channel—making conversations more visual, faster, and more effective.

***

#### ✨ Webchat Upgrade: Rich Media Attachments

Webchat now supports **file, image, and video uploads up to 50MB**, allowing agents and customers to share richer content in real time.

***

#### 🆕 What’s New in Webchat

* 📎 File uploads (up to 50MB)
* 🖼️ Image sharing
* 🎥 Video uploads

***

#### 🔔 Product Update: Webchat Attachments

Webchat now supports **file, image, and video uploads with a 50MB size limit**, helping teams resolve conversations faster with better context.
{% endupdate %}
{% endupdates %}


# Features Road Map

Below features are we are currently working on it. If you have any features ideas, please let us know.

### Upcoming Features Road Map

<table><thead><tr><th width="587">Features</th><th>Release Date</th></tr></thead><tbody><tr><td>Auto Assign (Beta)<br>-All incoming chats will automatically assign &#x26; route to available agents</td><td>Already released</td></tr><tr><td>Auto Close<br>-If customer didn't reply to chat for specific time, the conversation will automatically closed and save as auto resolved.</td><td>30-Nov-2024</td></tr><tr><td>Multi Level SLA Setting<br>-Admin can setup SLA Configuration based on First Response Time, Resolution Time etc</td><td>Already released</td></tr><tr><td>WhatsApp for Business API</td><td>Already released</td></tr><tr><td>Telegram Channel</td><td>Already released</td></tr><tr><td>Instagram Comments<br>-Agents can reply Instagram Comments</td><td>Q1 2025</td></tr><tr><td>Outbound Broadcast Campaigns<br>-Send Bulk Outbound Message to customer preferred channels at scale</td><td>Q2 2025</td></tr><tr><td>TikTok Shop Channel<br>-Agents can reply TikTok Shop Message </td><td>Q1 2025</td></tr><tr><td>Call Transcript<br>-Auto summarize Call Transcript from Call Recording Data with AI</td><td>Q1 2025</td></tr><tr><td>Chat Transcript<br>-Auto summarize Chat Transcript from Call Recording Data with AI</td><td>Q1 2025</td></tr><tr><td>Auto Sentiment Scoring<br>-Automatically score customer sentiment</td><td>Q1 2025</td></tr><tr><td>Auto Topic Detection<br>-Detect main topics in customer communications</td><td>Q1 2025</td></tr><tr><td>WeChat Business Channel<br>-Integrate WeChat as a business communication channel</td><td>Q2 2025</td></tr><tr><td>Twitter (X) Channel<br>-Enable customer support and engagement via Twitter</td><td>Q3 2025</td></tr><tr><td>CRM Integration Marketplace<br>-Expand CRM integrations to facilitate better data syncing and automation</td><td>Q3 2025</td></tr><tr><td>Outbound Automation Call Campaign<br>-Automate outbound calling campaigns to improve reach and efficiency</td><td>Q4 2025</td></tr><tr><td>Automatic Translation <br>-Translate communications automatically in multiple languages</td><td>Q1 2026</td></tr><tr><td>Automatic QA Scoring<br>-Automatically score quality of agent responses</td><td>Q2 2026</td></tr><tr><td>Outbound AI Agent<br>-Deploy AI agents for outbound customer interactions</td><td>Q3 2026</td></tr><tr><td>Advanced Behavioral Analytics<br>-Analyze customer behavior in-depth to tailor support and marketing strategies effectively.</td><td>Q1 2027</td></tr><tr><td></td><td></td></tr></tbody></table>

if you have features suggestion or ideas, please send us email at <support@klink.cloud>

{% hint style="info" %}
Want to try our upcoming features, just let us know. We will add give you early access
{% endhint %}




---

[Next Page](/llms-full.txt/1)

