How to track user view of nodes presented in a view?
I've worked out a solution based on the message module (https://drupal.org/project/message) and I think this will solve the problem well. Here's the basic approach:


Install message and create a new message type to capture a specific event (i.e. lesson viewed in my case).
Add an entity reference field to the message type created in #1 (messages are fieldable entities) in order to store a reference to the node that was viewed.
Write a function to create the message type created in #1. There is example code in a example module that comes along with the message module.
Hook the view that needs to trigger message creation and call the function created in #3.
Create a view that lists messages. Messages have good views support.
Add additional message types and logic to capture other kinds of activities (a user completing a video lesson, which in this case will mean working with the wistia api, since the videos are hosted on the wistia platform).


One question: I'm not sure where best to hook views to create a message when a user views a node through the view described in the original question . I'm currently using hook_views_post_render, which seems to work well, since the view provides access to the node id needed to create the message.

Overall, I think message will be a good solution for this problem and will provide a nice foundation for tracking other activities as needed. There's a good video overview of the message module here: https://vimeo.com/63919900