Documentation Index
Fetch the complete documentation index at: https://docs.firstflow.app/llms.txt
Use this file to discover all available pages before exploring further.
General
What is Firstflow?
What is Firstflow?
Do I need to change my backend?
Do I need to change my backend?
Does it work with any chat framework?
Does it work with any chat framework?
Is there a vanilla JS SDK?
Is there a vanilla JS SDK?
@firstflow/react, @firstflow/nextjs, and @firstflow/react-native. A vanilla JS version is on the roadmap.Integration
Where does FirstflowWidget go?
Where does FirstflowWidget go?
experiencePlacement prop.Can I use Firstflow without FirstflowWidget?
Can I use Firstflow without FirstflowWidget?
Survey component directly for standalone surveys, or use useFirstflowSurvey() to build a fully custom survey UI. Analytics tracking via useFirstflow().analytics works independently.Can I use it with React Server Components?
Can I use it with React Server Components?
"use client"). The Next.js SDK’s getFirstflowConfig() can be called from Server Components to prefetch config. See the Next.js integration guide.How do I update experiences without deploying?
How do I update experiences without deploying?
firstflow.refreshConfig() to force an immediate reload.Targeting
How do I target specific users?
How do I target specific users?
FirstflowProvider:What's the difference between segments and rules?
What's the difference between segments and rules?
- Segments are server-computed groups. Membership is calculated by the Firstflow backend based on stored user properties and returned in the SDK config. Use segments for complex or frequently-changing criteria.
- Rules are evaluated client-side against
user.traits. Use rules for simple trait-based targeting that doesn’t require server computation.
Can I show multiple experiences at once?
Can I show multiple experiences at once?
FirstflowWidget shows one experience at a time — the highest-priority eligible one. Priority is set per-experience in the Dashboard.How do I prevent an experience from showing again?
How do I prevent an experience from showing again?
once in the Dashboard. The SDK stores the show record in localStorage. To reset during testing, clear keys starting with ff_exp_.Technical
How is config cached?
How is config cached?
agentId + apiKey pair. Multiple FirstflowProvider instances with the same credentials share the cache. Call refreshConfig() to bypass it.Where is frequency data stored?
Where is frequency data stored?
localStorage for most frequency types (keys prefixed ff_exp_). Session-scoped frequencies use sessionStorage. React Native uses AsyncStorage.Does it work with SSR?
Does it work with SSR?
@firstflow/nextjs SDK supports server-side config prefetching via getFirstflowConfig(). The result is passed as initialSdkPayload to avoid a client-side waterfall.How do decision nodes work at runtime?
How do decision nodes work at runtime?
traits.plan) or survey answers (answers.<questionId>). If no branch matches, the SDK follows the first available outgoing edge.What message styles are available?
What message styles are available?
| Style | Description |
|---|---|
message | Simple chat bubble |
card | Card with optional icon, title, and CTA |
carousel | Horizontally scrollable cards |
quick_replies | Message with reply option pills |
rich_card | Card with hero image/video, tags, and meta |
Can I override the API URL?
Can I override the API URL?
Data and privacy
Where is data stored?
Where is data stored?
- Application data: PostgreSQL on AWS
- Analytics events: Data warehouse (ClickHouse)
- User frequency records: Client-side localStorage / AsyncStorage
Is user data shared with third parties?
Is user data shared with third parties?
Can I self-host?
Can I self-host?
Dashboard
What is an agent?
What is an agent?
What are the differences between experience types?
What are the differences between experience types?
| Type | Description |
|---|---|
| Tour | Multi-step flow using message nodes |
| Survey | Flow with survey question nodes, collects responses |
| Announcement | Single announcement card with optional CTA |
How do webhooks work?
How do webhooks work?
survey.submitted and experience.completed. All payloads are HMAC-SHA256 signed.