Build a goal tracker in Looker Studio

Goal tracker - Looker Studio

Tracking progress toward goals, whether it’s revenue, leads, or any other key metric, is one of the most common reporting needs. Yet, Looker Studio doesn’t provide an out-of-the-box way to compare performance against monthly or yearly targets, calculate pace, or show how much you need to average each day to stay on track.

In this guide, I’ll walk you through how to build a flexible goal tracker in Looker Studio. The tracker adapts to different reporting periods (month to date or year to date), lets users set their own targets, and automatically calculates:

  • Average performance per day
  • Projected pace by the end of the period
  • Remaining daily average required to hit the goal

By the end, you’ll have a reusable setup that can scale to multiple metrics and goals without creating a mess of calculated fields. This approach makes it easy to bring accountability and foresight directly into your dashboards so you can stop guessing whether you’re on track and start managing performance in real time.

Table of contents

Step-by-step guide with examples

Set up

You can follow along with your own dataset, or if you want to replicate exactly what is shown in this guide, you can use our demo resources:

Connect the dataset to your Looker Studio report or make a copy of the template, and you’ll be ready to start building your own goal tracker.

A note about missing dates:

One of the most common issues with goal tracking in Looker Studio is the assumption that data will always contain a row for every calendar day. In practice, this is rarely true. For example, if your store had no sales on a particular day, that date might not appear in your dataset at all.

This won’t break the setup described in this article. Instead of relying on your data to determine how many days have passed, we will use calendar math functions (CURRENT_DATE, DATE_DIFF, DAY, etc.) to calculate elapsed days, total days in the period, and remaining days. This approach ensures that your calculations for pace and required daily averages remain accurate, even if some dates are missing from your dataset.

Step 1: Create the date fields

Before we can calculate pace or required daily averages, we need to know three things:

  • How many days are in the selected period.
  • How many days have elapsed so far.
  • How many days are left.

We’ll control the period with a parameter.

Create the pPeriod parameter

  • Name: pPeriod
  • Type: Text
  • Permitted values: Month, Year
  • Default: Month

For this tutorial, we will only use monthly and yearly periods. However, you could extend the same logic to add quarterly, weekly, or any other period your reporting requires—just add those values to pPeriod and update the formulas accordingly.

Days in period

Calculates the total number of days in the chosen period (28–31 for months, 365–366 for years). This is the denominator for pacing projections.

				
					CASE
  WHEN pPeriod = "Month" THEN
    DATE_DIFF(
      DATE(
        YEAR(CURRENT_DATE("America/Toronto")) + CASE WHEN MONTH(CURRENT_DATE("America/Toronto")) = 12 THEN 1 ELSE 0 END,
        CASE WHEN MONTH(CURRENT_DATE("America/Toronto")) = 12 THEN 1 ELSE MONTH(CURRENT_DATE("America/Toronto")) + 1 END,
        1
      ),
      DATE(YEAR(CURRENT_DATE("America/Toronto")), MONTH(CURRENT_DATE("America/Toronto")), 1)
    )
  WHEN pPeriod = "Year" THEN
    DATE_DIFF(
      DATE(YEAR(CURRENT_DATE("America/Toronto")) + 1, 1, 1),
      DATE(YEAR(CURRENT_DATE("America/Toronto")), 1, 1)
    )
END

				
			

Then set the default aggregation to MAX.

Elapsed days

Counts how many days have passed so far in the current period (inclusive of today). Used to calculate daily averages.

				
					CASE
  WHEN pPeriod = "Month" THEN
    DAY(CURRENT_DATE("America/Toronto")) -1
  WHEN pPeriod = "Year" THEN
    DATE_DIFF(
      CURRENT_DATE("America/Toronto"),
      DATE(YEAR(CURRENT_DATE("America/Toronto")), 1, 1)
    ) -1
END

				
			

Then set the default aggregation to MAX.

Remaining days

Calculates how many days are left in the period, so we know how many opportunities remain to reach the target.

				
					MAX(Days in period) - MAX(Elapsed days)
				
			

Step 2: Create the metric selector

Since you may want to track more than one metric (for example, Revenue and Sales), it’s helpful to create a parameter that lets the user select which metric they want to view.

Create the pMetric parameter

  • Parameter: pMetric
  • Type: Text
  • Permitted values: Revenue, Sales (extend as needed)
  • Default: Revenue

Metric

Allow you to select which metric you want to view without creating a ton of calculated fields.

				
					CASE
  WHEN pMetric= "Revenue" THEN Revenue
  WHEN pMetric= "Sales"  THEN Sales
END
				
			

Step 3: Create the target field

Targets

Now define your goals in a single field that adapts to both the selected metric and the selected period:

				
					CASE
  WHEN pPeriod = "Month" AND pMetric = "Revenue" THEN 500000
  WHEN pPeriod = "Year"  AND pMetric = "Revenue" THEN 6000000
  WHEN pPeriod = "Month" AND pMetric = "Sales" THEN 6667
  WHEN pPeriod = "Year"  AND pMetric = "Sales" THEN 80000
