In-App-Chat

Support in deiner App, ohne SDK

Eine URL in einer WebView. Kein Paket zu installieren, kein Build, der fehlschlagen kann, und jede Unterhaltung landet in derselben Inbox wie der Rest deines Supports.

01 · Was es ist
Die Kurzfassung

In-App-Chat in inrelay ist eine gehostete Chat-Seite unter deiner eigenen Help-Center-Adresse. Richte eine WebView auf /chat aus, und deine App für iOS, Android oder React Native bietet direkt Live-Chat, KI-Antworten und deine Hilfeartikel — ganz ohne SDK, ohne Abhängigkeiten und ohne App-Store-Release bei Änderungen.

Die Seite ist genau derselbe Chat, den deine Website-Besucher nutzen, nur als Vollbild statt in einem Chat-Fenster. Sie übernimmt alles, was du bereits eingerichtet hast: deine Marke und Akzentfarbe, deine Geschäftszeiten, den KI-Chatbot und sein Wissen, das Lead-Formular sowie die Inbox, in der dein Team arbeitet. Das Aktivieren ist kein Riesenprojekt — die Adresse ist verfügbar, sobald der Live-Chat aktiv ist.

In jedem Tarif enthalten. Es gibt kein Mobil-Add-on, keine Gebühr pro Unterhaltung und du musst nichts kaufen, um es auszuprobieren.

Looping animation: one hosted address, help.acme.com/chat, fans out into a chat bubble on a website and a full-screen chat inside an app, and ends marked already live.
02 · Deine Adresse

Eine URL, drei optionale Angaben

Deine Chat-Seite liegt unter /chat auf deiner Help-Center-Adresse — der eigenen Domain, falls verknüpft, oder der gesicherten .inrelay.support-Adresse. Die exakte URL zum Kopieren findest du unter Einstellungen → Help-Widget → In deiner mobilen App.

https://support.yourbrand.com/chat

Diese URL allein reicht für eine vollständige Integration: Besucher können anonym chatten und die Unterhaltung bleibt über App-Starts hinweg auf dem Gerät erhalten. Wenn deine App den Nutzer kennt, kannst du das über drei Abfrageparameter übergeben — alle optional, alle können bedenkenlos weggelassen werden:

  • token_id — deine eigene zufällige ID für diesen Nutzer. Sie stellt die Unterhaltung auf einem neuen Gerät oder nach einer Neuinstallation wieder her.
  • email — damit Antworten ankommen, wenn die App geschlossen ist.
  • name — damit dein Team weiß, wem es hilft.
https://support.yourbrand.com/chat?token_id=8f2c…&email=ada%40example.com&name=Ada%20Lovelace

Codiere die Werte URL-konform. Sofern du die verifizierte Identität (siehe unten) nicht aktivierst, behandle token_id als Geheimnis: Wer ein Token besitzt, kann diese Unterhaltung fortsetzen. Generiere daher lange Zufallswerte — niemals eine E-Mail-Adresse, einen Benutzernamen oder eine fortlaufende ID.

03 · Die Anleitungen

Drei Wege zum Öffnen

Jedes davon ist bereits die vollständige Integration. Die zwei wichtigsten Einstellungen auf jeder Plattform sind JavaScript und DOM-Storage — DOM-Storage sorgt dafür, dass die Unterhaltung eines Besuchers auch nach Neustarts der App erhalten bleibt.

iOS — WKWebView

import UIKit
import WebKit

final class SupportViewController: UIViewController {
  private let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())

  override func viewDidLoad() {
    super.viewDidLoad()
    webView.frame = view.bounds
    webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    webView.scrollView.bounces = false
    view.addSubview(webView)

    var url = URLComponents(string: "https://support.yourbrand.com/chat")!
    url.queryItems = [
      URLQueryItem(name: "token_id", value: user.supportToken),
      URLQueryItem(name: "email", value: user.email),
      URLQueryItem(name: "name", value: user.fullName)
    ]
    webView.load(URLRequest(url: url.url!))
  }
}

Android — WebView

class SupportActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val webView = WebView(this)
    setContentView(webView)

    webView.settings.javaScriptEnabled = true
    webView.settings.domStorageEnabled = true   // keeps the conversation across launches
    webView.webViewClient = WebViewClient()     // keep navigation inside the WebView

    val url = Uri.parse("https://support.yourbrand.com/chat")
      .buildUpon()
      .appendQueryParameter("token_id", user.supportToken)
      .appendQueryParameter("email", user.email)
      .appendQueryParameter("name", user.fullName)
      .build()
    webView.loadUrl(url.toString())
  }
}

React Native — react-native-webview

import { SafeAreaView } from 'react-native'
import { WebView } from 'react-native-webview'

const params = new URLSearchParams({
  token_id: user.supportToken,
  email: user.email,
  name: user.fullName
})

export function SupportScreen() {
  return (
    <SafeAreaView style={{ flex: 1 }}>
      <WebView
        source={{ uri: `https://support.yourbrand.com/chat?${params}` }}
        javaScriptEnabled
        domStorageEnabled
        originWhitelist={['https://support.yourbrand.com/*']}
      />
    </SafeAreaView>
  )
}

Gib der WebView den gesamten Bildschirm und lass sie das Scrollen selbst übernehmen — die Seite ist bereits für Smartphones optimiert, einschließlich des Safe-Area-Bereichs am unteren Rand.

Beschränke die Erlaubnisliste auf deine eigene Adresse samt abschließendem Schrägstrich. Ein Muster wie https://* erlaubt jeder Website die Darstellung in deinem Support-Fenster, und eines ohne Schrägstrich — https://support.deinebrand.de* — passt auch auf support.deinebrand.de.example.net. Wenn du die URL selbst prüfst, vergleiche den geparsten Origin statt eines Präfix-Tests.

04 · Verifizierte Identität

Beweise, dass sie es wirklich sind

Optional, standardmäßig deaktiviert und einfach per Schalter aktivierbar: Jeder Workspace verfügt bereits über ein Signatur-Geheimnis unter Einstellungen → Help-Widget.

The In your mobile app settings block with the verification toggle

Bei aktivierter Verifizierung müssen die von deiner App übergebenen Daten mit einer Signatur deines Servers versehen sein. Unsignierte Daten oder solche für einen anderen Nutzer werden ignoriert: Der Chat öffnet sich trotzdem, ist aber anonym. Es kommt nie zu einem harten Fehler, denn eine Support-Ansicht, die gar nicht lädt, ist schlimmer als eine, die deinen Namen nicht kennt.

Signiere genau diese Zeichenkette, indem du die drei Werte durch Zeilenumbrüche verbindest und für weggelassene Werte eine leere Zeichenkette verwendest:

token_id + "\n" + email + "\n" + name
// on your server, never in the app binary
import { createHmac } from 'node:crypto'

const payload = [tokenId, email ?? '', name ?? ''].join('\n')
const signature = createHmac('sha256', INRELAY_EMBED_SECRET)
  .update(payload)
  .digest('hex')

Häng es als &signature=… an. Signiere die Werte exakt so, wie du sie in die URL einfügst — ohne Entfernen von Leerzeichen oder Umwandlung in Kleinbuchstaben — und signiere alle drei: Eine Signatur, die nur das Token abdeckt, validiert keine Anfrage mit abweichender E-Mail-Adresse. Werte mit Zeilenumbrüchen werden abgelehnt.

  • Das Geheimnis liegt auf deinem Server und wird von unserem gelesen. Es gehört niemals in dein App-Binary, wo es jeder auslesen könnte.
  • Rufe die Signatur von deinem eigenen authentifizierten Endpunkt ab, wenn der Nutzer den Support öffnet, und erstelle dann die URL.
  • Aktiviere die Verifizierung vor dem Veröffentlichen, falls du diese nutzen möchtest. Eine spätere Nachrüstung erfordert das erneute Ausstellen aller Tokens.
05 · Wenn die App geschlossen ist

Antworten erreichen sie per E-Mail

Jemand stellt eine Frage, schließt die App und dein Team antwortet zehn Minuten später. Die Antwort geht per E-Mail an die Adresse der Unterhaltung — aus den Identitätsparametern der App oder aus der im Chat angegebenen E-Mail-Adresse. Wird der Support erneut geöffnet, ist der gesamte Verlauf noch da.

