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. | e.g. | e.g. |
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 |
| True if the dimension includes a specific value |
|
| True if the dimension excludes a value |
|
| Same as |
|
| Case-sensitive exclusion |
|
| Exact match |
|
| Excludes exact match |
|
| Matches a beginning value |
|
| Matches an ending value |
|
| Matches one of several values. Be sure to remove the spaces after each "," |
|
| Excludes all values in the list. Be sure to remove the spaces after each "," |
|
💡 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
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.
Add the metric you're mapping: E.g. Blended Ad Spend or Shopify Total Sales.
Break down by your Custom Dimension: Your named buckets should appear as rows. Do the numbers look right for each one?
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.
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
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.Filter to Other and add a channel breakdown
Change your filter to Custom Dimension = Other. Add a breakdown byChannel. This tells you which platform is contributing the most unmatched data — that's where to focus next.Break down by the raw source dimension
Now add a breakdown by the underlying source dimension used in your mapping rule (e.g.Target Countryfor 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.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
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
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
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 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
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
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.










