Campaign Analytics | Product Analytics

Athlete-Led Viral Marketing
Impact Analysis

kabelo-analytics · Synthetic campaign dataset · Power BI + Python

Wellness brands increasingly partner with athletes and influencers to drive awareness and acquisition. But reach alone is not the same as results. This project examines whether an athlete-led viral campaign — anchored on TikTok — actually moved the needle across the full acquisition funnel: from impressions to gym memberships.

7.9M Total Impressions
5 Channels Analysed
200K Dataset Rows
+38pts Brand Lift Signal

Does athlete-led reach convert to acquisition?

Wellness brands increasingly partner with athletes and influencers to drive awareness and acquisition. But reach alone is not the same as results. This project examines whether an athlete-led viral campaign — anchored on TikTok — actually moved the needle across the full acquisition funnel: from impressions to gym memberships. The dataset is synthetic but built to mirror realistic campaign dynamics across channels, conversion stages, and offline behaviour signals.

  • 1 Which channels delivered the most reach, and which delivered the best efficiency?
  • 2 Did awareness convert to action across the funnel — clicks, signups, trials, memberships?
  • 3 What was the cost per membership by channel, and where was spend most effective?
  • 4 Were there signs of brand lift and offline wellness behaviour change?

Four analytical workstreams

The analysis is structured around four core questions, each mapped to a specific measurement layer and decision output.

Reach and Channel Efficiency

Impressions and click-through rate by channel and date window. Separates volume from efficiency — identifying which channels reached the most people and which generated the most qualified click behaviour relative to spend.

Full Funnel Conversion

Signups, trials, and memberships tracked as conversion rates at each stage. Reveals where volume falls away and which channels maintain conversion efficiency through to the final acquisition stage.

Cost Per Acquisition by Channel

Spend divided by memberships, calculated per channel across the full campaign period. Corrects for the distortion of using impressions or clicks as efficiency proxies in high-reach campaigns.

Brand Lift and Offline Signal

Brand Search Index trend across pre-campaign, campaign, and post-campaign windows. Gym activity and new membership volumes tracked with a lag adjustment to surface delayed conversion behaviour.

Star schema built for BI consumption

The dataset follows a star schema designed for direct Power BI consumption. Metric tables join to dimension and proxy tables on shared date and channel keys.

dim_channel
channel_id
channel_name
channel_type
spend_category
dim_period
date
week_num
campaign_phase
is_campaign_active
fact_channel_daily — Core Fact Table
date (FK)
channel_id (FK)
impressions
clicks
spend
signups
trials
memberships
ctr (derived)
cpa (derived)
brand_interest_index
date (FK)
search_index
campaign_phase
gym_activity
date (FK)
gym_visits
new_memberships
lag_days

Five measurement dimensions

Each KPI is tied to a specific business decision — not a description of activity.

Reach
Impressions by channel and date
Click-through rate (clicks / impressions)
Reach share vs. spend share by channel
Conversion
Signup rate by channel
Trial rate (trials / signups)
Membership conversion rate
Efficiency
Cost per acquisition (spend / memberships)
CPA trend across campaign window
Spend allocation vs. membership return
Brand Lift
Brand search index trend
Pre / during / post-campaign comparison
Awareness-to-consideration lag
Offline Signal
Gym visit trend relative to campaign
New membership spike timing
Consideration-to-action lag (days)
Output Format
Star schema for Power BI
Python pipeline (pandas, matplotlib)
Stakeholder-ready HTML report
Impressions by Channel
Total impressions across campaign period (millions)
Cost Per Membership (CPA) by Channel
Spend ÷ memberships acquired — lower is more efficient

Reach volume did not match conversion efficiency

Four consistent patterns emerged across channel, funnel, brand, and offline analysis.

TikTok: reach engine, weak convertor
TikTok delivered the highest impressions by a significant margin but the lowest direct conversion efficiency. This is consistent with its structural role as an upper-funnel awareness channel rather than a direct-response acquisition channel.
Paid search and email led on CPA
Despite significantly lower reach volumes, paid search and email produced the lowest cost-per-membership. Their audiences arrive with higher purchase intent, compressing the consideration cycle between click and conversion.
Brand search index confirmed awareness lift
Brand search index showed a measurable uplift during the campaign window — suggesting awareness was building even where immediate conversion was not occurring. The lift persisted partially into the post-campaign window.
Offline lag: ~14 days to membership spike
Gym activity data showed a post-campaign lag of approximately two weeks before offline membership spikes appeared — consistent with a consideration-to-action cycle typical of wellness products where physical commitment follows digital intent.
Acquisition Funnel — Conversion Rates
% of impressions reaching each stage across all channels
Brand Search Index — Campaign Timeline
Weekly brand search index: pre-campaign, live, post-campaign

Attribution in multi-channel campaigns is rarely clean

This analysis applied a channel contribution framework rather than last-click attribution — recognising that TikTok's role was upper-funnel seeding rather than direct conversion. The implication for budget allocation: reduce TikTok spend optimisation pressure on conversion metrics and instead evaluate it on brand lift and assisted conversion contribution.

Reach Channels
Evaluate on brand lift
Upper-funnel channels like TikTok should be measured on brand search index movement and assisted conversion share — not CPA alone, which will always look unfavourable relative to intent-driven channels.
Conversion Channels
Evaluate on CPA efficiency
Paid search and email operate at the bottom of the funnel where intent is already established. CPA is the right efficiency metric here — and budget should follow conversion efficiency signals.
Campaign Timing
Model the 14-day lag
The predictable two-week offline lag between campaign exposure and gym membership uptake is a signal that can be modelled forward to improve crew readiness for membership intake surges.

Python pipeline + Power BI data model

The project uses a Python-first data pipeline for generation, cleaning, and analysis, with a star-schema output layer designed for direct Power BI consumption.

Python pandas numpy matplotlib seaborn Jupyter Notebooks Power BI Star Schema Design Synthetic Data Generation
Generate
Synthetic campaign, funnel, brand, and gym data with seeded reproducibility
Clean
Transform raw events to analysis-ready tables with derived KPI fields
Structure
Build star schema: fact_channel_daily + dimension and proxy tables
Analyse
KPI calculation across reach, funnel, efficiency, brand, and offline layers
Report
Power BI dashboard + HTML report for stakeholder review