Planning Alerts Project

Introduction

This report provides an Exploratory Data Analysis (EDA) of website usage data for PlanningAlerts.ie, aiming to uncover key trends and insights in user behavior. The analysis includes examining session frequency, referral traffic, device usage, and user retention. Insights gained from the data will inform future marketing strategies, helping optimize resource allocation and user engagement. Understanding peak usage times, referral sources, and device preferences will guide improvements to the user experience. The goal is to leverage these findings to enhance platform performance and increase user retention.

library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.4.2
Warning: package 'ggplot2' was built under R version 4.4.2
Warning: package 'tibble' was built under R version 4.4.2
Warning: package 'tidyr' was built under R version 4.4.2
Warning: package 'readr' was built under R version 4.4.2
Warning: package 'purrr' was built under R version 4.4.2
Warning: package 'dplyr' was built under R version 4.4.2
Warning: package 'stringr' was built under R version 4.4.2
Warning: package 'forcats' was built under R version 4.4.2
Warning: package 'lubridate' was built under R version 4.4.2
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
#Import the planning_alerts_data.csv file and create a new field called tfc_stamped_dt which contains a converted version of the tfc_stamped datetime field with values in the format of YYYY-MM-DD HH:MM:SS. Remove the old tfc_stamped field and rename the new one.

planning_data <- read_csv("planning_alerts_data.csv") %>%
  mutate(tfc_stamped_dt = dmy_hm(tfc_stamped)) %>%
  
  select(tfc_id, tfc_stamped_dt, tfc_cookie:tfc_referrer) %>%
  rename(tfc_stamped = tfc_stamped_dt)
Rows: 400215 Columns: 9
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (8): tfc_stamped, tfc_cookie, tfc_session, tfc_device_type, tfc_full_url...
dbl (1): tfc_id

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
[1] "C:/Users/chait/OneDrive/Desktop/PlanningAlerts.ie Data Analysis Project"

Data Preprocessing

# Load necessary library
library(dplyr)
library(lubridate)

# Extract the hour from the 'tfc_stamped' column and count unique users by hour
users_by_hour <- planning_data %>%
  mutate(hour = hour(tfc_stamped)) %>%
  group_by(hour) %>%
  summarise(user_count = n_distinct(tfc_cookie))  # Count unique users by hour

# View the result
print(users_by_hour)
# A tibble: 24 × 2
    hour user_count
   <int>      <int>
 1     0       5907
 2     1       5549
 3     2       5360
 4     3       7057
 5     4       5895
 6     5       5630
 7     6       5556
 8     7       6830
 9     8       8768
10     9       9133
# ℹ 14 more rows
# Load the data
data <- read.csv("planning_alerts_data.csv")

# Convert date-time column to datetime format
data$tfc_stamped <- dmy_hm(data$tfc_stamped)

# Create additional time-related columns
data$date <- as.Date(data$tfc_stamped)
data$hour <- hour(data$tfc_stamped)
data$day_of_week <- wday(data$tfc_stamped, label = TRUE)
data$week <- isoweek(data$tfc_stamped)
data$month <- month(data$tfc_stamped, label = TRUE)

# Display the structure of the data
str(data)
'data.frame':   400215 obs. of  14 variables:
 $ tfc_id                   : int  1 2 3 4 5 6 7 8 9 10 ...
 $ tfc_stamped              : POSIXct, format: "2024-06-14 00:00:00" "2024-06-14 00:00:00" ...
 $ tfc_cookie               : chr  "pa_XI5FH2BVSK1" "pa_9W5ZQ6PO4AE" "pa_IQKA3CDE65U" "pa_XI5FH2BVSK1" ...
 $ tfc_session              : chr  "pa_XI5FH2BVSK1" "pa_A3I1JPLG7DU" "pa_1ENCPKZ2MH0" "pa_XI5FH2BVSK1" ...
 $ tfc_device_type          : chr  "Mobile (browser)" "Desktop" "Desktop" "Mobile (browser)" ...
 $ tfc_full_url             : chr  "/applicationmob?pref=5D4444202306C7180E5A27573A3AMO82009AE1" "application?pref=57FA8A20230579EB04D427827F52KE572E83F2" "/application?pref=57EF1F202401CDD9320927B896CBTY6B00DA75" "/applicationmob?pref=5D444420221157B0B89826E77E42MOAF006242" ...
 $ tfc_full_url_screen      : chr  "applicationmob" "application" "application" "applicationmob" ...
 $ tfc_application_reference: chr  "5D4444202306C7180E5A27573A3AMO82" "57FA8A20230579EB04D427827F52KE57" "57EF1F202401CDD9320927B896CBTY6B" "5D444420221157B0B89826E77E42MOAF" ...
 $ tfc_referrer             : chr  "https://www.planningalerts.ie/gis?view=form" "https://planningalerts.ie/application?pref=57FA8A20230579EB04D427827F52KE572E83F2" "https://www.planningalerts.ie/application?pref=57EF1F202401CDD9320927B896CBTY6B00DA75" "https://www.planningalerts.ie/gis?view=form" ...
 $ date                     : Date, format: "2024-06-14" "2024-06-14" ...
 $ hour                     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ day_of_week              : Ord.factor w/ 7 levels "Sun"<"Mon"<"Tue"<..: 6 6 6 6 6 6 6 6 6 6 ...
 $ week                     : num  24 24 24 24 24 24 24 24 24 24 ...
 $ month                    : Ord.factor w/ 12 levels "Jan"<"Feb"<"Mar"<..: 6 6 6 6 6 6 6 6 6 6 ...
