Data Model
Understanding the data model is critical to maximizing the value of the Activity Tracking framework. We've intentionally kept the activity tracking data model quite simple, making it easier to understand and report on within Salesforce. Here's a quick view of the schema:

All activity tracking data is logged in a single 'Activities' object (ActOnIt__Activity__c). The 'Activities' object is connected to:
Example Activity
Before we see how it works, let's look at the data captured for a single ActOnIt__Activity__c entry:

Here are some of the visible fields:
Information
Record Details
Action Details
Note - There are several other fields available behind the scenes for reporting purposes (e.g. fields that calculate the elapsed times between events for aggregated reporting).
How does it work?
The first time an activity takes place for a given record an ActOnIt__Activity__c entry will be created. If the activity occurs more than once, the existing ActOnIt__Activity__c is updated (e.g. the action counter is incremented and the 'Last Executed Date/Time' is recorded etc).
For example, let's imagine we have automation that captures when a lead is viewed by the owner. When the lead is first viewed, an ActOnIt__Activity__c record is created and linked to both the 'Viewed Record' action and the lead. The 'Action Count' is set to 1 and the 'Executed By' is set to the lead owner. If the owner closes the lead and later returns to it (i.e. views the lead a second time), the existing ActOnIt__Activity__c entry will be updated. The 'Action Count' will be incremented to 2 and the 'Last Executed Date/Time' will be updated.
You'll therefore be able to report on this data to answer:
Related Activities
As mentioned, each activity can be linked to several other related activities, depending on the configured 'Activity Relationships'. There can be a maximum of 5 related activities for a given action type. This allows you to track and report on the time between activities and the number of times one activity takes place before another. For example, connecting an 'Assigned Lead' action to a 'Phone Call' or 'Email' action will allow you to report on the average time it takes sales reps to action their leads. Connecting a 'Phone Call' activity to a 'Made Contact' activity, will reveal how long it takes to make contact after an initial call, and how many call attempts were required to make contact (i.e. reporting on effort/cost of sale).
Related activities can be seen on the Activity record:

Each slot will be reserved for a specific type of activity, as per the relationship configuration. It's important to understand the configuration as that will provide context to the data. See 'Creating Relationships' for more details.
Let's look at an example: An 'Assigned Lead' activity's related activity 1 slot might be reserved for initial contact activities e.g. phone call, sms, email (etc). So when a call is made, or sms/email is sent, the (first) resulting activity will be automatically assigned to related activity 1 (as seen above). In this example, all initial contact activities will be competing for the same slot (first activity wins). This provides a wealth of insight as we can now report on:
In addition to reporting, Act On It can monitor tracking data and step in to help teams and managers, catching issues before they escalate and driving best practice behaviors in real time.
Reporting
Most of your reporting can be achieved by reporting on the ActOnIt__Activity__c object where you can filter based on the action of interest, the related activity and related record details. Alternatively you can also report on the related record data directly and use cross object filters to hone in on record based on the existence or absence of tracking entries that meet your defined criteria. See 'Filter Across Objects with Cross Filters' for details.
Won't this generate a lot of data?
Potentially, so here are a few considerations: