Skip to main content

Understanding Custom Dimensions

Custom Dimensions enable you to create and define your own Breakdowns and Filters within Polar, giving you more flexibility with your data.

Written by Sachi

Custom Dimensions let you group data from multiple sources — Shopify, Meta, Google Ads, and more — into a single, unified breakdown in your reports. This guide walks you through building one from scratch and fixing common issues when data isn't grouping the way you expect.

Why Custom Dimensions exist

When you connect multiple platforms to Polar, each one stores similar information under different names. Your Shopify store, your Meta ad account, and your Google Ads account all have a concept of "country" — but they call it Shipping Country, Country, and Target Country respectively.

Without a Custom Dimension, pulling all three into one report gives you fragmented rows that can't be compared side by side. A Custom Dimension fixes this by letting you define the grouping yourself: "anything with Shipping Country = United States or Target Country = United States should appear as the United States row in my report."

Common use cases:

  • Region / Country reporting — combine Shopify sales and ad spend by geography, even when each platform names countries differently

  • Multi-brand portfolios — separate metrics by brand across multiple Shopify stores and ad accounts

  • Product category roll-ups — group SKU-level data and campaign names into shared categories

  • Channel taxonomy — create a consistent grouping (Paid Social, Paid Search, Email) across platforms with their own naming conventions

Shared dimensions

Some dimensions — like Campaign — are already shared across multiple data sources in Polar. Check whether a shared dimension covers your use case before building a custom one from scratch.

Building a Custom Dimension

Each Custom Dimension is built using a When / Then / Else structure. You define the criteria a data point must meet (When), what value to return when those criteria are met (Then), and what to return when nothing matches (Else). You can stack multiple When/Then blocks to create as many groupings as you need.

“When <this happens>, Then <respond like this>, Else <respond like this>”

Extended version of Custom Dimension tutorial here

Step 1. Launch the Custom Dimension builder to start.

You can launch the Custom Dimension builder here, or in any of these three locations:

  • Within the Custom Reports dropdown menu

  • Within the Breakdowns dropdown menu in a Custom Report

  • Within the Filters dropdown menu in a Custom Report

Step 2. Create a "When" statement.

Your When statement defines the criteria that must be met for the dimension to return your desired value. Each When statement requires three components, which you select from the dropdown:

Dimension

Operator

Value

The source field to evaluate

How to compare the value

What to match against

e.g. Shipping Country

e.g. Is, Contains

e.g. United States

To add multiple conditions to the same When statement, use the OR or AND options that appear to the right of your first condition.

Step 3. Create a "Then" statement.

Your Then statement defines the value Polar should return when the When conditions are met.

  • String value— type any label you want (e.g. ROW, Other, or N/A)

  • Existing dimension - Sku, Product Title, Product variant, ect

  • Existing dimension with a function — select a dimension and apply a transformation to it. If you want to use a function, select it from the dropdown rather than typing it in.

You can see full explanations of how each of our operators and functions works here.

In this example, we added a string value of "North America" by typing this into the "Then" bar.

Add more When/Then blocks as needed To create additional groupings (e.g. a separate group for Canada, Europe, etc.), add another When/Then block for each one. Polar evaluates them top to bottom — order matters when rules could overlap. See Section 5 for details.

Step 4. Create an "Else" statement.

Your Else statement defines what Polar returns when none of the When conditions are met — this is your catch-all. Like the Then statement, you can enter a string value (e.g. Rest of the World) or return an existing dimension with a function.

In this example, we added a string value of "Rest of the World" - this will ensure that all data points that do not have the United States as their Shipping Country are defined as "Rest of the World".

Step 5. Preview your data

Once your Else statement is set, the"Which data are selected in your dimension" preview appears at the bottom of the screen. This shows you exactly how your data will be grouped and updates every time you change a rule — use it to validate your logic before saving.

Step 6. Name and save

Give your Custom Dimension a clear, descriptive name (e.g. Target Region or Brand) — this is what appears in the breakdown and filter pickers across the app. Then save to make it available everywhere in Polar.

Extended Custom Dimension tutorial

Custom Dimension Operators

Operators define how a dimension value is compared against a condition.

Operator

Description

Example

Contains

True if the dimension includes a specific value

Product Title contains "Bundle"

Does not contain

True if the dimension excludes a value

SKU does not contain "test"

Contains (case sensitive)

Same as Contains, but case-sensitive

Campaign Name contains "Spring" (won’t match “spring”)

Does not contain (case sensitive)

Case-sensitive exclusion

Country Code does not contain "US"

Is

Exact match

Billing Country is "France"

Is not

Excludes exact match

Device is not "Mobile"

Starts with

Matches a beginning value

SKU starts with "PREM"

Ends with

Matches an ending value

Email ends with "@gmail.com"

Is in list

Matches one of several values. Be sure to remove the spaces after each ","

Country is in list "US,CA,UK"

Is not in list

Excludes all values in the list. Be sure to remove the spaces after each ","

Tag is not in list "Test,Sample"

💡 Building a long Is in List value quickly

If you have dozens of values (like discount codes), export your list from Shopify or your ad platform, then paste it into an AI tool and ask it to format the output as a comma-separated list with no spaces after commas. Paste the result directly into the Is in List field.

How bucket hierarchy works

Polar evaluates your buckets in order from top to bottom. As soon as a data point matches a bucket's rule, it's assigned to that bucket and the evaluation stops — it won't be checked against any remaining buckets below.

This matters when your rules could overlap. A common example: you have a Shopify store for Europe that you use to bucket all European sales, but you also want Germany to appear as its own separate bucket.

In the Report Builder, you can drag and drop buckets to reorder them. Put the most specific rules at the top and broader catch-all buckets toward the bottom.

The Else / Other bucket

Any data point that doesn't match any of your defined buckets automatically falls into the Other(or Else) category. This is useful as a catch-all, but if Other contains significant volume, it's a sign that some values in your data aren't covered by your current rules. See the Troubleshooting section for how to track these down.

Dimension not appearing in your report?

A Custom Dimension will only be available to select in a report if the metric you've added has a source that's included in the dimension's mapping. If you add a metric from a platform that isn't mapped in the dimension, the dimension won't appear as a breakdown option.

Verifying as you build

Don't wait until your dimension is fully built to check it. Validate one bucket at a time — it's much easier to catch and fix a mismatch early than to untangle everything at the end.

Quick validation steps

  1. Open the Report Builder in a second tab: Keep the Custom Dimension builder open in Tab 1 so you can edit without losing your place. Use Tab 2 to test.

  2. Add the metric you're mapping: E.g. Blended Ad Spend or Shopify Total Sales.

  3. Break down by your Custom Dimension: Your named buckets should appear as rows. Do the numbers look right for each one?

  4. Check how much is landing in Other: A large Other bucket means some values in your data aren't being matched by any rule. See the troubleshooting section to track down what's missing.

  5. Check the grand total: The sum of all buckets (including Other) should equal the unfiltered total for that metric. If it doesn't, a data source may be missing from the dimension entirely.

Troubleshooting

If your dimension isn't grouping data the way you expect — too much is in Other, a bucket has less than it should, or a platform seems to be missing entirely — work through these steps to find the cause.

💡Use two tabs

Keep the Custom Dimension editor open in one tab and a test report open in another. That way you can edit a rule, save, refresh the report, and immediately see the result — without resetting your filters each time.