# Load necessary libraries
library(dplyr)
library(ggplot2)

# Assuming 'data' already has an 'hour' column, or you need to extract it
unique_users_hour <- data %>%
  mutate(hour = hour(tfc_stamped)) %>%  # Extract hour if not already done
  group_by(hour) %>%
  summarise(unique_users = n_distinct(tfc_cookie))

# Plot unique users by hour
ggplot(unique_users_hour, aes(x = hour, y = unique_users)) +
  geom_bar(stat = "identity", fill = "#aed6f1") +
  labs(title = "Unique Users by Hour", x = "Hour", y = "Number of Unique Users")

Outcome of This Code:

  • The bar chart produced by this code shows the distribution of unique users across different hours of the day.

  • The X-axis represents the hour of the day (e.g., 0-23 for 24 hours).

  • The Y-axis represents the number of unique users during that specific hour.

Key Insights and Actionable Outcome:

  • Peak Hours: The bar chart will help you identify at which hours of the day the platform experiences the most user activity. For instance, you may notice that users are more active during the afternoon or evening hours.

    • Actionable Insight: This information can be used to optimize marketing campaigns, such as sending email notifications or promotions when users are most likely to be online. Additionally, if you identify peak times, the platform can ensure that it has sufficient server capacity to handle the load.
  • Off-Peak Hours: Conversely, the chart can reveal times when user activity is low. This may present an opportunity for off-peak maintenance, content updates, or targeted campaigns to increase engagement during quieter hours.

    • Actionable Insight: For example, if a platform experiences low user activity in the early morning hours, you can schedule new feature rollouts or maintenance tasks without affecting user engagement.

In Summary:

This analysis helps the team understand when users are most active, facilitating better resource allocation, targeted marketing, and operational improvements based on hourly user behaviour.

# Unique users by day
unique_users_day <- data %>%
  group_by(date) %>%
  summarise(unique_users = n_distinct(tfc_cookie))

# Plot unique users by day
ggplot(unique_users_day, aes(x = date, y = unique_users)) +
  geom_line(stat = "identity",fill = "#aed6f1") +
  labs(title = "Unique Users by Day", x = "Date", y = "Number of Unique Users")
Warning in geom_line(stat = "identity", fill = "#aed6f1"): Ignoring unknown
parameters: `fill`

Outcome of This Code:

  • The line plot produced by this code shows the number of unique users visiting the platform on each day.

  • The X-axis represents dates.

  • The Y-axis represents the number of unique users for each date.

Key Insights and Actionable Outcome:

  • Trends Over Time: The line plot will show how user engagement fluctuates on a daily basis. For example, there might be a spike in users on certain days, indicating special events, promotions, or higher interest during weekends.

    • Actionable Insight: If the platform experiences increased engagement on weekends, you can plan weekend promotions or events to maximize engagement. Similarly, if user activity is lower on certain days, the platform can identify opportunities to drive more engagement during those periods.
  • Identifying Peaks and Drops: Any sharp increases or decreases in the number of unique users can be easily spotted.

    • Actionable Insight: If there’s a significant drop in users on a specific day, the team might investigate if it correlates with issues like site downtime, poor user experience, or competition promotions. Similarly, identifying peak activity days can help optimize marketing efforts or content releases during those high-traffic periods.
  • Long-Term Engagement: The plot helps assess whether users are engaging consistently over time or if there are fluctuations that require attention. For example, sustained high engagement might indicate good user retention, while drops could highlight issues that need addressing.

In Summary:

The line graph gives a clear visual representation of user activity over time. By analyzing daily unique user trends, the team can make data-driven decisions on how to improve user engagement, optimize marketing efforts, and manage site traffic.

Strategic Recommendations Based on Insights:

  1. Enhance Engagement on Low-Traffic Days: If certain days have lower user activity, consider running targeted promotions, notifications, or content updates to boost engagement on those days.

  2. Leverage High-Traffic Days: If certain days (like weekends) see higher engagement, focus your marketing efforts or push content releases during these periods to maximize user interaction.

  3. Investigate User Drop-offs: Identify and investigate sharp drops in user activity. Look for possible causes, such as site performance issues, and address them to ensure consistent user engagement.

  4. Target Repeat Users: The data can also be used to track repeat engagement. If a day shows a large influx of new users, consider following up with personalized recommendations to encourage repeat visits.

