---
title: Chat - technical overview
related:
  - https://docs.kentico.com/k82/configuring-kentico/configuring-windows-communication-foundation.md
  - https://docs.kentico.com/k82/community-features/chat/customizing-chat-appearance/writing-transformations-for-chat.md
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

The majority of chat actions (such as sending messages, joining a room, etc.) on the live site are performed using AJAX without reloading the page. HTML content is generated almost exclusively by JavaScript on the client side. The server provides the client with data in JSON format.

## Windows Communication Foundation

On the server side operate two WCF services - **ChatService** and **ChatSupportService**. The client side communicates with those services using HTTP requests and receives data in the JSON format.

JavaScript code for communication with the web services is generated automatically by WCF. You can check if it is generated correctly by visiting the following URL:

```csharp

<your website URL>/CMSModules/Chat/Services/ChatService.svc/JS

```

If there isn’t any JavaScript generated on the page, WCF may not be correctly configured. See [Configuring Windows Communication Foundation](https://docs.kentico.com/k82/configuring-kentico/configuring-windows-communication-foundation.md).

## jQuery Templates

The client side receives objects with data and generates HTML. To do so, it uses a jQuery plug-in called **Templates**. Using the templating system on the client side allows chat to work without requesting pages and still offer flexibility similar to [Kentico macro language (K#)](https://docs.kentico.com/k82/macro-expressions.md). jQuery Templates documentation and syntax description can be found at <https://github.com/BorisMoore/jquery-tmpl>.

Templates are saved as transformations with their type set to jQuery. With the module comes a container page type called **Chat – Transformations**, which holds transformations needed for chat to work. JavaScript objects are passed to the jQuery Template engine along with the transformation text.

To learn more about the templates and how to use them to customize the chat module, refer to Writing transformations for chat.

## BBCode parser

The client side also provides BBCode resolving - a JavaScript resolver is used to parse the BBCode tags.
