Migrating from WHMCS

Everything in your WHMCS install — clients, passwords, invoices, tickets, services, saved cards — moves over to ProEcommerce. Your customers log in with the same password they've been using for years. No mass reset email.

We do migrations for you. If you'd rather hand us a WHMCS database dump and let us run the migration, that's included in the Professional and Enterprise plans. Email billing@proecommerce.com to schedule.

What migrates automatically

What doesn't migrate automatically

Pre-flight checklist

Before we start the migration, have these items ready:

  1. A database dump of your WHMCS install (mysqldump of the full WHMCS schema)
  2. Your WHMCS cc_encryption_hash from configuration.php (needed to decrypt stored cards)
  3. Admin access to your Stripe account (to re-link Stripe customer IDs)
  4. Your current SMTP provider details (or we'll set you up with MXRoute)
  5. A maintenance window of 2–4 hours for the cutover
About the cc_encryption_hash. WHMCS encrypts stored card information using this key. Without it, saved cards cannot be decrypted and customers will need to re-enter payment methods. If you don't have it, we can still migrate the Stripe customer IDs so that cards saved directly at Stripe continue to work — just not tokens WHMCS held internally.

The migration process

Step 1: Test-run on a staging tenant

We provision a disposable tenant, import your WHMCS dump into it, and hand you admin access. You spot-check 10–20 clients, random invoices, a few tickets. If anything looks off, we adjust the mapping rules and re-run. No impact to your live WHMCS during this phase.

Step 2: Schedule the cutover

Once you're satisfied with the staging import, we schedule a cutover window — typically a Tuesday or Wednesday morning when ticket volume is lowest. We recommend freezing billing actions in WHMCS during the window (we'll send you a checklist).

Step 3: Final dump and import

  1. You trigger a final mysqldump of WHMCS
  2. We import into your production ProEcommerce tenant
  3. We run the verification suite: row counts, sample logins, Stripe link checks
  4. DNS is cut over to point your portal domain at ProEcommerce

Step 4: Customer communication

We send a branded email from your address letting customers know the portal has moved, with a link to the new login page. Their password is unchanged. Most customers won't notice anything beyond the fresher UI.

Step 5: Decommission WHMCS

Keep WHMCS in read-only mode for 30 days as a fallback. After that window, assuming no issues, the WHMCS install can be archived and the license cancelled.

Password preservation — how it works

WHMCS stores passwords as bcrypt hashes (cost 10) in the tblclients.password column. ProEcommerce's authentication code recognizes these hashes and validates against them natively. On successful login, we transparently re-hash to Argon2id (the modern standard) and update the stored hash.

// Simplified flow in public/login.php
$row = fetchClientByEmail($email);
if (password_verify($_POST['password'], $row['password_hash'])) {
    // Bcrypt match — upgrade to Argon2id on the fly
    if (password_needs_rehash($row['password_hash'], PASSWORD_ARGON2ID)) {
        updateHash($row['id'], password_hash($_POST['password'], PASSWORD_ARGON2ID));
    }
    startSession($row);
}

Customers never notice. Their password works; over time every active account gets silently upgraded to Argon2id.

Common questions

Can I run WHMCS and ProEcommerce in parallel?

Briefly, yes — during the staging phase. Long-term, no. They'd be sending different invoices to the same customers and collecting payment twice. Pick a cutover date.

What if a client has disputes or chargebacks in flight?

Chargebacks are handled by Stripe, not WHMCS, so they continue uninterrupted. We'll flag any in-progress disputes during the import so your team knows to keep an eye on them in the new dashboard.

Will WHMCS affiliates get their tracking?

We migrate the balances and the affiliate → client relationships. New commission accruals happen in ProEcommerce's affiliate module going forward.

Do you support partial migrations?

Yes — if you want to migrate only active clients (skip churned ones), or only clients above a certain account age, we can filter during the import. Just tell us the criteria.