END
				
			

Then set the default aggregation to MAX.

Target to date

Shows the prorated portion of the target that should have been achieved by now, based on elapsed days.

				
					CASE
  WHEN MAX(Days in period) > 0 THEN MAX(Targets) * MAX(Elapsed days) / MAX(Days in period)
  ELSE 0
END
				
			

Step 4: Build the tracker metrics

Now that you have the date fields, metric selector, and target field, you can calculate the three core metrics of the goal tracker.

Current daily average

This field calculates the average daily performance for the elapsed portion of the period. For example, if your revenue so far this month is $200,000 and 10 days have passed, this field returns $20,000.

				
					CASE
  WHEN MAX(Elapsed days) > 0 THEN SUM(Metric) / MAX(Elapsed days)
  ELSE 0
END
				
			

Projected

This field projects the total you would reach by the end of the current period if you continue performing at the same daily average achieved so far.

				
					CASE
  WHEN MAX(Elapsed days) > 0 THEN (Current daily average * MAX(Days in period))
  ELSE 0
END
				
			

Required daily avg. to hit target

This field calculates how much you need to achieve per day for the remaining days in the period to still hit your target. For example, if you are $100,000 short of your monthly revenue target and 5 days are left, it will return $20,000.

				
					CASE
  WHEN Remaining days <= 0 THEN 0
  ELSE NARY_MAX(0, (MAX(Targets) - SUM(Metric)) / Remaining days)
END
				
			

Step 5: Build the pages (two fixed ranges: Monthly and Yearly)

Duplicate your page

  • Pages → Duplicate page
  • Rename one page Monthly and the other Yearly

Lock each page’s date range

  • Monthly page: select all charts/scorecards → Data panel → Date range = Custom → This month to date
  • Yearly page: select all charts/scorecards → Date range = Custom → This year to date
  • Remove any Date range control from both pages so viewers cannot override these defaults

Set pPeriod per page

  • Monthly page: Page → Current page settings → Parameters → set pPeriod = "Month"
  • Yearly page: Page → Current page settings → Parameters → set pPeriod = "Year"
  • Do not place a pPeriod control on these pages (a control would override the page setting)

Add the metric selector (optional for viewers)

  • If you want users to switch metrics, add a parameter control for pMetric on both pages
  • If not, omit the control and rely on the default pMetric value

Add navigation buttons

  • Insert → Button → Action Go to page → link to the other page
  • Or insert Text/ShapeLink → Report page → choose the other page

Quick verification

  • Monthly page: results reflect month to date; Elapsed days equals today’s day of month
  • Yearly page: results reflect year to date; Elapsed days equals day of year
  • Pace, Target to date, and Required daily average adjust correctly when switching pages and when changing pMetric (if exposed)

Common pitfalls

  • Leaving a date range control on the page (lets viewers override MTD/YTD)
  • Forgetting to set pPeriod at the page level (shared formulas won’t match the fixed ranges)
  • Assuming missing-date rows break it (they don’t—day counts are calendar-based; totals honor the locked MTD/YTD range)

Step 6: Visualize the tracker

Add scorecards for the key metrics:

  • Actual (MTD or YTD total)
  • Target (full period and to date)
  • Average per day
  • Projected pace
  • Required daily average

Consider adding a progress bar or bullet chart to visualize progress against the target.

Since this is an advanced tutorial, we won’t go into detail on how to style the page or polish the layout. If you’d like help with styling, we cover that in our YouTube video, where you can see exactly how to format scorecards, charts, and navigation elements for a clean professional look.

Step 7: Extend and customize

Once the basic tracker is in place, you can:

  • Add more metrics by extending the pMetric parameter and the Targets CASE formula.
  • Add weekly or quarterly periods by extending the pPeriod parameter and the date formulas.
  • Apply conditional formatting or thresholds to highlight whether you are ahead or behind pace.

Conclusion

You now have a goal tracker in Looker Studio that lets you:

  • Compare current performance to targets.
  • See your projected pace for the month or year.
  • Calculate the daily average needed to close the gap.
  • Track progress against the prorated target to date.

The setup is flexible, doesn’t break if dates are missing, and can be extended to multiple metrics and custom periods.

This approach brings accountability and foresight into your dashboards, so you can stop guessing whether you’re on track and start making confident, data-driven decisions.

If you’d like to customize this even further—for example, by creating dynamic monthly goals based on last year’s performance or designing more advanced goal logic—feel free to contact us. We can help you extend this framework to match your exact business needs.

SHARE POST

Thank You!

Please check your email for the download links to our Ultimate Guide on How to Build a Data Strategy.

P.S. If you don’t see the email in your inbox within a few minutes, please check your spam or junk folder.