Introduction

This report analyzes the performance of marketing campaigns from three beauty and cosmetic platforms: - Nykaa - Purplle - Tira

The dashboard evaluates campaign performance using metrics such as: - Revenue - ROI - Clicks and Conversions - Engagement Score - Customer Segments - Marketing Channels

Import Your Data

Ensure these files are in the same folder as this Rmd file

# Ensure these files are in the same folder as this Rmd file
nykaa <- read_csv("nykaa_campaign_data.csv")
purplle <- read_csv("purplle_campaign_data.csv")
tira <- read_csv("tira_campaign_data.csv")

nykaa$Brand <- "Nykaa"
purplle$Brand <- "Purplle"
tira$Brand <- "Tira"

campaign_data <- bind_rows(nykaa, purplle, tira)

head(campaign_data)
## # A tibble: 6 × 17
##   Campaign_ID Campaign_Type Target_Audience    Duration Channel_Used Impressions
##   <chr>       <chr>         <chr>                 <dbl> <chr>              <dbl>
## 1 NY-CMP-1000 Social Media  College Students         21 WhatsApp, Y…       57804
## 2 NY-CMP-1001 Paid Ads      Tier 2 City Custo…       18 YouTube            91801
## 3 NY-CMP-1002 Influencer    Youth                    23 WhatsApp, G…       15536
## 4 NY-CMP-1003 Email         Working Women            18 YouTube, Fa…       88114
## 5 NY-CMP-1004 Paid Ads      College Students         10 Facebook, I…       96871
## 6 NY-CMP-1005 Influencer    Youth                    26 Email, Inst…       83919
## # ℹ 11 more variables: Clicks <dbl>, Leads <dbl>, Conversions <dbl>,
## #   Revenue <dbl>, Acquisition_Cost <dbl>, ROI <dbl>, Language <chr>,
## #   Engagement_Score <dbl>, Customer_Segment <chr>, Date <chr>, Brand <chr>
campaign_data$Date <- dmy(campaign_data$Date)

campaign_data <- campaign_data %>%
  mutate(
    CTR = (Clicks / Impressions) * 100,
    Conversion_Rate = (Conversions / Clicks) * 100
  )

summary(campaign_data)
##  Campaign_ID        Campaign_Type      Target_Audience       Duration    
##  Length:166665      Length:166665      Length:166665      Min.   : 5.00  
##  Class :character   Class :character   Class :character   1st Qu.:11.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :17.00  
##                                                           Mean   :17.49  
##                                                           3rd Qu.:24.00  
##                                                           Max.   :30.00  
##  Channel_Used        Impressions         Clicks          Leads     
##  Length:166665      Min.   : 10001   Min.   :  202   Min.   :  48  
##  Class :character   1st Qu.: 32566   1st Qu.: 2109   1st Qu.: 779  
##  Mode  :character   Median : 55110   Median : 3904   Median :1476  
##                     Mean   : 55061   Mean   : 4682   Mean   :1872  
##                     3rd Qu.: 77574   3rd Qu.: 6688   3rd Qu.:2598  
##                     Max.   :100000   Max.   :14944   Max.   :8876  
##   Conversions      Revenue        Acquisition_Cost        ROI        
##  Min.   :  17   Min.   :   3895   Min.   :    8.18   Min.   :-0.990  
##  1st Qu.: 401   1st Qu.: 177661   1st Qu.:  106.73   1st Qu.: 0.040  
##  Median : 776   Median : 359250   Median :  208.51   Median : 1.230  
##  Mean   :1029   Mean   : 513907   Mean   :  376.09   Mean   : 2.691  
##  3rd Qu.:1404   3rd Qu.: 684797   3rd Qu.:  427.57   3rd Qu.: 3.580  
##  Max.   :6686   Max.   :4579910   Max.   :15473.16   Max.   :79.300  
##    Language         Engagement_Score Customer_Segment        Date           
##  Length:166665      Min.   : 2.56    Length:166665      Min.   :2024-07-01  
##  Class :character   1st Qu.: 8.38    Class :character   1st Qu.:2024-09-25  
##  Mode  :character   Median :13.59    Mode  :character   Median :2024-12-21  
##                     Mean   :13.77                       Mean   :2024-12-20  
##                     3rd Qu.:18.79                       3rd Qu.:2025-03-17  
##                     Max.   :30.99                       Max.   :2025-06-24  
##     Brand                CTR         Conversion_Rate 
##  Length:166665      Min.   : 1.996   Min.   : 5.924  
##  Class :character   1st Qu.: 5.256   1st Qu.:15.242  
##  Mode  :character   Median : 8.499   Median :20.507  
##                     Mean   : 8.502   Mean   :21.945  
##                     3rd Qu.:11.770   3rd Qu.:27.748  
##                     Max.   :15.000   Max.   :47.870

Data Overview

