Customer support that lives inside your App
Messages from your iOS App and website, in one inbox, with device and plan facts already attached. AI answers the repeat questions
14 days of Pro, no card required
Every message arrives
with the facts
Device, version, plan and language come attached, so you never have to ask which version they are on. Your reply goes back where they asked.
Milo answers from your docs.
The rest comes to you.
It reads your website, your App Store page and anything you paste, replies in the user's language, and learns from how your team answers. What it can't answer, it hands to you with a note.
Answer with AI
Replies on its own from your answers and sources, and stops when it is not sure
Suggest replies to me
Nothing goes to users. Its draft waits for you in the inbox
Learns as you reply
Keeps what the next user should hear. Every change can be undone
Copilot
Drafts, summarizes and translates in the inbox. You press send
Know what to build next
Milo files what users ask for into one list, with how many asked and how many of them pay. When it ships, one message tells everyone who asked.
Ten minutes,
no backend required
Add the Swift package or the script tag, paste your project ID, ship. Identity, message history and unread badges are handled for you.
import Feddy Feddy.configure(projectId: "fd_XXXXXXXXXXXXXXXX") Button("Support") { Feddy.present() } .feddyUnreadBadge()import Feddy Feddy.configure(projectId: "fd_XXXXXXXXXXXXXXXX")Feddy.onUnreadCountChanged = { count in helpItem.badgeValue = count > 0 ? "\(count)" : nil} @objc func helpTapped() { Feddy.present() }<script src="https://core.feddy.app/sdk/feddy.js"></script><script> Feddy.init({ projectId: 'fd_XXXXXXXXXXXXXXXX' })</script>import { useEffect } from 'react' export function Support() { useEffect(() => { const el = document.createElement('script') el.src = 'https://core.feddy.app/sdk/feddy.js' el.onload = () => Feddy.init({ projectId: 'fd_XXXXXXXXXXXXXXXX', launcher: false }) document.body.append(el) }, []) return <button onClick={() => Feddy.open()}>Support</button>}<script setup>import { onMounted } from 'vue'onMounted(() => { const el = document.createElement('script') el.src = 'https://core.feddy.app/sdk/feddy.js' el.onload = () => Feddy.init({ projectId: 'fd_XXXXXXXXXXXXXXXX', launcher: false }) document.body.append(el)})const open = () => Feddy.open()</script> <template><button @click="open">Support</button></template><script> import { onMount } from 'svelte' onMount(() => { const el = document.createElement('script') el.src = 'https://core.feddy.app/sdk/feddy.js' el.onload = () => Feddy.init({ projectId: 'fd_XXXXXXXXXXXXXXXX', launcher: false }) document.body.append(el) })</script> <button onclick={() => Feddy.open()}>Support</button>'use client'import Script from 'next/script' export function Support() { return ( <Script src="https://core.feddy.app/sdk/feddy.js" strategy="afterInteractive"> onLoad={() => Feddy.init({ projectId: 'fd_XXXXXXXXXXXXXXXX' })} /> )}// Render once in app/layout.tsx<script is:inline src="https://core.feddy.app/sdk/feddy.js"></script><script is:inline> Feddy.init({ projectId: 'fd_XXXXXXXXXXXXXXXX' })</script>add_action('wp_enqueue_scripts', function () { wp_enqueue_script('feddy', 'https://core.feddy.app/sdk/feddy.js', [], null, true); wp_add_inline_script('feddy', "Feddy.init({ projectId: 'fd_XXXXXXXXXXXXXXXX' })");});<script src="https://core.feddy.app/sdk/feddy.js"></script><script> Feddy.init({ projectId: 'fd_XXXXXXXXXXXXXXXX' })</script>Simple pricing
Free stays free. Paid plans add Milo, email from your domain and more projects.
Pro
$19/ month
- 5 projects, unlimited teammates
- AI answers, Copilot and translation
- Email replies from your domain
- Attachments and full history
Business
$59/ month
- Unlimited projects and teammates
- Six times the AI and email allowance
- No “Powered by Feddy” badge
Founder prices. The price you subscribe at never changes
Questions
Short answers. The docs have the long ones.
Do I need a backend?
No. The SDK talks to Feddy directly. You add a package or a script tag, paste your project ID, and messages start arriving in your inbox.
Is the project ID a secret?
No. It ships inside your app and page source, and it is designed for that. Commit it. Abuse is handled by rate limits on our side, not by hiding the ID.
What does the AI actually send to my users?
Only what you gave it: answers you wrote, answers it learned from your team’s replies, and the websites, App Store page and text you added as sources. When none of that covers a question, it hands the conversation to you and the user hears you will take it from there. It never changes a conversation’s status.
How do replies reach the user?
Where they wrote from. In your iOS app the reply shows with an unread badge; on your website it opens in the widget. If they left an email address and you have verified a sending domain, it also goes out by email from that domain, with the full text in the body.
Can replies reach users by email?
Yes, from your own domain. Verify a subdomain such as support.yourapp.com and replies go out from there with the full text in the body. Feddy never emails your users from a Feddy address.
What happens when I go past a plan’s allowance?
Pro includes 500 AI replies and 500 emails a month, Business 3,000 and 2,000. Beyond that, AI replies are $3 per 100 on Pro and $2 per 100 on Business, emails $1 per 100 on both, up to a monthly ceiling you set. A reply on a larger AI model counts as more than one; the model menu shows how many. Nothing is cut off mid-conversation.
Which platforms are supported?
iOS 15 and later with a native Swift Package that has zero third-party dependencies, and any website with a single script tag. Both SDKs are open source on GitHub.
Where is my data?
On servers in the European Union, isolated per customer at the database level. Attachments are stored on Cloudflare. Nothing is used to train models. The privacy policy names every provider and what it receives.
Put customer support where your users already are
Ten minutes to install. Fourteen days of Pro, no card