Import, Export and Moving Sites
Moving to a new host, building on staging before going live, or leaving Calendly or Acuity: in each case you want your services, schedules and appointment history to arrive intact, without double-booking anyone or emailing every customer by accident. That’s what Import / Export does.
Open Bookings → Settings → Import / Export. You need both booking-manager and export permission (administrators have both by default). Every import is read, mapped and previewed before anything is saved.
Export Your Data
- Under Export Core Bookings, pick Export contents: Configuration, appointments, and history or Services and staff availability only.
- Click Download JSON.
A full export carries services, staff availability, appointments with their snapshots, amounts, states and activity, plus customer profiles and fields, session packs, waitlist entries and module records such as coupons or locations. It includes customer information, so keep the file private.
For a spreadsheet of appointments instead, use Export bookings CSV in the Appointments workspace or wp core-bookings appointments export.
Move Core Bookings to Another Site
- On the old site, settle any open checkouts and pending refunds, then download a full JSON export.
- Install Core Bookings on the new site and create the WordPress accounts that will own each staff schedule.
- Under Import into Core Bookings, set File source to Core Bookings JSON, choose the file and click Read file.
- Map each source staff member to a different WordPress user. Matching email addresses are suggested for you.
- Decide whether to tick Activate imported services after import and, on an empty site, Use the source currency if this destination is empty.
- Click Preview import and fix anything under Errors.
- Tick I reviewed the mappings and want to add these records. and click Import records.
- Reconnect payment, calendar and email providers, activate your license on the new address, and check your services before taking bookings.
Imported services stay paused unless you choose to activate them, and services that need a calendar connection stay paused until it’s connected. New staff profiles get the exported availability. Existing profiles keep their own availability and calendar connections.
Import From Calendly, Acuity or Another CSV
Export the date range you need from the old tool, then set File source to Calendly CSV, Acuity Scheduling CSV or Other CSV and pick the CSV separator (comma, semicolon or tab). The presets recognize common column names, but always check the mapping. Then set:
- Source account name: a stable name for the old account. Keep it the same across imports, because it’s how duplicates are recognized.
- Timezone used by exported timestamps and Date format. A timestamp with an explicit UTC offset always wins.
- Destination staff and a service for each source event type, or a Default service for unmapped types.
- Column mapping for name or first and last name, email, start and end (or separate time columns), service, and optional status, cancelled and no-show flags, seats, price, paid flag and notes.
Each CSV batch goes to one staff member, so import each host’s export separately for a team. Without an end time, the service’s duration is used. Without a price, payment shows as not imported.
What Doesn’t Move
- WordPress users, pages and the blocks on them.
- Provider credentials, license keys, live checkout sessions, queued jobs and calendar watch channels.
- Private customer links. Imported bookings get new IDs and tokens, so old manage links stop working.
- From Calendly or Acuity: subscriptions, packages, custom intake fields, phone numbers, automations and account credentials.
Imported payment history is a record only. It doesn’t reconnect a charge, issue a refund or collect money.
Duplicates, Conflicts and Limits
- Imports only add records. They never update or delete what’s already there, and re-importing the same source skips records it already brought in.
- Confirmed appointments are checked against existing bookings and each other, including group capacity. If any conflict or error remains, nothing is imported.
- External calendars aren’t checked during an import, so review connected calendars before opening availability.
- Importing sends no email and creates no calendar events or payment requests.
- Files must be UTF-8 and under 10 MB, with up to 2,000 records per section or CSV batch, 100 columns per CSV and 100 history entries per booking.
- An existing site must already use the source currency. There’s no currency conversion.
- A read file is stored encrypted for 15 minutes and belongs to the person who uploaded it. After that, read it again.
An export is not a backup. For a full restore, back up the database together with the encryption key in wp-config.php, as explained in Data, Privacy and Uninstall. Developers can run the same steps through the transfers routes in the REST API.