Support: in-app messenger, inbox and FAQ

The Support customization page in the Appwin dashboard: primary colour, rounding and welcome banner, with a live preview of the messenger home screen on a phone.

Support adds a help chat to your app: the user writes to your team, who reply from a shared inbox. A built-in FAQ absorbs the repetitive questions. (It is a conversation with your team, not messaging between users.)

No account to create: Appwin Core recognises the user by their device, the same person as in Community. Everything is driven from the dashboard, under Support: inbox, macros, tags, FAQ and chat design.

Installation

  1. 1

    Install Appwin Core and Support

    Support relies on Appwin Core. Not installed yet? Start with the Quickstart, which installs Core and your modules for every platform.

    Compatibility and packages per platform
    PlatformPackageSymbol
    iOS 16SPM product AppwinSupportAppwinSupport
    Android 7.0 (API 24)io.appwin:appwin-supportio.appwin.support.AppwinSupport
    Flutter 3.3appwin_supportAppwinSupport.instance
    React Native 0.73@appwin/react-nativeAppwinSupport
  2. 2

    Initialize Support

    Call initialize() at startup, after Appwin Core, and gate your own entry point on the ready verdict: the SDK does not own your navigation, so it cannot hide your help button.

    swift
    import AppwinSupport
    
    // After AppwinCore.configure, before showing the entry point.
    guard await AppwinSupport.initialize().isReady else { return }
    

Available methods

Check the module state

isReady returns the last verdict from initialize() without another call. Use it to gate your help button after startup. Identity is not part of Support's surface: identify, updateUser and logout live on AppwinCore.

Open the messenger

The messenger is rendered natively by the SDK. Embed it in your navigation with messengerView(), or present it modally with presentMessenger(). presentConversation(id) opens straight onto one conversation, which is what a notification tap needs (iOS and Android).

Embedded, in a tab

swift
TabView {
  HomeView()
    .tabItem { Label("Home", systemImage: "house") }

  AppwinSupport.messengerView()
    .tabItem { Label("Help", systemImage: "bubble.left") }
}

Modally

swift
AppwinSupport.presentMessenger()

Straight onto a conversation

swift
AppwinSupport.presentConversation(id: conversationId)

Attaching your user

Left alone, the conversation belongs to the device. AppwinCore.identify attaches it to your app's user, once at sign-in: identity is owned by Core, so Community recognises the same person at the same moment, and the id is kept across launches. Support has no login function of its own.

AppwinCore.updateUser enriches the record your team sees in the inbox without changing identity. An omitted field is not overwritten: an app that only knows the email does not erase the name. The fields are email, name, avatarUrl, language, timezone, location and plan, on every platform.

swift
try await AppwinCore.identify(
  externalId: user.id,
  attributes: AppwinUserAttributes(email: user.email, name: user.displayName)
)

try await AppwinCore.updateUser(AppwinUserAttributes(plan: "pro"))

// Sign-out: back to an anonymous visitor.
await AppwinCore.logout()

The inbox

Support → Inbox. The list of the project's conversations, or of every app in the organisation. Search covers message content, and a tag filter combines with the others: "Open" plus the "Bug" tag gives the queue of what is broken.

FilterWhat it shows
OpenWhat is waiting for an answer
UrgentWhat the team marked urgent
StarredWhat you keep at hand
ResolvedThe archive
By tagOne specific theme

The thread looks like a messaging conversation; what your team writes appears on the agent side, with the name and picture set in Customise. A conversation is marked resolved once handled, and a new message from the user reopens it, so nothing is lost because someone closed it too early.

Macros

Support → Macros. Pre-written, reusable replies. A macro carries a name ("Refund request"), some content, and an optional shortcut you type in the conversation to insert it. It is global (every app in the organisation) or limited to certain projects: a macro that mentions a price specific to one app has no business in the others.

Start from a real reply you have already written three times, leave the parts that need personalising in plain sight, and give it a short, memorable shortcut (refund, bug-ios). A macro is a starting point, not an automatic send: it is inserted into the reply field, where you read it again and adjust it.

Tags

Support → Tags. Coloured labels to classify conversations. Like macros, a tag is global or limited to certain projects, and it sorts by usage ("most used"), which quickly shows the recurring themes. Deleting a tag removes it from every conversation that carried it; the action is confirmed, and permanent.

Tags are also a measurement tool. Three months of tagged conversations give you the list of subjects that cost the team the most time, the starting point of a good FAQ.

FAQ

Support → Manage the FAQ. Articles filed by category, shown in the SDK's help centre. Categories are renamable, reorderable and collapsible; an article is a question and a formatted answer (bold, lists, emoji); a switch shows the FAQ in the app or not, without touching the articles.

An FAQ that actually helps:

  1. Filter the inbox on Resolved and pick the five questions that come back most.
  2. Create one category per real theme ("Subscription", "Account", "Known bugs"), not per internal org chart.
  3. Write the question in the user's words: "How do I cancel my subscription?", not "Billing cycle management".
  4. Answer in three sentences. An article that requires scrolling is not read.
  5. Publish, then watch: if the question keeps arriving, the article is either unfindable or unclear.

Customising the messenger

Support → Customise. Three tabs, with a live preview. Everything is re-read by the SDK on open, so no change requires resubmitting your app.

TabWhat you set
MessagingAgent name and picture, welcome message
HomeWhat shows when the help centre opens
DesignColours, corner radii, logo

The welcome message is what someone opening the messenger for the first time sees. It sets the tone and frames expectations: "We are a small team based in Nice, we answer within 24 hours" beats "How can we help you?".

Settings

Support → Settings.

TabContents
LanguagesThe team's preferred language, automatic translation of incoming messages
SDKApp ID, enabling the product
AIAssisted replies

Automatic translation translates your users' messages into your language, so the conversation continues without an intermediary. It does not replace your reply: it saves you guessing.

Next