iEXChat — self-hosted support for exchangers

Your own support platform for an exchanger.

The customer asks a question right on your website, the operator immediately sees the conversation in their workspace and replies without switching between different services.

Site widget, operator panel, conversation history, order context, multi-site, Telegram and email — all in one system on your server.

Price$499
Website widget Instant messages Operator panel Multi-site Telegram and email Integrations
Your server
conversations, files and operators stay with you, not a SaaS
Multi-site
one panel for several exchangers and domains
No latency
messages, statuses and typing — instantly
iEXExchanger clients only

This project connects to an active iEXExchanger license and works as an additional module for the core platform.

Price and savings

$499 instead of thousands a year in subscriptions

For a 10-operator team, public SaaS chat plans can run from tens to hundreds of dollars every month, and per-operator services get expensive as the team grows. iEXChat is one payment for the install: no monthly subscription, no operator limit, and no dependency on someone else's cloud.

Self-hosted
One install — forever
Price$499

No monthly subscription. No operator seat limits.

Starting price for v1. The cost will increase with future releases.
  • No limit on the number of operators
  • No subscription or renewals
  • Customer data on your own server
  • Full source code is yours
  • A year of updates — free
Add-on
Turnkey installation
$90

Optional. We deploy iEXChat on your server: domains, SSL, widget, operators, integrations — fully set up.

  • Install on your VPS or dedicated server
  • Domain, SSL and Cloudflare setup
  • Widget wired to your exchanger site
Savings calculator

How much the subscription costs

Pick a provider and a number of operators — see the public-plan cost over a few years instead of one payment for iEXChat.

Provider
Operators
10
How many seats your support team needs
Period
Your savings over 3 years
$9,941
SaaS for this period
$10,440
iEXChat
$499one payment
Formula: 10 × $29/seat/mo × 36 mo = $10,440

Positioning

Support has to see the customer's situation, not just the message

At an exchanger almost every question is tied to a payment, an order status, an exchange direction or a specific page. iEXChat puts all of that next to the conversation so the operator understands what's happening right away.

Order context in the conversation

The site can pass order number, exchange direction, amount, page and any custom data — the operator sees it in the customer card without manual lookups.

Data stays with you

Conversations, files, customers, settings and ratings live on your server. No third party can revoke access or raise prices on you.

One product for several sites

One installation serves several exchangers, storefronts or domains: each one has its own widget settings, operators, tags, queues and analytics, and they don't mix.

Comparison

External SaaS chat vs. your own iEXChat

Regular chat service
  • Monthly subscription and payment for every operator seat
  • Customer messages and files live inside someone else's platform
  • Weak order context: amount, direction and email are searched manually
  • Branding, integrations and behavior are limited by provider rules
iEXChat — your chat
  • Runs on your server, without paying per operator seat
  • History, customers, files, ratings and analytics stay with you
  • Direction, amount, email, order number and exchange events are visible in chat
  • Deep iEXExchanger integration, brand-controlled widget and flexible setup
Architecture

A light website widget, a full support platform inside

The site loads a small script. The widget opens a realtime conversation, the workspace receives the message, history and order context are saved in your database.

Exchanger website

Loads the widget and can pass customer and order data.

Widget on the page

A neat support window styled to your brand, restoring the conversation when the customer returns.

Message delivery

Messages, reads, typing and statuses arrive instantly — no page refresh.

History and context

Conversations, customers, files, ratings and audit live in your database.

Operator panel

Conversation queue, customer card, quick replies, tags, handoffs and analytics.

Video demo

See iEXChat in action

The Telegram post shows the full product scenario: site widget, operator panel, conversation history, analytics and exchanger integration.

Open video
Website widgetOperator panelOrder contextSupport analytics
Capabilities

What an exchanger gets after the install

Unified inbox

All active conversations on one screen: who writes, who answers, which site and which order.

Branded widget

Color, logo, position, language, greeting, FAQ, attachments, voice and pre-chat form — all configurable.

Sites, roles and teams

Per-site access for operators, flexible roles, departments and tags — each person sees only their scope.

Telegram, email and integrations

Two-way Telegram bridge, inbound mail into conversations, notifications and connection to your systems.

Process and automation

Quick replies, tags, handoff, auto-open, spam protection, response deadlines and automation rules.

Analytics and quality

Response speed, operator load, customer ratings and metrics across sites and departments.

Operator panel

The workspace where support lives all day

Conversations on the left, customer card and order context on the right. The admin configures sites, operators, departments, templates and rules in a separate tab — no developer needed.

Conversation queue

All requests in one list: who writes, who answers, what's waiting and what needs to be picked up.

Customer card

Name, email, phone, order, country and device — all at hand, no window switching.

Quick replies

Pre-built phrases for common questions, by category and with variables — answer in one click.

Tags and priorities

Labels on conversations and customers, priority levels, handoff between operators and departments.

Analytics and quality

First-response time, load, post-conversation ratings and bottlenecks in your support.

Archive, notes and audit

Internal notes between operators, archive of old conversations and change log for settings.

Site widget

What the customer sees: compact, fast and on-brand

The support window doesn't conflict with site styles, restores the conversation when the customer returns, and supports four working modes for different exchanger scenarios.

Mode 1

Native chat on the site

The primary scenario. The customer writes in the widget, messages appear in the operator workspace, history is stored with you.

Mode 2

Native + Telegram fallback

If operators are online — the customer writes in the chat. If all are offline — the widget shows a "Write on Telegram" button.

Mode 3

Straight to Telegram

The widget doesn't open its own chat — it sends the customer to a Telegram support account. Fits teams that live in Telegram.

Mode 4

External provider

You can temporarily swap the widget for a third-party one — convenient for smooth migration from an older provider.

Pre-chat form

