How to know when plugin gets "dirty"?

I’m struggling with very long save times in my host, because I have to query the preset state data of all hosted plugins on every save. That’s especially ennoying with an auto-backup feature that is supposed to save a project in the background.

I would rather like to get notified when the user changed anything with the plugins and skip those that have not been touched. Is that possible?

My current observation is that even if nothing was touched, some plugins deliver a different preset data on (almost) every request anyway. Tested this with a MD5 checksum. The question is whether these minor internal changes (clocks? LFOs?) are actually important for the saved project as a whole. I believe it is safe to ignore them.

I tried to catch the parameter change notifications in my host (using AudioProcessorListener), but that only works for a few plugins. Most do not even send a change notification when a different program is seleted (patch loaded), or when an entirely new preset is loaded from disk. :cry:

How do you deal with this?