Brand Introduction
Introductory videos presenting CALGC - who they are, what they build, and why customers trust them.
Watch clip 1/2 on Instagram →Digital Marketing · Paid Media · Content · Web
I'm Thien Nguyen, a digital marketer working across paid media, content, web, and analytics. I plan campaigns, create the assets, build conversion-focused experiences, and use data to improve what comes next.
Capability 01 · Paid Media
Performance-driven campaigns across Meta and Google - combining strategy, targeting, creative, and optimization to generate leads, bookings, and measurable business results.
Planned, launched, and optimized local Meta campaigns focused on generating awareness, inquiries, appointments, and customer growth.
Built intent-driven search campaigns designed to connect local customers actively searching for services with relevant offers and conversion-focused landing experiences.
Search ad examples (editable placeholders):
Creative assets developed for promotional, service-based, and brand-focused Meta campaigns across static, video, and vertical formats.
Capability 02 · Web Design & Development
Digital experiences designed around brand identity, usability, customer journeys, and conversion.
Objective. Redesign the existing Enchanteur Nails Room website into a more modern, refined, and user-friendly experience that better reflects the brand while making services and booking easier to navigate.
Live site: enchanteurnailroom.com ↗
Reviewed the existing website and identified opportunities to improve its visual direction, structure, usability, and brand presentation.
Researched nail, spa, hospitality, and lifestyle websites to develop a more distinctive, modern, and premium design direction based on the owner’s preferences.
Reorganized sections, service information, navigation, and content hierarchy for a cleaner experience that’s easier for customers to understand and navigate.
Improved on-page SEO and optimized the mobile layout for a stronger browsing and booking experience across phones and other devices.
Objective. Build a conversion-focused landing page for high-intent Google Ads traffic, creating a clearer customer journey from search intent to repair inquiry or booking.
Live page: 6666devicecaremailin.com/phone
Structured the page around the decision-making process of customers actively searching Google for phone repair - a clear path from problem to service to action.
Developed pain-point-driven messaging around common concerns, repair needs, and trust factors to strengthen conversion intent.
Selected, produced, and edited original photos and videos to visually communicate services, repair expertise, and credibility.
Optimized mobile usability, search visibility, CTA hierarchy, and content flow to reduce friction and encourage more inquiries and bookings.
Capability 03 · Content Creation
Strategy-led content combining concept development, storytelling, visual production, and platform-specific execution to support brand and business goals.
Objective. Develop engaging social content that strengthens the organization’s digital presence, communicates its work clearly, and increases reach and audience engagement.
Introductory videos presenting CALGC - who they are, what they build, and why customers trust them.
Watch clip 1/2 on Instagram →A look at part of CALGC's completed work - real projects turned into short-form video to build credibility with prospective clients.
Watch clip 1/3 on Instagram →Fun, humor-driven videos made to entertain and grow reach while keeping CALGC's brand front and center.
Watch clip 1/3 on Instagram →Objective. Create a consistent and elevated content presence that showcases the salon experience, supports promotions, and drives local customer awareness and visits.
A multi-video launch campaign for Fresh Nails & Spa's grand reopening - the content that drew a line of walk-in customers on opening day.
Watch clip 1/7 on Facebook →Short-form videos promoting the salon's complimentary drink menu to lift the in-store experience and social engagement.
Watch clip 1/2 on Facebook →Ongoing daily photo content keeping the salon's feed active and locally engaging between campaigns.
View post 1/3 on Facebook →Regular short-form video posts to grow reach and keep the audience engaged day to day.
Watch clip 1/3 on Facebook →Objective. Create consistent short-form content that simplifies technical repair topics, builds customer trust, promotes services, and turns social attention into customer interest.
Produced and edited a Spanish-language phone-repair ad campaign in Seattle targeting Hispanic customers and same-day service - lifting engagement and message-response rate by over 40% among Spanish-speaking audiences.
Watch on Facebook →Collaborated with Seattle-based influencers to produce and edit phone-repair ad videos for 6666 Device Care - concept development, filming, and social optimization to boost brand awareness and local engagement.
Watch on Facebook →Designed and ran a 100-episode video challenge on diagnosing and repairing different phone models - hardware diagnostics, component replacement, and troubleshooting turned into engaging, educational content.
Watch on Facebook →Produced and edited the Customer Walk-in Video Series showing real repair experiences at 6666 Device Care - securing participant consent and highlighting authentic service moments to build brand trust and community engagement.
Watch on Facebook →Production scale: 75+ short-form videos produced per month.
Capability 04 · Marketing Analytics
Turning marketing and business data into actionable insights, clearer opportunities, and smarter decisions.
Analyzing traffic, customer behavior, revenue, and purchase funnels using Google Analytics e-commerce data and SQL.
SQL · Google BigQuery · Google Analytics Data
View GitHub →This project provides a set of SQL queries designed to analyze e-commerce data using Google BigQuery. The goal of this project is to help data analysts gain insights into customer behavior, sales performance, and key business metrics through SQL queries executed on the Google Analytics Sample dataset.
| Field Name | Data Type | Description |
|---|---|---|
| fullVisitorId | STRING | The unique visitor ID. |
| date | STRING | The date of the session in YYYYMMDD format. |
| totals | RECORD | This section contains aggregate values across the session. |
| totals.bounces | INTEGER | Total bounces. For a bounced session, the value is 1, otherwise it is null. |
| totals.hits | INTEGER | Total number of hits within the session. |
| totals.pageviews | INTEGER | Total number of pageviews within the session. |
| totals.visits | INTEGER | The number of sessions. This value is 1 for sessions with interaction events. |
| totals.transactions | INTEGER | Total number of ecommerce transactions within the session. |
| trafficSource.source | STRING | The source of the traffic source (search engine, referring hostname, or utm_source). |
| hits | RECORD | This row and nested fields are populated for any and all types of hits. |
| hits.eCommerceAction | RECORD | Contains all of the ecommerce hits that occurred during the session. |
| hits.eCommerceAction.action_type | STRING | Click through of product lists = 1, Product detail views = 2, Add to cart = 3, Remove from cart = 4, Check out = 5, Completed purchase = 6, Refund = 7, Checkout options = 8, Unknown = 0. |
| hits.product | RECORD | Populated for each hit that contains Enhanced Ecommerce PRODUCT data. |
| hits.product.productQuantity | INTEGER | The quantity of the product purchased. |
| hits.product.productRevenue | INTEGER | The revenue of the product (value passed to Analytics multiplied by 10^6). |
| hits.product.productSKU | STRING | Product SKU. |
| hits.product.v2ProductName | STRING | Product Name. |
SELECT distinct format_date('%Y%m', PARSE_DATE('%Y%m%d', date)) as month
,count (totals.visits) as visits
,sum (totals.pageviews) as pageviews
,sum (totals.transactions) as transactions
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`
group by month
order by month;
| month | visits | pageviews | transactions |
|---|---|---|---|
| 201701 | 64694 | 257708 | 713 |
| 201702 | 62192 | 233373 | 733 |
| 201703 | 69931 | 259522 | 993 |
| 201704 | 67126 | 242576 | 959 |
| 201705 | 65371 | 255077 | 1160 |
| 201706 | 63578 | 233210 | 971 |
| 201707 | 71812 | 270554 | 1072 |
| 201708 | 2556 | 10939 | 45 |
select distinct trafficSource.source as trafficSource
,count(totals.visits) as total_visits
,sum(totals.bounces) as total_no_of_bounces
,round(100*(sum(totals.bounces) / count(totals.visits)),3) as bounce_rate
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`
where parse_date('%Y%m%d',date) between '2017-07-01' AND '2017-07-31'
group by trafficSource
order by total_visits desc;
| trafficSource | total_visits | total_no_of_bounces | bounce_rate |
|---|---|---|---|
| 38400 | 19798 | 51.557 | |
| (direct) | 19891 | 8606 | 43.266 |
| youtube.com | 6351 | 4238 | 66.73 |
| analytics.google.com | 1972 | 1064 | 53.955 |
| Partners | 1788 | 936 | 52.349 |
select 'Month'as time_type
,FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) as time
,trafficSource.source as source
,round((SUM(product.productRevenue) / 1000000),4) as revenue
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
WHERE FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) = '201706'
and product.productRevenue is not null
GROUP BY time, source
union all
select 'Week'as time_type
,FORMAT_DATE('%Y%V', PARSE_DATE('%Y%m%d', date)) as time
,trafficSource.source as source
,round((SUM(product.productRevenue) / 1000000),4) as revenue
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
WHERE FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) = '201706'
and product.productRevenue is not null
GROUP BY time, source
ORDER BY revenue desc;
| time_type | time | source | revenue |
|---|---|---|---|
| Month | 201706 | (direct) | 97333.6197 |
| Week | 201724 | (direct) | 30908.9099 |
| Week | 201725 | (direct) | 27295.3199 |
| Month | 201706 | 18757.1799 | |
| Week | 201723 | (direct) | 17325.6799 |
with purchaser as (
select FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) as month
,round((sum(totals.pageviews) / count(distinct fullVisitorId)),8) as avg_pageviews_purchase
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
where (totals.transactions >=1)
and (product.productRevenue is not null)
and (_table_suffix between '0601' and '0731')
group by month
order by month
)
, non_purchaser as (
select FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) as month
,round((sum(totals.pageviews) / count(distinct fullVisitorId)),8) as avg_pageviews_non_purchase
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
where (totals.transactions is null)
and (product.productRevenue is null)
and (_table_suffix between '0601' and '0731')
group by month
order by month
)
select p.month
,p.avg_pageviews_purchase
,np.avg_pageviews_non_purchase
from purchaser p
join non_purchaser np
on p.month = np.month
order by month;
| month | avg_pageviews_purchase | avg_pageviews_non_purchase |
|---|---|---|
| 201706 | 94.02050114 | 316.86558846 |
| 201707 | 124.23755187 | 334.0565598 |
select FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) as month
,round((sum(totals.transactions) / count(distinct fullVisitorId)),9) as Avg_total_transactions_per_user
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
where (totals.transactions >=1)
and (product.productRevenue is not null)
and (_table_suffix between '0701' and '0731')
group by month;
| month | Avg_total_transactions_per_user |
|---|---|
| 201707 | 4.163900415 |
select FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) as month
,round((SUM((product.productRevenue) / 1000000) / count(totals.visits)),2) as avg_revenue_by_user_per_visit
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
where (totals.transactions is not null)
and (product.productRevenue is not null)
and (_table_suffix between '0701' and '0731')
group by month;
| month | avg_revenue_by_user_per_visit |
|---|---|
| 201707 | 43.86 |
with users_buy_the_product as (
select fullVisitorId
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
where product.v2ProductName = "YouTube Men's Vintage Henley"
and (_table_suffix between '0701' and '0731')
and product.productRevenue is not null
)
select product.v2ProductName as other_purchased_products
,sum(product.productQuantity) as quantity
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
where fullVisitorId in (select fullVisitorId from users_buy_the_product)
and product.v2ProductName != "YouTube Men's Vintage Henley"
and (_table_suffix between '0701' and '0731')
and product.productRevenue is not null
group by other_purchased_products
order by quantity desc;
| other_purchased_products | quantity |
|---|---|
| Google Sunglasses | 20 |
| Google Women's Vintage Hero Tee Black | 7 |
| SPF-15 Slim & Slender Lip Balm | 6 |
| Google Women's Short Sleeve Hero Tee Red Heather | 4 |
| Google Men's Short Sleeve Badge Tee Charcoal | 3 |
with month_view_data as (
select FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) as month
,count(hits.eCommerceAction.action_type) as num_product_view
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits
where hits.eCommerceAction.action_type = "2"
group by month
order by month
)
, addtocart_data as (
select FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) as month
,count(hits.eCommerceAction.action_type) as num_addtocart
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits
where hits.eCommerceAction.action_type = "3"
group by month
order by month
)
, purchase_data as (
select FORMAT_DATE('%Y%m', PARSE_DATE('%Y%m%d', date)) as month
,count(hits.eCommerceAction.action_type) as num_purchase
from `bigquery-public-data.google_analytics_sample.ga_sessions_2017*`,
UNNEST (hits) hits,
UNNEST (hits.product) product
where hits.eCommerceAction.action_type = "6"
and product.productRevenue is not null
group by month
order by month
)
select m. month
,m.num_product_view
,a.num_addtocart
,p.num_purchase
,round(100*(a.num_addtocart / m.num_product_view ),2) as add_to_cart_rate
,round(100*(p.num_purchase / m.num_product_view),2) as purchase_rate
from month_view_data m
left join addtocart_data a
on m.month = a.month
left join purchase_data p
on m.month = p.month
order by month;
| month | num_product_view | num_addtocart | num_purchase | add_to_cart_rate | purchase_rate |
|---|---|---|---|---|---|
| 201701 | 25787 | 7342 | 2143 | 28.47 | 8.31 |
| 201702 | 21489 | 7360 | 2060 | 34.25 | 9.59 |
| 201703 | 23549 | 8782 | 2977 | 37.29 | 12.64 |
| 201704 | 24587 | 10291 | 2906 | 41.86 | 11.82 |
| 201705 | 25469 | 10083 | 3285 | 39.59 | 12.9 |
| 201706 | 22148 | 9020 | 2785 | 40.73 | 12.57 |
| 201707 | 28576 | 11860 | 3669 | 41.5 | 12.84 |
| 201708 | 1267 | 494 | 186 | 38.99 | 14.68 |
Evaluating campaign effectiveness, customer behavior, and sales performance through SQL, Excel, and Tableau.
SQL · Excel · Tableau
View GitHub →The train is the retail dataset of a superstore that offers a wide category of products such as furniture, technology, and office supplies to customers.
The project is conducted to analyze the Effectiveness of marketing campaigns from selected data and give suggestions. Building the store sale summary dashboard and product performance summary dashboard deliver outcomes by three terms: sale trend, customer preferences, and product sales by category.
Store revenue summary dashboard
Product performance summary dashboard
View dynamic dashboard - Store Revenue Summary
View dynamic dashboard - Product Performance Summary
Sale trend: The superstore generated approximately $2.26 million in revenue across 9,800 orders over a four-year span, averaging "$459.48 dollars per order." Year-to-year figures fluctuated considerably, beginning near $480,000 in 2015 and culminating around $722,000 by 2018. Monthly variations proved most dramatic, with "52.77 percent" growth between February-March dropping to "-49.36 percent" the following month.
Customer preferences: Consumer segments dominated revenue generation at $1.15 million versus corporate and home office segments. The western region led geographically with $710,220, though internal state-level variation was substantial. "California, Washington, and Colorado" generated $446,306 combined, while remaining western states contributed minimal amounts by comparison.
Product sales by category: Technology products led revenue at $827,456 (36.59%), followed by furniture at $728,659 (32.22%) and office supplies at $705,422 (32.2%). Furniture demonstrated the "most stable growth of revenue" throughout the analysis period.
Using Power BI to identify high-growth markets, product opportunities, customer trends, and business performance patterns.
Power BI · Data Visualization · Business Analysis
View GitHub →| Tables | Type |
|---|---|
| Orders | Fact table |
| People | Dim table |
| Inventory | Dim table |
Here are the five steps of design thinking:
Get in touch
Need to get in touch about work? Leave your details below and I'll get back to you soon.