str(campaign_data)
## tibble [166,665 × 19] (S3: tbl_df/tbl/data.frame)
##  $ Campaign_ID     : chr [1:166665] "NY-CMP-1000" "NY-CMP-1001" "NY-CMP-1002" "NY-CMP-1003" ...
##  $ Campaign_Type   : chr [1:166665] "Social Media" "Paid Ads" "Influencer" "Email" ...
##  $ Target_Audience : chr [1:166665] "College Students" "Tier 2 City Customers" "Youth" "Working Women" ...
##  $ Duration        : num [1:166665] 21 18 23 18 10 26 21 6 27 11 ...
##  $ Channel_Used    : chr [1:166665] "WhatsApp, YouTube" "YouTube" "WhatsApp, Google, YouTube" "YouTube, Facebook, Instagram" ...
##  $ Impressions     : num [1:166665] 57804 91801 15536 88114 96871 ...
##  $ Clicks          : num [1:166665] 6156 3321 2182 8413 3743 ...
##  $ Leads           : num [1:166665] 3616 1971 952 2231 2060 ...
##  $ Conversions     : num [1:166665] 2355 1357 755 947 1258 ...
##  $ Revenue         : num [1:166665] 1867515 1046247 197055 376906 518296 ...
##  $ Acquisition_Cost: num [1:166665] 111 180.8 90.6 249.1 228.6 ...
##  $ ROI             : num [1:166665] 6.14 3.26 1.88 0.6 0.8 3.09 1.17 1.4 3.73 1.61 ...
##  $ Language        : chr [1:166665] "Hindi" "Hindi" "English" "Hindi" ...
##  $ Engagement_Score: num [1:166665] 20.98 7.24 25.03 13.15 7.29 ...
##  $ Customer_Segment: chr [1:166665] "College Students" "College Students" "College Students" "College Students" ...
##  $ Date            : Date[1:166665], format: "2025-04-29" "2025-04-06" ...
##  $ Brand           : chr [1:166665] "Nykaa" "Nykaa" "Nykaa" "Nykaa" ...
##  $ CTR             : num [1:166665] 10.65 3.62 14.04 9.55 3.86 ...
##  $ Conversion_Rate : num [1:166665] 38.3 40.9 34.6 11.3 33.6 ...
dim(campaign_data)
## [1] 166665     19

Revenue by Brand

campaign_data %>%
  group_by(Brand) %>%
  summarise(Total_Revenue = sum(Revenue, na.rm = TRUE)) %>%
  ggplot(aes(x = Brand, y = Total_Revenue, fill = Brand)) +
  geom_col() +
  labs(
    title = "Total Revenue by Brand",
    x = "Brand",
    y = "Revenue"
  )

ROI by Campaign Type

campaign_data %>%
  group_by(Campaign_Type) %>%
  summarise(Avg_ROI = mean(ROI, na.rm = TRUE)) %>%
  ggplot(aes(x = Campaign_Type, y = Avg_ROI, fill = Campaign_Type)) +
  geom_col() +
  labs(
    title = "Average ROI by Campaign Type",
    x = "Campaign Type",
    y = "Average ROI"
  ) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Conversion Rate by Brand

campaign_data %>%
  group_by(Brand) %>%
  summarise(Avg_Conversion_Rate = mean(Conversion_Rate, na.rm = TRUE)) %>%
  ggplot(aes(x = Brand, y = Avg_Conversion_Rate, fill = Brand)) +
  geom_col() +
  labs(
    title = "Average Conversion Rate by Brand",
    x = "Brand",
    y = "Conversion Rate (%)"
  )

Engagement Score Distribution

ggplot(campaign_data, aes(x = Engagement_Score, fill = Brand)) +
  geom_histogram(bins = 30, alpha = 0.7) +
  labs(
    title = "Distribution of Engagement Scores",
    x = "Engagement Score",
    y = "Count"
  )

Top Customer Segments

campaign_data %>%
  group_by(Customer_Segment) %>%
  summarise(Total_Revenue = sum(Revenue, na.rm = TRUE)) %>%
  ggplot(aes(x = reorder(Customer_Segment, Total_Revenue),
             y = Total_Revenue,
             fill = Customer_Segment)) +
  geom_col() +
  coord_flip() +
  labs(
    title = "Revenue by Customer Segment",
    x = "Customer Segment",
    y = "Revenue"
  )

Monthly Revenue Trend

campaign_data %>%
  mutate(Month = floor_date(Date, "month")) %>%
  group_by(Month, Brand) %>%
  summarise(Total_Revenue = sum(Revenue, na.rm = TRUE)) %>%
  ggplot(aes(x = Month, y = Total_Revenue, color = Brand)) +
  geom_line(size = 1) +
  labs(
    title = "Monthly Revenue Trend",
    x = "Month",
    y = "Revenue"
  )

Key Insights

## 
## 1. Social media and paid advertising campaigns generated high engagement and revenue.
## 2. Nykaa showed strong overall revenue performance across campaigns.
## 3. Influencer and Paid Ads campaigns produced higher ROI compared to Email campaigns.
## 4. College Students and Premium Shoppers were major contributing customer segments.
## 5. Conversion rates varied significantly across brands and campaign strategies.

Conclusion

This dashboard provides a comparative analysis of marketing campaign performance across Nykaa, Purplle, and Tira. The analysis highlights revenue trends, customer engagement, ROI, and campaign effectiveness. Businesses can use these insights to optimize future marketing strategies and target high-performing customer segments effectively.