Tickets in your DB + Telegram, with two-way replies

Drop-in support for any web app

Support Frix is a customizable support button you embed with a single tag. It works in React, Vue, Angular, Svelte and plain JavaScript - fully isolated, fully themeable, and wired to Telegram out of the box.

Shadow-DOM isolated No dependencies ~12 kB gzip
index.html
<script type="module"
  src="https://support.frix.me/widget/support-frix-widget.js"></script>

<support-frix-widget
  api-key="YOUR_API_KEY"
  primary-color="#6366f1"
  auth-mode="both"
></support-frix-widget>

That's the whole integration. Try the live button in the bottom-right corner.

Works everywhere your app runs

JavaScriptReactVueAngularSvelteNext.jsAstro

Why Support Frix

Everything a support button should be

Built to disappear into your product and show up only when your users need it.

Framework-agnostic

One web component works in React, Vue, Angular, Svelte or plain HTML. No SDK, no wrappers - just one tag.

Total style isolation

Rendered inside Shadow DOM. Your page styles never break the widget, and the widget never leaks CSS into your app.

Themeable in seconds

Set the accent color, radius, position, label and identity mode with plain HTML attributes - no build step required.

Telegram-native

Every ticket is stored in your database and mirrored to a Telegram channel in real time, so your team never misses one.

Real two-way replies

Answer from the dashboard or straight from Telegram. Your reply lands back inside the user's widget instantly.

Categories & tags

Define categories per platform. Users pick one when they write in, so every request arrives pre-sorted and labelled.

How it works

From button to answered in three steps

No backend glue on your side. You embed, your users write, you reply.

01

Embed the button

Add one script tag and one element to your app. Pick the color, position and identity mode that fit your brand.

02

Users write in

They choose a category and type their message. Identify by name + email, by Telegram, or let them choose - your call.

03

You answer anywhere

Tickets appear in your dashboard and Telegram channel. Reply from either, and the answer shows up in the widget.

Identity, your way

Let users in however you like

Pick the verification that matches your audience with a single attribute.

auth-mode="email"

Name & email

Frictionless for public sites. Users leave a name and email; replies surface inside the widget via a private ticket link.

auth-mode="telegram"

Telegram verified

Best for communities. Users confirm a 6-digit code from the bot, so every reply reaches them on Telegram too.

auth-mode="both"

Let them choose

Offer both and let each user decide. Great default - broad reach without losing the Telegram power-user loop.

Get started

Copy, paste, ship

The exact integration for your stack. Swap in the API key from your dashboard and you're live.

<!-- 1 - Load the widget once, before </body> -->
<script type="module"
  src="https://support.frix.me/widget/support-frix-widget.js"></script>

<!-- 2 - Drop the button in anywhere -->
<support-frix-widget
  api-key="YOUR_API_KEY"
  primary-color="#6366f1"
  btn-position="bottom-right"
  btn-label="Support"
  auth-mode="both"
></support-frix-widget>

Configuration attributes

Every option is a plain HTML attribute - no build step needed.

AttributeDefaultDescription
api-key-Required. Platform key from your dashboard. Routes tickets to the right project.
api-urlhttps://support.frix.me/apiBase URL of the Support Frix API.
auth-modebothHow users identify: email, telegram, or both.
primary-color#6366f1Accent color for the button and highlights.
btn-radius9999pxCorner radius of the launcher button.
btn-positionbottom-rightbottom-right or bottom-left.
btn-labelSupportText shown on the launcher button.
titleHow can we help?Heading shown at the top of the modal.
themelightlight, dark, or auto color scheme for the panel.

Read the full documentation

Framework guides, configuration, identity modes, the Telegram setup walkthrough and the complete API reference - all in one categorized place.