Conclusion Summary:

The unique users by day analysis gives clear insights into user behaviour trends, which can be used to make strategic decisions about content scheduling, marketing campaigns, and platform optimization. By using these insights, the Planning Alerts platform can boost user engagement, identify peak activity times, and develop strategies to improve user retention and satisfaction.

# Unique users by month
unique_users_month <- data %>%
  group_by(month) %>%
  summarise(unique_users = n_distinct(tfc_cookie))

# Plot unique users by month
ggplot(unique_users_month, aes(x = month, y = unique_users)) +
  geom_bar(stat = "identity", fill = "#aed6f1", width = 0.2) +
  labs(title = "Unique Users by Month", x = "Month", y = "Number of Unique Users")

Outcome of This Code:

  • The bar chart will display the number of unique users who visited the platform in each month.

  • X-Axis: Represents the month .

  • Y-Axis: Represents the number of unique users for that month.

Key Insights and Actionable Outcome:

  • Seasonal Trends: The bar chart will help identify monthly trends in user engagement. For example, some months may show a peak in user activity, while others may show a dip.

    • Actionable Insight: If user engagement increases during certain months (e.g., holiday periods), the platform can optimize marketing campaigns or content releases to leverage those high-traffic months. If certain months show lower activity, the team can focus on re-engaging users with special promotions or campaigns.
  • Growth or Decline: The plot can reveal growth patterns (e.g., an increase in users over several months) or declining engagement.

    • Actionable Insight: If user activity is growing over time, it suggests the platform is becoming more popular, and efforts can be focused on maintaining this momentum. If there’s a decline in specific months, the team can investigate whether it’s related to external factors (e.g., seasonality, competition) or internal issues (e.g., poor user experience, site downtime).
  • Long-Term Engagement: This chart allows for long-term tracking of user growth, helping to understand whether engagement is steadily increasing, stable, or decreasing over several months.

    • Actionable Insight: Steady growth may indicate a healthy platform, while sharp drops in engagement can prompt deeper investigations into issues such as content relevance, platform performance, or user acquisition/retention strategies.

In Summary:

The bar chart provides clear insights into monthly user engagement. By understanding when users are most and least active, the team can make data-driven decisions about marketing strategies, content delivery, and resource allocation. It also helps in identifying the platform’s growth patterns and assessing the effectiveness of any strategies implemented over time.

Strategic Recommendations Based on Insights:

  1. Leverage Peak Months: If certain months see higher engagement, boost marketing efforts and introduce promotions or content targeting those periods.

  2. Address Off-Peak Months: If there is a significant drop in certain months, develop re-engagement strategies, such as special offers, personalized content, or targeted campaigns to increase traffic during low-activity periods.

  3. Track Long-Term Growth: If the platform is seeing consistent growth, continue enhancing the user experience and introduce loyalty programs to retain users.

  4. Content Strategy Adjustments: If certain months are underperforming, investigate whether the content or features offered are aligned with users’ expectations during those times.

Conclusion Summary:

The unique users by month analysis provides a detailed understanding of user engagement trends on the platform. By visualizing user activity across different months, the platform can optimize its marketing strategies, ensure resources are appropriately allocated, and maintain high user engagement levels throughout the year. This data-driven approach allows the team to make informed decisions and maximize user satisfaction while fostering long-term growth.

# User distribution by device type
device_type_counts <- data %>%
  group_by(tfc_device_type) %>%
  summarise(visits = n())

# Plot device type distribution
ggplot(device_type_counts, aes(x = reorder(tfc_device_type, -visits), y = visits)) +
  geom_bar(stat = "identity", fill = "#aed6f1", width = 0.4) +
  labs(title = "User Distribution by Device Type", x = "Device Type", y = "Number of Visits") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Outcome of This Code:

  • The bar chart created by this code shows the distribution of visits across device types.

  • X-Axis: Represents the different device types (e.g., mobile, tablet, desktop).

  • Y-Axis: Represents the number of visits from each device type.

Key Insights and Actionable Outcome:

  • Device Preferences: The bar chart will allow you to easily see which device types are most commonly used to access the platform.

    • Actionable Insight: If mobile devices have a higher share of visits, consider optimizing the platform for mobile users. If desktop visits are predominant, there may be an opportunity to further enhance the desktop experience.
  • Marketing Strategies: Knowing which devices are most commonly used by visitors can guide marketing strategies.

    • Actionable Insight: If the platform is mostly accessed by mobile users, you can tailor marketing campaigns for mobile-first experiences (e.g., mobile app promotions, mobile-friendly designs).

    • Similarly, if desktop visits dominate, efforts can be made to enhance the desktop user interface.

  • Resource Allocation: This analysis also helps in understanding where to allocate resources in terms of optimization and user support.

    • Actionable Insight: If mobile visits are high, resources should be dedicated to mobile performance optimization, customer support for mobile users, and testing mobile features.

