Summary:
Graph 1: Organic visits and overall page views by week. The pink line is organic visit trend vs. the blue line, which is the trend of overall page views. As we can see, the two lines trend in a similar fashion, with the overall page view trend higher in most cases.
Graph 2: Keyword ranking distribution of the whole site and the ranking movements overtime. It shows that the site now ranks more keywords in the first three pages of Google than previsouly.
Graph 3: Average time on page by sections. Overall, the USA section content engages the users the most, followed by a few articles in the Europe and Asia sections.
Question 1: Between March 2019 and 2020, how the site has been performing in organic search and in general?
From “Organic Visits Vs. Page Views by Day” chart, we can see that weekly organic visits (pink) are significantly lower than page views (blue,) but both are trending in a similar fashion.
Organic traffic is defined as any visits coming from the search engines while page view is the total number of pages viewed, which also includes repeated views of a single page. Therefore, organic visits should always be lower than page views. Also, please note that both metrics are plotting again a different y-axis due to the different nature of these two metrics. Plus, by doing so, it helps us to see the trending pattern.
Question 2: When it comes to evaluating organic search performance, one of the metrics we will look at is keyword ranking. Are there is significant ranking movement during this time? If there is, how is it?
The “Keyword Ranking Distribution” graph showcases the keyword ranking movements over time, which is a critical indicator of a site’s organic performance. As we can see, currently, more keywords are ranking at 1 - 25 position than previously, as the yellow bars, which represent the number of keywords the site currently ranks, are much higher. On the other hand, the number of keywords ranking between 45 - 100 is decreasing, which, possibly, indicates a performance improvement.
Question 3: Let’s step back from organic search for a second and evaluate how the visitors have engaged with the site content, specifically, which section performs well versus which needs some improvements?
The third: “Average Time on Page by Sections” graph focuses on user engagement, specifically how long visitors are likely to stay on the pages of each section of the site. There are four main sections, “Asia,” “United States,” “Europe,” and “Shop.”
As we can see from the scatter plot, generally, travel articles in the United States section engage the users the most, with an average on-page time of 50 seconds, followed by a few European guides, and shop product pages.
Summary:
Graph 1: Top USA landing pages and their weekly sessions. As we can see, most of them have experienced a recent sharp decline, which we will figure out why in the upcoming analysis.
Graph 2: We picked the “NYC bucket list” page, which is one of the main pages on our site, and took a closer look at its organic search performance overtime. Despite some fluctuations, it follows a positive growth trend.
Graph 3: How about the keyword rankings of the “NYC bucket list” page? This graph shows that more keywords are ranking in the first two pages now than previously, which means the fluctuation of the visits isn’t an SEO issue.
Question 4: From the previous dashboard, we know that visitors are most engaged with the content in the USA section. As most of the traffic comes from organic search, we want to understand which pages in the USA section have been performing well versus those that need some improvement. By improving these pages, we can increase our brand favorability.
From the first graph in this dashboard, we can see that among the four pages that are performing well overall, the “NYC Bucket List” page, which is evergreen, has experienced a drastic drop. As most of the traffic comes from organic search, there must be some changes around the search algorithm, SERP, or the search demand that has lead to this drop.
Question 5: As the “NYC Bucket List” page experienced a drop in organic search, we want to understand what has caused this decline. Is it a change in the search engine algorithm, SERP, or search demand?
Known from the interactive line graph, we can see that despite the decline shown in the first chart, this page has been trending up overall with some small fluctuations. With regards to keyword ranking, we can see from the bar chart that more keywords are ranking in the 0-10 position bucket, as the yellow bars, which represent the number of keywords the page currently ranks, are much higher.
Therefore, we can see that the drop isn’t due to the loss of rankings. We also look into the SERP (Search Engine Results Pages), there aren’t drastic changes. Therefore, we can conclude that this decline is most likely due to the change in search demand, which means that fewer people are searching for “things to do in NYC” now than before, which makes sense due to the outbreak of COVID-19.
Question 6: What can we learn from this analysis?
For small sites, most of the traffic is often from organic search. So, it is important to prioritize marketing efforts and dollars towards this channel.
When there is a decline in organic search traffic, some of the important metrics to look at first are: keyword ranking, SERP changes, backlink changes, and search demand.
Often, there is no need to panic if you see any decline of traffic as it is most likely due to seasonality or unseeable events. So, pinpoint the reason first before making any unnecessary changes that might backfire.
---
title: "MarcoFeng.com Performance Analysis"
output:
flexdashboard::flex_dashboard:
orientation: row
social: menu
source: embed
---
# Intro {.sidebar}
Introduction: I started marcofeng.com in February 2017 as a personal blog to make my job application look decent, but put it aside when I got an ok full-time job. Now, it is transformed into a travel site, sharing my travel stories around the globe to help people decide what to eat, where to go, and how to save money in each destination.
Description of The Data: the data was from Google Analytics and Google Search Console in the last 12 months, from March 2019 to March 2020. The former collects user engagement data, such as the number of pages users view after entering a specific page, average time, bounce rate, etc.
The latter focuses on organic search data, which includes the keywords the site ranks and their corresponding position in Google. As organic search composes the majority of the traffic to our site, we want to ensure to have an in-depth analysis for more opportunities to improve the performance. Also, there is no missing value or outliners in the dataset.
This dashboard has two sections. The first will be focusing on the analysis on the site level while the second one will be page level. You will see the in-depth analysis at the bottom of each dashboard tab.
Visualization methods: All charts and graphs in this dashboard are created using ggplot. The following packages are used: tidyquant, dplyr, tidyverse, ggplot2, readxl, latticeExtra, reshape2, and dygraphs.
```{r setup, include=FALSE}
library(tidyquant)
library(dplyr)
library(tidyverse)
library(ggplot2)
options(scipen = 999)
library(readxl)
library(latticeExtra)
library(reshape2)
library(dygraphs)
```
# Site Level Analysis {data-icon="fa-list"}
## Column 1
### Graph 1: Organic Visits vs. Page Views by Day
```{r}
Organic_Overall <- read_excel("Organic Overall Week.xlsx")
coeff <- 0.1
graphs<- ggplot(Organic_Overall, aes(x=as.numeric(Week_Index))) + geom_line(aes(y = Organic_Visits), color="pink") + geom_line(aes(y = Page_Sessions / coeff), color="sky blue") + scale_y_continuous(name = "Organic Visits", sec.axis = sec_axis(~.*coeff, name="Page Sessions"))
graphs + labs(title = "Organic Visits vs. Overall Page Views by Week", subtitle = "Pink: Organic Visits, Blue: Page Sessions", x = "Weeks (Mar 2019 - Mar 2020)") + scale_color_manual(values = colors) + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black")) + scale_x_continuous(breaks=seq(0, 53, 2))
```
### Graph 2: Keyword Ranking Distribution
```{r}
Organic_Search_Data <- read_excel("Organic Search Data.xlsx")
Position<-Organic_Search_Data$Position
Position_History<-Organic_Search_Data$Position_History
Position<-cbind("Position", Position)
Position_History<-cbind("Position_History", Position_History)
Positions<- as.data.frame(rbind(Position, Position_History))
names(Positions)[names(Positions) == "V1"] <- "Position_Type"
Positions$Position<- as.numeric(Positions$Position)
graphs<- ggplot(Positions, aes(x = Position)) + geom_histogram(data = subset(Positions, Positions$Position_Type == "Position_History"),fill = "sky blue", alpha = 0.8) + geom_histogram(data = subset(Positions, Positions$Position_Type == "Position"), fill = "yellow",alpha = 0.3, col="grey") + scale_x_continuous(breaks=seq(0, 100, 5))
graphs + labs(title = "Keyword Ranking Distribution", subtitle = "Blue: History Positions, Yellow: Current Positions", x = "Ranking Position Buckets", y = "Number of Keywords") + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black"))
```
## Column 2
### Graph 3: On-page Engagement by Sections
```{r}
Engagement_Data <- read_excel("Engagement Data.xlsx")
Graph<- ggplot(Engagement_Data, aes(x = Pages, y = Avg_Time_Page, colour = Section)) + geom_point()
Graph + labs(title = "Average Time on Page by Sections", subtitle = "Four Sections: USA, Europe, Asia and Shop", x = "Pages", y = "Avgerage Time on Page (seconds)") + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black")) + theme(axis.text.x = element_blank(), axis.ticks.x = element_blank()) + coord_fixed(ratio=0.4) + theme(legend.position="bottom")
```
### Summary for Each Graph + Answers to Questions
Summary:
- Graph 1: Organic visits and overall page views by week. The pink line is organic visit trend vs. the blue line, which is the trend of overall page views. As we can see, the two lines trend in a similar fashion, with the overall page view trend higher in most cases.
- Graph 2: Keyword ranking distribution of the whole site and the ranking movements overtime. It shows that the site now ranks more keywords in the first three pages of Google than previsouly.
- Graph 3: Average time on page by sections. Overall, the USA section content engages the users the most, followed by a few articles in the Europe and Asia sections.
Question 1: Between March 2019 and 2020, how the site has been performing in organic search and in general?
From "Organic Visits Vs. Page Views by Day" chart, we can see that weekly organic visits (pink) are significantly lower than page views (blue,) but both are trending in a similar fashion.
Organic traffic is defined as any visits coming from the search engines while page view is the total number of pages viewed, which also includes repeated views of a single page. Therefore, organic visits should always be lower than page views. Also, please note that both metrics are plotting again a different y-axis due to the different nature of these two metrics. Plus, by doing so, it helps us to see the trending pattern.
Question 2: When it comes to evaluating organic search performance, one of the metrics we will look at is keyword ranking. Are there is significant ranking movement during this time? If there is, how is it?
The "Keyword Ranking Distribution" graph showcases the keyword ranking movements over time, which is a critical indicator of a site's organic performance. As we can see, currently, more keywords are ranking at 1 - 25 position than previously, as the yellow bars, which represent the number of keywords the site currently ranks, are much higher. On the other hand, the number of keywords ranking between 45 - 100 is decreasing, which, possibly, indicates a performance improvement.
Question 3: Let's step back from organic search for a second and evaluate how the visitors have engaged with the site content, specifically, which section performs well versus which needs some improvements?
The third: "Average Time on Page by Sections" graph focuses on user engagement, specifically how long visitors are likely to stay on the pages of each section of the site. There are four main sections, "Asia," "United States," "Europe," and "Shop."
As we can see from the scatter plot, generally, travel articles in the United States section engage the users the most, with an average on-page time of 50 seconds, followed by a few European guides, and shop product pages.
# Page Level Analysis {data-icon="fa-list"}
## Column 1
### Graph 1: Top U.S. Pages Organic Overview
```{r}
Top_Pages_Weekly_Sessions <- read_excel("Top Pages Weekly Sessions.xlsx")
Top_Pages_Weekly_Sessions2<- melt(Top_Pages_Weekly_Sessions, id = c("Week_Index"))
names(Top_Pages_Weekly_Sessions2)[names(Top_Pages_Weekly_Sessions2)=="variable"]<- "Page"
names(Top_Pages_Weekly_Sessions2)[names(Top_Pages_Weekly_Sessions2)=="value"]<- "Sessions"
ggplot(data = Top_Pages_Weekly_Sessions2, mapping = aes(x = Week_Index, y = Sessions, colour = Page)) + geom_line() + facet_grid(rows = vars(Page)) + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black")) + labs(title = "Top USA Landing Pages Sessions by Weeks", x = "Weeks (March, 2019 - March, 2020)", y = "Weekly Sessions") + theme(legend.position="bottom")
```
### Graph 2: "NYC Bucket List" Page Organic Overview by Day
```{r}
NYC_Bucket_List <- read_excel("NYC Bucket List.xlsx")
NYC_Bucket_List2<-subset(NYC_Bucket_List, Day>as.Date("2019-10-01"))
final<- ggplot(NYC_Bucket_List, aes(x=as.Date(Day), y = Organic_Sessions)) + geom_line() + scale_x_date(date_labels = "%b/%Y")
don<- xts(x = NYC_Bucket_List2[,-1], order.by = NYC_Bucket_List2$Day)
dygraph(don, main = "NYC Bucket List Page Organic Performance", xlab = "Months", ylab="Organic Sessions") %>% dyOptions(fillGraph = TRUE, labelsUTC = TRUE, fillAlpha = 0.1, drawGrid = FALSE, colors = "#87ceeb") %>% dyRangeSelector() %>% dyCrosshair(direction = "vertical") %>% dyHighlight(highlightCircleSize = 5, highlightSeriesBackgroundAlpha = 0.2, hideOnMouseOut = FALSE) %>% dyRoller(rollPeriod = 1)
```
## Column 2
### Graph 3: "NYC Bucket List" Page Keyword Ranking Movements
```{r}
NYC_Bucket_List_Ranking <- read_excel("NYC Bucket List KW.xlsx")
Position<-NYC_Bucket_List_Ranking$Position
Position_History<-NYC_Bucket_List_Ranking$Position_History
Position<-cbind("Position", Position)
Position_History<-cbind("Position_History", Position_History)
Positions<- as.data.frame(rbind(Position, Position_History))
names(Positions)[names(Positions) == "V1"] <- "Position_Type"
Positions$Position<- as.numeric(Positions$Position)
graphs<- ggplot(Positions, aes(x = Position)) + geom_histogram(data = subset(Positions, Positions$Position_Type == "Position_History"),fill = "sky blue", alpha = 0.8) + geom_histogram(data = subset(Positions, Positions$Position_Type == "Position"), fill = "yellow",alpha = 0.3, col="grey") + scale_x_continuous(breaks=seq(0, 100, 5))
graphs + labs(title = "Keyword Ranking Distribution", subtitle = "Blue: History Positions, Yellow: Current Positions", x = "Ranking Position Buckets", y = "Number of Keywords") + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black"))
```
### Summary for Each Graph + Answers to Questions
Summary:
- Graph 1: Top USA landing pages and their weekly sessions. As we can see, most of them have experienced a recent sharp decline, which we will figure out why in the upcoming analysis.
- Graph 2: We picked the "NYC bucket list" page, which is one of the main pages on our site, and took a closer look at its organic search performance overtime. Despite some fluctuations, it follows a positive growth trend.
- Graph 3: How about the keyword rankings of the "NYC bucket list" page? This graph shows that more keywords are ranking in the first two pages now than previously, which means the fluctuation of the visits isn't an SEO issue.
Question 4: From the previous dashboard, we know that visitors are most engaged with the content in the USA section. As most of the traffic comes from organic search, we want to understand which pages in the USA section have been performing well versus those that need some improvement. By improving these pages, we can increase our brand favorability.
From the first graph in this dashboard, we can see that among the four pages that are performing well overall, the "NYC Bucket List" page, which is evergreen, has experienced a drastic drop. As most of the traffic comes from organic search, there must be some changes around the search algorithm, SERP, or the search demand that has lead to this drop.
Question 5: As the "NYC Bucket List" page experienced a drop in organic search, we want to understand what has caused this decline. Is it a change in the search engine algorithm, SERP, or search demand?
Known from the interactive line graph, we can see that despite the decline shown in the first chart, this page has been trending up overall with some small fluctuations. With regards to keyword ranking, we can see from the bar chart that more keywords are ranking in the 0-10 position bucket, as the yellow bars, which represent the number of keywords the page currently ranks, are much higher.
Therefore, we can see that the drop isn't due to the loss of rankings. We also look into the SERP (Search Engine Results Pages), there aren't drastic changes. Therefore, we can conclude that this decline is most likely due to the change in search demand, which means that fewer people are searching for "things to do in NYC" now than before, which makes sense due to the outbreak of COVID-19.
Question 6: What can we learn from this analysis?
- For small sites, most of the traffic is often from organic search. So, it is important to prioritize marketing efforts and dollars towards this channel.
- When there is a decline in organic search traffic, some of the important metrics to look at first are: keyword ranking, SERP changes, backlink changes, and search demand.
- Often, there is no need to panic if you see any decline of traffic as it is most likely due to seasonality or unseeable events. So, pinpoint the reason first before making any unnecessary changes that might backfire.