# Introduction
> In-app support for iOS apps and websites. Users write in from inside your product; replies land back where they asked.
Source: https://feddy.app/docs/
Feddy gives the people using your app or website a place to write in, and gives you one inbox to answer from. Replies show up inside the product, and by email when you have set up a sending domain. An assistant answers repeat questions from answers you approved, and hands everything else to you.
## Before you start
## Add Feddy to your product
Pick your platform. Each page takes about five minutes and ends with a message in your inbox.
## Learn how it works
## Go further
- [Identify users](/docs/guides/identify-users/) so you know who wrote in and replies can reach them by email.
- [Unread badge](/docs/guides/unread-badge/) on the row that opens Feddy, or anywhere else.
- [iOS SDK reference](/docs/reference/ios/) and [Web SDK reference](/docs/reference/web/) for every call and option.
- [Troubleshooting](/docs/troubleshooting/) when something does not behave as expected.
---
# Create a project
> One project per app or website, and where to find its public project ID.
Source: https://feddy.app/docs/getting-started/create-a-project/
Everything the SDK sends is tied to a project. Create one before you install anything.
## Sign up
Create an account at [dash.feddy.app](https://dash.feddy.app/signup). The free plan has no time limit and is enough to finish every page in these docs.
## Create the project
A project is one app or website and everything that comes from it: conversations, contacts, topics, answers, and settings. Create one per product. An iOS app and its website can share a project if the same people answer both; use two if you want separate inboxes.
## Copy the project ID
Open **Settings → Install**. The project ID looks like `fd_` followed by 16 characters. Every quickstart asks for it.
The project ID is public by design. It ships inside your binary and in your page source, so anyone can read it. Commit it, hard-code it, put it in a public repository. There is no way to rotate it and no need to; abuse is handled by rate limits on the server.
## Development and production
Use one project for both. The SDK's `apiUrl` option exists so you can point a development build at a local server; the project ID stays the same. Create a second project only if you want test conversations out of your real inbox.
## Next steps
- Pick a platform on the [documentation home](/docs/) and follow its quickstart.
- Read [Projects](/docs/concepts/projects/) for everything a project owns.
---
# Set up with an AI agent
> Hand the install to Claude Code, Cursor, or any coding agent that can read these docs.
Source: https://feddy.app/docs/getting-started/ai-agent/
Every install in these docs is a few lines of code in a known place. An agent can do it for you if it knows your project ID and where the docs are.
## The prompt in your dashboard
Every project's **Settings → Install** page has a prompt written for coding agents. It contains your project ID and the steps for your platform, so you can paste it into the agent as is. Read what the agent changed before you ship it; the [quickstart](/docs/) for your platform shows what a correct install looks like.
## Where agents can read these docs
- **Context7**: the docs are indexed from the public [FeddyLab/feddy-docs](https://github.com/FeddyLab/feddy-docs) repository. Agents with the Context7 tool can look up `feddy` directly.
- **llms.txt**: [feddy.app/llms.txt](https://feddy.app/llms.txt) lists every page with a one-line summary; [feddy.app/llms-full.txt](https://feddy.app/llms-full.txt) is the full text of every page in one file.
- **The SDK sources**: the iOS package at [FeddyLab/feddy-ios](https://github.com/FeddyLab/feddy-ios) is public. Every call the docs mention is in there.
## What to check afterwards
- `configure` or `init` runs once, with your project ID, before any other Feddy call.
- The entry point is somewhere users already look for help, usually Settings.
- A message sent from a debug build shows up in your inbox. Reply to it and the reply shows up in the app.
---
# SwiftUI
> Add Feddy to a SwiftUI app with Swift Package Manager and send your first message.
Source: https://feddy.app/docs/quickstart/swiftui/
By the end of this page your app has a support entry point, and a message sent from it shows up in your Feddy inbox.
## Prerequisites
- A Feddy project and its project ID from **Settings → Install**. [Create a project](/docs/getting-started/create-a-project/) if you have none.
- Xcode 15 or later. The SDK targets iOS 15 and has no third-party dependencies.
## Install
In Xcode choose **File → Add Package Dependencies…** and paste:
```
https://github.com/FeddyLab/feddy-ios
```
Or add it to `Package.swift`:
```swift
.package(url: "https://github.com/FeddyLab/feddy-ios", from: "0.7.0")
```
## Initialize
Call `configure` once, before any other Feddy call. Later calls are ignored.
```swift title="App.swift"
import Feddy
@main
struct MyApp: App {
init() {
Feddy.configure(projectId: "fd_XXXXXXXXXXXXXXXX")
}
var body: some Scene { WindowGroup { ContentView() } }
}
```
The project ID ships inside your binary and is public by design. Commit it. Do not put it in a secrets file or an environment variable.
## Add an entry point
Put a row where users already look for help, usually in Settings:
```swift
Form {
Button("Support") { Feddy.present() }
.feddyUnreadBadge()
}
```
`present()` opens the conversation list as a sheet over whatever is on screen. `presentNewConversation()` skips the list and opens the compose form.
## Verify
Run the app, open the row, and send a message. It appears in your Feddy inbox. Reply from the inbox; the reply shows up in the sheet and the row's badge shows `1` until the user reads it.
## Next steps
- [Identify users](/docs/guides/identify-users/) so replies can also reach them by email and you see who wrote in.
- [Unread badge](/docs/guides/unread-badge/) for a custom row or a tab bar item.
- [iOS SDK reference](/docs/reference/ios/) for every public call.
---
# UIKit
> Add Feddy to a UIKit app with Swift Package Manager and send your first message.
Source: https://feddy.app/docs/quickstart/uikit/
By the end of this page your app has a support entry point, and a message sent from it shows up in your Feddy inbox.
## Prerequisites
- A Feddy project and its project ID from **Settings → Install**. [Create a project](/docs/getting-started/create-a-project/) if you have none.
- Xcode 15 or later. The SDK targets iOS 15 and has no third-party dependencies.
## Install
In Xcode choose **File → Add Package Dependencies…** and paste:
```
https://github.com/FeddyLab/feddy-ios
```
Or add it to `Package.swift`:
```swift
.package(url: "https://github.com/FeddyLab/feddy-ios", from: "0.7.0")
```
## Initialize
Call `configure` once, before any other Feddy call. Later calls are ignored.
```swift title="AppDelegate.swift"
import Feddy
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Feddy.configure(projectId: "fd_XXXXXXXXXXXXXXXX")
return true
}
```
The project ID ships inside your binary and is public by design. Commit it. Do not put it in a secrets file or an environment variable.
## Add an entry point
Call `present()` from wherever users look for help, usually a row in Settings or a bar button item. It presents the conversation list as a sheet over the current view controller.
```swift title="SettingsViewController.swift"
@objc func helpTapped() {
Feddy.present()
}
```
To show unread replies on the control, assign `onUnreadCountChanged`. It is called on the main thread whenever the count changes:
```swift
Feddy.onUnreadCountChanged = { count in
helpItem.badgeValue = count > 0 ? "\(count)" : nil
}
```
## Verify
Run the app, tap the control, and send a message. It appears in your Feddy inbox. Reply from the inbox; the reply shows up in the sheet and the badge shows `1` until the user reads it.
## Next steps
- [Identify users](/docs/guides/identify-users/) so replies can also reach them by email and you see who wrote in.
- [Unread badge](/docs/guides/unread-badge/) for refreshing on foreground and other placements.
- [iOS SDK reference](/docs/reference/ios/) for every public call.
---
# JavaScript
> Add the Feddy widget to any page with one script tag and send your first message.
Source: https://feddy.app/docs/quickstart/javascript/
By the end of this page your site has a support launcher, and a message sent from it shows up in your Feddy inbox.
## Prerequisites
- A Feddy project and its project ID from **Settings → Install**. [Create a project](/docs/getting-started/create-a-project/) if you have none.
- A page you can edit. There is no build step and nothing to install from npm.
## Install
Load the widget before the closing `