Customer support

AppRefer includes in-app support. Customers write from your app; your team answers from the Support inbox in the dashboard. Each conversation shows what the customer paid and which campaign brought them in.

How customers are identified#

The app calls the session endpoint once with the public SDK key. AppRefer returns a support session token, which the SDK keeps in secure storage. A customer only ever sees conversations started with their own session. Pass the same app user id you use for purchases to link conversations to payments and attribution.

Endpoints#

All requests send X-AppRefer-Key: pk_…. Every call except creating a session also sends X-AppRefer-Support-Session: ars_….

RequestPurpose
POST /api/support/v1/sessionBody: appUserId?, deviceId?, name?, email?. With no session header it returns a new token ({ session, created: true }). With a valid header it updates the stored profile.
GET /api/support/v1/conversationsThe customer's conversations, newest first, each with an unread count of team replies.
POST /api/support/v1/conversationsStart a conversation. Body: text, subject?, context? (appVersion, os, device, locale, platform).
GET /api/support/v1/conversations/{id}?after=ISOMessages visible to the customer (internal notes are never returned). Use after to poll for new replies. Reading clears the unread count.
POST /api/support/v1/conversations/{id}/messagesThe customer replies. Body: text. A closed conversation reopens.
POST /api/support/v1/conversations
X-AppRefer-Key: pk_live_…
X-AppRefer-Support-Session: ars_…
Content-Type: application/json

{ "text": "I was charged twice", "context": { "appVersion": "2.4.1", "platform": "ios" } }

Support seats#

Give a support person the Support inbox without the rest of AppRefer. On the Team page, a company admin adds a support seat with an email, the apps it covers and a refund limit in USD. A support lead can also take account actions; a support agent only replies. Seat holders sign in at /support with that email. They see what each customer bought, but not revenue reports, ad data, keys or settings, and not which campaign brought a customer in. Replies, notes and status changes are recorded in the audit log.

Limits#

Messages are up to 10,000 characters. Requests are limited per device IP and per session. Live and test SDK keys keep separate sessions.