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.
What migrates automatically
- Clients — contact details, addresses, custom fields, tags, notes
- Passwords — bcrypt hashes preserved (customers keep their existing password)
- Invoices & transactions — full history, including void/refund records
- Products & services — including recurring billing cycles and next-due dates
- Support tickets — with all replies, internal notes, attachments, and status
- Domains — registrar-linked records, expiration dates, name servers
- Stripe customers — saved cards re-linked via existing Stripe customer IDs
- Email templates — re-mapped to ProEcommerce's template system
What doesn't migrate automatically
- Addon modules (WHMCS third-party plugins are not installed on ProEcommerce)
- Custom theme overrides (the portal is rebuilt with Bootstrap 5)
- Knowledge base articles — these need a one-time export/import
- Affiliate program balances — we'll help reconcile these manually
Pre-flight checklist
Before we start the migration, have these items ready:
- A database dump of your WHMCS install (
mysqldumpof the full WHMCS schema) - Your WHMCS cc_encryption_hash from
configuration.php(needed to decrypt stored cards) - Admin access to your Stripe account (to re-link Stripe customer IDs)
- Your current SMTP provider details (or we'll set you up with MXRoute)
- A maintenance window of 2–4 hours for the cutover
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
- You trigger a final
mysqldumpof WHMCS - We import into your production ProEcommerce tenant
- We run the verification suite: row counts, sample logins, Stripe link checks
- 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.