{"id":9429,"date":"2025-10-02T13:30:27","date_gmt":"2025-10-02T13:30:27","guid":{"rendered":"https:\/\/www.process.st\/help\/?p=9429"},"modified":"2025-10-28T08:41:50","modified_gmt":"2025-10-28T08:41:50","slug":"data-set-sync-csv","status":"publish","type":"post","link":"https:\/\/www.process.st\/help\/data-set-sync-csv\/","title":{"rendered":"Easily Sync External Data Sources into Data Sets with the New CSV Import API Endpoint"},"content":{"rendered":"<p data-start=\"130\" data-end=\"341\">We have released a <a href=\"https:\/\/public-api.process.st\/api\/v1.1\/docs\/index.html#operation\/importDataSetRecords\">new API endpoint<\/a> that simplifies importing data into existing Data Sets via CSV. This creates powerful automation opportunities for keeping external systems in sync with Process Street.<\/p>\n<h3 data-start=\"343\" data-end=\"455\">What it does<\/h3>\n<p data-start=\"343\" data-end=\"455\">You can import records into an existing Data Set from a CSV file using one of three strategies:<\/p>\n<ul data-start=\"456\" data-end=\"711\">\n<li data-start=\"456\" data-end=\"526\">\n<p data-start=\"458\" data-end=\"526\">Append: Adds new rows only, does not check or update existing data<\/p>\n<\/li>\n<li data-start=\"527\" data-end=\"626\">\n<p data-start=\"529\" data-end=\"626\">Upsert: Updates a row if the key matches, otherwise creates a new one, does not delete anything<\/p>\n<\/li>\n<li data-start=\"627\" data-end=\"711\">\n<p data-start=\"629\" data-end=\"711\">Sync: Performs an upsert and also removes rows that do not exist in the CSV file<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"713\" data-end=\"803\">For Upsert and Sync, you must define a key column that determines whether a row matches.<\/p>\n<h3 data-start=\"805\" data-end=\"822\">Why it\u2019s useful<\/h3>\n<ul data-start=\"823\" data-end=\"981\">\n<li data-start=\"823\" data-end=\"896\">\n<p data-start=\"825\" data-end=\"896\">Keep external data sources synchronized with Process Street Data Sets<\/p>\n<\/li>\n<li data-start=\"897\" data-end=\"981\">\n<p data-start=\"899\" data-end=\"981\">Combine with Code Tasks and Scheduled Workflows to automate daily data refreshes<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"983\" data-end=\"996\">Limitations<\/h3>\n<ul data-start=\"997\" data-end=\"1455\">\n<li data-start=\"997\" data-end=\"1025\">\n<p data-start=\"999\" data-end=\"1025\">Maximum file size: 20 MB<\/p>\n<\/li>\n<li data-start=\"1026\" data-end=\"1116\">\n<p data-start=\"1028\" data-end=\"1116\">Only available via the Public API at this time; UI support will be added in the future<\/p>\n<\/li>\n<li data-start=\"1117\" data-end=\"1209\">\n<p data-start=\"1119\" data-end=\"1209\">Key column must be Text for Upsert and Sync; support for Number keys will be added later<\/p>\n<\/li>\n<li data-start=\"1210\" data-end=\"1292\">\n<p data-start=\"1212\" data-end=\"1292\">If multiple rows share the same key, one matching row will be updated randomly<\/p>\n<\/li>\n<li data-start=\"1293\" data-end=\"1357\">\n<p data-start=\"1295\" data-end=\"1357\">All column names in both the Data Set and CSV must be unique<\/p>\n<\/li>\n<li data-start=\"1358\" data-end=\"1455\">\n<p data-start=\"1360\" data-end=\"1455\">Column names are normalized when matching (for example, First Name = first name = FIRST NAME)<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"1457\" data-end=\"1470\">Perfect for<\/h3>\n<ul data-start=\"1471\" data-end=\"1641\">\n<li data-start=\"1471\" data-end=\"1523\">\n<p data-start=\"1473\" data-end=\"1523\">Keeping CRM, ERP, or HR system data synchronized<\/p>\n<\/li>\n<li data-start=\"1524\" data-end=\"1552\">\n<p data-start=\"1526\" data-end=\"1552\">Automated data pipelines<\/p>\n<\/li>\n<li data-start=\"1553\" data-end=\"1641\">\n<p data-start=\"1555\" data-end=\"1641\">Workflows that require always-fresh data, such as real estate or property management<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>We have released a new API endpoint that simplifies importing data into existing Data Sets via CSV. This creates powerful automation opportunities for keeping external systems in sync with Process Street. What it does You can import records into an existing Data Set from a CSV file using one of three strategies: Append: Adds new [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"available_plan":"All plans","available_product":"Data Sets, Integrations","footnotes":""},"categories":[2],"tags":[71,611],"class_list":["post-9429","post","type-post","status-publish","format-standard","hentry","category-new-feature","tag-api","tag-data-set"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/posts\/9429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/comments?post=9429"}],"version-history":[{"count":3,"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/posts\/9429\/revisions"}],"predecessor-version":[{"id":9459,"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/posts\/9429\/revisions\/9459"}],"wp:attachment":[{"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/media?parent=9429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/categories?post=9429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.process.st\/help\/wp-json\/wp\/v2\/tags?post=9429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}