Step-by-Step Guide to Designing an Ads Performance Marketing Dashboard with Tableau

Seoyeon jun
12 min readAug 15, 2023

Creating an Impactful Ads Performance Marketing Dashboard with Tableau

My own Digital Ads Performance Dashboard

Effectively tracking and analyzing the performance of your marketing campaigns is crucial for achieving business success.

In this step-by-step guide, we’ll explore how to build a comprehensive Ads Performance Marketing Dashboard using Tableau. This dashboard will empower you to gather insights from various advertising channels, compare their effectiveness, and make informed decisions to optimize your marketing strategies.

Step 1: Defining Purpose and User

Business Scenario

Before diving into the technical details, let’s set the stage. Imagine you work for a thriving e-commerce company that promotes its web and app services through performance marketing advertisements. Utilizing diverse channels such as Google, Meta, your marketing team uses the MMP (Mobile Measurement Partner) tracking solution to consolidate and analyze campaign data.

Purpose of the Dashboard

To create a dashboard that compiles and compares the performance metrics of different advertising channels and campaigns using KPIs and insightful visualizations.

Step 2: Wireframe for User-Centric Design

To ensure user-friendliness and intuitive flow, it’s crucial to plan the layout of your dashboard.

Consider the following design principles:

  • Arrange information from top to bottom and left to right, with key insights prominently displayed.
  • Place interactive elements, such as buttons, in the upper left corner for easy accessibility.

Dashboard Wireframe :

  • Navigation Buttons: This Week, Last 7 days, Last 14 days, etc.
  • Dashboard Title: Digital Ads Performance Dashboard
  • Key Performance Indicators (KPIs) : CTR, Install CVR, Sign-up CVR, Purchase CVR, ROAS
  • Supplementary Metrics : Funnel View (CPC, Click, CPI, Install, etc.)
  • Chart Types : Bar & Line for KPIs, Funnel Chart, Table View by Channel & Campaigns

Step 3: Crafting Essential KPIs

Key Performance Indicators (KPIs) are the backbone of your dashboard. These metrics provide insights into campaign effectiveness. Let’s create some KPIs using calculated fields:

  1. Click-Through Rate (CTR)
SUM([Clicks]) / SUM([Impressions])

2. Cost Per Click (CPC)

SUM([Spends]) / SUM([Clicks])

3. Cost Per Install (CPI)

SUM([Spends]) / SUM([Install])

4. Cost Per Acquisition (CPA)

SUM([Spends]) / SUM([Signup])

5. Cost Per Sale (CPS)

SUM([Spends]) / SUM([Conversions])

Step 4: Implementing Dynamic Date Filtering

Once you have selected your Key Performance Indicators (KPIs), it’s time to set the date unit for displaying the data.

In this scenario, we’ll implement button filters inspired by Google Analytics to allow intuitive selection of date ranges. When clicked, these buttons will automatically compare the selected period with the previous week, 7 days, 14 days, and more.

(Left) Google Analytics Filter / (Right) Date Filter Buttons

To achieve this, start by defining the “Period Selection” Parameter.

[Period Selection]

Filter data based on the selected period

The following calculated field is used to filter data based on the selected period. (In this dataset, the Max date is December 30, 2023.)

[Date Filter]

Case [Parameter].[Period Selection]
When 'This Week' Then DateTrunc('day',[Date]) >= DateTrunc('week',[Max Date]) and DateTrunc('day',[Date]) <= [Max Date]
When 'Last Week' Then DateTrunc('day', [Date]) >= Dateadd("day", -7, DATETRUNC("week",[Max Date])) AND DateTrunc('day', [Date]) <= DateTrunc('day', [Max Date]-7)

When 'Last 7 days' Then DateTrunc('day',[Date]) >= DateTrunc('day',[Max Date]-6) and DateTrunc('day',[Date]) <= [Max Date]
WHEN 'Previous 7 days' Then DATETRUNC('day',[Date]) >= DATETRUNC('day',[Max Date]-13 ) and DATETRUNC('day',[Date]) <= [Max Date]-7

When 'Last 14 days' Then DateTrunc('day',[Date]) >= DateTrunc('day',[Max Date]-13) and DateTrunc('day',[Date]) <= [Max Date]
When 'Previous 14 days' Then DateTrunc('day',[Date]) >= DateTrunc('day',[Max Date]-27) and DateTrunc('day',[Date]) <= [Max Date]-14

