Channel Marketing Dashboard summarizing total revenue $31.97M, total spend $5.42M, average ROAS 5.90, total orders 1,597, AOV $20.02K, and average CPA $3.39K with paid media metrics, attributed revenue and spend by channel, traffic funnel, CPC and conversion rate scatter plot, and total spend pie chart by channel.

Designing a Unified Channel Attribution & Revenue Model

This project delivers a unified marketing attribution and revenue intelligence environment for RiseUp Workspaces, a B2B office furniture company specializing in stand-up desks and work environments for medium-sized businesses and at-home offices (created for this simulation, including a custom company brand and logo to replicate a realistic analytics deliverable).

The solution combines a Python-generated marketing, pipeline, conversion, and spend data into a centralized SQL Server model and an interactive Power BI dashboard that evaluates channel performance across the full customer journey. The finished report includes executive performance KPIs, a B2B pipeline view, and a comparative attribution analysis across first-touch, last-touch, linear, and position-based models.

This project was built to simulate a realistic analytics stack rather than a disconnected dashboard mockup. A Python-based synthetic data pipeline uses libraries including pandas for structured data modeling, random for probabilistic behavior simulation, datetime for time-series event generation, and os for dataset management and export. Together these components generate synthetic datasets representing channel activity, campaign structure, marketing touchpoints, pipeline progression, conversions, and daily advertising spend based on defined targets for revenue, marketing spend, funnel volumes, campaign objectives, channel mix, cost ranges, and click-through behavior.

The generated datasets are then loaded into dimensional and fact tables in SQL Server, where attribution views and KPI logic support downstream reporting and visualization in Power BI.

At a business level, the portfolio piece demonstrates how attribution is not a fixed truth but a measurement framework. By holding the same underlying revenue constant and comparing how different attribution models reassign credit across channels, the project shows how performance narratives can change depending on the methodology used. That is the central analytical value of the work: turning marketing reporting from a static scorecard into a decision-making system.

BUSINESS PROBLEM

Modern marketing teams invest across multiple channels and campaigns but often struggle to connect marketing activity to actual revenue outcomes. Platform metrics such as impressions, clicks, and conversions show engagement, yet they rarely explain how marketing interactions influence pipeline progression or closed sales.

This challenge is especially pronounced in B2B environments where customers interact with multiple marketing touchpoints before making a purchase decision. Without a unified attribution framework, organizations often rely on fragmented metrics that make it difficult to determine which channels are truly driving revenue and where marketing investment generates the greatest return.

This project addresses that challenge by creating a unified analytics model that connects marketing touchpoints, pipeline progression, and revenue outcomes while comparing multiple attribution methodologies to evaluate channel performance.

OBJECTIVE

The objective of this project was to design and implement an end-to-end marketing analytics environment capable of evaluating channel performance across the full customer lifecycle.

Specifically, the project sought to:

Together, these components demonstrate how a modern analytics stack can transform fragmented marketing data into a cohesive system for measuring performance, evaluating return on investment, and supporting strategic marketing decisions.

Phase One: Generating a synthetic data pipeline using Python and SQL Server

STEP-BY-STEP APPROACH

Step 1: Define the business scenario and simulation targets

The project began by establishing a realistic B2B marketing scenario for RiseUp Workspaces, including target values for annual revenue, average order value, advertising spend, funnel volumes, and total deal count. These targets created the baseline needed to simulate a marketing environment that felt operationally realistic rather than arbitrary.

Step 2: Configure the Python environment and generation logic

A Python-based synthetic data pipeline was then built using pandas, random, datetime, and os. This layer handled dataset creation, probabilistic event generation, timestamp sequencing, and CSV export. A fixed random seed was used to make the simulation reproducible across runs.

Step 3: Define the marketing channel and campaign structure

Next, the core marketing framework was established by creating a channel table and campaign table. Each campaign was assigned to a channel and mapped to a business objective such as demand capture, lead generation, awareness, retargeting, lead nurturing, or promotion. This created the dimensional foundation for downstream attribution and reporting.

Step 4: Model user populations and funnel cohorts

