# Engagement log
Engagement log is a feature to track user's engagement in an experience. Finally the data can be exported as a report.
# Tasks
- Create a new db with a table
engagement_logs
withid, user_id, timeline_id, date
- Create a new event in
statistics
lambda function- It checks if the last engagement log of this user is within 1 hour, if so, ignore the event
- It writes the log to the new db table
- It marks this user as
engaged
- CORE/GraphQL will invoke this new lambda function event after decoding jwt
- Create a new column in enrolment table
engagement_status
. Valid values areuninvited, invited, engaged, disengaged, dropped, deleted
- Add the logic to write the status accordingly in CORE
- On institution/experience setting page, admin can set the engagement period (user is defined as "engaged" if the last log is within X days)
- Write a cronjob in the new lambda function to run every day
- This cronjob only checks live experiences
- Check every user in an experience, if the user's engagement status is not valid anymore, update the status
# Engagement status
- uninvited
- User is enrolled but haven't send invite email
- invited
- Invitation email has sent to the user but user do not have any engagement log
- engaged
- User have engagement log within X days (configured in experience/institution)
- disengaged
- User doesn't have engagement log within X days (configured in experience/institution)
- dropped
- Admin mark the user as dropped
- deleted
- Admin mark the user as deleted
# Questions
- Are there any logic to apply for "dropped" user?
- Dropped user won't be able to access the experience anymore
- Dropped user won't be calculated for engagement/disengagement
- Where do we export the report? What should the report look like?
← Introduction Metrics →