Step-by-step diagnostic

  1. Isolate one metric and one bucket
    Don't try to debug everything at once. Pick one metric (e.g. Google Spend) and one bucket (e.g. United States). Add a report filter for Custom Dimension = United States and confirm whether the number looks roughly right. If it's much lower than expected, the missing spend is either in Other or in the wrong bucket.

  2. Filter to Other and add a channel breakdown
    Change your filter to Custom Dimension = Other. Add a breakdown by Channel. This tells you which platform is contributing the most unmatched data — that's where to focus next.

  3. Break down by the raw source dimension
    Now add a breakdown by the underlying source dimension used in your mapping rule (e.g. Target Country for Google Ads). You'll see the actual raw values that are landing in Other — these are the exact strings that aren't matched by any of your current rules. Copy them directly.

  4. Update your rules and re-check
    Go back to the dimension editor, add the missing values to the correct bucket (paste them exactly as they appear in the report), save, and refresh your test report. Repeat until Other is empty or contains only data you genuinely don't need to categorize.

Avoiding double-counting with tags

If you build a Custom Dimension using Shopify tags — like order tags, product tags, or customer tags — you may notice that your row totals appear to add up to more than the overall total. This is expected behavior and not a bug, but it's important to understand why it happens and how to avoid it.

Why it happens

Polar stores tag data as individual line items. An order can have multiple tags applied to it at the same time. If you use the singular Order Tag dimension to group data, each tag on an order creates a separate row — meaning the same order's revenue can appear in multiple rows simultaneously, inflating your totals.

The fix: use the plural "in order" dimension + Contains

Instead of using Order Tag, use Order Tags in Order (note the plural form). This dimension checks the full tag list on the order as a single value, rather than breaking each tag into its own row. Combined with the Contains operator, this lets you match a specific tag without creating duplicate rows.

Example

You want to group orders tagged wholesale into their own bucket.

❌ Wrong: Source dimension = Order Tag, operator = Is, value = wholesale

This will count a single order multiple times if it has more than one tag.

✅ Correct: Source dimension = Order Tags in Order, operator = Contains, value = wholesale

This checks whether the order's full tag list contains "wholesale" and counts the order exactly once.

The same logic applies to Product Tags and Customer Tags — always use the plural, "in order" variant when filtering by tags.\

Common issues & fixes

Most data is landing in Other

The values in your data don't exactly match what's written in your rules. Open the Report Builder, break down by the raw source dimension (not your custom one), and look at the actual values being returned. Copy those exact strings into your rules.

One platform is missing from the grouped view

Each platform must be explicitly added to the dimension — Polar won't auto-detect them. Open the dimension editor, find the relevant bucket, and add a new rule for the missing platform.

A bucket is getting data from the wrong source

Check your bucket order. A broader rule higher up in the list may be capturing data before a more specific rule lower down gets a chance to run. Move your more specific rules above broader ones. See Section 5 for examples.

The dimension doesn't appear as a breakdown option

The metric you've added to the report is sourced from a platform that isn't included in the dimension's mapping. Either add that platform to the dimension, or use a different metric.

Row totals don't add up to the overall total

This is usually caused by using a singular tag dimension (like Order Tag) instead of the plural form (Order Tags in Order). See Section 8 on tag-based dimensions.

Is in List isn't matching values I can see in my data

Check your formatting — Is in List requires values to be separated by a comma with no space after it (value1,value2,value3). A space after a comma is treated as part of the next value, so value1, value2 would look for the string value2 (with a leading space) rather than value2.

FAQs

  • How can I find all of my Custom Dimensions? To find your custom dimensions, you can select the “Custom Dimensions” button under Filters or Breakdowns within a Custom Report. All of your existing Custom Dimensions will also appear in the dropdown menus for Filters and Breakdowns with the Polar logo next to them.

  • How can I edit a Custom Dimension? To edit a Custom Dimension, click the three dots on the dimension in either the Breakdowns or Filters dropdown menu within a Custom Report.

  • How does each of the functions work? This article details how each function works, and how you should format each function to ensure Polar returns the intended results.

  • How many Custom Dimensions can I use in a Custom Report? You can use up to 5 Custom Dimensions in a single Custom Report. Remember, that you can add multiple When-Then blocks to a single Custom Dimension to include more dimensions.

Did this answer your question?