Bellabeat - Google Data Analytics Capstone
Date: Sep 03, 2026
Tags: Marketing Customer Behavior Health Tech Data Normalization Behavioral Segmentation SQL BigQuery Tableau
Live Dashboard: Bellabeat - Google Data Analytics Capstone | SQL Scripts: Bellabeat Scripts]
Executive Summary
Analyzed FitBit smart device fitness data and identified customer usage patterns to guide future marketing strategies for Bellabeat. Applied data cleaning and transformation techniques, aggregations, and identified patterns such as the peak activity window and the correlation between daytime activity and sleep quality using Tableau and BigQuery.
I. Project & Business Task (Ask)
1.1 Business Task
Analyze third-party smart device usage data to identify consumer habits and trends. Use the insights gathered to improve one of Bellabeat's product marketing strategies.
1.2 Project Scope
- Key Stakeholders:
- Urška Sršen - Co-founder and Chief Creative Officer
- Sando Mur - Mathematician and Co-founder
- Bellabeat Marketing Analytics Team
- Target Product: Bellabeat Time (Watch)
II. Data Sources & Integrity (Prepare)
2.1 Dataset Overview
- Data Sources: Kaggle: FitBit Fitness Tracker Data
- Data Structure: 18 CSV files containing daily, hourly, and minute-level quantitative fitness metrics with narrow and wide data format.
III. Data Cleaning & Transformation (Process)
Due to the volume of the data to be analyzed, I decided to use BigQuery. First, I uploaded the CSV files and manually updated the schema because the raw timestamp formats were causing errors.
3.1 Type Casting
I started by fixing the datatypes by using PARSE_DATETIME() function. This converts a datetime string into queryable datetime format.
3.2 Aggregations
3.2.1 To make measurements consistent across tables, I aggregated minute-level heart rate data into their hourly averages using FORMAT_DATETIME() and AVG() functions.
3.2.2 Profiled users based on their activity level using CASE WHEN keyword. This allows me to suggest targeted recommendations for each groups.
3.3 Joins and Relationships
3.3.1 To create a master table for cleaned hourly data, I used calories_hour_clean as the main table then performed LEFT JOIN to heart rate, MET, and steps table. This creates a physically joined table.
3.3.2 Due to different grains in the data; hourly master table, and daily overview. I decided to set a relationship (logical join) between the tables on Tableau instead of merging every data into one massive table.
3.4 Other Cleaning Performed
I removed the duplicate rows using SELECT DISTINCT, TRIM() to remove any spaces on the field, and SAFE_CAST() to change data type or return NULL if the data cannot be changed.
IV. Key Findings & Analysis (Analyze & Share)
4.1 Activity Trends
- User activity and step counts peak significantly between 5:30 PM and 7:00 PM.
4.2 Sleep Quality by Activity Level
- While every user category spends around 8 hours in bed, sedentary users spent 56 minutes in bed awake, which is 28 minutes more than lightly active and active users.
4.3 Activity Level and Intensity
- Active users spend almost 400% minutes more on high intensity activities compared to sedentary users. But spend only 145% minutes more on fairly intense activities compared to sedentary users
V. Strategic Recommendations (Act)
5.1 Customer Acquisition
-
Run ad campaigns for possible active users around 4:30PM - 5:30PM with two sets, one for runners emphasizing heart rate and step goal tracking, and one for gym-goers highlighting guided workout routines in the Bellabeat app.
-
Run social media ad campaigns around 10:00PM - 11:30PM that highlights the Bellabeat Time watch as gentle sleep and recovery companion to address restlessness and time spent awake in bed.
5.2 Customer Retention
-
Send motivational push notifications around 5:30PM - 6:30PM targeted for active users promoting fitness goal progress, challenges, and workout streaks.
-
Send push notifications around 4:30PM targeted for lower-activity users which highlights that a short afternoon walk can help them fall asleep up to 30 minutes faster.
VI. Challenges & Data Limitations
| Challenge | Probable Cause | Fix / Mitigation |
|---|---|---|
| Small sample size, and lack of demographics data (esp. gender, age, and weight). | Dataset was anonymized to protect the privacy of volunteers who shared their data. | Assumed that all dataset reflects women's health metrics to align with Bellabeat's target demographics. |
| 2M+ rows on one table. | Minute-level rate logs. | Aggregated data to hourly averages using AVG() and GROUP BY |
| Working with tables that have different data granularities. | Some tables are detailed minute/hourly snapshots while some are daily summaries. | Used relationships to link different granularities and avoid duplications. |
VII. Next Steps & Future Analysis
- Integrate broader user demographic data to reduce historical selection bias.
- Run A/B testing on push notification delivery times to measure direct app engagement uplift.

