Xata Onboarding & Data Import
NewShippedThe activation path for new Xata users, covering an onboarding hub, a guided data import wizard, an integrations page and the analytics to measure them.
Xata Onboarding & Data Import
Getting a new user from signup to a connected database is the console's highest leverage path. Over the second half of the year I rebuilt it: a persistent onboarding hub in place of dismissible cards, a guided wizard for bringing existing Postgres data across, an integrations directory, and instrumentation designed so the flow can be measured and changed cheaply. Part of the Xata Console.

Key Contributions:
- Onboarding hub: Replaced the post creation cards with a hub of three collapsible hooks, surfacing the connection string inline rather than behind a navigation.
- Persistent dismissal: Made dismissal whole hub and persisted per project on the server, restorable from project settings so an early dismissal is not permanent.
- Data import wizard: Built a three step flow covering provider, clone or mirror, then CLI command and docs, presented as a side sheet with accessible naming and focus management added where Radix does not provide it.
- Provider selection: Flattened a primary list and a separate other providers section into one grid, ordered so the two most common sources come first.
- Reachability: Added a second entry point in the branch header so the wizard survives hub dismissal, with a source property on the event so entry points can be compared.
- Segmentation questions: Added use case and incumbent database pickers to signup, emitting analytics events only, keeping them cheap to change while the flow evolves.
- Instrumentation: Instrumented the connect experience additively, tracking options opened, endpoint changes, framework selection and connection string copies broken down by segment.
- Integrations directory: Shipped an integrations page behind a feature flag for internal review, added n8n, GitHub and Cursor entries with guides, then removed the flag.
Technical Impact:
The principle throughout was to instrument before persisting. Onboarding answers land in analytics rather than the database, so the questions can change weekly without a migration, and every new event was added additively so existing dashboards stayed valid. Structurally, the hub replaced a set of one off cards with a single component that owns its own dismissal state, which meant later additions like the import wizard and the n8n panel could be slotted in without touching the branch page.
Project Structure:
- Onboarding hub: collapsible hooks, server persisted dismissal, restorable from settings
- Import wizard: provider grid, clone and mirror step, CLI handoff, side sheet presentation
- Signup questions: use case picker, incumbent database picker, analytics only persistence
- Integrations: directory page, provider cards, connection guides