Name, email, phone — fields toggled by the admin and can be required.

Voice messages

The customer can record voice, the operator listens and replies in the same thread.

Files and images

Attachments up to 25 MB, protection against dangerous file types, image previews inside the chat.

FAQ and articles

A built-in help center with articles, categories and helpful/not-helpful rating.

Localization

Custom widget UI translations and automatic detection of the customer's language.

Conversation restore

The customer returns in an hour, a day or a week — and continues the same conversation.

Customer context

The site passes email, name, phone, order number and any custom data — the operator sees it immediately.

Auto-open

The chat can open by itself on time, scroll or specific URL — without changing the site.

Instant delivery

Messages, statuses and presence — without latency or page reloads

The chat is alive: the customer sees when the operator is typing, the operator sees when the customer is online and reading. If no operators are around — the customer knows their queue position.

Instant messages

Messages fly both ways with no page reload — like in modern messengers.

Typing indicator

A "typing..." indicator works in both directions, so the customer doesn't get anxious or leave.

Read receipts

Delivery and read marks with time — the customer knows the message arrived.

Operator presence

Online, busy, away, offline — the customer sees that a live person is going to reply.

Queue and ETA

If all operators are busy, the customer sees their queue position and approximate wait time.

No double replies

The operator sees right away that a colleague already picked the conversation — no duplicate answers.

Multi-site and roles

One panel for several exchangers without mixed access

Each site has its own domain, brand, language, operators and widget settings. One person can be an operator on one site and an admin on another — and only sees what they were explicitly granted.

Several sites

Each has its own domain, logo, color, language and widget settings — no "shared" branding.

Separate access

An operator only sees their sites and their conversations, no accidental crossover.

Flexible roles

Admin, operator and custom roles with a precise set of rights — for KYC, analytics, support.

Per-site analytics

Conversations, ratings, load and analytics are counted per site, never mixed.

Channels and integrations

Native chat first, channels and integrations around it

Native site chat

Primary scenario: the customer writes in the widget, the operator replies from the panel. History, files and ratings stay with you.

Telegram bridge

Two-way sync with Telegram: an operator can reply right from the Telegram chat, the answer returns to the customer in the widget.

Inbound and outbound email

Emails from customers are automatically threaded into conversations. Outbound mail uses your own mail server.

Integration with your systems

iEXChat can be linked to the exchanger, CRM and internal services — events and data flow both ways.

Security

Customer data and access — only inside your perimeter

Everything lives in your database, files in your storage, secrets in your .env. No third-party provider has access to the conversation content.

Two-factor login

Operators log into the panel with a code from a phone app — a leaked password doesn't open access.

Protected customer sessions

A visitor identifier can't be forged — no one else can "read" the customer's conversation.

Signed data from the site

The exchanger can sign customer data — the operator can be sure the email and order number are real.

Spam protection

Limits on messages, login attempts and suspicious actions — no bot floods or brute force.

Action log

You can see who changed what setting, reassigned conversations or deleted messages — for control and audit.

Encryption of sensitive data

License, integration secrets and access tokens are stored encrypted, not in plain text.

Updates

Managed updates — without breaking data

Every change is a separate version with a clear log. Updates are applied in order and are idempotent — if interrupted, you can resume from the same point without losses.

Versioning

Every meaningful change is its own version. No "we'll patch it somehow" — only a clear history.

Update log

The system always knows which updates are applied and which are still missing.

Safe migrations

Database changes are additive: data is not lost, the schema is updated in a strict order.

One command

Run the update — the system checks readiness, applies changes and reports back.

Under the hood

What iEXChat is built with

A pnpm + turbo monorepo. Full TypeScript on both sides, typed contracts between widget, API and panel. PostgreSQL as the source of truth, Redis for queues and pub/sub, S3/MinIO for files and Docker for everything around it.

Client

Widget and panel

What the customer sees in the widget and the operator sees in the panel. Lightweight, isolated, reactive.

React 18 + TanStack Query
Operator panel: React 18, TanStack Query, reactive inbox.
Vanilla TypeScript widget
Widget: vanilla TypeScript in Shadow DOM, no dependency on the host site.
TypeScript strict
Strict TypeScript on every side — typed API contracts.
Tailwind 4
Design system for the panel and the settings pages.
Vite
Widget and panel bundler — an IIFE bundle ~52 KB gzipped.
Socket.IO client
Socket.IO client — instant messages in the widget and the panel.
Server

API and worker

NestJS API, a realtime gateway, a background worker with queues and Prisma on top of Postgres.

NestJS 11
NestJS 11 — modular API with DI, guards and pipes.
Prisma ORM
Prisma ORM — migrations, type-safe queries, baseline.
PostgreSQL
PostgreSQL — conversations, customers, settings, audit.
Redis + BullMQ
Redis + BullMQ + Socket.IO Adapter — queues and pub/sub.
Socket.IO + Redis Adapter
Socket.IO gateway — all realtime events.
Worker (queues, SLA)
A dedicated worker: webhooks, mail, scheduled jobs.
Infrastructure

Hosting and operations

Self-hosted on Debian/Ubuntu, packed into Docker, nginx as a reverse proxy, Cloudflare optional.

Debian 12 / Ubuntu 22
Debian 12 / Ubuntu 22.04 — recommended base OS.
Docker compose
Docker compose — Postgres, Redis, MinIO, app, worker.
Nginx + Let's Encrypt
Nginx — reverse proxy, static files, Let's Encrypt certs.
Cloudflare
Cloudflare — DNS, protection, optional WAF.
MinIO / S3
MinIO / S3 — files, voice notes, images.
systemd + cron
systemd + cron — supervision and routine jobs.
Ready to try

iEXChat — support controlled only by you

One script on the site, one workspace for the team and all data on your server. Order a deployment for your exchanger.