{"id":12538,"date":"2024-12-19T17:20:20","date_gmt":"2024-12-19T17:20:20","guid":{"rendered":"https:\/\/www.getmesa.com/blog\/?p=12538"},"modified":"2025-12-22T23:19:44","modified_gmt":"2025-12-22T23:19:44","slug":"how-to-schedule-shopify-product-csv-export-to-ftp","status":"publish","type":"post","link":"https:\/\/www.getmesa.com/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/","title":{"rendered":"How to Schedule Shopify Product CSV Export to FTP"},"content":{"rendered":"\n<p>Automating Shopify product CSV exports can significantly affect how smoothly your business runs. It helps keep your inventory data up-to-date across all platforms, making multi-channel inventory management easier and more reliable. Plus, with accurate data, you can trust your reports and dive deeper into analytics to make smarter business decisions.<\/p>\n\n\n\n<p>This tutorial will provide a step-by-step guide for using MESA to build a workflow that exports product data to a CSV file on an FTP server. In addition, it\u2019ll cover everything you need to know and demonstrate how to update essential data points like inventory count, prices, cost of goods, and inventory location.<\/p>\n\n\n\n<p class=\"inline-cta\">Automate product CSV exports to FTP\u2014no coding needed. <a href=\"http:\/\/app.getmesa.com\/install\" target=\"_blank\" rel=\"noreferrer noopener\">Try MESA today<\/a> and save time managing your Shopify products.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">In this article:<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.getmesa.com/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#Step-by-Step-Guide-Scheduling-a-Shopify-product-export-workflow\" >Step-by-Step Guide: Scheduling a Shopify product export workflow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.getmesa.com/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#Popular-uses-for-scheduled-product-exports\" >Popular uses for scheduled product exports<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.getmesa.com/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#Conclusion\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.getmesa.com/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#Frequently-asked-questions\" >Frequently asked questions<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"h-step-by-step-guide-scheduling-a-shopify-product-export-workflow\"><span class=\"ez-toc-section\" id=\"Step-by-Step-Guide-Scheduling-a-Shopify-product-export-workflow\"><\/span>Step-by-Step Guide: Scheduling a Shopify product export workflow<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<div class=\"schema-how-to wp-block-yoast-how-to-block\"><p class=\"schema-how-to-total-time\"><span class=\"schema-how-to-duration-time-text\">Time needed:&nbsp;<\/span>15 minutes<\/p><p class=\"schema-how-to-description\">Export product CSV Shopify files to an FTP server with this guide to simplify the process and automate inventory updates.<\/p> <ol class=\"schema-how-to-steps\"><li class=\"schema-how-to-step\" id=\"how-to-step-1734045375268\"><strong class=\"schema-how-to-step-name\">Add the built-in tool Schedule<\/strong> <p class=\"schema-how-to-step-text\">Set a repeating schedule for your export workflow (daily, weekly, etc.).<img loading=\"lazy\" decoding=\"async\" width=\"655\" height=\"544\" class=\"wp-image-12539\" alt=\"Add the built-in tool Schedule\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/trigger-schedule.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/trigger-schedule.png 655w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/trigger-schedule-300x249.png 300w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734045588137\"><strong class=\"schema-how-to-step-name\">Next, add a new step, select the Shopify app, and select the Get List of Products action<\/strong> <p class=\"schema-how-to-step-text\">Select criteria to define which products are included in the export.<img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"512\" class=\"wp-image-12540\" alt=\"Get list of products\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-get-products.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-shopify-get-products.png 650w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-shopify-get-products-300x236.png 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734045715752\"><strong class=\"schema-how-to-step-name\">Add a Loop step<\/strong> <p class=\"schema-how-to-step-text\">Set the &#8220;Values to loop over&#8221; to iterate through the products from the previous step.<img loading=\"lazy\" decoding=\"async\" width=\"731\" height=\"653\" class=\"wp-image-12541\" alt=\"Add a Loop step\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-add-loop.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-add-loop.png 731w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-add-loop-300x268.png 300w\" sizes=\"auto, (max-width: 731px) 100vw, 731px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734045784642\"><strong class=\"schema-how-to-step-name\">Inside the Loop, add another Loop step for variants<\/strong> <p class=\"schema-how-to-step-text\">Save your workflow to make the Loop variables accessible. Then, add a second Loop to filter out &#8216;default&#8217; variants automatically added by Shopify.<img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"686\" class=\"wp-image-12542\" style=\"max-width:100%;\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-variants.png\" alt=\"Add another Loop step for variants\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-loop-variants.png 735w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-loop-variants-300x280.png 300w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734045871340\"><strong class=\"schema-how-to-step-name\">Now add a Shopify step and select the Retrieve Inventory Item action<\/strong> <p class=\"schema-how-to-step-text\">Because inventory data is managed separately from the product object, you need to extract the Inventory Item ID from the Variant data to access it.<img loading=\"lazy\" decoding=\"async\" width=\"728\" height=\"386\" class=\"wp-image-12543\" alt=\"Add a Shopify step and select the Retrieve Inventory Item action\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-retrieve-inventory.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-shopify-retrieve-inventory.png 728w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-shopify-retrieve-inventory-300x159.png 300w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734045965617\"><strong class=\"schema-how-to-step-name\">Add another Shopify step and select the Get List of Inventory Levels action<\/strong> <p class=\"schema-how-to-step-text\">We\u2019ll use the ID from the prior step to collect the inventory values for each Variant.<img loading=\"lazy\" decoding=\"async\" width=\"730\" height=\"599\" class=\"wp-image-12544\" alt=\"Add another Shopify step and select the Get List of Inventory Levels action\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-inventory-levels.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-shopify-inventory-levels.png 730w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-shopify-inventory-levels-300x246.png 300w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734049562556\"><strong class=\"schema-how-to-step-name\">Use the built-in Code step<\/strong> <p class=\"schema-how-to-step-text\">We need to use a <a href=\"https:\/\/www.getmesa.com\/apps\/shopify\/integrate\/code\">Custom Code step<\/a> to generate the Location ID to capture where inventory is stored. <br\/><strong> <\/strong><img loading=\"lazy\" decoding=\"async\" width=\"731\" height=\"403\" class=\"wp-image-12558\" style=\"max-width:100%;\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-custom-code-edit.png\" alt=\"Use the built-in Code Step\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-custom-code-edit.png 731w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-custom-code-edit-300x165.png 300w\" sizes=\"auto, (max-width: 731px) 100vw, 731px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734047752162\"><strong class=\"schema-how-to-step-name\">Add a Shopify step and select Retrieve Location<\/strong> <p class=\"schema-how-to-step-text\">The value from the previous code step will be used to gather the location&#8217;s name for the file.<br\/><img loading=\"lazy\" decoding=\"async\" width=\"729\" height=\"336\" class=\"wp-image-12545\" alt=\"Add a Shopify step and select Retrieve Location action\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-retrieve-location.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-shopify-retrieve-location.png 729w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-shopify-retrieve-location-300x138.png 300w\" sizes=\"auto, (max-width: 729px) 100vw, 729px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734050088113\"><strong class=\"schema-how-to-step-name\">Next, add a Transform Mapping step<\/strong> <p class=\"schema-how-to-step-text\">Organize product data fields (SKU, inventory count, cost of goods, etc.) into key\/value pairs for the CSV file. <br\/><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"1594\" class=\"wp-image-12587\" alt=\"Add a Transform Mapping step\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42.png 732w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42-138x300.png 138w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42-470x1024.png 470w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42-705x1536.png 705w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734047811172\"><strong class=\"schema-how-to-step-name\">Configure the Variant Loop End\u00a0<\/strong> <p class=\"schema-how-to-step-text\">Now, we need to map the value returned as the {{transform}} variable.<img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"470\" class=\"wp-image-12546\" alt=\"Configure Loop End variant\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-end-configure.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-loop-end-configure.png 732w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-loop-end-configure-300x193.png 300w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734047868609\"><strong class=\"schema-how-to-step-name\">Configure the Product Loop End\u00a0<\/strong> <p class=\"schema-how-to-step-text\">Lastly, we need to map the value returned as the {{loop_3}} variable.\u00a0<img loading=\"lazy\" decoding=\"async\" width=\"726\" height=\"469\" class=\"wp-image-12547\" alt=\"Configure the Product Loop End\u00a0\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-end-product-configure.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-loop-end-product-configure.png 726w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-loop-end-product-configure-300x194.png 300w\" sizes=\"auto, (max-width: 726px) 100vw, 726px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734047909914\"><strong class=\"schema-how-to-step-name\">Add the FTP step and select Save FTP file<\/strong> <p class=\"schema-how-to-step-text\">Make sure to set the file name to something specific like product-export_{{ &#8220;now&#8221; | date: &#8220;_%m_%d_%Y_%r&#8221; }}.csv<img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"666\" class=\"wp-image-12596\" alt=\"Add the FTP step and select Save FTP file\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-ftp-save-file-1.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-ftp-save-file-1.png 680w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-ftp-save-file-1-300x294.png 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734048036902\"><strong class=\"schema-how-to-step-name\">Finally, select \u201cEdit code\u201d\u00a0<\/strong> <p class=\"schema-how-to-step-text\">Copy and paste the following code snippet, then click &#8216;Save Changes&#8217; to complete the setup. Your workflow is now ready to run. <br\/><br\/><code>const Mesa = require('vendor\/Mesa.js');<br\/>const Transform = require('vendor\/Transform.js');<br\/><br\/>\/**<br\/>* A Mesa Script exports a class with a script() method.<br\/>*\/<br\/>module.exports = new class {<br\/><br\/>\/**<br\/>* Mesa Script<br\/>*<br\/>* @param {object} payload The payload data<br\/>* @param {object} context Additional context about this task<br\/>*\/<br\/><br\/>script = (payload, context) => {<br\/>\/\/ Adjust `payload` here to alter data before we transform it.<br\/><br\/>\/\/ Alter the payload data based on our transform rules<br\/>let csvRows = [];<br\/><br\/>if (payload &amp;&amp; payload.items) {<br\/>payload.items.forEach((product) => {<br\/>if (product.items) {<br\/>product.items.map((variant) => {<br\/>const { product_id, product_title, variant_id, variant_option1, variant_option2, variant_price, inventory_quantity, location } = variant;<br\/><br\/>csvRows.push({<br\/>product_id,<br\/>product_title,<br\/>variant_id,<br\/>variant_option1,<br\/>variant_option2,<br\/>variant_price,<br\/>inventory_quantity,<br\/>location<br\/>});<br\/>});<br\/>}<br\/>});<br\/>}<br\/><br\/>\/\/ Adjust `output` here to alter data after we transform it.<br\/>const csvOutput = Mesa.csv.encode(csvRows, true);<br\/><br\/>\/\/ We're done, call the next step!<br\/>Mesa.output.next(csvOutput);<br\/>}<br\/>}<\/code><br\/><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"956\" class=\"wp-image-12549\" style=\"max-width:100%;\" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-ftp-edit-code.png\" alt=\"Select Edit Code and past in the code snippet\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-ftp-edit-code.png 1600w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-ftp-edit-code-300x179.png 300w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-ftp-edit-code-1024x612.png 1024w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-ftp-edit-code-768x459.png 768w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/action-ftp-edit-code-1536x918.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1734048437776\"><strong class=\"schema-how-to-step-name\">Test, then turn \u201cOn\u201d<\/strong> <p class=\"schema-how-to-step-text\">Give your workflow a test run to confirm it\u2019s ready, then activate it to run automatically every hour.  <br\/><img loading=\"lazy\" decoding=\"async\" width=\"738\" height=\"1806\" class=\"wp-image-12589\" alt=\"Test and turn on your workflow. \" src=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/end-export-product-csv-ftp.png\" style=\"max-width:100%;\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/end-export-product-csv-ftp.png 738w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/end-export-product-csv-ftp-123x300.png 123w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/end-export-product-csv-ftp-418x1024.png 418w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/end-export-product-csv-ftp-628x1536.png 628w\" sizes=\"auto, (max-width: 738px) 100vw, 738px\" \/><\/p> <\/li><\/ol><\/div>\n\n\n\n<aside class=\"section-single-related\" aria-labelledby=\"related-heading-12392\">\n\t<p id=\"related-heading-12392\">\n\t\tRelated article:\n\t<\/p>\n\n\t<article class=\"card-aside\">\n\t\t<a href=\"https:\/\/www.getmesa.com/blog\/how-to-set-up-shopify-ftp\/\" class=\"card-aside__link\">\n\t\t\t<figure class=\"card__image\">\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_ftp-1024x576.png\" class=\"attachment-large size-large wp-post-image\" alt=\"FTP Shopify\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_ftp-1024x576.png 1024w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_ftp-300x169.png 300w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_ftp-768x432.png 768w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_ftp.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t<\/figure><!-- \/.card__image -->\n\n\t\t\t<p class=\"card__title\">\n\t\t\t\t<strong>How to Set Up Shopify FTP<\/strong>\n\t\t\t<\/p><!-- \/.card__title -->\n\n\t\t\t<span class=\"btn btn--outline card__btn card__btn--alt\" aria-hidden=\"true\">\n\t\t\t\tRead article\t\t\t<\/span>\n\t\t<\/a>\n\t<\/article>\n<\/aside>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-popular-uses-for-scheduled-product-exports\"><span class=\"ez-toc-section\" id=\"Popular-uses-for-scheduled-product-exports\"><\/span>Popular uses for scheduled product exports<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Automating product exports in Shopify significantly streamlines your store\u2019s operations. Furthermore, by scheduling exports to an FTP server, you can efficiently manage inventory, reporting, and product updates with less effort and fewer errors.<\/p>\n\n\n\n<p>This is particularly helpful if you work with multiple sales channels, need detailed analytics, or frequently adjust prices. Here are some key ways merchants use scheduled exports to improve efficiency:<\/p>\n\n\n\n<p><strong>Inventory Syncing with Third-Party Systems<\/strong><br><strong><br><\/strong>Scheduled exports keep inventory data up-to-date across platforms, ensuring accurate stock levels and avoiding overselling. This is especially valuable for merchants selling on multiple channels or managing complex supply chains.<br><br>By automating updates with FTP feeds, you not only save time but also minimize errors, while additionally gaining real-time visibility into your inventory across Shopify and tools like ERPs or warehouse software.<\/p>\n\n\n\n<aside class=\"section-single-related\" aria-labelledby=\"related-heading-7211\">\n\t<p id=\"related-heading-7211\">\n\t\tRelated article:\n\t<\/p>\n\n\t<article class=\"card-aside\">\n\t\t<a href=\"https:\/\/www.getmesa.com/blog\/how-to-connect-ftp-inventory-feed-to-update-shopify-products\/\" class=\"card-aside__link\">\n\t\t\t<figure class=\"card__image\">\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify-1024x576.jpg\" class=\"attachment-large size-large wp-post-image\" alt=\"tutorial ftp to shopify inventory\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify-1024x576.jpg 1024w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify-300x169.jpg 300w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify-768x432.jpg 768w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify-553x311.jpg 553w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify-356x200.jpg 356w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify-764x430.jpg 764w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify-284x160.jpg 284w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial-ftp-inventory-feed-shopify.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t<\/figure><!-- \/.card__image -->\n\n\t\t\t<p class=\"card__title\">\n\t\t\t\t<strong>How To Connect FTP Inventory Feed To Update Shopify Products<\/strong>\n\t\t\t<\/p><!-- \/.card__title -->\n\n\t\t\t<span class=\"btn btn--outline card__btn card__btn--alt\" aria-hidden=\"true\">\n\t\t\t\tRead article\t\t\t<\/span>\n\t\t<\/a>\n\t<\/article>\n<\/aside>\n\n\n\n<p><strong>Regular price and product data updates<\/strong><\/p>\n\n\n\n<p>Scheduling exports to an FTP server not only makes bulk product updates simple and efficient but also allows marketing teams to quickly update descriptions and metadata, thereby improving conversions and enhancing SEO.<\/p>\n\n\n\n<p>It\u2019s also great for managing dynamic pricing for promotions or market changes. As your products evolve, you can quickly adjust descriptions or specifications.<\/p>\n\n\n\n<aside class=\"section-single-related\" aria-labelledby=\"related-heading-12504\">\n\t<p id=\"related-heading-12504\">\n\t\tRelated article:\n\t<\/p>\n\n\t<article class=\"card-aside\">\n\t\t<a href=\"https:\/\/www.getmesa.com/blog\/update-shopify-product-prices-csv-ftp\/\" class=\"card-aside__link\">\n\t\t\t<figure class=\"card__image\">\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_csv-shopify-1024x576.png\" class=\"attachment-large size-large wp-post-image\" alt=\"\" srcset=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_csv-shopify-1024x576.png 1024w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_csv-shopify-300x169.png 300w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_csv-shopify-768x432.png 768w, https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_csv-shopify.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t<\/figure><!-- \/.card__image -->\n\n\t\t\t<p class=\"card__title\">\n\t\t\t\t<strong>How to Update Shopify Product Prices from a CSV File on an FTP Server<\/strong>\n\t\t\t<\/p><!-- \/.card__title -->\n\n\t\t\t<span class=\"btn btn--outline card__btn card__btn--alt\" aria-hidden=\"true\">\n\t\t\t\tRead article\t\t\t<\/span>\n\t\t<\/a>\n\t<\/article>\n<\/aside>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>MESA&#8217;s product export automation empowers Shopify merchants to streamline operations and focus on growth. Whether reducing human errors, saving time, or ensuring your platforms and systems work together, MESA\u2019s workflows will improve your operations.<\/p>\n\n\n\n<p>With the right approach, automated exports mean your product data is always consistent, allowing you to focus on growth-driving activities like marketing, strategy, and delivering exceptional customer experiences.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-frequently-asked-questions\"><span class=\"ez-toc-section\" id=\"Frequently-asked-questions\"><\/span>Frequently asked questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1734047497161\"><strong class=\"schema-faq-question\"><strong>What are best practices? <\/strong><\/strong> <p class=\"schema-faq-answer\">Update your template regularly with relevant fields to maintain accurate data. Use standardized naming conventions across your product catalog for easy organization, and always back up your data before major changes.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1734047508735\"><strong class=\"schema-faq-question\"><strong>How do you handle large inventories?<\/strong><\/strong> <p class=\"schema-faq-answer\">Segmenting exports into smaller, targeted groups, such as by category, SKU range, or location, makes managing large inventories easier. This helps keep file sizes manageable and data organized. Additionally, with MESA, you can customize the \u201cGet List of Products\u201d step to filter exports by availability, tags, and more, ensuring you export only the products you need. <\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1734047523061\"><strong class=\"schema-faq-question\"><strong>How do I handle multiple exports from a single workflow run?<br\/><\/strong><\/strong> <p class=\"schema-faq-answer\">MESA\u2019s built-in Paths tool allows you to create multiple exports from a single workflow run. This means you can automatically generate different CSV files for various inventory segments, such as separating exports by location or product type\u2014all within the same scheduled workflow. This tailored approach saves time and helps you focus on the data that matters most.<\/p> <\/div> <\/div>\n\n\n\n<div class=\"card-next-steps\">\n\t<div class=\"card__content\">\n\t\t<h4>What to do next&#8230;<\/h4>\n<p>The fastest way to see automation working in your store is to start with a single workflow.<\/p>\n<ol>\n<li><a href=\"https:\/\/www.getmesa.com\/pricing\"><strong>Try MESA free<\/strong><\/a> \u2014 start a 7-day free trial and get your first workflow running.<\/li>\n<li><a href=\"https:\/\/www.getmesa.com\/templates\"><strong>Browse the template library<\/strong><\/a> \u2014 pre-built workflows for the most common Shopify automation tasks.<\/li>\n<li><a href=\"https:\/\/www.getmesa.com\/yedric\"><strong>Talk to Yedric<\/strong><\/a> \u2014 describe what you want to automate, and let our AI assistant build it for you.<\/li>\n<li><a href=\"https:\/\/www.getmesa.com\/support\"><strong>Get free workflow setup<\/strong><\/a> \u2014 MESA&#8217;s team will build your first workflow at no cost.<\/li>\n<\/ol>\n\t<\/div><!-- \/.card__content -->\n\n\t\n<div class=\"socials card__socials\">\n\t<ul>\n\t\t\t\t\t<li>\n\t\t\t\t<a href=\"https:\/\/twitter.com\/getmesa\" target=\"_blank\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/twitter-icon.svg\" class=\"attachment-small size-small\" alt=\"icon: twitter\" \/>\t\t\t\t<\/a>\n\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t<a href=\"https:\/\/www.youtube.com\/@getmesa\" target=\"_blank\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/youtube-icon.svg\" class=\"attachment-small size-small\" alt=\"icon: youtube\" \/>\t\t\t\t<\/a>\n\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t<a href=\"https:\/\/www.linkedin.com\/company\/9754608\/\" target=\"_blank\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/linkedin-icon.svg\" class=\"attachment-small size-small\" alt=\"linkedin icon\" \/>\t\t\t\t<\/a>\n\t\t\t<\/li>\n\t\t\t<\/ul>\n<\/div><!-- \/.socials -->\n<\/div><!-- \/.card-next-steps -->\n","protected":false},"excerpt":{"rendered":"<p>Automating Shopify product CSV exports can significantly affect how smoothly your business runs. It helps keep your inventory data up-to-date&#8230;<\/p>\n","protected":false},"author":1,"featured_media":12556,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[48],"tags":[245],"class_list":["post-12538","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-workflow-tutorials","tag-ftp"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Export Product CSV Shopify Files to FTP<\/title>\n<meta name=\"description\" content=\"Automate Shopify product CSV exports to FTP, keeping inventory accurate, streamlining operations, and supporting smarter business decisions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Schedule Shopify Product CSV Export to FTP\" \/>\n<meta property=\"og:description\" content=\"Automating Shopify product CSV exports can significantly affect how smoothly your business runs. It helps keep your inventory data up-to-date across all\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/\" \/>\n<meta property=\"og:site_name\" content=\"MESA\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/web.facebook.com\/mesabyshoppad\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-19T17:20:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-22T23:19:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/tutorial_shopify-csv.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ryan ODonnell\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@getmesa\" \/>\n<meta name=\"twitter:site\" content=\"@getmesa\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ryan ODonnell\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/\"},\"author\":{\"name\":\"Ryan ODonnell\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#\\\/schema\\\/person\\\/37dc9b968192b2be49af3950022179cc\"},\"headline\":\"How to Schedule Shopify Product CSV Export to FTP\",\"datePublished\":\"2024-12-19T17:20:20+00:00\",\"dateModified\":\"2025-12-22T23:19:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/\"},\"wordCount\":946,\"publisher\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.getmesa.com/blog\\\/wp-content\\\/uploads\\\/tutorial_shopify-csv.png\",\"keywords\":[\"ftp\"],\"articleSection\":[\"Workflow Tutorials\"],\"inLanguage\":\"en-US\"},{\"@type\":[\"WebPage\",\"FAQPage\"],\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/\",\"name\":\"How to Export Product CSV Shopify Files to FTP\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.getmesa.com/blog\\\/wp-content\\\/uploads\\\/tutorial_shopify-csv.png\",\"datePublished\":\"2024-12-19T17:20:20+00:00\",\"dateModified\":\"2025-12-22T23:19:44+00:00\",\"description\":\"Automate Shopify product CSV exports to FTP, keeping inventory accurate, streamlining operations, and supporting smarter business decisions.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#breadcrumb\"},\"mainEntity\":[{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047497161\"},{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047508735\"},{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047523061\"}],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.getmesa.com/blog\\\/wp-content\\\/uploads\\\/tutorial_shopify-csv.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com/blog\\\/wp-content\\\/uploads\\\/tutorial_shopify-csv.png\",\"width\":1280,\"height\":720,\"caption\":\"How to Schedule Shopify Product CSV Export to FTP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Schedule Shopify Product CSV Export to FTP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/\",\"name\":\"MESA\",\"description\":\"Discover how to automate your Shopify growth\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#organization\",\"name\":\"MESA - AI automation Platform\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/mesa-shoppad.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/mesa-shoppad.jpeg\",\"width\":225,\"height\":225,\"caption\":\"MESA - AI automation Platform\"},\"image\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/web.facebook.com\\\/mesabyshoppad\\\/\",\"https:\\\/\\\/x.com\\\/getmesa\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/shoppad\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCqsf_WhcGEsZMvms1idivyw\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/#\\\/schema\\\/person\\\/37dc9b968192b2be49af3950022179cc\",\"name\":\"Ryan ODonnell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/62bb965c979cc1de4c6f046fb47a28a57bc194da441ebe43b3dfbe2f2f893563?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/62bb965c979cc1de4c6f046fb47a28a57bc194da441ebe43b3dfbe2f2f893563?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/62bb965c979cc1de4c6f046fb47a28a57bc194da441ebe43b3dfbe2f2f893563?s=96&d=mm&r=g\",\"caption\":\"Ryan ODonnell\"},\"sameAs\":[\"https:\\\/\\\/www.getmesa.com\"],\"jobTitle\":\"Director of Marketing\",\"worksFor\":\"MESA\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047497161\",\"position\":1,\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047497161\",\"name\":\"What are best practices?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Update your template regularly with relevant fields to maintain accurate data. Use standardized naming conventions across your product catalog for easy organization, and always back up your data before major changes.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047508735\",\"position\":2,\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047508735\",\"name\":\"How do you handle large inventories?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Segmenting exports into smaller, targeted groups, such as by category, SKU range, or location, makes managing large inventories easier. This helps keep file sizes manageable and data organized. Additionally, with MESA, you can customize the \u201cGet List of Products\u201d step to filter exports by availability, tags, and more, ensuring you export only the products you need. \",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047523061\",\"position\":3,\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#faq-question-1734047523061\",\"name\":\"How do I handle multiple exports from a single workflow run?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"MESA\u2019s built-in Paths tool allows you to create multiple exports from a single workflow run. This means you can automatically generate different CSV files for various inventory segments, such as separating exports by location or product type\u2014all within the same scheduled workflow. This tailored approach saves time and helps you focus on the data that matters most.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"HowTo\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#howto-1\",\"name\":\"How to Schedule Shopify Product CSV Export to FTP\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#article\"},\"description\":\"Export product CSV Shopify files to an FTP server with this guide to simplify the process and automate inventory updates.\",\"totalTime\":\"P0DT0H15M\",\"step\":[{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734045375268\",\"name\":\"Add the built-in tool Schedule\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Set a repeating schedule for your export workflow (daily, weekly, etc.).\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-15bd0e465ed0c8d1df77e9743ed62fa8\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/trigger-schedule.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/trigger-schedule.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734045588137\",\"name\":\"Next, add a new step, select the Shopify app, and select the Get List of Products action\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Select criteria to define which products are included in the export.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-9629823a3ee5cf6d88dcfbc040f739bb\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-shopify-get-products.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-shopify-get-products.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734045715752\",\"name\":\"Add a Loop step\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Set the \\\"Values to loop over\\\" to iterate through the products from the previous step.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-5c4f7565907edf23c12c76b3ddfcdd00\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-add-loop.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-add-loop.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734045784642\",\"name\":\"Inside the Loop, add another Loop step for variants\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Save your workflow to make the Loop variables accessible. Then, add a second Loop to filter out 'default' variants automatically added by Shopify.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-875457839e683f180d41303223a4ea6a\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-loop-variants.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-loop-variants.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734045871340\",\"name\":\"Now add a Shopify step and select the Retrieve Inventory Item action\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Because inventory data is managed separately from the product object, you need to extract the Inventory Item ID from the Variant data to access it.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-65f314099d88a75196aae4264666e92a\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-shopify-retrieve-inventory.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-shopify-retrieve-inventory.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734045965617\",\"name\":\"Add another Shopify step and select the Get List of Inventory Levels action\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"We\u2019ll use the ID from the prior step to collect the inventory values for each Variant.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-73588e6e64c36f2d562f34fb2347f720\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-shopify-inventory-levels.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-shopify-inventory-levels.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734049562556\",\"name\":\"Use the built-in Code step\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"We need to use a Custom Code step to generate the Location ID to capture where inventory is stored.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-eb9c39a7f2b5c94e14f76b61288972ed\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-custom-code-edit.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-custom-code-edit.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734047752162\",\"name\":\"Add a Shopify step and select Retrieve Location\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"The value from the previous code step will be used to gather the location's name for the file.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-e777e8463bfc0cb5c3fda1902d1f52cd\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-shopify-retrieve-location.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-shopify-retrieve-location.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734050088113\",\"name\":\"Next, add a Transform Mapping step\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Organize product data fields (SKU, inventory count, cost of goods, etc.) into key\\\/value pairs for the CSV file.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-f347f061659fe8842fe31b03f82a2ce3\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734047811172\",\"name\":\"Configure the Variant Loop End\u00a0\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Now, we need to map the value returned as the {{transform}} variable.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-94048ea92efa8cef9d3c091bbad12281\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-loop-end-configure.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-loop-end-configure.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734047868609\",\"name\":\"Configure the Product Loop End\u00a0\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Lastly, we need to map the value returned as the {{loop_3}} variable.\u00a0\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-c6cc866d4bb1e8efdb777bd0baaf1d89\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-loop-end-product-configure.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-loop-end-product-configure.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734047909914\",\"name\":\"Add the FTP step and select Save FTP file\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Make sure to set the file name to something specific like product-export_{{ \\\"now\\\" | date: \\\"_%m_%d_%Y_%r\\\" }}.csv\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-a7bf5f28ded4e50beaa5ea5acd104d1d\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-ftp-save-file-1.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-ftp-save-file-1.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734048036902\",\"name\":\"Finally, select \u201cEdit code\u201d\u00a0\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Copy and paste the following code snippet, then click 'Save Changes' to complete the setup. Your workflow is now ready to run. const Mesa = require('vendor\\\/Mesa.js');const Transform = require('vendor\\\/Transform.js');\\\/*** A Mesa Script exports a class with a script() method.*\\\/module.exports = new class {\\\/*** Mesa Script** @param {object} payload The payload data* @param {object} context Additional context about this task*\\\/script = (payload, context) => {\\\/\\\/ Adjust `payload` here to alter data before we transform it.\\\/\\\/ Alter the payload data based on our transform ruleslet csvRows = [];if (payload && payload.items) {payload.items.forEach((product) => {if (product.items) {product.items.map((variant) => {const { product_id, product_title, variant_id, variant_option1, variant_option2, variant_price, inventory_quantity, location } = variant;csvRows.push({product_id,product_title,variant_id,variant_option1,variant_option2,variant_price,inventory_quantity,location});});}});}\\\/\\\/ Adjust `output` here to alter data after we transform it.const csvOutput = Mesa.csv.encode(csvRows, true);\\\/\\\/ We're done, call the next step!Mesa.output.next(csvOutput);}}\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-9dfb6893d2ff53d9125696aa24aedba2\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-ftp-edit-code.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/action-ftp-edit-code.png\"}},{\"@type\":\"HowToStep\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#how-to-step-1734048437776\",\"name\":\"Test, then turn \u201cOn\u201d\",\"itemListElement\":[{\"@type\":\"HowToDirection\",\"text\":\"Give your workflow a test run to confirm it\u2019s ready, then activate it to run automatically every hour.\"}],\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/how-to-schedule-shopify-product-csv-export-to-ftp\\\/#schema-image-c97736bebacfdf5a000ce58e2982cf72\",\"url\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/end-export-product-csv-ftp.png\",\"contentUrl\":\"https:\\\/\\\/www.getmesa.com\\\/blog\\\/wp-content\\\/uploads\\\/end-export-product-csv-ftp.png\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Export Product CSV Shopify Files to FTP","description":"Automate Shopify product CSV exports to FTP, keeping inventory accurate, streamlining operations, and supporting smarter business decisions.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/","og_locale":"en_US","og_type":"article","og_title":"How to Schedule Shopify Product CSV Export to FTP","og_description":"Automating Shopify product CSV exports can significantly affect how smoothly your business runs. It helps keep your inventory data up-to-date across all","og_url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/","og_site_name":"MESA","article_publisher":"https:\/\/web.facebook.com\/mesabyshoppad\/","article_published_time":"2024-12-19T17:20:20+00:00","article_modified_time":"2025-12-22T23:19:44+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/tutorial_shopify-csv.png","type":"image\/png"}],"author":"Ryan ODonnell","twitter_card":"summary_large_image","twitter_creator":"@getmesa","twitter_site":"@getmesa","twitter_misc":{"Written by":"Ryan ODonnell","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#article","isPartOf":{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/"},"author":{"name":"Ryan ODonnell","@id":"https:\/\/www.getmesa.com\/blog\/#\/schema\/person\/37dc9b968192b2be49af3950022179cc"},"headline":"How to Schedule Shopify Product CSV Export to FTP","datePublished":"2024-12-19T17:20:20+00:00","dateModified":"2025-12-22T23:19:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/"},"wordCount":946,"publisher":{"@id":"https:\/\/www.getmesa.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_shopify-csv.png","keywords":["ftp"],"articleSection":["Workflow Tutorials"],"inLanguage":"en-US"},{"@type":["WebPage","FAQPage"],"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/","name":"How to Export Product CSV Shopify Files to FTP","isPartOf":{"@id":"https:\/\/www.getmesa.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#primaryimage"},"image":{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_shopify-csv.png","datePublished":"2024-12-19T17:20:20+00:00","dateModified":"2025-12-22T23:19:44+00:00","description":"Automate Shopify product CSV exports to FTP, keeping inventory accurate, streamlining operations, and supporting smarter business decisions.","breadcrumb":{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#breadcrumb"},"mainEntity":[{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047497161"},{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047508735"},{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047523061"}],"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#primaryimage","url":"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_shopify-csv.png","contentUrl":"https:\/\/www.getmesa.com/blog\/wp-content\/uploads\/tutorial_shopify-csv.png","width":1280,"height":720,"caption":"How to Schedule Shopify Product CSV Export to FTP"},{"@type":"BreadcrumbList","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.getmesa.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Schedule Shopify Product CSV Export to FTP"}]},{"@type":"WebSite","@id":"https:\/\/www.getmesa.com\/blog\/#website","url":"https:\/\/www.getmesa.com\/blog\/","name":"MESA","description":"Discover how to automate your Shopify growth","publisher":{"@id":"https:\/\/www.getmesa.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.getmesa.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.getmesa.com\/blog\/#organization","name":"MESA - AI automation Platform","url":"https:\/\/www.getmesa.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/mesa-shoppad.jpeg","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/mesa-shoppad.jpeg","width":225,"height":225,"caption":"MESA - AI automation Platform"},"image":{"@id":"https:\/\/www.getmesa.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/web.facebook.com\/mesabyshoppad\/","https:\/\/x.com\/getmesa","https:\/\/www.linkedin.com\/company\/shoppad\/","https:\/\/www.youtube.com\/channel\/UCqsf_WhcGEsZMvms1idivyw"]},{"@type":"Person","@id":"https:\/\/www.getmesa.com\/blog\/#\/schema\/person\/37dc9b968192b2be49af3950022179cc","name":"Ryan ODonnell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/62bb965c979cc1de4c6f046fb47a28a57bc194da441ebe43b3dfbe2f2f893563?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/62bb965c979cc1de4c6f046fb47a28a57bc194da441ebe43b3dfbe2f2f893563?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/62bb965c979cc1de4c6f046fb47a28a57bc194da441ebe43b3dfbe2f2f893563?s=96&d=mm&r=g","caption":"Ryan ODonnell"},"sameAs":["https:\/\/www.getmesa.com"],"jobTitle":"Director of Marketing","worksFor":"MESA"},{"@type":"Question","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047497161","position":1,"url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047497161","name":"What are best practices?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Update your template regularly with relevant fields to maintain accurate data. Use standardized naming conventions across your product catalog for easy organization, and always back up your data before major changes.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047508735","position":2,"url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047508735","name":"How do you handle large inventories?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Segmenting exports into smaller, targeted groups, such as by category, SKU range, or location, makes managing large inventories easier. This helps keep file sizes manageable and data organized. Additionally, with MESA, you can customize the \u201cGet List of Products\u201d step to filter exports by availability, tags, and more, ensuring you export only the products you need. ","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047523061","position":3,"url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#faq-question-1734047523061","name":"How do I handle multiple exports from a single workflow run?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"MESA\u2019s built-in Paths tool allows you to create multiple exports from a single workflow run. This means you can automatically generate different CSV files for various inventory segments, such as separating exports by location or product type\u2014all within the same scheduled workflow. This tailored approach saves time and helps you focus on the data that matters most.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"HowTo","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#howto-1","name":"How to Schedule Shopify Product CSV Export to FTP","mainEntityOfPage":{"@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#article"},"description":"Export product CSV Shopify files to an FTP server with this guide to simplify the process and automate inventory updates.","totalTime":"P0DT0H15M","step":[{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734045375268","name":"Add the built-in tool Schedule","itemListElement":[{"@type":"HowToDirection","text":"Set a repeating schedule for your export workflow (daily, weekly, etc.)."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-15bd0e465ed0c8d1df77e9743ed62fa8","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/trigger-schedule.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/trigger-schedule.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734045588137","name":"Next, add a new step, select the Shopify app, and select the Get List of Products action","itemListElement":[{"@type":"HowToDirection","text":"Select criteria to define which products are included in the export."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-9629823a3ee5cf6d88dcfbc040f739bb","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-get-products.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-get-products.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734045715752","name":"Add a Loop step","itemListElement":[{"@type":"HowToDirection","text":"Set the \"Values to loop over\" to iterate through the products from the previous step."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-5c4f7565907edf23c12c76b3ddfcdd00","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-add-loop.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-add-loop.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734045784642","name":"Inside the Loop, add another Loop step for variants","itemListElement":[{"@type":"HowToDirection","text":"Save your workflow to make the Loop variables accessible. Then, add a second Loop to filter out 'default' variants automatically added by Shopify."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-875457839e683f180d41303223a4ea6a","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-variants.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-variants.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734045871340","name":"Now add a Shopify step and select the Retrieve Inventory Item action","itemListElement":[{"@type":"HowToDirection","text":"Because inventory data is managed separately from the product object, you need to extract the Inventory Item ID from the Variant data to access it."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-65f314099d88a75196aae4264666e92a","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-retrieve-inventory.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-retrieve-inventory.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734045965617","name":"Add another Shopify step and select the Get List of Inventory Levels action","itemListElement":[{"@type":"HowToDirection","text":"We\u2019ll use the ID from the prior step to collect the inventory values for each Variant."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-73588e6e64c36f2d562f34fb2347f720","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-inventory-levels.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-inventory-levels.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734049562556","name":"Use the built-in Code step","itemListElement":[{"@type":"HowToDirection","text":"We need to use a Custom Code step to generate the Location ID to capture where inventory is stored."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-eb9c39a7f2b5c94e14f76b61288972ed","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-custom-code-edit.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-custom-code-edit.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734047752162","name":"Add a Shopify step and select Retrieve Location","itemListElement":[{"@type":"HowToDirection","text":"The value from the previous code step will be used to gather the location's name for the file."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-e777e8463bfc0cb5c3fda1902d1f52cd","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-retrieve-location.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-shopify-retrieve-location.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734050088113","name":"Next, add a Transform Mapping step","itemListElement":[{"@type":"HowToDirection","text":"Organize product data fields (SKU, inventory count, cost of goods, etc.) into key\/value pairs for the CSV file."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-f347f061659fe8842fe31b03f82a2ce3","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/screencapture-theshoppad-homeroom-theshoppad-com-admin-supertool-shoppad-ryan-mesa-automations-672ac0b23f106a8c4905bfe0-builder-2024-12-16-12_52_42.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734047811172","name":"Configure the Variant Loop End\u00a0","itemListElement":[{"@type":"HowToDirection","text":"Now, we need to map the value returned as the {{transform}} variable."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-94048ea92efa8cef9d3c091bbad12281","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-end-configure.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-end-configure.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734047868609","name":"Configure the Product Loop End\u00a0","itemListElement":[{"@type":"HowToDirection","text":"Lastly, we need to map the value returned as the {{loop_3}} variable.\u00a0"}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-c6cc866d4bb1e8efdb777bd0baaf1d89","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-end-product-configure.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-loop-end-product-configure.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734047909914","name":"Add the FTP step and select Save FTP file","itemListElement":[{"@type":"HowToDirection","text":"Make sure to set the file name to something specific like product-export_{{ \"now\" | date: \"_%m_%d_%Y_%r\" }}.csv"}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-a7bf5f28ded4e50beaa5ea5acd104d1d","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-ftp-save-file-1.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-ftp-save-file-1.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734048036902","name":"Finally, select \u201cEdit code\u201d\u00a0","itemListElement":[{"@type":"HowToDirection","text":"Copy and paste the following code snippet, then click 'Save Changes' to complete the setup. Your workflow is now ready to run. const Mesa = require('vendor\/Mesa.js');const Transform = require('vendor\/Transform.js');\/*** A Mesa Script exports a class with a script() method.*\/module.exports = new class {\/*** Mesa Script** @param {object} payload The payload data* @param {object} context Additional context about this task*\/script = (payload, context) => {\/\/ Adjust `payload` here to alter data before we transform it.\/\/ Alter the payload data based on our transform ruleslet csvRows = [];if (payload && payload.items) {payload.items.forEach((product) => {if (product.items) {product.items.map((variant) => {const { product_id, product_title, variant_id, variant_option1, variant_option2, variant_price, inventory_quantity, location } = variant;csvRows.push({product_id,product_title,variant_id,variant_option1,variant_option2,variant_price,inventory_quantity,location});});}});}\/\/ Adjust `output` here to alter data after we transform it.const csvOutput = Mesa.csv.encode(csvRows, true);\/\/ We're done, call the next step!Mesa.output.next(csvOutput);}}"}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-9dfb6893d2ff53d9125696aa24aedba2","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-ftp-edit-code.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/action-ftp-edit-code.png"}},{"@type":"HowToStep","url":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#how-to-step-1734048437776","name":"Test, then turn \u201cOn\u201d","itemListElement":[{"@type":"HowToDirection","text":"Give your workflow a test run to confirm it\u2019s ready, then activate it to run automatically every hour."}],"image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.getmesa.com\/blog\/how-to-schedule-shopify-product-csv-export-to-ftp\/#schema-image-c97736bebacfdf5a000ce58e2982cf72","url":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/end-export-product-csv-ftp.png","contentUrl":"https:\/\/www.getmesa.com\/blog\/wp-content\/uploads\/end-export-product-csv-ftp.png"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/posts\/12538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/comments?post=12538"}],"version-history":[{"count":12,"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/posts\/12538\/revisions"}],"predecessor-version":[{"id":17336,"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/posts\/12538\/revisions\/17336"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/media\/12556"}],"wp:attachment":[{"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/media?parent=12538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/categories?post=12538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.getmesa.com/blog\/wp-json\/wp\/v2\/tags?post=12538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}