When 'Last 28 days' Then DateTrunc('day',[Date]) >= DateTrunc('day',[Max Date]-27) and DateTrunc('day',[Date]) <= [Max Date]
When 'Pervious 28 days' Then DateTrunc('day',[Date]) >= DateTrunc('day',[Max Date]-55) and DateTrunc('day',[Date]) <= [Max Date]-28

When 'Last 30 days' Then DateTrunc('day',[Date]) >= DateTrunc('day',[Max Date]-29) and DateTrunc('day',[Date]) <= [Max Date]
When 'Pervious 30 days' Then DateTrunc('day',[Date]) >= DateTrunc('day',[Max Date]-59) and DateTrunc('day',[Date]) <= [Max Date]-30

When 'Last 90 days' Then DateTrunc('week',[Date]) >= DateTrunc('day',[Max Date]-89) and DateTrunc('week',[Date]) <= [Max Date]
When 'Pervious 90 days' Then DateTrunc('week',[Date]) >= DateTrunc('day',[Max Date]-179) and DateTrunc('week',[Date]) <= [Max Date]-90

End

Apply this filter to each KPI card.

Step 5: Enabling Parameter Actions for User Interaction

Now, let’s make your dashboard interactive. Users can select different timeframes using the buttons you created. Implement parameter actions for seamless updates:

Creating Interactive Buttons with Parameter Actions

Parameter actions are a powerful tool that allow users to dynamically change parameters based on their selections. we’ll walk you through the process of creating interactive buttons using parameter actions, making your dashboards even more engaging and user-friendly.

Designing the Buttons

Let’s start by designing the interactive buttons that users will click to change the parameter values. To achieve this, we’ll use a combination of marks and parameter actions. Here’s how you can do it:

  • Create a new worksheet and add the “Min (0)” field to the Columns shelf twice. This will create a dual-axis chart
  • Select both mark cards in the worksheet. For the first mark card, choose a custom shape (such as a rectangle) and add the following color logic to the “Color” shelf: [Period Selection] = “This Week” then Black (True) else Gray (False)
  • For the second mark card, attach a transparent shape and add the text “This Week.” Apply the same color logic as before to the “Color” shelf:[Period Selection] = “This Week” then White (True) else Black (False)

Repeat the above steps for all the different periods you want to create buttons for.

Configuring Parameter Actions

Now that we have our interactive buttons in place, let’s set up the parameter actions to make them functional:

  1. Open the dashboard and go to the “Dashboard” menu, then select “Actions.”
  2. Click “Add Action” and choose “Change Parameter” as the action type.
  3. Configure the action as follows:
  • Source Sheets: Select the sheet containing your buttons.
  • Target Parameter: [Period Selection]
  • Run Action on: Select “Select” to trigger the action when a button is clicked.

Repeat the above steps for each button and parameter combination.

Now, when a user clicks a button for a specific period, the parameter will change accordingly, updating the visualization on your dashboard to reflect the selected period.

Parmeter Action (GIF)

Step 6: Visualizing Comparative Insights

Compared Period

Create a calculated field to determine the compared period.

vs Field

if [Period Selection] = "This Week" then "Last Week"
ELSEIF [Period Selection] = "Last 7 days" then "Previous 7 days"
ELSEIF [Period Selection] = "Last 14 days" then "Previous 14 days"
ELSEIF [Period Selection] = "Last 30 days" then "Previous 30 days"
ELSEIF [Period Selection] = "Last 28 days" then "Previous 28 days"
ELSEIF [Period Selection] = "Last 90 days" then "Previous 90 days"
END

Growth rate bar charts

Growth rate bar charts provide a visual representation of changes over comparative periods, highlighting positive growth in blue and negative growth in red. We’ll start with the example of Click-Through Rate (CTR) and its growth rate calculation.

Understanding the Growth Rate Formula

Let’s dive into the formula for calculating the growth rate of CTR based on the selected period.

CTR Var %

