{"id":292046,"date":"2026-04-11T12:33:58","date_gmt":"2026-04-11T12:33:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ftmpub-product-import-from-csv\/"},"modified":"2026-04-11T12:33:28","modified_gmt":"2026-04-11T12:33:28","slug":"ftmpub-product-import-from-csv","status":"publish","type":"plugin","link":"https:\/\/vi.wordpress.org\/plugins\/ftmpub-product-import-from-csv\/","author":23335097,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.9","requires_php":"7.4","requires_plugins":null,"header_name":"FTMPUB Product Import from CSV","header_author":"FTM PUB","header_description":"Met \u00e0 jour Description, Extrait (short), Slug et champs Yoast (title, meta description) des produits WooCommerce via CSV. Pr\u00e9visualisation, s\u00e9lection par ligne, d\u00e9tection auto du s\u00e9parateur, annulation (rollback), mod\u00e8le CSV, alias de colonnes et choix de la cl\u00e9 de correspondance (ID, SKU, Slug).","assets_banners_color":"fafafd","last_updated":"2026-04-11 12:33:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/ftmpub.ch\/ftmpub-product-import-from-csv-plugin-wordpress","header_author_uri":"https:\/\/ftmpub.ch","rating":0,"author_block_rating":0,"active_installs":0,"downloads":121,"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":"ftmpub","date":"2026-04-11 12:33:28"}},"upgrade_notice":{"1.0.0":"<p>Initial release \u2014 no upgrade needed.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3503939,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3503939,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3503939,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3503939,"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":3503939,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3503939,"resolution":"2","location":"assets","locale":"","width":1200,"height":855},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3503939,"resolution":"3","location":"assets","locale":"","width":1200,"height":904}},"screenshots":{"1":"<strong>CSV upload form<\/strong> \u2014 Upload your CSV, choose the delimiter and the product match key (ID, SKU, Slug, or Auto).","2":"<strong>Preview table<\/strong> \u2014 Review every row before importing. Rows without a valid product key are automatically disabled. Use Select All \/ None buttons to control the selection.","3":"<strong>Import result &amp; rollback<\/strong> \u2014 Green success notice after import with updated \/ ignored \/ error counts. The Security &amp; Rollback panel shows the backup ready for one-click undo."}},"plugin_section":[],"plugin_tags":[11143,567,21735,186,286],"plugin_category":[45,55],"plugin_contributors":[246337],"plugin_business_model":[],"class_list":["post-292046","plugin","type-plugin","status-publish","hentry","plugin_tags-bulk-edit","plugin_tags-csv","plugin_tags-product-import","plugin_tags-seo","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-ftmpub","plugin_committers-ftmpub"],"banners":{"banner":"https:\/\/ps.w.org\/ftmpub-product-import-from-csv\/assets\/banner-772x250.png?rev=3503939","banner_2x":"https:\/\/ps.w.org\/ftmpub-product-import-from-csv\/assets\/banner-1544x500.png?rev=3503939","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ftmpub-product-import-from-csv\/assets\/icon-128x128.png?rev=3503939","icon_2x":"https:\/\/ps.w.org\/ftmpub-product-import-from-csv\/assets\/icon-256x256.png?rev=3503939","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ftmpub-product-import-from-csv\/assets\/screenshot-1.png?rev=3503939","caption":"<strong>CSV upload form<\/strong> \u2014 Upload your CSV, choose the delimiter and the product match key (ID, SKU, Slug, or Auto)."},{"src":"https:\/\/ps.w.org\/ftmpub-product-import-from-csv\/assets\/screenshot-2.png?rev=3503939","caption":"<strong>Preview table<\/strong> \u2014 Review every row before importing. Rows without a valid product key are automatically disabled. Use Select All \/ None buttons to control the selection."},{"src":"https:\/\/ps.w.org\/ftmpub-product-import-from-csv\/assets\/screenshot-3.png?rev=3503939","caption":"<strong>Import result &amp; rollback<\/strong> \u2014 Green success notice after import with updated \/ ignored \/ error counts. The Security &amp; Rollback panel shows the backup ready for one-click undo."}],"raw_content":"<!--section=description-->\n<p><strong>FTMPUB Product Import from CSV<\/strong> is the fastest way to bulk update WooCommerce product content using a simple CSV file \u2014 without touching the database directly and without risking data loss.<\/p>\n\n<p>Upload your CSV, preview every row before applying, choose exactly which products to update, and roll back the entire operation with a single click if needed. Lightweight, secure, and fully compliant with WordPress coding standards.<\/p>\n\n<p><strong>For full documentation, support, and the PRO version, visit <a href=\"https:\/\/ftmpub.ch\/ftmpub-product-import-from-csv-plugin-wordpress\/\">FTMPUB.ch<\/a>.<\/strong><\/p>\n\n<h4>Highlights<\/h4>\n\n<ul>\n<li><strong>Preview before import<\/strong> \u2014 review every row before a single product is touched<\/li>\n<li><strong>Selective import<\/strong> \u2014 check\/uncheck individual rows or use Select All \/ None<\/li>\n<li><strong>One-click rollback<\/strong> \u2014 instantly restore all modified products to their previous state<\/li>\n<li><strong>Auto-detect delimiter<\/strong> \u2014 semicolon, comma, tab, or pipe detected automatically<\/li>\n<li><strong>Flexible product matching<\/strong> \u2014 match by ID, SKU, Slug, or Auto (ID \u2192 SKU \u2192 Slug)<\/li>\n<li><strong>Post-import report<\/strong> \u2014 updated \/ ignored \/ failed counts with per-row failure details<\/li>\n<li><strong>Downloadable CSV template<\/strong> \u2014 prefilled with your product data structure<\/li>\n<li><strong>Multi-tab collision prevention<\/strong> \u2014 unique session token per preview<\/li>\n<li><strong>Security-first<\/strong> \u2014 nonces, capability checks, sanitized inputs, safe redirects<\/li>\n<li><strong>100% free<\/strong> \u2014 no account required, no lock-in<\/li>\n<\/ul>\n\n<h4>What you can update<\/h4>\n\n<ul>\n<li><strong>Short Description<\/strong> (post excerpt)<\/li>\n<li><strong>Description<\/strong> (post content, full HTML)<\/li>\n<li><strong>Slug<\/strong> (URL key, auto-deduplicated by WordPress)<\/li>\n<li><strong>Yoast SEO Title<\/strong> (<code>_yoast_wpseo_title<\/code>)<\/li>\n<li><strong>Yoast Meta Description<\/strong> (<code>_yoast_wpseo_metadesc<\/code>)<\/li>\n<\/ul>\n\n<h4>Who is it for?<\/h4>\n\n<ul>\n<li>SEO managers who need to update dozens or hundreds of product meta descriptions at once<\/li>\n<li>Catalogue managers importing content from an external PIM or spreadsheet<\/li>\n<li>Developers who need a safe, auditable bulk-edit tool for client sites<\/li>\n<li>Agencies managing multiple WooCommerce stores<\/li>\n<\/ul>\n\n<h4>CSV Format<\/h4>\n\n<p>Your CSV must contain at least one lookup column: <strong>ID<\/strong>, <strong>SKU<\/strong>, or <strong>Slug<\/strong>. All other columns are optional.<\/p>\n\n<p><strong>Accepted column names (and aliases):<\/strong><\/p>\n\n\n\n\n  Canonical key\n  Accepted aliases\n\n\n\n\n  <code>id<\/code>\n  <code>product_id<\/code>\n\n\n  <code>sku<\/code>\n  <em>(standard column name)<\/em>\n\n\n  <code>short_description<\/code>\n  <code>short<\/code>, <code>shortdesc<\/code>, <code>excerpt<\/code>\n\n\n  <code>description<\/code>\n  <code>desc<\/code>, <code>content<\/code>\n\n\n  <code>slug<\/code>\n  <code>post_name<\/code>, <code>permalink<\/code>, <code>url_key<\/code>\n\n\n  <code>seo_title<\/code>\n  <code>yoast_title<\/code>, <code>title_seo<\/code>\n\n\n  <code>meta_description<\/code>\n  <code>yoast_metadesc<\/code>, <code>meta_desc<\/code>, <code>metadesc<\/code>\n\n\n\n\n<p>Column names are case-insensitive and accent-insensitive. Spaces and hyphens are treated as underscores.<\/p>\n\n<p>Supported delimiters: <code>;<\/code> (semicolon), <code>,<\/code> (comma), <code>\\t<\/code> (tab), <code>|<\/code> (pipe). Use <strong>Auto (recommended)<\/strong> to let the plugin detect automatically.<\/p>\n\n<p>A downloadable CSV template with a sample row is available directly from the plugin interface.<\/p>\n\n<h4>Limits<\/h4>\n\n<ul>\n<li>Maximum file size: <strong>10 MB<\/strong><\/li>\n<li>Maximum rows loaded in preview: <strong>20 000<\/strong><\/li>\n<li>Backup stored for up to <strong>5 000 products<\/strong> per import run<\/li>\n<li>Serialized preview data must not exceed <strong>4 MB<\/strong> (split large files if needed)<\/li>\n<\/ul>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li>Requires <strong>WooCommerce<\/strong> (tested up to WC 9.x)<\/li>\n<li>Compatible with <strong>WooCommerce HPOS<\/strong> (High-Performance Order Storage)<\/li>\n<li>Yoast SEO fields are updated if Yoast is active \u2014 no error if Yoast is not installed<\/li>\n<li>Compatible with WordPress multisite (per-site activation)<\/li>\n<\/ul>\n\n<h4>Need more?<\/h4>\n\n<p>Check out the <strong>PRO version<\/strong> on <a href=\"https:\/\/ftmpub.ch\/ftmpub-product-import-from-csv-plugin-wordpress\/\">FTMPUB.ch<\/a> \u2014 with support for additional fields (price, stock, categories, tags, images), batch AJAX processing, export to CSV, saved filter profiles, and full operation history log.<\/p>\n\n<h3>Support<\/h3>\n\n<p>Need help or want to upgrade to the <strong>PRO version<\/strong> with export, additional fields, and operation history?<\/p>\n\n<p>\ud83d\udc49 <a href=\"https:\/\/ftmpub.ch\/ftmpub-product-import-from-csv-plugin-wordpress\/\">FTMPUB Product Import from CSV \u2014 Plugin page<\/a>\n\ud83d\udc49 <a href=\"https:\/\/ftmpub.ch\">FTMPUB.ch \u2014 WordPress plugins made in Switzerland<\/a><\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>In the WordPress admin, go to <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Search for <strong>\"FTMPUB Product Import from CSV\"<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>Tools \u2192 FTMPUB Product Import from CSV<\/strong> and upload your first CSV.<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP from <a href=\"https:\/\/ftmpub.ch\/ftmpub-product-import-from-csv-plugin-wordpress\/\">FTMPUB.ch<\/a> or WordPress.org.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Upload the ZIP file and click <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>Tools \u2192 FTMPUB Product Import from CSV<\/strong> to get started.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20csv%20delimiters%20are%20supported%3F\"><h3>Which CSV delimiters are supported?<\/h3><\/dt>\n<dd><p>Semicolon (<code>;<\/code>), comma (<code>,<\/code>), tab (<code>\\t<\/code>) and pipe (<code>|<\/code>). Choose <strong>Auto (recommended)<\/strong> to let the plugin detect the delimiter automatically by sampling the first 4 KB of the file.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20product%20is%20not%20found%3F\"><h3>What happens if a product is not found?<\/h3><\/dt>\n<dd><p>The row is counted as <strong>ignored<\/strong> and listed in the post-import failure report with the lookup key and reason. No data is modified for that row.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20an%20import%3F\"><h3>Can I undo an import?<\/h3><\/dt>\n<dd><p>Yes. The plugin saves a snapshot of the original field values before each import. Click <strong>Undo last import<\/strong> in the Security &amp; Rollback panel to restore all affected products to their previous state in one click. The backup covers up to 5 000 products per run.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20yoast%20seo%3F\"><h3>Does it work without Yoast SEO?<\/h3><\/dt>\n<dd><p>Yes. The SEO Title and Meta Description columns are simply ignored if Yoast SEO is not active. No error is thrown.<\/p><\/dd>\n<dt id=\"is%20woocommerce%20required%3F\"><h3>Is WooCommerce required?<\/h3><\/dt>\n<dd><p>Yes. The plugin checks for WooCommerce at activation and on every admin page load. A warning notice is displayed if WooCommerce is missing or inactive.<\/p><\/dd>\n<dt id=\"how%20large%20can%20my%20csv%20be%3F\"><h3>How large can my CSV be?<\/h3><\/dt>\n<dd><p>The upload limit is 10 MB and the preview loads up to 20 000 rows. For very large catalogues, split your CSV into multiple files.<\/p><\/dd>\n<dt id=\"where%20can%20i%20find%20documentation%20and%20support%3F\"><h3>Where can I find documentation and support?<\/h3><\/dt>\n<dd><p>Full documentation, tutorials, and support are available on <a href=\"https:\/\/ftmpub.ch\/ftmpub-product-import-from-csv-plugin-wordpress\/\">FTMPUB.ch<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Preview interface with row-level selection before import<\/li>\n<li>One-click rollback \u2014 full snapshot of modified fields before each run<\/li>\n<li>Auto-detect CSV delimiter (semicolon, comma, tab, pipe)<\/li>\n<li>Product matching by ID, SKU, Slug, or Auto (ID \u2192 SKU \u2192 Slug)<\/li>\n<li>Post-import report with per-row failure details<\/li>\n<li>Downloadable CSV template with sample row<\/li>\n<li>Multi-tab collision prevention via unique UUID session token<\/li>\n<li>Transient and option size guard \u2014 serialized size checked before write<\/li>\n<li>Failures array capped at 500 entries with truncation indicator<\/li>\n<li>WooCommerce HPOS compatibility declared<\/li>\n<li>Plugin Check (PHPCS) compliance: EscapeOutput, NonceVerification, AlternativeFunctions, InputNotSanitized, DiscouragedFunctions<\/li>\n<li>CSV parsing via SplFileObject (no direct fopen\/fclose)<\/li>\n<li>Developer hooks: ftmpprim_column_aliases, ftmpprim_template_columns, ftmpprim_max_preview_rows, ftmpprim_import_row<\/li>\n<\/ul>","raw_excerpt":"Bulk update WooCommerce product fields (descriptions, slug, SEO) from a CSV \u2014 with preview, selective apply, and one-click undo.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/292046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=292046"}],"author":[{"embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ftmpub"}],"wp:attachment":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=292046"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=292046"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=292046"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=292046"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=292046"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=292046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}