CoreInto

Migrate from WHMCS with a guided import of your database

CoreInto reads a WHMCS 7.10 to 8.x database directly and brings across clients, products, services, domains, invoices, payments, tickets and more. Run the import as often as you like, compare the counts, and switch over when you are ready.

WHMCS database flowing through an import wizard into CoreInto with a comparison report

How the import runs, from database check to switch-over

  1. Install CoreInto beside WHMCS

    Set up CoreInto on a hosting account that can reach the WHMCS database, either the same server or one that allows a remote MySQL connection. WHMCS keeps running untouched.

  2. Check the database

    Open Utilities > Import Data, enter the WHMCS database details and run the check. CoreInto confirms the version is between 7.10 and 8.x, reads the tables and shows what it found before anything is written.

  3. Import now

    Start the import. Currencies, staff, clients and users, products and prices, servers and payment methods, orders, services, domains, invoices and payments, support records, affiliates, the to-do list and settings are copied in order.

  4. Read the comparison and the notes

    When it finishes, the comparison report sets WHMCS counts against CoreInto counts table by table, and the notes list every record that was skipped on purpose and why.

  5. Run it again until switch-over

    Keep WHMCS live while you test gateways, modules and templates in CoreInto. Each new run wipes the imported records and copies the current state again, so nothing that happened in WHMCS in the meantime is lost.

  6. Switch over

    Do a final run, point your domain at CoreInto, set the cron job and tell clients the new address. Their sign-in emails and passwords came across with the import.

What comes across from WHMCS

The import copies the records a hosting company needs to keep billing without a gap, with their relationships intact.

  • Clients, users and staff

    Client accounts with their users and passwords, client groups, custom fields, notes, credit balances and, if you want, email history; staff accounts and currencies.

  • Catalogue and servers

    Product groups, products with per-term prices, configurable options and add-ons, domain pricing, servers, server groups and payment methods.

  • Orders, services, domains and money

    Orders, services with due dates and status, domains with expiry and nameservers, invoices with their lines, transactions and payments, credit and quotes.

  • Support and the rest

    Tickets with replies and departments, the knowledgebase, announcements, downloads, affiliates and their commissions, the to-do list and the settings that have a CoreInto equivalent.

Before you start

  • WHMCS version 7.10 to 8.x
  • A fresh CoreInto installation with the cron job added
  • Read access to the WHMCS database from the CoreInto server
  • A recent backup of the WHMCS database
  • Gateway and registrar credentials to re-enter in CoreInto
  • Server module tokens for intoPanel or cPanel & WHM
  • Time to run the import more than once
  • Shell access if you prefer php cli.php import-whmcs for large databases

The guided WHMCS import under Utilities › Import Data

Leaving a billing system is usually harder than choosing a new one, because the records are what you cannot afford to lose. CoreInto treats the move from WHMCS as a built-in feature rather than a consultancy project. Utilities › Import Data is a page in the admin area that connects to a WHMCS database, version 7.10 through 8.x, reads it, and writes the equivalent records into CoreInto. There is nothing to export from WHMCS and no intermediate file format; the import reads the live tables.

The page runs in three parts. The first part checks the database: you give the host, name, user and password of the WHMCS database, CoreInto connects, confirms the version and the tables it expects, and reports the counts it sees. Nothing is written at this stage, so a wrong password or an unsupported version is caught before any work starts. The second part is the import itself, and the third is what you read when it finishes: a comparison report and a set of notes.

The whole process is designed to be repeated. A first run on a test installation shows you what CoreInto will look like with your data in it; later runs bring the records up to date; a final run happens on the day you switch. The chapter on importing in the administrator guide walks through every screen.

What the import brings across from a WHMCS database

The import copies the records in the order their relationships require. Currencies come first, because clients and prices refer to them. Staff accounts follow, then clients with their users, so that one account with several logins in WHMCS becomes one client with several users in CoreInto, each keeping their email address and password hash. Client groups, custom fields, notes and credit balances are attached to the clients they belong to, and the email history can be included if you want it.

