Get started
Get started
Add ReceptionKit to your iOS app, send your first message, and reply from the Reception dashboard. A coding agent does the setup with one prompt; by hand it takes a package and a few lines of Swift.
Requirements
An iOS 17 or later app, using SwiftUI or UIKit.
Xcode 26 and Swift Package Manager.
A Reception dashboard account with permission to create an app.
ReceptionKit has no package dependencies. Your iOS app does not need user accounts or push notifications for its first conversation.
Create an app in the dashboard
Sign in and choose Add your app, or Settings → Apps → Add app.
Enter your app's name and create the app.
On Connect, choose Copy setup prompt for a coding agent or Set up manually for the Swift snippet. Both contain your app's configuration.
For an existing app, open Settings → Apps → your app. Before its first conversation, Connect your app offers the same setup options. Its permanent App ID is also available under Setup.
The App ID starts with app_ and is safe to include in your app. It's the only configuration your app needs.
Set up with a coding agent
Your coding agent adds ReceptionKit to your app, fits it into your app's design and flows, and checks that messages arrive. You answer two questions.
Choose Copy setup prompt in the dashboard. The prompt contains your App ID.
Paste it into your coding agent, such as Claude Code, Codex or Cursor, with your iOS project open.
Answer the agent's two questions.
Review the changes and the agent's report.
A coding agent with only this page follows the setup prompt below and asks you for the App ID.
The two questions
Where Support goes. The agent recommends a Support entry on your home screen plus a row in Settings, in your app's style. If your app already has a contact option, it asks whether Support should replace it. The entry is your app's own code, so it can look and sit wherever you like.
What your team sees about each user. The agent lists details it found in your app, such as the plan, sign-up date or number of projects. Pick any, name others, or choose none. They show next to each chat.
What the agent does by itself
Adds the package and configures it with your App ID.
Adds a line with the docs link to your project's
AGENTS.md, and toCLAUDE.mdif you have one, so later agent sessions know where to look.Matches the chat to your app's colors, font, and light or dark mode, and connects your in-app language setting if there is one.
Builds the Support entry and shows unread badges on it, on its tab, and on every row that leads to it.
Connects sign-in, sign-out and account deletion if your app has accounts.
Adds push handling without asking your users for notification permission. Once your app has permission and you've uploaded your APNs key, replies arrive as notifications.
Connects your paywall to paywall cards if your app has one.
Builds the app and runs the setup check: the app sends "Hello from setup" from a simulator, and the message appears in your inbox. It's a real message and counts as your app's first conversation.
Identity verification is not part of setup. Signed-in customers show as Unverified in the inbox until you add it with its own prompt in the dashboard. See Verified users.
Your steps afterwards
Push: upload your APNs key under Settings → Apps → your app → Apple Push Notifications, then check on an iPhone that a reply arrives. See Push notifications.
App Store privacy: update your app's privacy details in App Store Connect. Your agent can list what to select; see App Store privacy.
Reply: answer a message in the inbox and check that it arrives in the app.
Change it later
Tell your coding agent, for example "Move Support to the profile screen", "Use our secondary color in the chat" or "Also show the user's plan". The docs link next to Reception.configure and in your project's AGENTS.md leads agents in later sessions to the right page.
You can also change the chat's colors and welcome text without an app update under Settings → Apps → your app → Chat appearance. See Remote appearance.
Setup prompt
The dashboard copies this prompt with your App ID filled in.
Integrate Reception, a native in-app support chat, into this iOS app.
App ID: not included. Ask the developer for it along with the questions in step 2 (dashboard: Settings → Apps → your app → Setup) and use it wherever app_YOUR_APP_ID appears. Never ship the placeholder.
Swift package: https://github.com/andilosing/reception-ios.git (branch main), product ReceptionKit
Docs for agents: https://reception.sh/llms.txt (every page is also Markdown at https://reception.sh/docs/<page>.md)
Work through the steps in order. Keep the app's code, style and flows; change only what the integration needs.
Set up manually
Add the package
In Xcode, choose File → Add Package Dependencies and enter:
https://github.com/andilosing/reception-ios.gitSelect branch main and add the ReceptionKit product to your app target.
Configure your existing app
Configure once in your existing SwiftUI App initializer, keeping your current root view and other startup work. Replace app_YOUR_APP_ID with your App ID; Set up manually in the dashboard shows this snippet with it filled in.
import SwiftUI
import ReceptionKit
@main
@MainActor
struct MyApp: App {
init() {
Reception.configure(appId: "app_YOUR_APP_ID")
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}ContentView() represents your existing root view. Configure once at launch, before using support, and keep SDK calls on the main actor. For an existing UIKit app, follow UIKit integration.
Add a visible entry point
Place this button in your existing settings screen or another chosen SwiftUI view, and import ReceptionKit in that file:
Button {
Reception.shared.openChat()
} label: {
HStack {
Text("Support")
Spacer()
if Reception.shared.unreadCount > 0 {
Text("\(Reception.shared.unreadCount) unread")
.foregroundStyle(.secondary)
}
}
}openChat() presents the chat sheet. The unread count updates the view automatically. Adapt the label and badge to your app's styling and localization. See Open & close the chat for other placements and presentations.
If your app manages its own icon badge, set Reception.shared.updatesAppBadge = false at launch. Your in-app support badge still works.
Development builds
Simulator and iPhone builds connect to the hosted service with ordinary internet access. A separate app in the dashboard keeps test conversations apart from customer messages.
Send your first message
Run your app and open Support.
Send
Hello from setupand wait for Sent, or its localized equivalent, below the message.Open that conversation in the dashboard. On Connect, it appears after First message received; otherwise find it in Inbox with the same app selected.
Reply with a recognizable message, such as
Hello back from the dashboard, and confirm it appears in the iOS chat.Dismiss and reopen chat to check the entry point.
Sent confirms Reception accepted the message. Seeing your dashboard reply in the app confirms the return path. Building the app or opening an empty chat alone does not verify the connection.
If you are in onboarding, choose Continue to reach Integrations, then continue to Revenue before Go to inbox. Push, Telegram, reviews, and revenue connections are also available in app settings.
If verification fails
| Symptom | What to check |
|---|---|
| Chat does not open | Configure before the button is used; check whether another sheet is already presenting. |
| The message is not sent | Check the copied configuration and internet connection. Follow any wait shown in chat, then use Retry when available. |
| The dashboard is still waiting | Check that you selected the app whose App ID is in your build. |
| A reply does not appear | Keep the app active with chat open and check its connection message. |
See Troubleshooting for more help. Something not working? Write to us in the Reception chat. We're happy to help. Briefly describe what happens and any error message you see.
Next steps
Users & accounts: show customer information and connect sign-in, sign-out, and account deletion.
Push notifications: let customers receive replies while away from the app; verify delivery on an iPhone.
Appearance and Language: match your existing theme and language settings.
Paywalls: open your app's existing purchase screen from a support card.
Dashboard: work with conversations, your team, and optional integrations.
Swift API reference: look up SDK calls and options.