For reference, note that there are two different "metadata" concepts to be aware of when using Dropbox and the Dropbox API:
- The standard metadata used by Dropbox, e.g., as returned as the "Metadata" types on the Dropbox API, such as via /2/files/get_metadata. Third party apps can't set arbitrary/custom fields in this though.
- The custom metadata that API apps can set and store on Dropbox via the Dropbox API, using the 'file_properties' endpoints.
Also, to be clear with the terminology, there are two different types of "clients" that may be relevant here:
- The official Dropbox desktop client, which automatically syncs files in the connected Dropbox account to the local filesystem.
- Your third party desktop app, which you can write to perform whatever operations you wish via the Dropbox API.
When a file changes, the official Dropbox desktop client will update its local copy of the file to the latest version. The official Dropbox desktop client does not sync custom metadata from the 'file_properties' endpoints though.
And you're correct that webhooks wouldn't work with your third party desktop app, as webhooks are designed to be used by servers.
For client-side apps like this, you would instead use the /2/files/list_folder/longpoll functionality to get low-latency notification of changes to files. That unfortunately won't notify you of changes just to the 'file_properties' custom metadata though. I'll pass this along as a feature request, but I can't promise if or when that might be implemented though.
You'd instead need to poll /2/files/list_folder[/continue] or /2/files/get_metadata as needed to check for changes to the 'file_properties' custom metadata.