The catalogue comes next: product groups and products with their per-term prices, configurable options and add-ons, and domain pricing per TLD. Servers and server groups are created so that services can point to them, and payment methods are recorded so that each client keeps the method they used. Then the transactional records: orders, services with their next due dates and statuses, domains with their expiry dates and nameservers, invoices with their line items, transactions and payments, credit and quotes.

Support records close the list. Tickets are copied with their replies and departments, together with the knowledgebase, announcements and downloads. Affiliates arrive with their commissions, the to-do list is copied, and WHMCS settings that have a direct CoreInto equivalent are set. After the run, a client who signs in sees the same services, domains, invoices and tickets they saw yesterday.

What the WHMCS import skips on purpose and why

Some things are not copied, and the import says so rather than pretending. WHMCS stores gateway credentials, registrar credentials and server access details in its own encrypted form, tied to its own key; CoreInto cannot and should not read them, so you re-enter gateway keys, registrar API keys and server tokens in CoreInto's settings, where they are encrypted with the key in your configuration file. Saved card tokens held at a payment provider belong to the provider's account and are not part of the database import.

Records that do not map to anything in CoreInto are skipped too. WHMCS addons from its marketplace, hooks, custom templates and theme files are WHMCS code and have no equivalent to import; their function is replaced by CoreInto's own templates, add-on modules and API. Product types that rely on a module CoreInto does not have are imported as products but need a module chosen before they can provision. Each skipped record appears in the notes with a reason, so the list is reviewable rather than silent.

This is deliberate. An import that guessed at credentials or invented module settings would leave you with a system that looked ready and failed on the first renewal. Re-entering a handful of keys takes an afternoon; discovering a wrong one when a payment fails takes much longer.

Reading the comparison report and the import notes

An import you cannot verify is an import you cannot trust. When a run finishes, CoreInto shows a comparison report: for each kind of record, the number found in WHMCS and the number now in CoreInto, side by side. Clients, users, products, services, domains, invoices, transactions, tickets and the rest each get a line. Matching counts are the normal result; a difference points you straight at the table to look into, and the notes usually explain it.

The notes are the import's running commentary. They record every record that was skipped on purpose with the reason, every value that had to be adapted to fit a CoreInto field, and anything that looked unusual in the source data, such as a service pointing to a server that no longer exists or an invoice in a currency that was deleted. Reading the notes once on the first test run tells you what to tidy in WHMCS before the next run, or what to fix in CoreInto after the final one.

Both the report and the notes are kept with the run, so you can compare the first trial import with the switch-over import weeks later. Staff who were not present for the import can still see what was done and why, which matters when a client asks about an old invoice months afterwards.

Running the import again until the day you switch over

A migration done in one evening is a migration done under pressure. CoreInto lets you spread it out. The import can be run as many times as you need while WHMCS remains your live system. Each run begins with a wipe that removes the records the previous import created, leaving your own CoreInto configuration in place, and then copies the current state of the WHMCS database again. Orders placed, invoices paid and tickets answered in WHMCS since the last run are all picked up.

That gives you a realistic test environment with your own data. Between runs you connect the payment gateways in sandbox mode and pay a test invoice, add the intoPanel or cPanel & WHM servers and test a module action against a real account, enter registrar credentials and try a WHOIS lookup, choose the Classic or Horizon client-area template, and translate or edit the email templates. None of that work is lost by the next import, because the wipe touches only imported records.

When the test installation behaves as you want, pick a quiet hour, run the import one last time, turn on the cron job, point your billing domain at CoreInto and take WHMCS offline. The manual's section on running it again until the switch-over lists the order of those steps.

After the WHMCS import: what to check before clients arrive

With the records in place, a short list of settings turns an imported database into a working billing system. Confirm the cron job runs and look at Utilities › Automation Status to see the daily and frequent tasks reporting. Re-enter the gateway credentials and take each gateway out of sandbox mode. Enter the API tokens for each intoPanel or cPanel & WHM server and press test on the server page. Add registrar credentials and run a domain sync so expiry dates and nameservers are confirmed against the registrar.

