# Channel Acquisition

> Break down sessions and users by traffic source, medium, and channel group to understand where your audience comes from and which channels perform best.

- Skill: `surendranb/channel-acquisition` (Agent Skill)
- Install (CLI): `npx skillmds@latest add surendranb/channel-acquisition`
- Raw SKILL.md: https://api.skillmd.com/api/skills/surendranb/channel-acquisition/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/channel-acquisition

---

# Channel Acquisition Analysis

Break down sessions and users by traffic source, medium, and channel group
to understand where your audience comes from and which channels perform best.

## Correct dimension names
| Concept | GA4 API name |
|---|---|
| Channel group | `sessionDefaultChannelGroup` |
| Source | `sessionSource` |
| Medium | `sessionMedium` |
| Source / Medium | `sessionSourceMedium` |
| Campaign name | `sessionCampaignName` |
| Campaign ID | `sessionCampaignId` |
| Ad content | `sessionManualAdContent` |

Do not use `sessionDefaultChannelGrouping` — it does not exist.
Do not combine `sessionCampaignName` with user-scoped metrics like `totalUsers`.

## Step 1 — Channel overview
```
dimensions: ["sessionDefaultChannelGroup"]
metrics: ["sessions", "totalUsers", "newUsers", "userEngagementDuration",
          "screenPageViewsPerSession", "bounceRate"]
date_range: last 30 days
order_by: sessions DESC
```

## Step 2 — Source / medium detail
```
dimensions: ["sessionSource", "sessionMedium"]
metrics: ["sessions", "newUsers", "userEngagementDuration", "keyEvents"]
date_range: last 30 days
order_by: sessions DESC
limit: 25
```

## Step 3 — Campaign performance (paid)
```
dimensions: ["sessionCampaignName", "sessionDefaultChannelGroup"]
metrics: ["sessions", "newUsers", "keyEvents", "userEngagementDuration"]
dimension_filter: {
  "filter": {
    "fieldName": "sessionMedium",
    "stringFilter": {"matchType": "EXACT", "value": "cpc"}
  }
}
date_range: last 30 days
order_by: sessions DESC
```

## Step 4 — Trend by channel over time
```
dimensions: ["date", "sessionDefaultChannelGroup"]
metrics: ["sessions", "newUsers"]
date_range: last 90 days
order_by: date ASC
```

## What to report
- Top 5 channels by sessions and by new users
- Engagement quality per channel (userEngagementDuration per session)
- Which channel drives the most key events (conversions)
- Week-over-week or month-over-month trend for top channels

