Overview
Event ingestion allows you to:- Track all authentication events (40+ event types)
- Store events in various databases (Postgres, ClickHouse, SQLite, etc.)
- Filter and monitor specific event types
- Display events in a live marquee
- Create custom event handlers
- Query event history and statistics
Configuration
Configure events in yourstudio.config.ts:
studio.config.ts
Event Options
Enable or disable event trackingDefault:
falseName of the table/collection to store eventsDefault: Uses Better Auth adapter’s default table
Custom event ingestion provider implementation. Use this to implement your own event storage logic.
Client instance for the database (Prisma client, Drizzle instance, Postgres pool, ClickHouse client, etc.)
Type of database client being usedOptions:
"postgres", "prisma", "drizzle", "clickhouse", "https", "custom", "sqlite", "node-sqlite"Array of event types to track. Only these events will be ingested.
Array of event types to exclude from tracking. All other events will be ingested.
Number of events to batch before flushing to the databaseDefault:
100Interval in milliseconds to flush batched eventsDefault:
5000 (5 seconds)Retry failed event ingestionDefault:
falseCallback function invoked when an event is ingested. Use this for custom processing, logging, or side effects.
Configuration for the live event marquee displayed in StudioSee Live Marquee Configuration below
Event Types
Studio tracks 40+ authentication event types:User Events
user.joined- User signed upuser.logged_in- User logged inuser.logged_out- User logged outuser.updated- User profile updateduser.password_changed- Password changeduser.email_verified- Email verifieduser.banned- User banneduser.unbanned- User unbanneduser.deleted- User deleteduser.delete_verification_requested- Delete verification requested
Session Events
session.created- New session createdlogin.failed- Login attempt failed
Organization Events
organization.created- Organization createdorganization.updated- Organization updatedorganization.deleted- Organization deletedmember.added- Member added to organizationmember.removed- Member removed from organizationmember.role_changed- Member role changed
Team Events
team.created- Team createdteam.updated- Team updatedteam.deleted- Team deletedteam.member.added- Member added to teamteam.member.removed- Member removed from team
OAuth Events
oauth.linked- OAuth account linkedoauth.unlinked- OAuth account unlinkedoauth.sign_in- User signed in via OAuth
Password Reset Events
password.reset_requested- Password reset requestedpassword.reset_completed- Password reset completedpassword.reset_requested_otp- OTP password reset requestedpassword.reset_completed_otp- OTP password reset completed
Invitation Events
invitation.created- Invitation createdinvitation.accepted- Invitation acceptedinvitation.rejected- Invitation rejectedinvitation.cancelled- Invitation cancelled
Phone Number Events
phone_number.otp_requested- Phone OTP requestedphone_number.verification- Phone number verified
Event Structure
Live Marquee Configuration
The live marquee displays recent events in real-time at the top of the Studio dashboard:Enable or disable the live event marqueeDefault:
truePolling interval in milliseconds for fetching new eventsDefault:
2000 (2 seconds)Animation speed in pixels per frameDefault:
0.5Pause animation when mouse hovers over the marqueeDefault:
trueMaximum number of events to display in the marqueeDefault:
50Sort order for events
"desc": Newest first (default)"asc": Oldest first
Custom colors for different event severities
Time window for fetching eventsPresets:
"15m", "30m", "1h", "2h", "4h", "6h", "12h", "1d", "2d", "3d", "7d", "14d", "30d"Example Configurations
Track All User Events
studio.config.ts
Exclude Noisy Events
studio.config.ts
Custom Event Handler
studio.config.ts
ClickHouse Integration
studio.config.ts