What are the responsibilities and job description for the Customer Merge position at mypresta.rocks?
The same person orders three times under three addresses, and the shop sees three customers: split order history, wrong lifetime totals and an agent reading a third of the story. Customer Merge finds those duplicates by email, phone, name and address, shows an exact preview before anything is written and keeps a one-click undo.
The two other PrestaShop merge modules ask you to already know which accounts are duplicates. This one scans your customer base and tells you. Every pair is scored on independent evidence: the same email, a Gmail alias where dots and a plus suffix hide the same inbox, the same phone number normalised to international format, the same name at the same postcode, the same company or VAT number, and a guest checkout that matches a registered account. Signals of the same kind do not stack and contradicting evidence subtracts, so the score reflects how sure the module actually is.
A dry run before anything is written
Step four of the wizard is the reason you can run this on a live shop. It shows the exact plan: which tables are touched, which strategy applies to each, and how many rows will move, be deduplicated or stay untouched. Nothing has been written at this point. The same code path that produced these numbers is what executes, and it re-validates the plan under a lock immediately before writing, so a preview that has gone stale aborts instead of surprising you.
Your invoices stay exactly as they were issued
Only the owner of an order changes. Invoices, credit slips, payments, order details, carriers, order history and stock movements are never rewritten. An address that an order points at keeps its ID and every field that appears on your documents, even when an identical duplicate of it is collapsed, so an old invoice still describes the delivery that actually happened. This is a hard rule in the code, not a setting you can switch off by accident.
It knows about the modules you installed
A real shop has far more than the core customer tables. On the test install this module discovered 149 tables carrying a customer reference, 112 of which belong to modules it has never heard of. Each one is listed with its row count, its risk on repointing, and a strategy you choose: move the rows, move and collapse exact duplicates, leave the table alone, or ask every time. A table it cannot roll back, one with a trigger, a view, or a table without a primary key blocks the merge rather than being merged on a best-effort basis.
One click puts it back
Every merge writes an encrypted snapshot of every row it changed, so undo is a button rather than a restore from backup. Undo refuses when it would overwrite something that changed after the merge, when an absorbed customer ID has been reused, or when an erasure request removed the snapshot. Customer sessions are the deliberate exception: they are revoked by the merge and never restored, because handing back a live login would be an account takeover path.
An audit trail that shows its own tampering
Every merge, undo and failure is appended to a hash-chained log: each entry includes the hash of the one before it, so a removed or edited entry breaks the chain visibly. The log holds what happened and who did it, never customer data. It exports to CSV for whoever asks. Automatic merging exists but ships switched off, and even when you turn it on a single unknown table, trigger, conflict or non-transactional table sends the group back to manual review.
- Finds them for you. Weighted scanning across email, aliases, phone, name and address, company and VAT.
- Dry run first. Exact per-table row counts before a single row is written.
- Invoices untouched. Only the owner of an order changes; issued documents are never rewritten.
- Knows your modules. Discovers every table carrying a customer reference, including ones it has never seen.
- One-click undo. Encrypted snapshots make a merge reversible instead of final.
- Tamper-evident audit. A hash-chained log of every merge, undo and failure, exportable to CSV.
- Blocks rather than guesses. Triggers, views, non-transactional tables and missing primary keys stop the merge.
- PS 1.6 to 9.x, PHP 7.1 . Open code, one-time price, no external service.
The two other PrestaShop merge modules ask you to already know which accounts are duplicates. This one scans your customer base and tells you. Every pair is scored on independent evidence: the same email, a Gmail alias where dots and a plus suffix hide the same inbox, the same phone number normalised to international format, the same name at the same postcode, the same company or VAT number, and a guest checkout that matches a registered account. Signals of the same kind do not stack and contradicting evidence subtracts, so the score reflects how sure the module actually is.
A dry run before anything is written
Step four of the wizard is the reason you can run this on a live shop. It shows the exact plan: which tables are touched, which strategy applies to each, and how many rows will move, be deduplicated or stay untouched. Nothing has been written at this point. The same code path that produced these numbers is what executes, and it re-validates the plan under a lock immediately before writing, so a preview that has gone stale aborts instead of surprising you.
Your invoices stay exactly as they were issued
Only the owner of an order changes. Invoices, credit slips, payments, order details, carriers, order history and stock movements are never rewritten. An address that an order points at keeps its ID and every field that appears on your documents, even when an identical duplicate of it is collapsed, so an old invoice still describes the delivery that actually happened. This is a hard rule in the code, not a setting you can switch off by accident.
It knows about the modules you installed
A real shop has far more than the core customer tables. On the test install this module discovered 149 tables carrying a customer reference, 112 of which belong to modules it has never heard of. Each one is listed with its row count, its risk on repointing, and a strategy you choose: move the rows, move and collapse exact duplicates, leave the table alone, or ask every time. A table it cannot roll back, one with a trigger, a view, or a table without a primary key blocks the merge rather than being merged on a best-effort basis.
One click puts it back
Every merge writes an encrypted snapshot of every row it changed, so undo is a button rather than a restore from backup. Undo refuses when it would overwrite something that changed after the merge, when an absorbed customer ID has been reused, or when an erasure request removed the snapshot. Customer sessions are the deliberate exception: they are revoked by the merge and never restored, because handing back a live login would be an account takeover path.
An audit trail that shows its own tampering
Every merge, undo and failure is appended to a hash-chained log: each entry includes the hash of the one before it, so a removed or edited entry breaks the chain visibly. The log holds what happened and who did it, never customer data. It exports to CSV for whoever asks. Automatic merging exists but ships switched off, and even when you turn it on a single unknown table, trigger, conflict or non-transactional table sends the group back to manual review.