When setting up the PentoWeb.Presence module, it is not addressed there (or just not clearly enough for me :)) that it has to be added as a child process to the supervisor and that it must be called after the PubSub child.
Test-driving the code following just the book leads to an (unfortunately not too helpful) “argument error” in PentoWeb.Presence.get_by_key/2 when visiting a product page and the same when just calling PentoWeb.Presence.list(“user_activity”) if it is not started this way.