Migrate from Wix
Move a Wix site to Modulify with its pages, design, CMS collections, store, blog, bookings, events, contacts, orders and files, and what to check afterwards.
On this page
A migration from Wix copies your published Wix site and its data into a new Modulify site. It uses the Wix import, which Import from Wix describes field by field.
Before you start
- Publish the latest version of your site in Wix. The migration reads the published site, so changes that are not published do not come across.
- Sign in to Wix as the owner or a co-owner of the site. You need that access to create an API key that can read it.
- Make sure you own the site, or have permission to rebuild it. The import dialog asks you to confirm this.
- Keep your Wix site published until the new site is live on your domain.
How the migration works
The import dialog reads the published page at the address you enter, to check that it is a Wix site and to find the site's ID. It then checks your API key against that site, and shows how many products, CMS collections, pages, blog posts and contacts it found.
When you start the import, Modulify creates a new site and runs the import in the background. The site's chat shows each step as it runs: Reading the site, Copying images, Saving the data for the AI, Building pages and Saving pages, with a count while a step reads pages, copies images and files, or saves records.
The pages are copied from your published site. The import finds them in the site's page list and its sitemap, then reads each page as Wix serves it. For a Classic site it also reads the mobile layout Wix serves to phones, and combines both into one page that shows the right layout for the screen. Wix's stylesheets are kept, the images, videos, files and fonts the pages use are copied, and a small script brings back entrance animations, menus, galleries, repeaters and background videos.
The data is read through the Wix API with your key: CMS collections, store, blog, bookings, events, pricing plans, contacts, members, orders, form submissions, Media Manager files and redirects. Anything the key is not allowed to read is skipped, and the import says so in a warning.
Everything is then saved in the new site: the pages as editable code, the data as records in the site database, and the files in Modulify storage. Notes for the chat are saved with the pages in .modulify/import/README.md, listing what came across and what did not. The key stays encrypted with the site. As soon as the import finishes, the AI builds the tables from those records and connects the pages that show them, as How migrations work describes.
Run the migration
Create a Wix API key
Open manage.wix.com/account/api-keys, choose Generate API Key, and under Permissions choose All site permissions. Include this site if Wix asks which sites the key can use. Choose Generate Key, enter the code Wix sends you, and copy the key.
Open the Wix import
On Home, click + on the prompt, then choose From Wix under Import.
Enter the site and the key
Enter your site's address in Site address and paste the key into Wix API key. When the key is accepted, the dialog shows the site's name and what it found.
Confirm
Tick I own this site, or I have permission to rebuild it. and select Confirm. The prompt shows the site as a card with a picture of it and what the import found.
Start the import
Select Import site on the pill. Modulify creates the site and starts the import.
Read the warnings
When the import finishes, the site lists any warnings. Each one says what was left out and why.
What comes across
The site data comes across as datasets, which the AI builds into tables right after the import.
| In Wix | In Modulify |
|---|---|
| Published pages | Editable pages at the same addresses, with their titles, descriptions, favicon and social share tags |
| Mobile layout of a Classic site | The same layout on phones |
| Screen sizes of a Studio site | The same layout for each screen size |
| Images, videos and files on your pages | Copies in Modulify storage |
| Fonts | Copies in the site |
| Media Manager | A Media files dataset, with the files copied to storage |
| CMS collections | One dataset for each collection, with each reference holding the ids of the items it links to, and the translated text of each item in every language visitors can see |
| Wix Stores | Products and Product variants, with Product collections, or Product categories and Stock levels on the newer catalog |
| Wix Blog | Blog posts, Blog categories and Blog tags |
| Wix Bookings | Booking services |
| Wix Events | Events |
| Pricing Plans | Pricing plans |
| Contacts and site members | Contacts and Members |
| Store orders | Orders and Order items |
| Wix Forms | Forms that save each submission in the site database, with the submissions Wix already holds |
| URL redirects | Redirects on the site, and a Redirects dataset |
| Business info | A Site dataset |
| Languages | The same language addresses, and the site's language list |
| Custom code in site settings | The same code on your pages |
How the data is stored
The import does not create tables. It saves every record it reads in the hidden _import_rows table of your site's database, one row per record: the collection or kind of data in dataset, the Wix id in id, the slug in slug, and the fields in data, a JSON object. Site databases explains the database itself.
CMS fields keep their meaning:
- Text, numbers, dates, toggles, links, emails and colors keep their values.
- Formatted text and blog post content keep their formatting.
- Images, videos, audio and documents hold the address of the file, and a gallery holds a list of them.
- Addresses, objects and lists are kept as structured data.
- A reference field holds the Wix id of the item it links to, and a multi-reference field holds a list of ids.
Each CMS item gets a slug, taken from its Wix slug, or from its title when it has none. It keeps the dates it was created and last updated in _created and _updated. In a collection with drafts turned on, a draft item comes across with _draft set, and the import says how many each collection has. A field that is required in Wix stays required in the table the AI builds, when every item has a value.
Images and files in the data are copied to Modulify storage, and the records point at the copies. A file that could not be copied keeps its Wix address. The import says how many there are and lists them in its notes, and the AI copies them when it takes over.
As soon as the import finishes, the AI builds tables from these records and fills them, usually one for each collection or kind of data, with references between the tables. It picks the names of the tables and columns itself, and you can browse and edit the tables in the CMS, where _import_rows stays hidden. It loads the form submissions Wix holds into the form_submissions table that the imported forms save to.
Contacts, members, orders, order items and form submissions contain personal data. They are stored in your site's database, and the AI builds their tables from the list of their fields without reading them.
What does not come across
- Slideshows show their first slide only, because Wix loads the other slides in the browser.
- Lightboxes, popups and effects such as parallax that Wix runs in the browser.
- Cart, checkout, member and search pages, because Wix runs them. Add to cart and checkout buttons do not take payments.
- Member login.
- Translations of store products, blog posts and other app content. Translations of your CMS items come across, and so do the translated pages.
- Apps that Wix loads in the browser, such as live chat, and Velo code.
- Collections that belong to an outside database.
- On Studio sites, galleries keep their desktop layout on phones.
- Very large sites come across in part, and the import lists what was left out.
Fonts from the Wix font library are licensed for Wix sites. Check their license before you publish the site.
After the migration
When the migration finishes, the AI takes over on its own. It reads the notes, builds the tables from the saved records, connects the pages that show them, such as a blog list or the copied CMS item pages, to those tables while keeping them looking the same, and checks the pages. Then it answers with the pages, the tables it built with their row counts, the languages, the warnings and what still needs work. If you were already chatting, it gets the notes with your next message instead. From then on the chat builds on the imported site and never starts it over, and when it needs more than the notes it reads your Wix site directly with your API key. It never reads contacts, members, orders or form submissions that way.
- Open the preview and click through the pages, on a computer and on a phone.
- Check the tables the AI built in the CMS.
- Ask the chat to rebuild what the warnings list, such as a slideshow, a popup or a checkout.
- Publish the site, then connect your domain and point it at Modulify.
- Keep the API key while you want the chat to read your Wix site. Once you delete it in Wix, the chat works from what was imported.
Troubleshooting
The dialog says "That does not look like a published Wix site."
The address does not open a published Wix site. Use the address visitors use, such as your own domain or your wixsite.com address, not a link to the Wix editor. Publish the site in Wix if you have not yet.
The dialog says "That token was rejected."
Wix did not accept the key. Check that you copied it in full, or create a new key and paste that.
The dialog says "That Wix API key cannot read this site."
The key cannot reach this site. Create the key in the Wix account that owns the site, choose All site permissions, and include this site if Wix asks which sites the key can use.
The dialog says "That token is valid but belongs to a different site."
Wix accepted the key, but it cannot find this site with it. Create the key in the Wix account that owns the site you are importing.
The dialog says "We could not identify this Wix site, so the API key cannot be checked."
The page at that address does not carry a Wix site ID. Enter the address of the published site itself.
The dialog says "The platform is rate limiting us right now. Try again in a minute."
Wix is limiting requests for a moment. Wait a minute, then try again.
The import failed with "Wix rejected the API key."
The key stopped working during the import, for example because it was deleted. Create a new key with all site permissions and import the site again.
The import failed with "No published pages could be read."
None of the site's pages could be read. Check that the site is published and opens in a browser, then import it again.
A warning says the API key cannot read part of the site
The key does not have permission for that part of the site, so its data was skipped. Create a key with All site permissions and import the site again.
A warning says "The imported data could not be saved in the site database"
The site data could not be saved for the AI. It reads the CMS collections, store, blog, bookings, events, pricing plans and Media Manager files again from your Wix site with your API key to build their tables, so keep the key until the tables are built. Contacts, members, orders and form submissions are never read from Wix that way, so import the site again from Home to bring them across.
A warning says "The pages were saved, but the preview could not load them yet."
The import finished. Refresh the preview in a moment to see the pages.