Capture
Turn customer signals into structured insight, from every channel.
- Feature Requests
- Surveys
- Forms
- Waitlist
Every customer-facing surface — feedback, roadmap, changelog, help center, support, status, surveys, forms, custom pages, automations, and more — from one dashboard, one API, one SDK.
Turn customer signals into structured insight, from every channel.
Answer customers with tools they never have to be taught.
Keep everyone in the loop, across every surface you own.
Turn happy customers into your best growth channel.
Publish customer-facing pages without writing any code.
Wire your stack to every event the platform captures.
See the whole customer, and what actually moves them.
Surveys
Draft it in the dashboard, or over MCP from Claude Code or Cursor. Every draft is validated against the schema and created disabled, so nothing reaches a customer until you have read it.
DROP IT IN
Five SDKs over one API. Install the one that matches your stack, point it at your project, and every module renders with your own data — no backend to stand up.
npm install @appgram/react import { AppgramProvider, useWishes } from '@appgram/react';
function FeatureRequests() {
const { wishes, isLoading } = useWishes();
if (isLoading) return <Spinner />;
return wishes.map((wish) => (
<article key={wish.id}>
<h3>{wish.title}</h3>
<p>{wish.description}</p>
</article>
));
}
export default function App() {
return (
<AppgramProvider
config={{
projectId: 'proj_xxx',
orgSlug: 'acme',
projectSlug: 'feedback',
}}
>
<FeatureRequests />
</AppgramProvider>
);
} import { AppgramProvider, WishList } from '@appgram/react-native';
export default function Feedback({ navigation }) {
return (
<AppgramProvider
config={{
projectId: 'proj_xxx',
orgSlug: 'acme',
projectSlug: 'feedback',
}}
>
<WishList
showSubmitButton
onWishPress={(wish) =>
navigation.navigate('Wish', { id: wish.id })
}
/>
</AppgramProvider>
);
} <script src="https://cdn.appgram.dev/embed.js"></script>
<script>
// One tag, no build step, any stack.
AppGram.init({
projectId: 'your-project-id',
orgSlug: 'your-org',
projectSlug: 'your-project',
pages: ['feedback', 'roadmap', 'releases', 'help'],
position: 'bottom-right'
});
</script> import 'package:appgram_flutter/appgram_flutter.dart';
import 'package:flutter/material.dart';
void main() {
runApp(
AppgramProvider(
config: AppgramConfig(
projectId: 'proj_xxx',
orgSlug: 'acme',
projectSlug: 'feedback',
),
child: const MaterialApp(
home: HelpCenter(),
),
),
);
} import SwiftUI
import AppGramSDK
@main
struct FeedbackApp: App {
init() {
AppGramSDK.shared.configure(
projectId: "proj_xxx"
)
}
var body: some Scene {
WindowGroup {
AppGramSDK.shared.feedbackView()
}
}
} PREVIEW
A real production portal — votes, roadmap, releases, help center — on the desktop and on the phone. Open it up and click through exactly what your users get.
Load the live portal → Open the live portal →Deploy on your own servers with your own database, run on managed cloud, or split the difference. Zero vendor lock-in. SAML SSO, SCIM provisioning, audit logs, IP allowlisting, and data residency controls come standard.
FAQ
You can be up and running in less than 5 minutes. Just create an account, customize your subdomain (e.g., feedback.yourcompany.com), and you’re ready to share the link.
Absolutely. You can have public boards for customers and private boards for internal team planning. You control the visibility of every single item.
Yes. We offer native integrations for Slack, Discord, and Linear. For everything else, we have a robust API and Webhooks to fit into any workflow.
Security is our priority. We use enterprise-grade encryption in transit and at rest. We also support SSO (Single Sign-On) for Business plans.
We offer a CSV importer that allows you to bring over your existing feature requests and user data in just a few clicks.
GET STARTED
Everything you were bolting together — feedback, roadmap, changelog, help, support, status, forms — in a single workspace with one API and one bill.
Cancel anytime. Yours to test on real customers.