{"id":360639,"date":"2026-10-03T13:38:48","date_gmt":"2026-10-03T13:38:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kerishna-shop-migrator\/"},"modified":"2026-10-03T13:38:21","modified_gmt":"2026-10-03T13:38:21","slug":"kerishna-shop-migrator","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/kerishna-shop-migrator\/","author":23223703,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.2","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Kerishna Shop Migrator","header_author":"shcd","header_description":"Move store orders and customer accounts with source-safe backups, independent exports, smart imports, and duplicate-aware customer matching.","assets_banners_color":"646ade","last_updated":"2026-10-03 13:38:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/shcd.ir","rating":0,"author_block_rating":0,"active_installs":0,"downloads":51,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"shcd","date":"2026-10-03 13:38:21","revision":3726316}},"upgrade_notice":{"1.0.0":"<p>Initial public release of Kerishna Shop Migrator.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3726316,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3726316,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3726316,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3726316,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3726316,"resolution":"1","location":"assets","locale":"","width":665,"height":913},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3726316,"resolution":"2","location":"assets","locale":"","width":662,"height":914},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3726316,"resolution":"3","location":"assets","locale":"","width":661,"height":890}},"screenshots":{"1":"Kerishna dashboard with migration readiness and destination connection settings.","2":"Independent order and customer export controls with JSON\/CSV format selection.","3":"Smart Drag &amp; Drop importer that detects file format and data type.","4":"Direct site-to-site migration settings and progress log.","5":"Real-time Persian, English, and Arabic interface switching."}},"plugin_section":[],"plugin_tags":[151,7619,282,4155,16281],"plugin_category":[45,59],"plugin_contributors":[270201],"plugin_business_model":[],"class_list":["post-360639","plugin","type-plugin","status-publish","hentry","plugin_tags-backup","plugin_tags-customers","plugin_tags-ecommerce","plugin_tags-migration","plugin_tags-orders","plugin_category-ecommerce","plugin_category-utilities-and-tools","plugin_contributors-shcd","plugin_committers-shcd"],"banners":{"banner":"https:\/\/ps.w.org\/kerishna-shop-migrator\/assets\/banner-772x250.png?rev=3726316","banner_2x":"https:\/\/ps.w.org\/kerishna-shop-migrator\/assets\/banner-1544x500.png?rev=3726316","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kerishna-shop-migrator\/assets\/icon-128x128.png?rev=3726316","icon_2x":"https:\/\/ps.w.org\/kerishna-shop-migrator\/assets\/icon-256x256.png?rev=3726316","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kerishna-shop-migrator\/assets\/screenshot-1.png?rev=3726316","caption":"Kerishna dashboard with migration readiness and destination connection settings."},{"src":"https:\/\/ps.w.org\/kerishna-shop-migrator\/assets\/screenshot-2.png?rev=3726316","caption":"Independent order and customer export controls with JSON\/CSV format selection."},{"src":"https:\/\/ps.w.org\/kerishna-shop-migrator\/assets\/screenshot-3.png?rev=3726316","caption":"Smart Drag &amp; Drop importer that detects file format and data type."}],"raw_content":"<!--section=description-->\n<p>Kerishna Shop Migrator gives store owners a controlled way to move important commerce data between WordPress sites without turning migration into an all-or-nothing process.<\/p>\n\n<p>Need only your orders? Export only orders. Need customer accounts for a new store? Export customers separately. Have a backup file and do not remember what it contains? Drop it into Kerishna and the importer identifies whether it contains orders, customers, or a compatible combined backup.<\/p>\n\n<p>The source site stays read-only during export and direct site-to-site transfer. Kerishna does not intentionally delete, trash, renumber, or move source orders, customer accounts, products, or source IDs.<\/p>\n\n<h4>Why Kerishna?<\/h4>\n\n<p>Store migrations often become difficult for three reasons: source and destination IDs do not match, customer accounts can be duplicated, and users are forced to move more data than they actually need.<\/p>\n\n<p>Kerishna is designed around those problems:<\/p>\n\n<ul>\n<li><strong>Choose what moves:<\/strong> orders and customers can be exported independently.<\/li>\n<li><strong>Keep the source untouched:<\/strong> export and direct-copy operations read source data without modifying it.<\/li>\n<li><strong>Avoid duplicate customer accounts:<\/strong> existing destination users are checked by previous source mapping, email address, and normalized phone number before a new account is created.<\/li>\n<li><strong>Do not trust numeric IDs across sites:<\/strong> source IDs are kept as reference data while the destination uses its own IDs.<\/li>\n<li><strong>Preserve orders when catalog data differs:<\/strong> if a product cannot be safely matched, the order line can remain as a standalone historical line item instead of being attached to the wrong product.<\/li>\n<li><strong>Reduce import decisions:<\/strong> one smart Drag &amp; Drop area accepts JSON and CSV and detects the data type automatically.<\/li>\n<\/ul>\n\n<h4>Independent Order Export<\/h4>\n\n<p>Order backups are intentionally separate from customer-account backups. This is useful when you need sales history, accounting data, or order archives on another site but do not want to create customer accounts there.<\/p>\n\n<p>Order exports include the order information required for restoration, including:<\/p>\n\n<ul>\n<li>Source order reference and order number.<\/li>\n<li>Status, currency, timestamps, totals, discounts, shipping, and taxes.<\/li>\n<li>Billing and shipping details stored on the order.<\/li>\n<li>Payment method information and transaction reference when available.<\/li>\n<li>Product line items, quantities, totals, taxes, public item metadata, and stable product identity information.<\/li>\n<li>Shipping lines, fees, and coupons.<\/li>\n<\/ul>\n\n<p>During an order-only import, Kerishna does <strong>not<\/strong> create new customer accounts as a side effect. If a matching account already exists on the destination, the order can reuse that account; otherwise the order remains safely importable without forcing customer creation.<\/p>\n\n<h4>Independent Customer Export<\/h4>\n\n<p>Customer exports contain registered WooCommerce customer accounts separately from orders. This lets you migrate customer profiles only when the destination actually needs them.<\/p>\n\n<p>Customer backups can include:<\/p>\n\n<ul>\n<li>Source user reference.<\/li>\n<li>Login name, email address, display name, first name, and last name.<\/li>\n<li>Registration date.<\/li>\n<li>Billing phone number.<\/li>\n<li>Billing and shipping profile fields.<\/li>\n<\/ul>\n\n<p>Passwords and password hashes are never included in export files. A newly created destination customer receives a generated password and can use the normal WordPress password-reset flow.<\/p>\n\n<h4>Duplicate-Aware Customer Import<\/h4>\n\n<p>Before Kerishna creates a destination customer account, it checks for an existing match in this order:<\/p>\n\n<ol>\n<li>A source-to-destination mapping created by a previous Kerishna import.<\/li>\n<li>Exact email-address match.<\/li>\n<li>Normalized phone-number match.<\/li>\n<li>A new customer is created only when no safe match is found.<\/li>\n<\/ol>\n\n<p>Phone matching normalizes common number formats, including Persian and Arabic digits and common Iranian mobile prefixes such as <code>+98<\/code>, <code>0098<\/code>, <code>98<\/code>, and <code>09<\/code>.<\/p>\n\n<p>Existing matched accounts are reused instead of being duplicated. Kerishna does not overwrite an existing customer's profile merely because the source contains different values.<\/p>\n\n<h4>Smart Drag &amp; Drop Import<\/h4>\n\n<p>The admin interface uses a single import area instead of separate JSON\/CSV and order\/customer import buttons.<\/p>\n\n<p>Drop a supported file into the import area or click to select it. Kerishna determines:<\/p>\n\n<ul>\n<li>Whether the file is JSON or CSV.<\/li>\n<li>Whether it contains orders.<\/li>\n<li>Whether it contains customers.<\/li>\n<li>Whether it is a compatible combined backup from an earlier Kerishna\/SHCD release.<\/li>\n<\/ul>\n\n<p>This keeps the interface simpler while preserving explicit control over what is exported.<\/p>\n\n<h4>JSON and CSV<\/h4>\n\n<p>Kerishna supports both JSON and CSV workflows:<\/p>\n\n<ul>\n<li><strong>JSON<\/strong> is recommended when you want the richest structured backup and the most reliable restoration of nested order\/customer information.<\/li>\n<li><strong>CSV<\/strong> is useful for spreadsheet-friendly archives and inspection. CSV exports include a UTF-8 BOM for better compatibility with spreadsheet applications.<\/li>\n<\/ul>\n\n<p>New exports identify their data type so the importer can distinguish order-only and customer-only backups. Compatible older combined JSON\/CSV backups remain supported.<\/p>\n\n<h4>Product and Variation Matching<\/h4>\n\n<p>WordPress and WooCommerce numeric IDs are site-specific. Kerishna does not assume that a product ID or variation ID from the source points to the same object on the destination.<\/p>\n\n<p>Product and variation matching uses stable information such as available SKU\/global identifiers, product identity data, parent-product context, and variation attributes. If a safe destination match cannot be found, the order line is preserved without connecting it to an unrelated product.<\/p>\n\n<h4>Source-Safe Migration<\/h4>\n\n<p>The source site is treated as read-only during export and direct site-to-site copy.<\/p>\n\n<p>Kerishna includes safeguards intended to prevent accidental writes back to the source:<\/p>\n\n<ul>\n<li>Source orders are not deleted, trashed, moved, or renumbered by export\/direct-copy operations.<\/li>\n<li>Source order IDs remain source references rather than being forced onto the destination database.<\/li>\n<li>A backup fingerprinted as originating from the current site is blocked from being imported back into that same site.<\/li>\n<li>Direct copy is blocked when the configured destination resolves to the source site itself.<\/li>\n<\/ul>\n\n<p>The destination creates and uses its own WordPress\/WooCommerce IDs.<\/p>\n\n<h4>Direct Site-to-Site Transfer<\/h4>\n\n<p>For repeated migrations or backup workflows, Kerishna can connect two sites with generated API credentials and send order batches directly to the destination.<\/p>\n\n<p>You can choose whether registered customer accounts should be included in direct transfers. Requests are signed and authenticated, and the source remains read-only during the operation.<\/p>\n\n<h4>Built for Real Store Workflows<\/h4>\n\n<p>Kerishna can be useful when you are:<\/p>\n\n<ul>\n<li>Moving order history to a rebuilt store.<\/li>\n<li>Keeping a secondary store or recovery site with order backups.<\/li>\n<li>Separating order migration from customer-account migration.<\/li>\n<li>Rebuilding a store where product IDs differ from the original database.<\/li>\n<li>Consolidating registered customers while avoiding obvious email\/phone duplicates.<\/li>\n<li>Creating JSON or spreadsheet-friendly CSV archives before a major site change.<\/li>\n<\/ul>\n\n<h4>Admin Experience<\/h4>\n\n<p>The Kerishna admin interface includes:<\/p>\n\n<ul>\n<li>A neumorphic interface inspired by the Kerishna brand colors.<\/li>\n<li>A locally bundled Shabnam font with no external font CDN dependency.<\/li>\n<li>Real-time Persian, English, and Arabic interface switching.<\/li>\n<li>RTL layout for Persian and Arabic and LTR layout for English.<\/li>\n<li>Progress feedback and an activity log for import\/export operations.<\/li>\n<li>A single Drag &amp; Drop import workflow for JSON and CSV.<\/li>\n<\/ul>\n\n<h3>Source Code<\/h3>\n\n<p>The JavaScript source code is included in the plugin package:<\/p>\n\n<ul>\n<li>assets\/js\/admin.js<\/li>\n<li>assets\/js\/admin.src.js<\/li>\n<\/ul>\n\n<p>No obfuscated code is included. The source files are readable and maintained with the plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>kerishna-shop-migrator<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Make sure WooCommerce is installed and active.<\/li>\n<li>Activate Kerishna Shop Migrator.<\/li>\n<li>Open <strong>Kerishna<\/strong> from the WordPress admin menu.<\/li>\n<li>Choose JSON or CSV as the export format.<\/li>\n<li>Export orders or customers independently, depending on what you need.<\/li>\n<li>On the destination, drop the exported file into the smart import area.<\/li>\n<li>For direct site-to-site transfer, install Kerishna on both sites, generate credentials on the destination, and save them on the source.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20migrate%20orders%20without%20importing%20customer%20accounts%3F\"><h3>Can I migrate orders without importing customer accounts?<\/h3><\/dt>\n<dd><p>Yes. Orders and customers have independent export actions. An order-only import does not create new customer accounts. If a matching customer already exists on the destination, the order may reuse that existing account.<\/p><\/dd>\n<dt id=\"can%20i%20import%20customers%20without%20importing%20orders%3F\"><h3>Can I import customers without importing orders?<\/h3><\/dt>\n<dd><p>Yes. Export customers separately and drop the customer JSON or CSV file into the smart import area.<\/p><\/dd>\n<dt id=\"how%20does%20the%20importer%20know%20what%20is%20inside%20my%20file%3F\"><h3>How does the importer know what is inside my file?<\/h3><\/dt>\n<dd><p>New backups include a data-type marker. Kerishna also inspects compatible older backups and CSV headers to identify orders, customers, or combined data.<\/p><\/dd>\n<dt id=\"does%20kerishna%20delete%20or%20change%20orders%20on%20the%20source%20site%3F\"><h3>Does Kerishna delete or change orders on the source site?<\/h3><\/dt>\n<dd><p>No. Export and direct-copy workflows are designed to read source order\/customer data without deleting, moving, or changing source records or IDs.<\/p><\/dd>\n<dt id=\"are%20source%20wordpress%20ids%20copied%20directly%20to%20the%20destination%3F\"><h3>Are source WordPress IDs copied directly to the destination?<\/h3><\/dt>\n<dd><p>No. Source IDs are stored as references. The destination creates or uses its own order, product, variation, and user IDs.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20source%20and%20destination%20product%20ids%20are%20different%3F\"><h3>What happens when source and destination product IDs are different?<\/h3><\/dt>\n<dd><p>Kerishna does not rely on matching numeric IDs. It uses stable product\/variation identity information. When a safe match cannot be found, the order line can be retained independently instead of being linked to the wrong product.<\/p><\/dd>\n<dt id=\"what%20if%20a%20customer%20already%20exists%20on%20the%20destination%3F\"><h3>What if a customer already exists on the destination?<\/h3><\/dt>\n<dd><p>Kerishna checks previous source mapping, email, and normalized phone number before creating an account. A safe existing match is reused.<\/p><\/dd>\n<dt id=\"are%20customer%20passwords%20copied%3F\"><h3>Are customer passwords copied?<\/h3><\/dt>\n<dd><p>No. Passwords and password hashes are intentionally excluded from customer backups.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20guest%20orders%3F\"><h3>What happens to guest orders?<\/h3><\/dt>\n<dd><p>Guest orders remain guest orders. Kerishna does not create a customer account for a checkout that was a guest on the source.<\/p><\/dd>\n<dt id=\"which%20format%20should%20i%20use%3F\"><h3>Which format should I use?<\/h3><\/dt>\n<dd><p>JSON is recommended for the richest migration backup. CSV is useful when you also want a spreadsheet-friendly archive or need to inspect the exported data manually.<\/p><\/dd>\n<dt id=\"does%20kerishna%20support%20hpos%3F\"><h3>Does Kerishna support HPOS?<\/h3><\/dt>\n<dd><p>Kerishna uses WooCommerce order APIs and detects High-Performance Order Storage or legacy order storage for the migration environment.<\/p><\/dd>\n<dt id=\"does%20the%20admin%20panel%20load%20fonts%20or%20ui%20assets%20from%20a%20cdn%3F\"><h3>Does the admin panel load fonts or UI assets from a CDN?<\/h3><\/dt>\n<dd><p>No. The Shabnam font and Kerishna\/SHABNAM.DEV visual assets are bundled inside the plugin. The plugin UI does not depend on an external font CDN.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release of Kerishna Shop Migrator.<\/li>\n<li>Added independent JSON\/CSV exports for orders and registered customers.<\/li>\n<li>Added smart Drag &amp; Drop import with automatic JSON\/CSV and data-type detection.<\/li>\n<li>Added backward compatibility for compatible combined backups from previous SHCD\/Kerishna builds.<\/li>\n<li>Added order-only imports that do not create new customer accounts as a side effect.<\/li>\n<li>Added customer duplicate protection using source mapping, email, and normalized phone matching.<\/li>\n<li>Added direct authenticated site-to-site transfer with optional registered-customer migration.<\/li>\n<li>Added source read-only protections and same-source import guard.<\/li>\n<li>Added destination product\/variation matching without assuming source IDs match destination IDs.<\/li>\n<li>Added preservation of unmatched product lines so order history is not discarded.<\/li>\n<li>Added Persian, English, and Arabic real-time admin interface switching.<\/li>\n<li>Added locally bundled Shabnam typography and Kerishna\/SHABNAM.DEV branding assets.<\/li>\n<li>Added HPOS and legacy order storage detection.<\/li>\n<\/ul>","raw_excerpt":"Move store orders and customer accounts with source-safe backups, independent exports, smart imports, and duplicate-aware customer matching.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/360639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=360639"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shcd"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=360639"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=360639"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=360639"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=360639"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=360639"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=360639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}