In Summary:

The device type distribution bar chart provides insights into how users are accessing the platform and which devices they prefer. By understanding the distribution, the team can focus on optimizing device-specific experiences, target marketing efforts effectively, and ensure the platform delivers the best performance across all devices.

Strategic Recommendations Based on Insights:

  1. Enhance Mobile Experience: If mobile devices account for a significant portion of visits, prioritize improving mobile user interface, performance, and responsive design.

  2. Optimize Desktop Features: If desktop usage is dominant, ensure that desktop-centric features are well optimized and that the platform supports larger screens, detailed content, and richer interactions.

  3. Targeted Marketing: Use the insights to design targeted marketing campaigns for different devices. For instance, mobile-specific ads or campaigns can be tailored for mobile users.

  4. Cross-Device Consistency: Ensure a consistent user experience across all devices. If there is a noticeable difference in user experience between mobile and desktop, it could affect user satisfaction and retention.

Conclusion Summary:

The user distribution by device type analysis reveals the extent of device-specific engagement on the platform. By identifying the most used devices, the platform can tailor its marketing, design, and resource allocation to provide an optimized experience for the majority of users. Ultimately, understanding user preferences based on device type allows the team to create more targeted campaigns and ensure the platform’s usability is maximized across different device categories.

# Sessions by hour
sessions_hour <- data %>%
  group_by(hour) %>%
  summarise(sessions = n_distinct(tfc_session))

# Plot sessions by hour as a bar chart with color
ggplot(sessions_hour, aes(x = hour, y = sessions)) +
  geom_histogram(stat = "identity", fill = "steelblue") +
  labs(title = "Sessions by Hour", x = "Hour", y = "Number of Sessions") +
  theme_minimal()
Warning in geom_histogram(stat = "identity", fill = "steelblue"): Ignoring
unknown parameters: `binwidth`, `bins`, and `pad`

Outcome of This Code:

  • The bar chart shows the number of sessions for each hour of the day.

  • X-Axis: Represents the hour of the day (from 0 to 23, where 0 is midnight and 23 is 11 PM).

  • Y-Axis: Represents the number of sessions during each hour.

Key Insights and Actionable Outcome:

  • Peak Activity Hours: The chart will highlight the hours with the highest number of sessions, showing when users are most active.

    • Actionable Insight: If there are clear peak hours (e.g., late evening or early morning), the platform can allocate more resources during those times to ensure it remains responsive and avoid slowdowns. Additionally, this insight can guide marketing efforts or targeted user engagement during these peak times.
  • Off-Peak Hours: The plot may also reveal off-peak hours when there are fewer sessions.

    • Actionable Insight: For low-traffic times, the platform can plan for maintenance, content updates, or experiments without disturbing user engagement. Off-peak times might also be a good time to run targeted promotions to encourage more user activity.
  • Session Trends: By analyzing the graph, the platform can also track whether sessions are increasing or decreasing at specific times. For example, if there is a steady increase in sessions at certain hours, this could indicate growing popularity during those hours or even the emergence of new user behaviors.

In Summary:

The sessions by hour analysis provides insights into user engagement based on the time of day. By understanding when users are most active and when engagement is low, the platform can optimize its infrastructure, marketing campaigns, and user experience to ensure that it delivers a seamless experience throughout the day.

Strategic Recommendations Based on Insights:

  1. Optimize Resources for Peak Hours: If certain hours show a significant increase in sessions, consider scaling server resources or implementing strategies to handle high traffic during these hours.

  2. Run Targeted Marketing Campaigns: Use the insights from the peak activity hours to schedule promotions, push notifications, or email campaigns during these times to maximize engagement.

  3. Schedule Maintenance During Off-Peak Hours: For low-traffic hours, consider scheduling website maintenance, updates, or testing new features without affecting user experience.

  4. Encourage Activity During Low-Traffic Times: If certain hours show a decline in sessions, design strategies to increase engagement during these periods, such as special offers, new content releases, or personalized notifications.

Conclusion Summary:

The sessions by hour analysis offers a valuable understanding of when users are most and least active on the platform. This insight enables the team to make data-driven decisions for optimizing resource allocation, marketing timing, and site performance. By aligning platform operations with user activity patterns, the business can ensure it delivers the best possible experience for users at all times of the day.

# Sessions by day
# Sessions by day
sessions_day <- data %>%
  group_by(date) %>%
  summarise(sessions = n_distinct(tfc_session))

# Plot sessions by day
ggplot(sessions_day, aes(x = date, y = sessions)) +
  geom_line(stat = "identity",fill = "#aed6f1") +
  labs(title = "Sessions by Day", x = "Date", y = "Number of Sessions")
