Bubble migration
★★★★★ 4.5 CE

Bubble Migration & Switching Guide 2026

Bubble imports data by CSV or Data API and exports it as CSV, JSON or NDJSON, but you cannot import a site or export the app itself. Leaving means a full rebuild.

Bubble Migration verdict

Verified today·5 sources checked

Bubble migration is a one-way street on data and a dead end on the app.

You can import records, by CSV one type at a time or the Data API, and export them back out as CSV, JSON or NDJSON. But you cannot import an existing site or export your app's logic or source code.

How to plan the move

Bubble suits teams committed to building and staying on it who need to load data in and keep a clean data-export path out. It is less ideal if you need to move an existing app in, or want the option to take the built application off Bubble later.

Honest limits
  • There is no way to import an existing external site or app into Bubble, since only data moves in, via CSV or the Data API.
  • CSV import is one data type at a time, fields must already exist, and system fields like Unique ID, dates, Creator and Slug cannot be imported. You can export your data, as CSV, JSON or NDJSON, or the Data API, but not the application, its logic or any source code.
  • Bubble states migrating an app away from its hosting is not possible, so leaving Bubble means a full rebuild.
Import in
Data only (CSV / Data API)
Site/app import
Not supported
Data export
CSV / JSON / NDJSON
Code / app export
None
Lock-in
Heavy (rebuild to leave)
View sources

This page covers importing into Bubble and switching away. SEO output and pricing live on their own pages.

What moves into Bubble, and can you leave?

Bubble migration configuration

Upload one data type at a time under Data, App data. Column headers must match fields that already exist on the type; system fields (Unique ID, Creator, dates, Slug) are managed by Bubble and are not imported. Supported delimiters are comma, semicolon, tab and pipe.

CSV import formatcsv
name,email,plan,signup_source
Ada Lovelace,[email protected],Pro,referral
Alan Turing,[email protected],Free,organic
# one data type per upload; headers must match existing fields;
# Unique ID / Creator / Created Date / Modified Date / Slug are NOT importable

Enable the Data API under Settings, API, then POST to the data endpoint for a type to create records programmatically. Use it to wire relations after a CSV import or to stream data in from another system. Requests are authenticated with a private API key as a bearer token.

Data API (create a record)bash
curl -X POST "https://my-app.bubbleapps.io/api/1.1/obj/customer" \
  -H "Authorization: Bearer YOUR_PRIVATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Ada Lovelace","email":"[email protected]","plan":"Pro"}'
# returns the new thing's unique id; use it to link related records

Under Data, App data, select a type, set up a view, click Export and pick CSV, JSON or NDJSON; Bubble emails a download link when the export is ready. The Data API also reads records out programmatically. This is the portability you keep, your data, not the app.

Export your data outbash
# UI: Data > App data > (pick type) > Export > CSV | JSON | NDJSON
# Bubble emails a link when the export is done.

# Or read out programmatically via the Data API:
curl -H "Authorization: Bearer YOUR_PRIVATE_API_KEY" \
  "https://my-app.bubbleapps.io/api/1.1/obj/customer?limit=100&cursor=0"

What moves into Bubble

AssetInto BubbleDetailSource
External site or appNot supportedNo tool imports or converts an existing site/app; rebuild it in Bubble
Database records (CSV)SupportedBuilt-in CSV uploader maps columns to fields; delimiters , ; tab |
One data type per runRequiredUpload a single type at a time; fields must already exist with matching names
System fieldsCannot importUnique ID, Creator, Created/Modified Date and Slug are set by Bubble
Programmatic importData APIAccept incoming requests to create/edit records; good for relations and automation
Import validationBuilt-inField-mapping and a validation step before commit; delimiters comma, semicolon, tab, pipe

Import-to-target mapping

Source elementLands in Bubble asCaveatSource
CSV columnField on one data typeField must exist first; matching column names auto-map; cannot create fields on import
Multiple data typesMultiple separate runsOnly one data type per upload
Unique ID / Creator / dates / SlugNot importedAuto-created and managed by Bubble
Relations between typesRebuild via Data APILink records after import using the Data API
Large importsQueuedImporter shares the API-workflow scheduler; can sit at 0% until its turn
Pages, workflows, logicRebuilt by handNo import path; this is the bulk of the work

Bubble migration timeline and rollout

PhaseWhat happensEffortSource
1. Model data typesCreate types and fields in Bubble firstMedium, fields must pre-exist to import
2. Import recordsCSV uploader, one type per runLow per type, but one at a time and queued
3. Rebuild appPages, workflows and logic built by handHigh, no import for app structure
4. Wire relationsData API links records and automatesMedium, programmatic
5. Domain cutoverPoint A records to Bubble (Cloudflare IPs)Low, up to 24-48h to propagate

What to verify before you commit to Bubble

  • You can take your data with you, in CSV, JSON or NDJSON, or through the Data API, so the records you build up are never trapped
  • You cannot take the application: Bubble runs on a proprietary engine and states plainly that moving an app off its hosting is not possible, so there is no source-code or logic export
  • Because the app cannot leave, switching platforms means rebuilding the pages, workflows and logic from scratch elsewhere; only the data carries over
  • Even the domain move in is gated: custom domains require a paid plan and point apex A records at Cloudflare IPs, and propagation can take up to 24-48 hours

Bubble Migration FAQ

Can I import an existing website or app into Bubble?

No. Bubble has no tool to import or convert an existing site or app's pages, design or logic. Only database records come in, through the built-in CSV importer, one data type at a time, or the Data API. The app itself, pages, workflows and logic, is rebuilt by hand in the Bubble editor.

How do I import data into Bubble?

Use the CSV uploader under Data, App data: one data type at a time, with column headers that match fields that already exist on the type. You cannot create fields during import. System fields like Unique ID, Creator, the dates and Slug are managed by Bubble and are not imported. The Data API handles programmatic imports and relations.

Can I get my data back out of Bubble?

Yes. Under Data, App data you can export any data type to CSV, JSON or Newline-Delimited JSON, and Bubble emails a download link when it is ready. The Data API also reads records out programmatically, so your data is portable even though the app is not.

Can I export my Bubble app or its source code?

No. Bubble runs on a proprietary client-plus-server engine and states that migrating an app away from its hosting is not possible. There is no source-code, logic or app export, so you cannot self-host a Bubble app or move it to another platform.

What does it take to leave Bubble?

A full rebuild. You can export your data, via CSV, JSON, NDJSON or the Data API. But because the application cannot be exported, you would recreate the pages, workflows and business logic from scratch on another platform. That lock-in is the single most important thing to weigh before committing.

Sources & verification

Verified by ComparEdgeMethod: Vendor docs, official pages, and selected independent sources
SourceWhat was checkedLast checked
Bubble OfficialOfficial product pageJuly 10, 2026
Bubble Export Import Data Exporting DataExport Import Data Exporting DataJuly 10, 2026
Bubble Export Import Data Importing Data CsvExport Import Data Importing Data CsvJuly 10, 2026
Bubble Hosting And Scaling How Bubble Hosting WorksHosting And Scaling How Bubble Hosting WorksJuly 10, 2026
Bubble Web App Custom Domain And DnsWeb App Custom Domain And DNSJuly 10, 2026

Every fact on this Bubble page is tied to a named source and a verification date. Freshness-sensitive figures trace to the sources above; verify against the vendor before relying on them.