---
title: "How to track QR code scans by product and country"
description: "Tag each packaging QR code with its product line, then filter a workspace analytics dashboard by that tag and by one or several countries. Every widget follows the filters, Live and its CSV export too, and the filtered view lives in the page URL."
canonical: "https://linkbreakers.com/help/article/how-to-track-qr-code-scans-by-product-and-country"
last-updated: 2026-11-02
---

# How to track QR code scans by product and country

> Tag each packaging QR code with its product line, then filter a workspace analytics dashboard by that tag and by one or several countries. Every widget follows the filters, Live and its CSV export too, and the filtered view lives in the page URL.

Video: [How to track QR code scans by product and country](https://www.youtube.com/watch?v=2g_J4D49BBc)

## Short answer

To track QR code scans by product and country in Linkbreakers, tag each QR code with its product line, then open a workspace analytics dashboard and add two filters: **Links** (the **Tag** tab) set to the product line, and **Country** set to your markets. Every widget narrows to scans of that product line from those countries. The filters are saved in the page address, so the view can be bookmarked or sent to a teammate. Tags and the Country filter are on every plan.

Country is the country of the scanning device's IP address at the visit. There is no region, state or city filter.

## Who this is for

Consumer goods and packaging teams often print one QR code per pack format and need scans per product line and per market. A granola range can carry codes on the box, the bar wrapper and the refill pouch, and all three should count as granola. For what to put behind a packaging code, see [how to use QR codes on product packaging](/help/article/how-to-use-qr-codes-on-product-packaging).

The steps below use three product lines:

| Tag | QR codes |
|---|---|
| `granola` | granola box, granola bar wrapper, granola refill pouch |
| `cold-brew` | cold brew can, cold brew bottle |
| `sparkling-water` | sparkling water can, sparkling water glass bottle |

## Step 1: Tag each QR code with its product line

1. In **Links**, open the QR code and click its name at the top of the page. The **Edit Link Info** panel opens.
2. In **Tags**, type the product line (for example `granola`) or pick it from the suggestions.
3. Click **Save Changes**.

Repeat for every code in the line. A code can carry several tags (`granola` and `snacks`, say) and counts in the view of each. More on naming tags in [how to use tags to segment and analyze QR campaigns](/help/article/how-to-use-tags-to-segment-and-analyze-qr-campaigns).

## Step 2: Filter the dashboard by product line

1. Open **Analytics** in the sidebar, then a workspace dashboard.
2. Click **Filter**, then **Links**.
3. Choose the **Tag** tab and pick `granola`.

The Links filter has three tabs, **Directory**, **Tag** and **Link**. One applies at a time: picking a tag replaces a directory or link.

## Step 3: Add the countries

1. Click **Filter** again, then **Country**.
2. Pick France and Germany.

The bar now shows two chips: `Tag: granola` and `Country: France, Germany`. Several countries in one filter mean any of them. Different filters combine with AND, so a scan counts only if it came from a code tagged `granola` and from one of those countries. Every widget follows. To read one market at a time, click the Country chip and keep only France, then only Germany.

A [link's own dashboard](/help/article/per-link-analytics-dashboard) offers only the Country filter, since it is already scoped to that link.

## Step 4: Use the same filters on Live and Visitors

**Live** has the same Links and Country filters. Its counters, its chart and its CSV export follow them.

**Visitors** has the Links filter limited to one link, plus **Filter by attribute**, and no Country filter.

## Step 5: Share the filtered view

The filters live in the page address, for example `?tag=...&country=FR,DE` (the tag is written as its ID). Bookmark it or send it to a teammate: it opens with the same filters, on a phone too. A shared address is a view, not a permission: the person opening it must be a member of the workspace. See [how to invite team members to Linkbreakers](/help/article/how-to-invite-team-members-to-linkbreakers).

## The same filters in the API, MCP and SDKs

Analytics reads in the API, the MCP tools and the SDKs accept the same filters:

- `tag_id` (`tagId` in REST JSON), `directory_id` or `link_id`. Send at most one of the three: more than one answers `400` with `LINK_FILTER_LINK_AND_DIRECTORY`.
- `countries`: ISO 3166-1 alpha-2 codes such as `FR` and `DE`, repeated for several countries.

A script or an AI assistant can read the same granola view as the dashboard. Supported reads are listed in [One filter bar, with tag and country filters](/help/article/one-filter-bar-with-tag-and-country-filters).

## When to use a tag and when to use a directory

| | Tag | [Directory](/help/article/what-is-a-directory-in-linkbreakers) |
|---|---|---|
| Plans | Every plan | Pro and Enterprise |
| Per QR code | Several tags | One directory |
| Structure | Flat labels | Nested: picking a directory also covers every directory below it |
| Fits | Groupings that cut across how codes are filed | Groupings that are also how the workspace is organized |

Use a tag when your codes are already filed another way, by brand or print run: the granola refill pouch can sit in a `Packaging / 2026 print` directory and still count toward `granola`.

Use a directory when the product line is also how you organize the workspace and you want sub-groups, such as `Granola / Bars` and `Granola / Boxes`: picking `Granola` in the filter covers both.

## Limits and caveats

- **Country only.** There is no region, state or city filter.
- **Country of the device, not of the customer.** It comes from the device's IP address at the visit: a shopper scanning abroad counts toward the country they are in, and a VPN scan toward the VPN's country. See [does a QR code show location? Accuracy limits and examples](/help/article/does-a-qr-code-show-location-accuracy-limits-and-examples).
- **One Links scope at a time.** One directory, one tag or one link. To read two product lines together, give their codes a shared tag, such as `beverages` on the cold brew and sparkling water codes.
- **One view at a time.** To compare two markets or two product lines, change the chip and read the dashboard again.
- **Visitors has no Country filter**, and a link's own dashboard has only Country.

## Frequently asked questions

### Can I filter QR code scans by region or city?

No. Filtering is by country only, with one or several countries per filter. The dashboard's Geography widget still breaks the filtered scans down by city.

### Can one QR code count toward two product lines?

Yes. A code can carry several tags, and it counts in the view of each one.

### Is the country where the customer lives?

No. It is the country of the device's IP address at the time of the scan, the same country the dashboard's country breakdown uses.

### Do tags work on the Free plan?

Yes. Tags and the Country filter are on every plan. Directories need Pro or Enterprise.

## Sources

- [One filter bar, with tag and country filters](/help/article/one-filter-bar-with-tag-and-country-filters), Linkbreakers news, 2026-10-29.
- The dashboard's filter bar and link edit panel, checked against the product code on 2026-11-02.

## Last reviewed

2026-11-02 by Laurent Schaffner.