Ganz offen gesagt: In dieser Version gibt es keine In-App-Push-Benachrichtigungen. Es gibt kein SDK, um ein Geräte-Token zu registrieren, sodass eine Antwort das Badge deiner App nicht aufleuchten lassen kann. Der Zustellweg ist E-Mail — und Kunden, die eine Adresse hinterlassen haben, erhalten garantiert eine Antwort.

  • Die Unterhaltung bleibt auf dem Gerät gespeichert und folgt einer token_id auf ein neues Gerät.
  • Alles, was der Besucher sieht, ist der fertige Chat: KI-Antworten, deine Hilfeartikel, deine Geschäftszeiten.
  • In-App-Push-Benachrichtigungen sind in dieser Version nicht enthalten — Antworten treffen per E-Mail ein, während die App geschlossen ist.
  • Native Chat-UIs und Plattform-SDKs werden nicht bereitgestellt. Das hier ist ganz bewusst eine gehostete Seite in einer WebView.
06 · Einrichtung

In vier Schritten live

Live-Chat aktivieren

Einstellungen → Help-Widget. Wenn dein Website-Widget bereits Chat unterstützt, ist dieser Schritt erledigt.

Chat-URL kopieren

Der Block „In deiner mobilen App“ enthält die URL mitsamt Kopier-Button. Sichere dir zuerst eine Help-Center-Adresse, wenn du eine eigene Domain nutzen möchtest.

In einer WebView öffnen

Füge eine der obigen Anleitungen in deinen Support-Bildschirm ein. Aktiviere JavaScript und DOM-Speicher.

Identität hinzufügen, wenn du möchtest

Übergebe Token, E-Mail und Name — und aktiviere die Verifizierung mit der Signatur, sobald du bereit bist.

07 · Verwandte Funktionen

Das restliche Postfach.

In-App-Chat ist ein Zugang zu den Funktionen von inrelay — das sind diejenigen, auf die er aufbaut.

Heute starten

Deine App, mit integriertem Support.

Kostenlos starten mit dem eigenen Posteingang — alle Funktionen, keine Kreditkarte, niemals pro Nutzer.

Fragen, beantwortet.

Muss ich meiner App eine Abhängigkeit hinzufügen?
Nein. Es gibt kein inrelay-Paket für iOS, Android, React Native oder Flutter — du öffnest eine URL in der WebView, die deine Plattform bereits mitbringt. Nichts zu aktualisieren und keine Version von uns, die synchron mit deiner gehalten werden muss.
Was passiert, wenn ich überhaupt keine Parameter übergebe?
Der Chat funktioniert. Der Besucher bleibt anonym, die Unterhaltung bleibt auf diesem Gerät erhalten, und der Chat fragt selbst nach einer E-Mail-Adresse, wenn dein Lead-Formular aktiv ist — so kann eine Antwort den Besucher trotzdem erreichen.
Kann jemand anderes eine Unterhaltung lesen, wenn er ein Token errät?
Wenn die Verifizierung ausgeschaltet ist, kann jeder mit einem gültigen token_id diese Unterhaltung fortsetzen — weshalb Tokens lang und zufällig sein müssen und warum es die Option zur Verifizierung gibt. Wenn sie aktiviert ist, wird ein nicht signiertes Token vollständig ignoriert.
Erhält der Kunde eine Push-Benachrichtigung, wenn wir antworten?
In dieser Version noch nicht. Antworten erreichen Kunden per E-Mail, während die App geschlossen ist, und die Unterhaltung wartet auf sie, wenn sie den Support wieder öffnen. In-App-Push würde ein SDK erfordern, was dieser Ansatz bewusst vermeidet.
Ist der In-App-Chat in jedem Tarif enthalten?
Ja. Es ist derselbe Live-Chat, den du bereits nutzt, bereitgestellt als Seite — es gibt kein separates Mobil-Add-on und keine Gebühr pro Unterhaltung.

Fange an, deine DMs zu steuern.

Gib deinen Kunden schnellere Antworten und deinem Team den Feierabend zurück.

Desktop und mobil. Kostenlos für Solo-Nutzer.