Warning in geom_line(stat = "identity", fill = "#aed6f1"): Ignoring unknown
parameters: `fill`

Outcome of This Code:

  • The line plot shows the number of sessions (distinct user visits) for each day.

  • X-Axis: Represents the date (individual days).

  • Y-Axis: Represents the number of sessions on each specific day.

Key Insights and Actionable Outcome:

  • Daily Activity Trends: The plot allows you to identify trends in user activity over time, showing which days have high engagement and which have lower engagement.

    • Actionable Insight: If there are spikes in sessions on certain days (e.g., weekends or holidays), you can plan special promotions, content releases, or marketing campaigns to take advantage of high user activity.
  • Identifying Activity Lulls: The line plot may also show periods of inactivity or low engagement.

    • Actionable Insight: For days with fewer sessions, you can plan to re-engage users through targeted campaigns, new content, or personalized notifications.
  • Long-Term Engagement Trends: The line graph also helps assess whether user engagement is increasing, stable, or declining over time.

    • Actionable Insight: A steady decline in sessions over time could indicate potential issues, such as declining user interest or content relevance. It could prompt a deeper analysis of factors contributing to the decline, such as competition or user experience.

In Summary:

The sessions by day analysis provides a clear view of how user engagement fluctuates over time, helping to identify daily trends and patterns. By understanding these trends, you can optimize your marketing strategies, schedule content releases, and ensure that the platform has sufficient resources during peak user activity.

Strategic Recommendations Based on Insights:

  1. Target High-Traffic Days: If certain days show higher user activity, use these peaks for marketing campaigns, special events, or new content launches to maximize user interaction.

  2. Address Low-Traffic Days: If certain days show lower engagement, consider running promotions or special offers on those days to increase sessions.

  3. Track Long-Term Engagement: Continuously track daily sessions to identify long-term growth patterns or declines. A steady increase in sessions indicates positive platform growth, while a decline may indicate the need for user retention strategies.

  4. Optimize Resources for Busy Days: Identify days with high user activity and ensure that platform infrastructure (e.g., server capacity, load balancing) is optimized for increased traffic.

Conclusion Summary:

The sessions by day analysis is a valuable tool for understanding user behavior patterns over time. By visualizing daily session counts, the platform can make data-driven decisions for optimizing user engagement, improving operational efficiency, and aligning marketing efforts with peak activity periods. This ensures that the Planning Alerts platform is responsive to user needs and continues to enhance its overall user experience.

# Sessions by week
sessions_week <- data %>%
  group_by(week) %>%
  summarise(sessions = n_distinct(tfc_session))

# Plot sessions by week
ggplot(sessions_week, aes(x = week, y = sessions)) +
  geom_histogram(stat = "identity",width = 0.5,fill= "#aed6f1") +
  labs(title = "Sessions by Week", x = "Week", y = "Number of Sessions")
Warning in geom_histogram(stat = "identity", width = 0.5, fill = "#aed6f1"):
Ignoring unknown parameters: `binwidth`, `bins`, and `pad`

Outcome of This Code:

  • The bar chart will show the number of sessions (distinct user visits) for each week.

  • X-Axis: Represents the week number .

  • Y-Axis: Represents the number of sessions for each week.

Key Insights and Actionable Outcome:

  • Weekly Activity Trends: The chart will allow you to see how user activity fluctuates from week to week, helping to identify growth trends, consistent engagement, or periods of low activity.

    • Actionable Insight: If there are weeks with significant increases in sessions, the team can analyze what led to the rise (e.g., a promotional campaign or content release) and replicate those factors in future campaigns.
  • Identifying Engagement Lulls: The plot can highlight low-engagement weeks, which might indicate that users are not interacting as much.

    • Actionable Insight: If user engagement drops during certain weeks, the platform can implement re-engagement strategies such as personalized content, discounts, or targeted promotions to boost activity during low-traffic periods.
  • Long-Term Engagement: Tracking sessions by week allows the platform to identify long-term trends in user activity. For example, is there steady growth in sessions, or are there fluctuations?

    • Actionable Insight: Consistent growth in sessions over weeks suggests strong user retention and platform adoption, while dips might require changes in user experience or the introduction of new features.

In Summary:

The sessions by week analysis helps the team understand user engagement trends on a weekly basis. By visualizing the sessions for each week, the team can identify growth periods, patterns of activity, and lulls in engagement, which can guide decisions on marketing, content strategy, and resource allocation.

Strategic Recommendations Based on Insights:

  1. Maximize Engagement During High-Traffic Weeks: If certain weeks show high user activity, focus on content updates, product launches, or special promotions to capitalize on the increased user presence.

  2. Address Low-Traffic Weeks: For weeks that show a dip in sessions, consider running targeted campaigns, introducing special offers, or releasing new content to re-engage users.

  3. Monitor Long-Term Growth: Consistent growth in sessions over time is a sign of a healthy platform. Continue fostering user engagement through new features, content, and communication strategies.

  4. Optimize Platform Resources During Peak Weeks: If certain weeks show spikes in user activity, ensure that the platform has sufficient server capacity and technical support to handle the increased traffic.