IF [Parameter].[Period Selection] = 'This Week' THEN 
((
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('week', [Max Date]) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('week', [Max Date]) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Impressions] END)
)
-
(
SUM(IF DateTrunc('day', [Date]) >= Dateadd("day", -7, DATETRUNC("week",[Max Date])) AND DateTrunc('day', [Date]) <= DateTrunc('day', [Max Date]-7) THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= Dateadd("day", -7, DATETRUNC("week",[Max Date])) AND DateTrunc('day', [Date]) <= DateTrunc('day', [Max Date]-7) THEN [Impressions] END)
))
/ (
SUM(IF DateTrunc('day', [Date]) >= Dateadd("day", -7, DATETRUNC("week",[Max Date])) AND DateTrunc('day', [Date]) <= DateTrunc('day', [Max Date]-7) THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= Dateadd("day", -7, DATETRUNC("week",[Max Date])) AND DateTrunc('day', [Date]) <= DateTrunc('day', [Max Date]-7) THEN [Impressions] END)
)

ELSEIF [Parameter].[Period Selection] = 'Last 7 days' THEN
((
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-6) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-6) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Impressions] END)
)
-
(
SUM(IF DateTrunc('day', [Date]) >= DATETRUNC('day', [Max Date]-13) AND DateTrunc('day', [Date]) <= [Max Date]-7 THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DATETRUNC('day', [Max Date]-13) AND DateTrunc('day', [Date]) <= [Max Date]-7 THEN [Impressions] END)
))
/ (
SUM(IF DateTrunc('day', [Date]) >= DATETRUNC('day', [Max Date]-13) AND DateTrunc('day', [Date]) <= [Max Date]-7 THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DATETRUNC('day', [Max Date]-13) AND DateTrunc('day', [Date]) <= [Max Date]-7 THEN [Impressions] END)
)
ELSEIF [Parameter].[Period Selection] = 'Last 14 days' THEN
((
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-13) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-13) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Impressions] END)
)
-
(
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-27) AND DateTrunc('day', [Date]) <= [Max Date]-14 THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-27) AND DateTrunc('day', [Date]) <= [Max Date]-14 THEN [Impressions] END)
))
/ (
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-27) AND DateTrunc('day', [Date]) <= [Max Date]-14 THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-27) AND DateTrunc('day', [Date]) <= [Max Date]-14 THEN [Impressions] END)
)
ELSEIF [Parameter].[Period Selection] = 'Last 28 days' THEN
((
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-27) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-27) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Impressions] END)
)
-
(
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-55) AND DateTrunc('day', [Date]) <= [Max Date]-28 THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-55) AND DateTrunc('day', [Date]) <= [Max Date]-28 THEN [Impressions] END)
))
/ (
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-55) AND DateTrunc('day', [Date]) <= [Max Date]-28 THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-55) AND DateTrunc('day', [Date]) <= [Max Date]-28 THEN [Impressions] END)
)
ELSEIF [Paramter].[Period Selection] = 'Last 30 days' THEN
((
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-29) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-29) AND DateTrunc('day', [Date]) <= [Max Date] THEN [Impressions] END)
)
-
(
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-59) AND DateTrunc('day', [Date]) <= [Max Date]-30 THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-59) AND DateTrunc('day', [Date]) <= [Max Date]-30 THEN [Impressions] END)
))
/ (
SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-59) AND DateTrunc('day', [Date]) <= [Max Date]-30 THEN [Clicks] END)
/ SUM(IF DateTrunc('day', [Date]) >= DateTrunc('day', [Max Date]-59) AND DateTrunc('day', [Date]) <= [Max Date]-30 THEN [Impressions] END)
)
ELSEIF [매개 변수].[Period Selection] = 'Last 90 days' THEN
((
SUM(IF DateTrunc('week', [Date]) >= DateTrunc('day', [Max Date]-89) AND DateTrunc('week', [Date]) <= [Max Date] THEN [Clicks] END)
/ SUM(IF DateTrunc('week', [Date]) >= DateTrunc('day', [Max Date]-89) AND DateTrunc('week', [Date]) <= [Max Date] THEN [Impressions] END)
)
-
(
SUM(IF DateTrunc('week', [Date]) >= DateTrunc('day', [Max Date]-179) AND DateTrunc('week', [Date]) <= [Max Date]-90 THEN [Clicks] END)
/ SUM(IF DateTrunc('week', [Date]) >= DateTrunc('day', [Max Date]-179) AND DateTrunc('week', [Date]) <= [Max Date]-90 THEN [Impressions] END)
))
/ (
SUM(IF DateTrunc('week', [Date]) >= DateTrunc('day', [Max Date]-179) AND DateTrunc('week', [Date]) <= [Max Date]-90 THEN [Clicks] END)
/ SUM(IF DateTrunc('week', [Date]) >= DateTrunc('day', [Max Date]-179) AND DateTrunc('week', [Date]) <= [Max Date]-90 THEN [Impressions] END)
)
ELSE NULL
END

