If I may try to explain a little somethings as this looks confusing...
When a new row of data is added to the products table (one of many tables that define the detail of a product and what to show on ZC), if that row does not include a products_id or depending on the mysql server if that value is zero (0) or null, then mysql assigns the next value for that products_id as tracked by the autonumber record for products_id. If the row has an assigned products_id then the mysql server will try to perform the requested operation (insert, update, delete, etc) based on that products_id.
EP4 (EasyPopulate V4) as recommended by kobra, as well as many other versions of EasyPopulate, was written to use a primary key (similar to a unique products_id) that was independent of the ZC primary key because outside vendors do not supply a products_id that is the same for everyone. At the time of writing, the products_model was chosen as this primary key. Yes, there are some issues with using a vendor's model# only so guidance was provided to make this model# a unique number/letter combination in comparison to all such product (add perhaps a vendor identifier, or some other related information that would make the referenced product unique).
So with such a unique model#, EP4 could take new data from a csv file and populate ZC. This population would generate a new products_id for a model# not in the database, or update the information for a product that had the same model#. (Further why the unique value is/was important.)
In the last year or so, a modification was made to the code to allow population/modification by use of the products_id. Now it is possible through changing a setting in the configuration options to directly access product by their products_id, which includes generating a new one if the import file leaves the products_id as blank.
So, depending on your overall need and planned usage, you could populate ZC with new product by use of the new products_id control method (there are two options, only populate/update product that have an assigned products_id, or populate/update product that have an assigned id (creating the new product in the database if the id is not present and updating product that have a matching id) and also to auto-assign the next products_id for a product that doesn't have a products_id in the file.
So the other "thought" about how EP4 works is that it offers a two way street. Can upload product/info, but can also export that product/info which appears to be where the hangup is/was. In other words, it can be used to push new/updated data, and pull existing data. After the pull, changes can be made and then pushed again or, if the source of the change(s) is external, then the data can be always pushed and as long as the data "key" matches with the appropriate existing record, that record (as well as any that have the matching key) is updated. If the key being pushed is unique and not present in the database then a new product is created.
Does this clarify the situation and operation a little?
What is it that this other "software" is expected to do?
ZC Installation/Maintenance Support <- Site
Contribution for contributions welcome...