The simulation then generated a large synthetic user base and segmented that population into lead, opportunity, and closed-won cohorts. This step made it possible to simulate realistic movement through the funnel rather than treating all users as equally likely to convert.

Step 5: Apply channel weights, device mix, geography, and cost assumptions

To make the dataset behave more like a live marketing environment, the model applied weighted channel selection, device distributions, geography distributions, and channel-specific cost ranges. Separate click-through rates were also defined by channel so that impression and click behavior would vary in a believable way across Paid Search, LinkedIn Ads, Display, Affiliate, Email, Organic Search, and Direct traffic.

Step 6: Generate timestamped marketing touchpoints

Using those assumptions, the script created timestamped touchpoint records for each user. Every journey began with an impression, followed by a probabilistic click when applicable, and in some cases an additional retargeting impression. This produced a realistic multi-touch event stream with channel, campaign, device, geography, touch type, and cost stored at the row level.

Step 7: Generate conversion records for closed-won customers

Once touch activity had been created, the model generated conversion records for the users designated as closed-won. Conversion timestamps were intentionally placed after the user’s final marketing touch so the sequence reflected a plausible customer journey. Revenue values were also simulated within a controlled range to produce realistic order sizes.

Step 8: Generate pipeline progression events

After conversions were created, the script generated pipeline stage records for users entering the funnel. These events included lead creation, opportunity creation, and closed-won stages, each with logically ordered timestamps. This step connected upstream marketing interactions to downstream sales progression and allowed the dashboard to analyze both marketing efficiency and pipeline movement.

Step 9: Aggregate daily channel spend from touchpoint activity

The raw touchpoint table was then summarized into a daily channel spend dataset. Spend, impressions, and clicks were aggregated by date and channel, creating a clean fact table that could support trend reporting and KPI calculations inside Power BI.

Step 10: Export all simulation outputs to CSV

After the synthetic datasets were generated, Python exported the outputs as CSV files for channels, campaigns, touchpoints, conversions, pipeline events, and daily channel spend. These files served as the handoff layer between the synthetic data pipeline and SQL Server.

Step 11: Build the SQL Server warehouse structure

Inside SQL Server, the project created a dedicated analytics database and organized the model into dim, fact, and stageschemas. Dimension tables were used for channels, campaigns, and pipeline stages, while fact tables stored marketing touchpoints, conversions, daily channel spend, and pipeline events. This established a warehouse-style structure that could support both analytical queries and BI reporting.

Step 12: Load dimensions and core fact tables with bulk import

The CSV outputs were then imported into SQL Server using BULK INSERT. Dimension tables for channels and campaigns were loaded first, followed by the conversion fact table. This ensured the reference data was in place before the remaining event-level and aggregated datasets were processed.

Step 13: Use staging tables for touchpoints, pipeline events, and spend data

For the larger and more transformation-sensitive files, the workflow used staging tables before loading the final fact tables. This approach made it easier to preserve column order, validate field mapping, and troubleshoot load issues without contaminating the final warehouse tables.

Step 14: Insert cleansed records into production fact tables

After the staging loads were complete, the project inserted the staged records into the production fact tables for marketing touchpoints, pipeline events, and daily channel spend. This step finalized the ETL process and made the warehouse ready for attribution logic, KPI views, and Power BI modeling.

Step 15: Run validation and sanity checks

Finally, row-count checks and summary validations were performed to confirm that the warehouse reflected the expected dataset volumes and totals. This included validating touchpoint counts, pipeline event counts, and aggregate spend, impressions, and clicks before moving into attribution logic and dashboard development.

Phase Two: Building a unified revenue attribution model in Power BI

Power BI marketing performance summary dashboard showing revenue, ad spend, ROAS, CPA, CPC, and CPM KPIs with channel-level breakdowns of spend, orders, and revenue.
Channel Marketing Dashboard showing B2B pipeline metrics: 31.8K total leads, 6,300 total opportunities, 1,597 deals won, 5.03% lead-convert rate, $20.02K average deal size, and $31.97M total revenue. Includes three charts: a sales conversion funnel with lead_created, opportunity_created, and closed_won stages; a bar chart of pipeline generated and revenue closed by channel including Paid Search, LinkedIn Ads, Display, Email, Affiliate, Organic Search, and Direct; and a line chart of total revenue by conversion date from January to February 2026.
Channel Marketing Dashboard showing attribution analysis with four charts: stacked bar chart of revenue share by channel across four attribution models; bar chart of channel revenue by attribution model; histogram of user touchpoint distribution; table listing top conversion paths with touch counts, user counts, and path revenues.

