One basic behavior of the Pardot/Salesforce databases is that the only way a record will sync is if there is a change to that record on one side or the other.
Occasionally there will be times when you want to sync all your Pardot records to make sure everything is caught up between the two systems. This can happen when you've had user assignment issues to clean up, when you want to make sure that salesforce campaign data is in sync (campaigns won't sync member status changed on the salesforce side if there's no change to a lead or contact record), or if you've made a change to a Pardot value that doesn't automatically offer a "sync the entire database" option, such as changing a pre-existing value in a dropdown list.
"Since there's no button to press to sync your entire Pardot and Salesforce database, there are limited options to do this." That's what I wrote when I originally published this article...but since then, a new button has appeared!
You can find this button in the Salesforce connector under the gear icon, there's a new option called Sync All Prospects.
This is only available to Account Engagement (Pardot) Administrator roles, and can only be done once a day.
The remainder of this article is pretty much out of date due to this change, but I'm leaving it in place because of the extra informative bits that may still be of use or interest to the general user community.
One is to export the entire Pardot database and import it again, simply by importing the email field as the only imported field. This will force a sync. However, with the advent of allowing multiple records with the same email address, and the ability to match by CRM ID instead, simply importing by email address could miss records, and personally I find exporting and re-importing using CRM ID's to be tedious since you can only do it if all your records have the ID, and the ID's a in different columns on the export, forcing you to edit the exported file before you import it. Not exactly quick and easy.
Here's a quick and easy method to do a full sync of the database without importing
The best part of this method is once you create it, it will be at the ready for the next time you need to sync the database again.
Create a custom field in Pardot with the type "number" called "~Force Sync". You do not have to match this field to any Salesforce fields, in fact, it's better if it's not. Adding the tilde ~ to the name makes it show up at the bottom of all your other custom fields where it's out of the way.
Create an automation rule for every record where the email address contains @ to increment the ~Force Sync field by 1, and run it.
Result: This will force the entire database to sync since you just changed a record value on every record in Pardot. It doesn't matter that this field isn't synched to Salesforce, it will still sync. And don't worry, it will not create new Salesforce records if they didn't exist before.
Once the rule has run and the entire database has synched (give it time, it could take a while), just pause this automation. If you need to sync the database again, just clone the rule and run it again. You must do this because a non-repeating automation rule will only run once, and don't recommend making this a repeating rule, because you don't want to accidentally keep syncing the whole database over and over.
This method also produces an ongoing count of how many times you've used it, as the ~Force Sync field will tick up by 1 on all of your records every time you use it (check an old record that existed before you ran this rule for the first time for the most accurate total count).