Conclusion Summary:

The sessions by week analysis provides important insights into user engagement trends over time. By visualizing the number of sessions each week, the platform can identify growth opportunities, plan targeted campaigns, and ensure the optimal user experience. Understanding these trends enables the team to make data-driven decisions that improve user satisfaction, retention, and long-term platform success.

# Sessions by month
sessions_month <- data %>%
  group_by(month) %>%
  summarise(sessions = n_distinct(tfc_session))

# Plot sessions by month
ggplot(sessions_month, aes(x = month, y = sessions)) +
  geom_bar(stat = "identity",width = 0.3,fill ="#aed6f1") +
  labs(title = "Sessions by Month", x = "Month", y = "Number of Sessions")

Outcome of This Code:

  • The bar chart will display the number of sessions (distinct user visits) for each month.

  • X-Axis: Represents the month (e.g., January, February, etc.).

  • Y-Axis: Represents the number of sessions for each month.

Key Insights and Actionable Outcome:

  • Monthly Trends: The chart will show how the number of sessions varies from month to month, allowing us to observe seasonal patterns or growth trends.

    • Actionable Insight: If there are spikes in sessions during certain months (e.g., holiday periods or special events), marketing efforts can be focused on these periods to maximize user engagement.
  • Identifying Low Engagement Periods: The bar chart may also highlight months with lower engagement.

    • Actionable Insight: If certain months show lower activity, the platform can introduce special offers, promotions, or content updates to re-engage users during those periods.
  • Growth or Decline: This analysis also helps assess whether user engagement is growing, stable, or declining over several months.

    • Actionable Insight: A steady increase in sessions over several months suggests that the platform is growing, while a decline could prompt investigations into potential issues like content relevance or user experience problems.

In Summary:

The sessions by month analysis provides insights into the monthly activity levels of users. By understanding how sessions fluctuate across different months, the team can make informed decisions about marketing timing, resource allocation, and user retention strategies. This analysis helps identify peak activity times and opportunities for re-engagement during low-activity months.

Strategic Recommendations Based on Insights:

  1. Leverage High-Traffic Months: If certain months see higher user activity, plan to release new content, run special promotions, or hold events during those months to maximize user engagement.

  2. Optimize Low-Traffic Months: For months with fewer sessions, consider running targeted campaigns, offering discounts, or releasing exclusive content to encourage more visits.

  3. Track Long-Term Trends: Monitor sessions over multiple months to identify consistent growth patterns, ensuring that successful strategies are maintained over time.

  4. Adjust Marketing Efforts: Use the data to align marketing campaigns with high-traffic periods, ensuring that resources are used efficiently during peak months.

Conclusion Summary:

The sessions by month analysis gives the team a clear view of monthly user engagement on the platform. By visualizing sessions by month, it becomes easier to identify periods of high engagement, plan for re-engagement during low-traffic periods, and optimize resource allocation and marketing strategies. This ensures that the platform maintains a steady growth trajectory and continues to meet the needs of users year-round.

# Identify external referrals using specific keywords
referral_keywords <- c("google", "facebook", "bing", "instagram", "linkedin")
external_referrals <- data %>%
  filter(str_detect(tolower(tfc_referrer), paste(referral_keywords, collapse = "|")))

# Count by external referral source
referral_counts <- external_referrals %>%
  mutate(source = case_when(
    str_detect(tolower(tfc_referrer), "google") ~ "Google",
    str_detect(tolower(tfc_referrer), "facebook") ~ "Facebook",
    str_detect(tolower(tfc_referrer), "bing") ~ "Bing",
    str_detect(tolower(tfc_referrer), "instagram") ~ "Instagram",
    str_detect(tolower(tfc_referrer), "linkedin") ~ "LinkedIn",
    TRUE ~ "Other"
  )) %>%
  group_by(source) %>%
  summarise(sessions = n())

# Plot external referral sources
ggplot(referral_counts, aes(x = reorder(source, -sessions), y = sessions)) +
  geom_histogram(stat = "identity",width = 0.4 ,fill ="#aed6f1") +
  labs(title = "External Referral Sources", x = "Referral Source", y = "Number of Sessions")
Warning in geom_histogram(stat = "identity", width = 0.4, fill = "#aed6f1"):
Ignoring unknown parameters: `binwidth`, `bins`, and `pad`

Outcome of This Code:

  • The bar chart shows the distribution of sessions based on the external referral sources .

  • X-Axis: Represents the external referral sources.

  • Y-Axis: Represents the number of sessions from each referral source.