STEP-BY-STEP APPROACH

Step 1: Connect Power BI to the SQL Server analytics database

After the warehouse tables and attribution views were finalized in SQL Server, Power BI was connected directly to the database. The model imported the core fact tables and supporting dimensions, including marketing touchpoints, pipeline events, conversions, channel spend, campaigns, and channels. Attribution views and KPI views created in SQL Server were also imported to simplify downstream reporting logic.

Step 2: Build the semantic model and define table relationships

Within Power BI, relationships were created between the fact tables and their corresponding dimension tables to form a coherent analytical model. Channels and campaigns were connected to both marketing touchpoints and spend data, while user identifiers connected marketing activity to pipeline progression and conversions. This relationship structure enabled cross-filtering across marketing, pipeline, and revenue metrics within the report.

Step 3: Create core DAX measures for marketing and revenue metrics

Once the data model was established, a set of reusable DAX measures was created to support the dashboard’s KPIs and visualizations. These measures included total revenue, advertising spend, impressions, clicks, orders, and pipeline counts, along with derived metrics such as cost-per-click (CPC), cost-per-acquisition (CPA), return on ad spend (ROAS), and conversion rates. Centralizing these measures ensured that metrics remained consistent across all report pages.

Step 4: Design the Performance Summary dashboard

The first report page was built as an executive overview of overall marketing performance. This page features KPI cards summarizing key performance indicators such as revenue, spend, ROAS, CPA, CPC, and CPM. Supporting visuals provide a breakdown of spend, revenue, and orders by marketing channel, allowing stakeholders to quickly assess channel efficiency and identify high-performing acquisition sources.

Step 5: Build the B2B Pipeline analysis page

The second page focuses on the relationship between marketing activity and downstream sales pipeline. Visualizations show how leads progress through key funnel stages including lead creation, opportunity generation, and closed-won deals. Additional visuals display the distribution of pipeline outcomes by channel and campaign, helping illustrate how marketing activity contributes to pipeline generation and revenue conversion in a B2B sales environment.

Step 6: Construct the Attribution Analysis dashboard

The third report page compares multiple attribution methodologies using the same underlying dataset. Visuals display revenue contribution by channel under four attribution models: first-touch, last-touch, linear, and position-based attribution. Side-by-side comparisons allow users to observe how channel rankings and revenue share change depending on the attribution framework applied.

Step 7: Create conversion path analysis visuals

To further explore multi-touch customer journeys, the attribution page includes a visualization of the most common marketing conversion paths. This analysis identifies the sequences of marketing interactions that most frequently lead to closed deals, offering insight into how different channels interact throughout the customer lifecycle.

Step 8: Implement report filters and slicers for interactive analysis

Interactive slicers were added to allow users to filter the dashboard by marketing channel, campaign, and attribution model. These controls enable stakeholders to explore performance across specific segments of marketing activity and examine how attribution outcomes change under different analytical perspectives.

Step 9: Refine visual layout and report design for executive readability

Once all visuals were created, the report layout was refined to improve readability and presentation quality. Visual spacing, labeling, and color usage were standardized across pages to maintain a clean and professional design. Channel color assignments were also applied consistently to make comparisons intuitive across different report sections.

Step 10: Validate KPI consistency across report pages

Before finalizing the dashboard, KPI values were validated across pages to ensure consistency between channel breakdowns, attribution calculations, and overall totals. This validation process confirmed that metrics calculated in the semantic model aligned with the underlying SQL data and attribution logic.

Step 11: Curate the KPI Dictionary

The final step in the project was the creation of a KPI Dictionary documenting the definition and calculation logic for every key metric used in the report. This reference included definitions for marketing performance indicators such as ROAS, CPA, CPC, CPM, conversion rate, pipeline stages, and attribution models. By documenting these definitions, the project ensures that stakeholders interpret metrics consistently and that the reporting framework remains transparent and reproducible.

Channel Marketing Dashboard KPI Dictionary table listing metrics like Average Order Value, Click-thru-Rate, Conversion Rate with their definitions and formulas.

KEY INSIGHTS & STRATEGIC RECOMMENDATIONS

The unified attribution dashboard reveals several opportunities to improve marketing efficiency and strengthen revenue performance. By combining channel-level performance metrics with multi-touch attribution analysis, the report highlights areas where targeted experimentation and strategic budget adjustments may improve overall marketing effectiveness.

1. Test budget reallocation toward high-conversion channels

Channel performance analysis indicates that Affiliate and LinkedIn Ads demonstrate higher conversion rates relative to some other acquisition channels. While this suggests these channels may be generating higher-quality traffic, immediately reallocating large portions of the budget could introduce diminishing returns due to audience size limitations, partner inventory constraints, or ad saturation.

Instead, the appropriate next step would be to run controlled budget expansion experiments for these channels. Incrementally increasing spend while monitoring changes in CPA, ROAS, and conversion rate would help determine whether the channels can scale efficiently or whether performance declines once the available audience pool is exhausted.

2. Evaluate efficiency of high-spend acquisition channels

Some channels currently account for a significant share of total marketing spend while producing lower conversion efficiency relative to other channels. These channels may still play an important role in generating top-of-funnel awareness, but their cost-per-acquisition and return on ad spend indicate potential inefficiencies.

Rather than eliminating these channels, the dashboard suggests an opportunity to evaluate campaign targeting, bidding strategies, and creative optimization to improve conversion performance while maintaining their role in the broader acquisition mix.

3. Recognize the role of upper-funnel channels in multi-touch journeys

The attribution comparison demonstrates that channels receiving limited credit under last-touch attribution often receive more recognition under linear and position-based models. This indicates that some channels contribute earlier in the customer journey by introducing prospects to the brand or reinforcing consideration before conversion occurs.

Understanding this dynamic is important when evaluating marketing performance, as eliminating these channels based solely on last-click metrics could disrupt the full acquisition funnel.

4. Identify common conversion paths across marketing channels

Analysis of conversion paths highlights recurring combinations of channel interactions that frequently lead to successful purchases. These patterns suggest that certain channels consistently work together within the customer journey, reinforcing brand exposure and engagement across multiple touchpoints.

Recognizing these interaction patterns can help marketing teams coordinate campaigns across channels rather than evaluating each channel in isolation.

5. Use attribution comparisons to inform marketing strategy

The comparison of first-touch, last-touch, linear, and position-based attribution models illustrates how the perceived importance of each channel changes depending on the measurement framework used. This reinforces the importance of evaluating marketing performance from multiple attribution perspectives rather than relying on a single model.

Using multiple attribution views enables leadership to better understand how different channels contribute across awareness, consideration, and conversion stages.

6. Strengthen decision-making through unified marketing analytics

The most important outcome of this project is the creation of a unified analytics environment that connects marketing activity, pipeline progression, and revenue outcomes within a single reporting framework. By integrating these data sources, the organization gains a clearer view of how marketing investments translate into revenue and can evaluate optimization strategies with greater analytical confidence.

CONCLUSION

This project demonstrates how a modern analytics stack can transform fragmented marketing activity into a unified system for measuring performance and guiding strategic decision-making. By combining synthetic data generation in Python, structured data modeling in SQL Server, and interactive reporting in Power BI, the solution replicates the type of analytics environment many organizations rely on to evaluate marketing effectiveness.

Beyond the technical implementation, the project highlights the importance of measurement frameworks in shaping how marketing performance is interpreted. Comparing multiple attribution models reveals that perceived channel effectiveness can change significantly depending on how revenue credit is assigned, reinforcing the need for thoughtful analytics design rather than relying on a single metric or reporting perspective.

Ultimately, the unified attribution dashboard provides a foundation for more informed marketing decisions. By connecting marketing activity, pipeline progression, and revenue outcomes within a single reporting framework, the system enables organizations to evaluate channel performance, test optimization strategies, and continuously improve marketing investment efficiency.

Feel free to reach out!

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form