Getting started
MarkdownConcierge is in-app support for iOS, Android, React Native and Flutter, with a web widget for your website. Your users tap Support inside your app and chat with you in a native screen. You answer from the dashboard, your phone, or Claude Code. An AI agent can answer first, from your own docs, and hand off to you the moment someone asks for a human.
How it fits together
Section titled “How it fits together”- SDK in your app: a native chat screen, an unread badge, push handling. Zero network calls at launch.
- API at
/v1/sdk/*: the SDK talks to it with your public app key. You never call it yourself. - Dashboard: your inbox, settings, knowledge for the AI agent, and the setup prompt.
- MCP server: the same inbox, inside Claude Code, Cursor or Codex. See MCP server.
1. Create an app
Section titled “1. Create an app”Sign up, then add your app. You get two keys:
| Key | Looks like | Where it lives |
|---|---|---|
| App key | app_... |
In your app. It’s public, so embedding it is fine. |
| Identity secret | ids_... |
On your server only. It signs user tokens. See Identity verification. |
2. Install the SDK
Section titled “2. Install the SDK”The fastest path: open Setup in the dashboard, press Copy setup prompt, and paste it into your coding agent. The prompt covers the install line for your platform, configure, a Support entry point and a test message, then wires your existing paywall, offers and review prompts and prefills your account from the codebase.
Already using another in-app support SDK? Switch in one prompt: your agent swaps the calls, keeps your user ids and moves saved replies into knowledge.
Prefer doing it by hand? Pick your platform:
- iOS: Swift Package Manager, SwiftUI, iOS 16+.
- Android: Gradle, Jetpack Compose, minSdk 24.
- React Native and Expo: one Expo module for iOS and Android, with a JS fallback for Expo Go.
- Flutter: one pub.dev plugin for iOS and Android, wrapping the native SDKs.
- Web widget: one script tag or an npm package.
The short version on iOS:
import Concierge
Concierge.configure(appKey: "app_YOUR_APP_KEY")
// Anywhere in your UI:Button("Contact Support") { Concierge.present() }And on Android:
Concierge.configure(this, appKey = "app_YOUR_APP_KEY")
Button(onClick = { Concierge.open(context) }) { Text("Support") }3. Send a test message
Section titled “3. Send a test message”Run the app, open Support and say hi. The dashboard’s setup screen waits for that first message and flips to Connected the moment it lands. Reply from the inbox and watch it arrive on the device.
4. Make it yours
Section titled “4. Make it yours”- Tell Concierge who the user is with
identify, so their history follows them to every device. Then turn on identity verification so nobody can pretend to be them. - Forward push tokens so replies reach users who left the app: Push notifications.
- Match your brand without an app update: Appearance.
- Let the AI agent take the first reply: AI agent and knowledge.