Agent skill
ga4-audience-builder
This skill should be used when the user asks to \"build GA4 audiences\", \"create custom segments\", \"set up audience targeting\", or mentions \"sequential audiences\", \"user segments\", or \"remarketing audiences in GA4\".
Filed under ABM and paid.
From Ad-Superpowers/ad-superpowers-plugin · 120 skills · 5 · pushed 2026-09-10
What it does when it runs
This skill should be used when the user asks to \"build GA4 audiences\", \"create custom segments\", \"set up audience targeting\", or mentions \"sequential audiences\", \"user segments\", or \"remarketing audiences in GA4\". Do NOT use for: audience exclusions (use ga4-audience-exclusions), predictive audiences (use ga4-predictive-audiences), or exporting audiences to Google Ads (use ga4-remarketing-setup).
Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/Ad-Superpowers/ad-superpowers-plugin.git /tmp/ad-superpowers-plugin git -C /tmp/ad-superpowers-plugin sparse-checkout set "plugin/skills/ga4-audience-builder" mkdir -p ~/.claude/skills/ga4-audience-builder cp -R "/tmp/ad-superpowers-plugin/plugin/skills/ga4-audience-builder/." ~/.claude/skills/ga4-audience-builder/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 120 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add Ad-Superpowers/ad-superpowers-plugin /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from Ad-Superpowers/ad-superpowers-plugin/blob/9b6385d2d2d228e4dac096a1d6bc5715c04fa736/plugin/skills/ga4-audience-builder/SKILL.md, which is licensed MIT (repository). 2,058 words, 25 headings.
GA4 Audience Builder Guide
Complete guide for building powerful custom audiences in Google Analytics 4 for remarketing and analysis.
Quick Decision Tree
GA4 AUDIENCE BUILDER FLOW
│
├─► WHICH TYPE OF AUDIENCE?
│ ├─► Behavior-based
│ │ └─► Use events + parameters
│ │ └─► Example: "Users who viewed product but did not purchase"
│ │
│ ├─► User Property based
│ │ └─► Demographics, lifetime value, acquisition
│ │ └─► Example: "High-value customers (LTV > €500)"
│ │
│ ├─► Sequential (Journey)
│ │ └─► Steps in order
│ │ └─► Example: "Homepage → Category → Product → NO Purchase"
│ │
│ └─► Predictive (ML)
│ └─► See: ga4-predictive-audiences skill
│
├─► MEMBERSHIP DURATION?
│ ├─► Short (1-7 days)
│ │ └─► Cart abandoners, recent visitors
│ │
│ ├─► Medium (8-30 days)
│ │ └─► Product interest, engaged users
│ │
│ └─► Long (30-540 days)
│ └─► Customer loyalty, seasonal shoppers
│
└─► EXPORT NEEDED?
├─► Google Ads remarketing
│ └─► See: ga4-remarketing-setup skill
│
└─► GA4 analysis only
└─► No export configuration needed
Audience Types Overview
GA4 AUDIENCE TYPES
===================
┌───────────────────┬────────────────────────────────────────────────────┐
│ Type │ Use Case │
├───────────────────┼────────────────────────────────────────────────────┤
│ Static Conditions │ Simple if/then rules │
│ │ "Users with event X" │
├───────────────────┼────────────────────────────────────────────────────┤
│ Dynamic │ Real-time membership updates │
│ │ "Users who purchased last week" │
├───────────────────┼────────────────────────────────────────────────────┤
│ Sequential │ Ordered steps (THEN/FOLLOWED BY) │
│ │ "Viewed product → Added to cart → Did NOT buy" │
├───────────────────┼────────────────────────────────────────────────────┤
│ Exclusion │ Exclude certain users │
│ │ "All visitors EXCEPT converters" │
├───────────────────┼────────────────────────────────────────────────────┤
│ Predictive │ ML-based (purchase/churn probability) │
│ │ "Likely 7-day purchasers" │
└───────────────────┴────────────────────────────────────────────────────┘
Creating an Audience: Step by Step
Step 1: Navigate to Audience Builder
LOCATION: Admin → Property → Audiences → New audience
OPTIONS AT CREATION:
┌────────────────────────┬────────────────────────────────────────────┐
│ Option │ When to Use │
├────────────────────────┼────────────────────────────────────────────┤
│ Create a custom │ Full control, custom conditions │
│ audience │ (Recommended for specific use cases) │
├────────────────────────┼────────────────────────────────────────────┤
│ Use a reference │ Start with GA4 template │
│ (Suggested audiences) │ (Good for inspiration) │
├────────────────────────┼────────────────────────────────────────────┤
│ Create audience from │ Start from existing Exploration │
│ exploration │ (Handy for analysis → action) │
└────────────────────────┴────────────────────────────────────────────┘
Step 2: Configure Conditions
AUDIENCE CONDITIONS
====================
CONDITION TYPES:
────────────────
├── Include users when: (AND/OR logic)
│ ├── Event (event_name = X)
│ ├── Event parameter (event_param = Y)
│ ├── User property (user_property = Z)
│ ├── First user (acquisition source/medium)
│ └── Device/Geo (platform, country, city)
│
└── Exclude users when: (Filter OUT)
└── Same options as include
AVAILABLE OPERATORS:
┌─────────────────────┬────────────────────────────────────────────────┐
│ Operator │ Example │
├─────────────────────┼────────────────────────────────────────────────┤
│ equals │ event_name = purchase │
├─────────────────────┼────────────────────────────────────────────────┤
│ does not equal │ page_location != /thank-you │
├─────────────────────┼────────────────────────────────────────────────┤
│ contains │ page_title contains "Product" │
├─────────────────────┼────────────────────────────────────────────────┤
│ begins with │ page_path begins with /shop/ │
├─────────────────────┼────────────────────────────────────────────────┤
│ ends with │ page_path ends with /checkout │
├─────────────────────┼────────────────────────────────────────────────┤
│ matches regex │ page_path matches regex ^/product/[0-9]+$ │
├─────────────────────┼────────────────────────────────────────────────┤
│ > / < / >= / <= │ ltv > 100 (for numeric values) │
├─────────────────────┼────────────────────────────────────────────────┤
│ in list │ country in list [NL, BE, DE] │
└─────────────────────┴────────────────────────────────────────────────┘
Step 3: Configure Scoping
AUDIENCE SCOPING
=================
WHAT IS SCOPING:
├── Determines at which level conditions are evaluated
├── Critical for correct audience definition
└── Wrong scoping = wrong users in audience
SCOPE LEVELS:
┌─────────────────┬────────────────────────────────────────────────────┐
│ Scope │ Meaning │
├─────────────────┼────────────────────────────────────────────────────┤
│ Across all │ Condition ever true within membership window │
│ sessions │ "User did this at any point in the last X days" │
│ │ └─► MOST COMMONLY USED scope │
├─────────────────┼────────────────────────────────────────────────────┤
│ Within same │ Condition true within a single session │
│ session │ "User did this in the same session" │
│ │ └─► For session-specific journeys │
├─────────────────┼────────────────────────────────────────────────────┤
│ Within same │ Condition true within a single event │
│ event │ "This event had these parameters" │
│ │ └─► For specific event combinations │
└─────────────────┴────────────────────────────────────────────────────┘
EXAMPLE OF THE DIFFERENCE:
───────────────────────────
"User viewed product AND added to cart"
Across all sessions:
└─► User who ever viewed a product AND ever added something
(Could be different products!)
Within same session:
└─► User who viewed a product AND added to cart in the SAME session
(More relevant for cart abandonment)
Within same event:
└─► Not logical for this example (2 events)
Step 4: Membership Duration
MEMBERSHIP DURATION SETTINGS
==============================
WHAT IT IS:
├── How long user stays in audience after last qualifying action
├── Max 540 days (Google Ads limit)
└── Choose based on customer journey and campaign goal
RECOMMENDATIONS PER USE CASE:
┌─────────────────────────┬────────────┬─────────────────────────────────┐
│ Use Case │ Duration │ Reason │
├─────────────────────────┼────────────┼─────────────────────────────────┤
│ Cart abandonment │ 7-14 days │ Short purchase intent window │
├─────────────────────────┼────────────┼─────────────────────────────────┤
│ Product viewers │ 14-30 days │ Medium interest window │
├─────────────────────────┼────────────┼─────────────────────────────────┤
│ Recent customers │ 30-90 days │ Cross-sell/upsell window │
├─────────────────────────┼────────────┼─────────────────────────────────┤
│ All customers │ 180-540 d │ Longer loyalty period │
├─────────────────────────┼────────────┼─────────────────────────────────┤
│ Seasonal shoppers │ 365 days │ Seasonal re-activation │
├─────────────────────────┼────────────┼─────────────────────────────────┤
│ High-value customers │ 540 days │ Maximum retention for VIPs │
└─────────────────────────┴────────────┴─────────────────────────────────┘
IMPORTANT:
├── Shorter duration = more relevant targeting
├── Longer duration = larger audience size
├── Google Ads has max 540 days
└── Choose based on average sales cycle
Sequential Audiences
SEQUENTIAL AUDIENCES
=====================
WHAT IT IS:
├── Audiences based on order of actions
├── Use "is followed by" or "is indirectly followed by"
└── Perfect for customer journey targeting
SYNTAX:
────────
Step 1: [First condition]
│
├─► is followed by (directly next action)
│ └─► "Immediately after"
│
└─► is indirectly followed by (somewhere later)
└─► "At some point after"
│
Step 2: [Second condition]
│
├─► (repeat for more steps)
│
Step N: [Final condition]
EXAMPLE: CART ABANDONERS (SEQUENTIAL)
──────────────────────────────────────
Step 1: event_name = view_item
is indirectly followed by
Step 2: event_name = add_to_cart
AND EXCLUDE
Step 3: event_name = purchase
Meaning: "Users who viewed a product, then added to cart,
but did NOT purchase"
EXAMPLE: CHECKOUT ABANDONERS
─────────────────────────────
Step 1: event_name = begin_checkout
is indirectly followed by
Step 2: event_name = add_payment_info
AND EXCLUDE
Step 3: event_name = purchase
Meaning: "Users who started checkout, entered payment info,
but did not complete"
TIME CONSTRAINTS:
─────────────────
├── "within X time" - Step must follow within X time
│ └─► Example: add_to_cart within 30 minutes of view_item
│
└── Without constraint - Anytime in membership window
Practical Audience Templates
AUDIENCE TEMPLATES FOR ADVERTISERS
====================================
1. HIGH-INTENT NON-CONVERTERS
─────────────────────────────
Name: "High Intent - No Purchase"
Conditions:
├── Include: event_name = add_to_cart (count >= 2)
├── Include: session_duration > 180 (3+ minutes)
└── Exclude: event_name = purchase
Duration: 14 days
Use case: High purchase intent, needs extra push
2. RECENT CUSTOMERS (CROSS-SELL)
────────────────────────────────
Name: "Recent Buyers - 30 Days"
Conditions:
├── Include: event_name = purchase
└── Timeframe: Last 30 days
Duration: 30 days
Use case: Cross-sell campaigns
3. HIGH-VALUE CUSTOMERS
────────────────────────
Name: "VIP Customers LTV 500+"
Conditions:
├── Include: LTV (user property) > 500
└── Or: purchase value sum > 500
Duration: 540 days
Use case: VIP treatment, loyalty campaigns
4. ENGAGED NON-CONVERTERS
──────────────────────────
Name: "Engaged Visitors - No Purchase"
Conditions:
├── Include: session_count >= 3
├── Include: page_views >= 10
└── Exclude: event_name = purchase
Duration: 30 days
Use case: Retargeting engaged browsers
5. CATEGORY INTEREST
─────────────────────
Name: "[Category] Viewers"
Conditions:
├── Include: page_path contains /category/[name]/
├── Or: item_category = [name]
└── Exclude: event_name = purchase (optional)
Duration: 14 days
Use case: Category-specific remarketing
6. LAPSED CUSTOMERS
────────────────────
Name: "Lapsed Customers 90+ Days"
Conditions:
├── Include: event_name = purchase
├── Timeframe: 90-365 days ago (NOT last 90 days)
└── Exclude: purchase in last 90 days
Duration: 275 days
Use case: Win-back campaigns
7. EMAIL SUBSCRIBERS NON-BUYERS
────────────────────────────────
Name: "Newsletter - No Purchase"
Conditions:
├── Include: event_name = sign_up OR newsletter_subscribe
└── Exclude: event_name = purchase
Duration: 90 days
Use case: Email subscriber conversion
Best Practices
DO's ✅
═══════
├── Use clear, descriptive audience names
│ └─► "Cart_Abandon_14d_ExclPurchase" vs "Audience 1"
│
├── Document audience logic in description
│ └─► Add explanation of why these conditions
│
├── Start with broader audiences, narrow down later
│ └─► Too specific = too few users
│
├── Test audience size before activation
│ └─► <1000 users = possibly too small for Google Ads
│
├── Use exclusions to prevent overlap
│ └─► Exclude converters from prospecting audiences
│
├── Combine with Predictive Audiences
│ └─► "Likely Purchasers" + "Cart Abandoners" = High priority
│
└── Review audiences monthly
└─► Remove inactive/small audiences
DON'Ts
═══════
├── Create too many audiences (>50 becomes unmanageable)
│ └─► Focus on 10-20 core audiences
│
├── Create audiences without a clear campaign goal
│ └─► First: what do I want to achieve? Then: which audience?
│
├── Forget to add exclusions
│ └─► Retargeting converters with prospecting ads
│
├── Set too short membership duration for long sales cycles
│ └─► B2B: 30-90 days, not 7 days
│
├── Build on only one data point
│ └─► Combine multiple signals for better targeting
│
└── Never review audiences on performance
└─► Poor ROAS? Adjust or pause audience
Troubleshooting
TROUBLESHOOTING GUIDE
======================
PROBLEM: Audience size = 0
───────────────────────────
Causes:
├── Conditions too restrictive
├── Event does not exist or is misspelled
├── Timeframe too short
├── Data not yet processed
└── Wrong scoping
Solution:
├── Check event/parameter names in DebugView
├── Broaden conditions (fewer AND, more OR)
├── Wait 24-48 hours for data processing
├── Use Exploration to count users first
└── Test each condition separately
PROBLEM: Audience not available in Google Ads
──────────────────────────────────────────────
Causes:
├── Google Ads link not active
├── "Enable personalized ads" not on
├── Audience too small (<1000 users)
├── Not yet synchronized (24-48 hours)
└── Policy violation (sensitive categories)
Solution:
├── Check Admin → Product Links → Google Ads
├── Verify "Personalized advertising" toggle
├── Wait for sufficient audience volume
├── Check Google Ads policy compliance
└── Verify Google Signals is enabled
PROBLEM: Audience is not growing
─────────────────────────────────
Causes:
├── Events are not being triggered
├── Filters too restrictive
├── Consent mode blocking users
└── Membership duration too short
Solution:
├── Verify event tracking in DebugView
├── Review and broaden conditions
├── Check consent rates
├── Extend membership duration
PROBLEM: Too much overlap between audiences
────────────────────────────────────────────
Causes:
├── No exclusions configured
├── Conditions not mutually exclusive
└── Audience hierarchy not thought through
Solution:
├── Create exclusion audiences
├── Use "AND NOT" conditions
├── Design audience architecture with tiers
└── Prioritize: converters → high-intent → general
Output: Audience Builder Recommendation Template
# GA4 Audience Recommendation
## Audience Overview
- **Name:** [Audience name]
- **Goal:** [Remarketing/Analysis/Export]
- **Expected size:** [Estimate]
- **Membership duration:** [X days]
## Audience Configuration
### Include Conditions
| # | Type | Condition | Scope |
|---|------|-----------|-------|
| 1 | Event | [event_name = X] | [Across all sessions] |
| 2 | Parameter | [param = Y] | [Within same event] |
| 3 | User Property | [property = Z] | [Across all sessions] |
### Exclude Conditions
| # | Type | Condition | Reason |
|---|------|-----------|--------|
| 1 | Event | [event_name = purchase] | Exclude converters |
### Sequential Steps (if applicable)
Step 1: [First action] │ is indirectly followed by Step 2: [Second action] │ AND EXCLUDE Step 3: [Action to exclude]
## Export Configuration
- **Google Ads:** [Yes/No]
- **Display & Video 360:** [Yes/No]
- **Search Ads 360:** [Yes/No]
## Campaign Use Cases
1. [First campaign type - description]
2. [Second campaign type - description]
3. [Third campaign type - description]
## Monitoring
- **Review frequency:** [Weekly/Monthly]
- **KPIs:** [Audience size, Conversion rate, ROAS]
- **Alerts:** [If size <X or >Y]
## Notes
[Any additional remarks or context]
Optional: Enrich with Live Data
If the user has connected their GA4 account, pull segment sizes to validate audience eligibility before building:
# Check user counts per key segment to estimate audience sizes
ga4_run_report(
property_id="YOUR_PROPERTY_ID",
metrics=["totalUsers", "sessions"],
dimensions=["sessionDefaultChannelGroup"],
start_date="30daysAgo",
end_date="today"
)
Use this to check if there are enough users in each segment to meet platform minimums (Google Ads: 1,000 users, Meta: 100). Small segments need broader definitions or longer lookback windows.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- workflows-audience-enrichment by clay-run · 115
- audience-icp-filter by LaGrowthMachine · 37
- qualify-audience by Abhipaddy8 · 17
- meta-audience-targeting by sidchaudhary · 1
Need help setting it up?
This page tells you what ga4-audience-builder does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.