If I have 35,000 new contacts in Salesforce that are not in Mailchimp, should I expect 35k API calls for the initial sync?
Not at all. Only 70 API calls are needed to Salesforce (500 records per-call)
After that, I’m assuming the emails are cached, and the stated 200/500 records per API call takes effect?
Yes, that is correct.
If I add another 5,000 contacts in addition to the existing 35k that have already been synced, should I expect another 5k API calls to have the new contacts synced?
No. As in the above calculation, only 10 API calls would be needed.
If my entire database is synced and nothing changes (no new campaigns, responses, etc.), how many API calls should I expect when I run a sync?
Only 1 API call will be needed in this use case.
Please note that the above API calls are for getting contacts/lists only. We also need a few API calls to retrieve fields details. We also need 1 API call for each unsubscribed members in Mailchimp to update opt-out status in Salesforce.
Please also note that the above use case is applicable to one way sync as you specified (Do not sync new contacts is checked).
If you don't check that option the API calls needed would be added up based on the following:
* Number of email addresses in Mailchimp that are not cached yet x 2 (search in Leads and Contacts)
* API calls to create records in Salesforce if the email does not exist.
Activity creation requires quite a small amount of API requests as it is done in a batch of 200 records per request. For 16K around 80 API calls needed.
An operation that needs a lot of API request is syncing from Mailchimp to Salesforce where most of the email addresses have not been synced previously from Salesforce for that specific Sync Profile.
The following sync uses a lot of API calls (24K) because it needs to sync 12K records but most of them had not been synced from Salesforce (not in cache), so for each record, SyncApps needs to search if email address already exist in Salesforce or not.
For a more clear explanation here is an example:
* Sync Profile A: 10K records are synced from Salesforce to a blank Mailchimp, when syncing back to Salesforce no API call is needed because all emails have been synced before and stored in Sync Profile cache.
* Sync Profile B: 1 record (using filtering or specific campaign) is synced to an existing Mailchimp that has 10K records (although all 10K emails already exist in Salesforce). When syncing from Mailchimp to Salesforce SyncApps needs to do around 20K API calls to check per email address if the email address exists in Salesforce or not.