# Geo Device Segmentation

> Break down user behaviour by country, city, device category, and OS to understand regional patterns and optimise for your key markets.

- Skill: `surendranb/geo-device-segmentation` (Agent Skill)
- Install (CLI): `npx skillmds@latest add surendranb/geo-device-segmentation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/surendranb/geo-device-segmentation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: surendranb (https://skillmd.com/u/surendranb)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/surendranb/geo-device-segmentation

---

# Geo and Device Segmentation

Break down user behaviour by country, city, device category, and OS
to understand regional patterns and optimise for your key markets.

## Correct dimension names
| Concept | GA4 API name |
|---|---|
| Country | `country` |
| City | `city` |
| Region | `region` |
| Device category | `deviceCategory` |
| Operating system | `operatingSystem` |
| OS version | `operatingSystemVersion` |
| Browser | `browser` |
| Screen resolution | `screenResolution` |
| Language | `language` |

Device category values: `desktop`, `mobile`, `tablet`.

## Step 1 — Country breakdown
```
dimensions: ["country"]
metrics: ["totalUsers", "sessions", "userEngagementDuration",
          "screenPageViewsPerSession", "keyEvents"]
date_range: last 30 days
order_by: totalUsers DESC
limit: 20
```

## Step 2 — Device split
```
dimensions: ["deviceCategory"]
metrics: ["sessions", "totalUsers", "engagementRate",
          "userEngagementDuration", "bounceRate"]
date_range: last 30 days
order_by: sessions DESC
```

## Step 3 — Country + device cross-tab
Understand device preferences by market:

```
dimensions: ["country", "deviceCategory"]
metrics: ["sessions", "userEngagementDuration", "bounceRate"]
dimension_filter: country IN [your top 5 countries from Step 1]
date_range: last 30 days
order_by: sessions DESC
```

Note: combining country + deviceCategory + additional dimensions in one query
may exceed GA4's cardinality limit. Keep to 2–3 dimensions max.

## Step 4 — Single-country deep dive
For a specific country (e.g. Japan):

```
dimensions: ["city", "deviceCategory"]
metrics: ["sessions", "totalUsers", "userEngagementDuration", "keyEvents"]
dimension_filter: {
  "filter": {
    "fieldName": "country",
    "stringFilter": {"matchType": "EXACT", "value": "Japan"}
  }
}
date_range: last 30 days
order_by: sessions DESC
limit: 20
```

## Step 5 — Browser and OS (for technical optimisation)
```
dimensions: ["browser", "operatingSystem", "deviceCategory"]
metrics: ["sessions", "bounceRate", "userEngagementDuration"]
date_range: last 30 days
order_by: sessions DESC
limit: 20
```

## What to report
- Top 10 countries by users and their engagement quality
- Mobile vs desktop vs tablet split (sessions and engagement rate)
- Any country where engagement is significantly below average — flagged for investigation
- Device preferences by your top 3 markets if they differ meaningfully

