|How long will the sync process take?|
In this post I am going to explain how the synchronization process works in order to allow you to know how long the process should take in your Magento.
The first thing to consider is the amount of each item type being sent every time the cron job runs.
This is configurable in the extension configuration page.
It should be edited directly in the lines listed below:
For carts: https://github.com/mailchimp/mc-magento2/blob/develop/Model/Api/Cart.php#L20
For Customers: https://github.com/mailchimp/mc-magento2/blob/develop/Model/Api/Customer.php#L22
For Orders: https://github.com/mailchimp/mc-magento2/blob/develop/Model/Api/Order.php#L20
For Products: https://github.com/mailchimp/mc-magento2/blob/develop/Model/Api/Product.php#L20
For Coupons: https://github.com/mailchimp/mc-magento2/blob/develop/Model/Api/PromoCodes.php#L19
These values should be set as high as possible as long it does not slow down your server and making sure the cron job takes less than 5 minutes each time it runs.
If it takes more than 5 minutes it will skip the next run causing the process to be slower than necessary.
The second thing to consider is that bundled and grouped products are not supported therefore those products should not be considered when doing this calculation.
The last thing we should pay attention to is if there is a filter date for orders and/or carts, the ones made before the filter date should be left out of the equation.
Now we are able to do the math and have an estimate of how long the process will take.
The number can be known with the following equation, it should be done on each item type (Product, Order, Customer, Cart):
TA = Total amount of certain item type.
BA = Batch amount configured for that item type.
This will give you the total amount of hours the initial sync will take as long as the cron job lasts less than 5 minutes each run.
Please note if you press the Resend Ecommerce Data button (only Magento 1) it will take the double of that time to update all the data that has been sent already because it needs to separate the old data and the new one to allow automations to be sent only for the new data.