Slack

Slack metrics

Data is extracted from Slack Workspace Analytics and exported from 2019-11-05 to 2024-04-24

Active users

Whilst there is no standard for measuring community engagement there are three often used:

  • Daily Active Users (DAU)
  • Weekly Active Users (WAU)
  • Monthly Active Users (MAU)

Slack doesn’t provide Monthly Active Users.

Slack defines an Active member as a person who has read or sent a message in at least one channel or a direct message in the workspace.

Code
ggplot(slack_clean, aes(x = new_date, y = daily_active_members)) +
  geom_line() +
  geom_smooth() +
  labs(x = "date",
       y = "percentage",
       title = "Daily Active members") 
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

Code
ggplot(slack_clean, aes(x = new_date, y = weekly_active_members)) +
  geom_line() +
  geom_smooth() +
  labs(x = "date",
       y = "percentage",
       title = "Monthly Active members") 
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

Last 6 months

Looking at the chart over 6 months shows consistent dips in activity at the weekend, as well as key holiday periods like Christmas and Easter.

Code
last_6_months <- slack_clean |> 
  filter(new_date >= lubridate::today() %m-% months(6)) |> 
  mutate(day_names = lubridate::wday(new_date, label = TRUE),
         is_weekend = ifelse(day_names %in% c("Sat", "Sun"), 0, 1))

  ggplot(last_6_months, aes(x = new_date, y = daily_active_members)) +
  geom_line() +
  geom_smooth() +
  labs(x = "date",
       y = "percentage",
       title = "Daily Active members") 
`geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Removing the weekends and then using {NHSRplotthedots} to create an SPC chart:

Code
  spc1<-last_6_months |> 
  filter(is_weekend == 1) |> 
  ptd_spc(value_field = daily_active_members,
          date_field = new_date,
          improvement_direction = "increase") # |>  scale_x_date(date_labels="%b-%Y", date_breaks  ="1 month")
plot(spc1) + theme(axis.text.x = element_text(angle = 45, hjust=0.5))# 

Active posters and readers

Built in Slack analytics show the active people in a workplace split by active members and active posting members. Active members can mean people in the workspace who read or have posted which is a useful measure as knowledge sharing is a key part of the community.

Code
posting_reading <- last_6_months |> 
  mutate(per_posters_readers = daily_members_posting_messages/daily_active_members * 100)

ggplot(posting_reading, aes(x = new_date, y = per_posters_readers)) +
  geom_line() +
  labs(x = "date",
       y = "percentage",
       title = "Percentage of daily members posting by daily active (posting and reading)") +
  geom_smooth()+ theme(axis.text.x = element_text(angle = 45, vjust = 0.5 , hjust=0.5)) + scale_x_date(date_labels="%b-%Y", date_breaks  ="1 month")
`geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_smooth()`).

Code
posting_reading |> 
  select(new_date,
         per_posters_readers) |> 
  mutate(day_names = lubridate::wday(new_date, label = TRUE),
         is_weekend = ifelse(day_names %in% c("Sat", "Sun"), 0, 1)) |> 
  filter(is_weekend == 1) |> 
  ptd_spc(value_field = per_posters_readers,
          date_field = new_date,
          improvement_direction = "increase")

Insights

A potential risk of concentrating on the high and low peaks of activity can be that they don’t necessarily indicate healthy discussion or engagement. However, a couple of insights are useful for communication plans relating to sharing knowledge:

  • Interactions on Slack show a weekly pattern with weekends and public holidays seeing a drop in numbers.
  • Distinct numbers of people posting was particularly high during the conference period in November 2023 as people were directed to Slack specifically to ask questions.