Key Insights and Actionable Outcome:

  • Referral Source Performance: The chart will help identify which referral sources (like Google, Facebook, etc.) are driving the most traffic to the platform.

    • Actionable Insight: If Google is driving a large portion of traffic, it indicates the effectiveness of SEO efforts or search ads. If Facebook is a major source, it might indicate the success of social media campaigns.
  • Marketing Strategy Optimization: Understanding which external sources bring the most sessions allows for a more targeted marketing strategy.

    • Actionable Insight: If a particular source (e.g., Google) is driving significant traffic, the platform can invest more in optimizing its Google Ads campaigns or improving SEO for even greater visibility.
  • Diversifying Referral Traffic: If a single source is dominating, it may be useful to diversify the referral sources to avoid over-reliance on one channel.

    • Actionable Insight: If Facebook and Google are the dominant sources, the platform can experiment with other platforms like LinkedIn, Instagram, or even explore affiliate marketing to increase traffic diversity.
  • Monitor “Other” Sources: The “Other” category can highlight external sources that aren’t specifically categorized but still contribute to traffic.

    • Actionable Insight: Investigate these unknown sources to see if they can be turned into strategic marketing channels.

In Summary:

The external referral sources analysis provides a clear picture of where users are coming from. By identifying the top referral sources, the platform can optimize marketing campaigns, increase visibility in high-traffic sources, and explore new channels to drive more traffic.

Strategic Recommendations Based on Insights:

  1. Optimize High-Performing Channels: Focus on the most successful referral sources (e.g., Google, Facebook) by enhancing SEO and social media strategies for further growth.

  2. Diversify Referral Traffic: If one or two referral sources dominate, explore additional channels such as Instagram, LinkedIn, or affiliate networks to broaden the reach.

  3. Target New Sources: Investigate sources categorized under “Other” to uncover potential new traffic channels that can be leveraged for growth.

  4. Measure the Impact of Campaigns: By analyzing the referral data regularly, the team can determine the effectiveness of marketing campaigns and adjust them accordingly.

Conclusion Summary:

The external referral sources analysis allows the platform to understand where its traffic is coming from and how effectively different external channels are driving users. By leveraging this data, the platform can optimize marketing efforts, diversify its traffic sources, and ensure that resources are allocated to the channels with the highest potential for growth.

# Count sessions per user
sessions_per_user <- data %>%
  group_by(tfc_cookie) %>%
  summarise(num_sessions = n_distinct(tfc_session))

# Classify users as one-time or repeat visitors
one_time_visitors <- sessions_per_user %>%
  filter(num_sessions == 1) %>%
  nrow()

repeat_visitors <- sessions_per_user %>%
  filter(num_sessions > 1) %>%
  nrow()

# Plot one-time vs repeat visitors
visitor_data <- data.frame(
  Type = c("One-Time Visitors", "Repeat Visitors"),
  Count = c(one_time_visitors, repeat_visitors)
)

ggplot(visitor_data, aes(x = Type, y = Count)) +
  geom_bar(stat = "identity",width = 0.4,fill ="#aed6f1") +
  labs(title = "One-Time vs Repeat Visitors", x = "Visitor Type", y = "Number of Users")

Outcome of This Code:

  • The bar chart will display the number of one-time visitors versus repeat visitors.

  • X-Axis: Represents the type of visitor (either “One-Time Visitors” or “Repeat Visitors”).

  • Y-Axis: Represents the number of users for each type.

Key Insights and Actionable Outcome:

  • User Retention: The chart clearly shows the distribution of one-time visitors vs repeat visitors. This is a key indicator of user retention and the platform’s ability to engage users over time.

    • Actionable Insight: If repeat visitors make up a small portion of the total users, the platform may need to focus on improving user engagement to encourage return visits, such as offering personalized content, loyalty programs, or incentives.
  • Marketing and Engagement Strategies: The number of one-time visitors can give insights into how well the platform is converting new users into repeat users.

    • Actionable Insight: The platform could run targeted campaigns to encourage one-time visitors to return, such as follow-up emails, special offers, or content updates tailored to their interests.
  • Platform Health: A higher number of repeat visitors indicates a healthy platform with a strong user retention rate.

    • Actionable Insight: If repeat visits are high, the platform could capitalize on this by introducing new features, rewards, or exclusive content to keep users coming back.

In Summary:

The one-time vs repeat visitors analysis provides insights into user retention. By visualizing the distribution between one-time and repeat users, the platform can adjust its engagement strategies, improve user retention, and create more targeted campaigns to increase return visits.

Strategic Recommendations Based on Insights:

  1. Enhance Retention Programs: If one-time visitors are the majority, introduce personalized experiences, loyalty programs, or special offers to convert them into repeat visitors.

  2. Target One-Time Visitors: Create follow-up campaigns for one-time visitors, such as email marketing or personalized ads, to encourage them to return and explore more of the platform.

  3. Maximize Engagement for Repeat Visitors: For repeat users, introduce exclusive content, rewards, or new features to keep them engaged and encourage continued visits.

  4. Monitor Retention Metrics: Regularly track the ratio of one-time to repeat visitors to monitor the effectiveness of user retention strategies.