While the formula might seem complex due to various parameters, the logic remains the same: return results for the chosen period.

CTR is defined as Clicks divided by Impressions. To prevent mixed aggregated and non-aggregated expressions, we’ll break down the formula. Here’s the breakdown for the “This Week” period:

IF [Parameter].[Period Selection] = 'This Week' THEN 
( (Clicks for Current Week / Impressions for Current Week) - (Clicks for Previous Week / Impressions for Previous Week) )

/ (Clicks for Previous Week / Impressions for Previous Week)

Similarly, the formula is adapted for other periods like “Last 7 days,” “Last 14 days,” and so on.

Configuring the Growth Rate Calculation

  1. Add the “AVG(1)” field to the Columns shelf.
  2. Add the CTR var % field to the color & text mark card.
  3. Adjust the color settings to distinguish positive growth (blue) and negative growth (red).

Organize your sheets within containers for a clean dashboard layout.

Creating Color-Coded Bar Charts

To enhance data interpretation, let’s create color-coded bar charts :

  1. Set up a Measure Name filter for the desired metric (e.g., CTR) and select the contributing metrics (Clicks, Impressions).
  2. Place the chosen metric and CTR on the Rows shelf, then configure a dual-axis.
  3. Use bars for the main metric and lines for CTR on the secondary axis.
  4. Apply a “True” condition to the Date filter to ensure relevant data display.

By following these steps, you’ll successfully create insightful growth rate bar charts for your key performance indicators (KPIs).

These visualizations allow you to assess not only ratios but also absolute values, providing a comprehensive context for data analysis. With color-coded bars, you can effectively communicate trends and changes in your data to make informed decisions.

Step 7: Exploring Channel and Campaign Insights

Effective marketing requires analyzing data across different channels and campaigns. Build insightful visualizations that allow you to compare CTR, CPS, and Return on Ad Spend (ROAS) across various channels and campaigns.

Funnel View

Imagine a visual representation where each stage of a funnel unveils metrics step by step. The stages, laid out from top to bottom, illustrate Acquisition, Installation, Sign-up, and Purchase metrics.

To provide a comprehensive view, the left section showcases Cost Metrics, the middle section tracks Event Counts, and the right section indicates Conversion Rates. This approach allows you to grasp the progression of key metrics as users move through the funnel stages.

Metric Comparisons — CTR, CPS, ROAS:

Comparing three crucial metrics — Click-Through Rate (CTR), Cost per Sale (CPS), and Return on Ad Spend (ROAS) — offers a holistic insight into campaign performance.

While ROAS assesses revenue against costs, the inclusion of CTR helps gauge the appeal of creative materials, and CPS sheds light on the overall cost efficiency of achieving sales. By examining these metrics together, you can make informed decisions about your advertising strategies.

Interactive Insights

For a dynamic experience, you can interact with the data based on your preferred timeframes. Simply click on the relevant metric’s circle to reveal insights specific to that metric over time. This interactive feature empowers you to explore data trends and patterns that matter most to you.

Inspiration from Ellen Blackburn :
This innovative chart configuration draws inspiration from Ellen Blackburn’s Map layer chart, adapting her creative concept to visualize data in a novel way. (Link to
Ellen Blackburn’s work)

Conclusion

Congratulations! You’ve successfully created an Ads Performance Marketing Dashboard using Tableau. This dynamic dashboard enables you to analyze the effectiveness of your marketing campaigns, make data-driven decisions, and optimize your strategies for maximum impact. By visualizing key metrics and insights, you’re equipped to elevate your marketing game and drive business success.

Remember, data analysis is an ongoing process. Continuously refine and expand your dashboard to accommodate new data and insights, ensuring you stay ahead in the competitive marketing landscape.

If you’re interested in collaborating with me, simply follow this link to drop a message with your contact details! Let’s connect and explore exciting opportunities together.

🔗 https://www.vizablepro.com/

--

--

Seoyeon jun

Founder @vizable / ex-AWS Business Analyst / Tableau Public Ambassador / Data Analytics & Visualization / Growth Marketing