Receiving Ledger events on an integration

The way you’re currently doing it (passing in the package ID that you want) is probably the best long-term strategy.

You can omit the package ID altogether, and the Python client bindings will attempt to find a matching contract across all packages. This requires all packages on the ledger to be loaded and examined and this process can take a long time, particularly with ledgers that have accumulated lots of packages. And worse, this won’t work at all if anyone ever happens to upload a package with the same template because there won’t be a way to resolve the ambiguity.

You could automate the process of getting a package ID by using daml damlc inspect-dar (see Simple CLI command to get the package id of a DAR) which might help take some of the drudgery out of keeping the package ID up-to-date locally in your client code.