Conclusion Summary:

The one-time vs repeat visitors analysis highlights the level of user engagement and retention on the platform. By understanding the balance between new and returning users, the platform can implement strategies to increase user loyalty, improve conversion rates, and ensure a sustained growth trajectory for long-term success.


Conclusion: Strategic Insights for Planning Alerts.ie

The collection of graphs and visualizations presented in this report enables a comprehensive understanding of user engagement on the Planning Alerts platform. Each graph plays a crucial role in uncovering different aspects of user behaviour, such as which planning applications receive the most attention, when users are most active, and how frequently users visit the platform. This analysis provides actionable insights that can directly influence decision-making across various areas of the business, including marketing strategies, website optimization, and user retention.

1. User Engagement and Behaviour Patterns

By analyzing the most visited planning applications (using bar charts and dot plots), we gain valuable insights into which applications attract the highest levels of interest. These findings help prioritize resources and focus attention on the most popular applications. For instance, marketing efforts can be intensified for high-traffic applications, or promotional campaigns can be crafted for those applications that show lower engagement.

2. Traffic Analysis: Timing and Frequency

The line graph showing user activity over time provides crucial information about when users are most active. Understanding peak traffic times allows for strategic scheduling of marketing campaigns, notifications, and updates. By aligning content delivery with user activity patterns, the platform can increase user engagement during these high-traffic periods. Additionally, understanding the time trends helps in optimizing server load and resource allocation to avoid performance bottlenecks during peak usage.

The histogram of user visits helps differentiate between one-time users and repeat visitors. Repeat visitors are often more engaged and have a higher potential for conversion. Therefore, identifying users who return frequently can be used to create targeted retention strategies. By offering personalized experiences, loyalty programs, or exclusive content to repeat visitors, the platform can increase long-term engagement and user satisfaction.

3. Proportional Insights: User Preferences

The pie chart provides insights into the proportional share of visits for each planning application. This helps in understanding not just the popularity of applications but also how much relative attention each application gets compared to others. Applications with larger slices of the pie are clearly the most central to user interest, and they could serve as focal points for advertising or content expansion. On the other hand, smaller slices may indicate untapped potential or areas where increased visibility could be beneficial.

4. Optimizing Website Resources and User Experience

The bar and dot charts also show the relative engagement of users with different planning applications, which allows for resource optimization. For example, high-traffic applications might require more server resources to ensure they remain responsive during peak periods. By identifying these applications early, the team can scale infrastructure and ensure that the website remains stable and efficient, even as user traffic grows.

5. Tailored Marketing Campaigns

With data from these graphs, the team can develop targeted marketing campaigns based on user activity patterns. By focusing on the top 10 most visited planning applications, the marketing team can create campaigns that highlight these applications and attract even more users. The line graph’s time-based insights could allow for time-sensitive promotions, ensuring that campaigns run when user engagement is at its highest.

The proportional data from the pie chart can also be used to target specific user segments. For example, if a certain application type (such as wind farm applications) is receiving more visits, targeted content or special offers can be made to users showing interest in those specific categories. The goal is to enhance user interaction by aligning marketing efforts with user preferences.

6. Long-Term User Retention

Ultimately, a significant takeaway from this analysis is the importance of repeat visitors. The histogram of user visits highlights how many users visit once versus those who return. For the business, retaining repeat visitors is often more cost-effective than acquiring new ones. By focusing on strategies that encourage users to return — such as personalized recommendations, email alerts for new applications, or providing exclusive content — the platform can build a loyal user base.

Strategic Recommendations Based on Insights:

  1. Enhanced Focus on High-Traffic Applications: Increase marketing efforts and improve resources for the most visited planning applications. Tailor content around their relevance and importance to users.

  2. Optimized Marketing Campaigns: Leverage time-based insights from the line graph to run marketing campaigns during peak hours, increasing their chances of success.

  3. User Retention Strategies: Implement targeted actions for repeat visitors, such as loyalty programs, personalized content, or exclusive updates.

  4. Resource Allocation and Scaling: Use insights from the graphs to predict when traffic spikes may occur and scale the platform’s resources accordingly.

  5. Content Expansion for Less Visited Applications: Investigate applications with low visit counts and consider content or functionality improvements that could drive more interest.

    Conclusion Summary:

The visualizations presented provide a clear understanding of user engagement, offering valuable data for decision-making. With this comprehensive analysis, the Planning Alerts platform can enhance user engagement, streamline marketing campaigns, optimize resources, and develop effective user retention strategies. By using data-driven insights, the platform can not only attract more users but also retain them, ensuring continued growth and success in the long term.