Then walk through the parts clients touch. Open the store and check product names, prices and terms, since these came from WHMCS as they were and may be due for a tidy. Sign in as a client from the client list and look at their services, invoices and tickets through their eyes. Send yourself the invoice and reminder emails to check the templates, logo and merge fields. Set the tax rules, invoice numbering and reminder schedule under Settings.

Finally, tell your clients. Their email addresses and passwords came across, so a short announcement with the new address is usually all they need. The billing automation page describes what the first daily run will do, and the hosting automation page covers the server modules you have just connected.

Importing from the command line for large WHMCS databases

A WHMCS database with many years of invoices and tickets can take longer to import than a web request is allowed to run. For hosting accounts with shell access, the same import is available as a command: php cli.php import-whmcs. It takes the connection details as arguments, performs the same check, wipe and copy as the admin page, and prints the comparison and notes to the terminal when it finishes. Because it runs outside the web server, it is not bound by PHP's web execution limits and can be left running in a screen session.

The command is also the right tool for a scripted switch-over. An operator who wants the final import, the cron activation and the DNS change to happen in a known order at a set time can put them in one script and run it once, rather than clicking through pages at two in the morning. The output goes to the terminal and can be saved to a file for the record.

The command line chapter of the developer guide lists the other commands beside it, including licence-set, licence-check and the cron entry point, and explains how to run them under the right user so that file permissions in the storage folder stay correct.

Domains at the registrar after migrating from WHMCS

Domain records are imported with their expiry dates, statuses and nameservers as WHMCS recorded them, but the registrar is the source of truth, and after a migration the two can disagree. CoreInto's registrar modules for ResellerClub, Namecheap, Spaceship, Porkbun and Dynadot, and the separately sold PKNIC module for .pk domains, let you reconcile them. Enter the registrar credentials under Settings › Domain Registrars, assign each imported domain to its registrar, and run a sync. The sync reads the real expiry date, lock state and nameservers and updates the CoreInto record.

Renewal notices and automatic renewal then work from accurate dates. The automation run sends expiry notices at the intervals you set, raises renewal invoices ahead of the due date, and, once paid, renews the domain at the registrar through the module. Transfers in progress at the time of the move continue at the registrar and are picked up by the next sync.

For registrars that have no module, CoreInto creates staff tasks: the renewal invoice is raised and paid as usual, and a to-do item tells staff to renew the domain by hand at the registrar and mark it done. The domain reseller billing page describes TLD pricing, EPP codes and the client's domain pages in detail.

Frequently asked questions

Which WHMCS versions can CoreInto import from?

The guided import reads WHMCS databases from version 7.10 through 8.x. It connects to the database directly, checks the version and the expected tables before writing anything, and reports the record counts it finds. No export from WHMCS is needed.

Does the WHMCS import copy clients' passwords?

Yes. Clients and their users are imported with their email addresses and password hashes, so they sign in to CoreInto with the credentials they used in WHMCS. Staff accounts are imported too, though staff should set up two-step sign-in in CoreInto afterwards.

Will my payment gateway and registrar settings come across?

No, on purpose. WHMCS encrypts credentials with its own key, so gateway keys, registrar API keys and server tokens are re-entered in CoreInto's settings, where they are encrypted with the key in your configuration file. The notes list every such item so nothing is forgotten.

Can I run the import more than once?

Yes. Each run wipes the records created by the previous import, keeps your own CoreInto configuration, and copies the current WHMCS database again. You can test gateways, modules and templates between runs and do a final run on the day you switch over.

How do I know the import was complete?

When a run finishes, CoreInto shows a comparison report with WHMCS counts beside CoreInto counts for each kind of record, and notes that explain every record skipped on purpose or adapted. Both are kept with the run for later reference.

Is there a command-line version of the WHMCS import?

Yes. On a hosting account with shell access, php cli.php import-whmcs performs the same check, wipe and import as Utilities > Import Data and prints the comparison and notes to the terminal. It suits large databases that outrun web request limits and scripted switch-overs.

Try the import on your own WHMCS data

Install the free trial beside WHMCS, run Utilities › Import Data, and read the comparison report before you decide.

Start free trial
Submit a ticket