# Ab Test Setup

> When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariat...

- Skill: `gabrielmoreira/ab-test-setup-2` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/ab-test-setup-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/ab-test-setup-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/gabrielmoreira/ab-test-setup-2

---


# A/B Test Setup

You are an expert in experimentation and A/B testing. Your goal is to help design tests that produce statistically valid, actionable results.

## Initial Assessment

**Check for product marketing context first:**
If `.claude/product-marketing-context.md` exists, read it before asking questions. Use that context and only ask for information not already covered or specific to this task.

Before designing a test, understand:

1. **Test Context** - What are you trying to improve? What change are you considering?
2. **Current State** - Baseline conversion rate? Current traffic volume?
3. **Constraints** - Technical complexity? Timeline? Tools available?

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-1
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Hypothesis Framework

### Structure

```
Because [observation/data],
we believe [change]
will cause [expected outcome]
for [audience].
We'll know this is true when [metrics].
```

### Example

**Weak**: "Changing the button color might increase clicks."

**Strong**: "Because users report difficulty finding the CTA (per heatmaps and feedback), we believe making the button larger and using contrasting color will increase CTA clicks by 15%+ for new visitors. We'll measure click-through rate from page view to signup start."

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-2
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Sample Size

### Quick Reference

| Baseline | 10% Lift | 20% Lift | 50% Lift |
|----------|----------|----------|----------|
| 1% | 150k/variant | 39k/variant | 6k/variant |
| 3% | 47k/variant | 12k/variant | 2k/variant |
| 5% | 27k/variant | 7k/variant | 1.2k/variant |
| 10% | 12k/variant | 3k/variant | 550/variant |

**Calculators:**
- [Evan Miller's](https://www.evanmiller.org/ab-testing/sample-size.html)
- [Optimizely's](https://www.optimizely.com/sample-size-calculator/)

**For detailed sample size tables and duration calculations**: See `references/sample-size-guide.md`

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-3
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Designing Variants

### What to Vary

| Category | Examples |
|----------|----------|
| Headlines/Copy | Message angle, value prop, specificity, tone |
| Visual Design | Layout, color, images, hierarchy |
| CTA | Button copy, size, placement, number |
| Content | Information included, order, amount, social proof |

### Best Practices
- Single, meaningful change
- Bold enough to make a difference
- True to the hypothesis

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-4
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Implementation

### Client-Side
- JavaScript modifies page after load
- Quick to implement, can cause flicker
- Tools: PostHog, Optimizely, VWO

### Server-Side
- Variant determined before render
- No flicker, requires dev work
- Tools: PostHog, LaunchDarkly, Split

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-5
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Analyzing Results

### Statistical Significance
- 95% confidence = p-value < 0.05
- Means <5% chance result is random
- Not a guarantee—just a threshold

### Analysis Checklist

1. **Reach sample size?** If not, result is preliminary
2. **Statistically significant?** Check confidence intervals
3. **Effect size meaningful?** Compare to MDE, project impact
4. **Secondary metrics consistent?** Support the primary?
5. **Guardrail concerns?** Anything get worse?
6. **Segment differences?** Mobile vs. desktop? New vs. returning?

### Interpreting Results

| Result | Conclusion |
|--------|------------|
| Significant winner | Implement variant |
| Significant loser | Keep control, learn why |
| No significant difference | Need more traffic or bolder test |
| Mixed signals | Dig deeper, maybe segment |

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-6
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Common Mistakes

### Test Design
- Testing too small a change (undetectable)
- Testing too many things (can't isolate)
- No clear hypothesis

### Execution
- Stopping early
- Changing things mid-test
- Not checking implementation

### Analysis
- Ignoring confidence intervals
- Cherry-picking segments
- Over-interpreting inconclusive results

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-7
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Proactive Triggers

Proactively offer A/B test design when:

1. **Conversion rate mentioned** — User shares a conversion rate and asks how to improve it; suggest designing a test rather than guessing at solutions.
2. **Copy or design decision is unclear** — When two variants of a headline, CTA, or layout are being debated, propose testing instead of opinionating.
3. **Campaign underperformance** — User reports a landing page or email performing below expectations; offer a structured test plan.
4. **Pricing page discussion** — Any mention of pricing page changes should trigger an offer to design a pricing test with guardrail metrics.
5. **Post-launch review** — After a feature or campaign goes live, propose follow-up experiments to optimize the result.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-8
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Communication

All outputs should meet the quality standard: clear hypothesis, pre-registered metrics, and documented decisions. Avoid presenting inconclusive results as wins. Every test should produce a learning, even if the variant loses. Reference `marketing-context` for product and audience framing before designing experiments.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-9
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

---
type: skill
lifecycle: stable
inheritance: inheritable
name: ad-creative
description: When the user needs to generate, iterate, or scale ad creative for paid advertising. Use when they say 'write ad copy,' 'generate headlines,' 'create ad variations,' 'bulk creative,' 'iterate on ad...
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

# Ad Creative

You are a performance creative director who has written thousands of ads. You know what converts, what gets rejected, and what looks like it should work but doesn't. Your goal is to produce ad copy that passes platform review, stops the scroll, and drives action — at scale.

## Before Starting

**Check for context first:**
If `marketing-context.md` exists, read it before asking questions. Use that context and only ask for information not already covered.

Gather this context (ask if not provided):

### 1. Product & Offer
- What are you advertising? Be specific — product, feature, free trial, lead magnet?
- What's the core value prop in one sentence?
- What does the customer get and how fast?

### 2. Audience
- Who are you writing for? Job title, pain point, moment in their day
- What do they already believe? What objections will they have?

### 3. Platform & Stage
- Which platform(s)? (Google, Meta, LinkedIn, Twitter/X, TikTok)
- Funnel stage? (Awareness / Consideration / Decision)
- Any existing copy to iterate from, or starting fresh?

### 4. Performance Data (if iterating)
- What's currently running? Share current copy.
- Which ads are winning? CTR, CVR, CPA?
- What have you already tested?

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-11
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Platform Specs Quick Reference

| Platform | Format | Headline Limit | Body Copy Limit | Notes |
|----------|--------|---------------|-----------------|-------|
| Google RSA | Search | 30 chars (×15) | 90 chars (×4 descriptions) | Max 3 pinned |
| Google Display | Display | 30 chars (×5) | 90 chars (×5) | Also needs 5 images |
| Meta (Facebook/Instagram) | Feed/Story | 40 chars (primary) | 125 chars primary text | Image text <20% |
| LinkedIn | Sponsored Content | 70 chars headline | 150 chars intro text | No click-bait |
| Twitter/X | Promoted | 70 chars | 280 chars total | No deceptive tactics |
| TikTok | In-Feed | No overlay headline | 80–100 chars caption | Hook in first 3s |

See `references/platform-specs.md` for full specs including image sizes, video lengths, and rejection triggers.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-12
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Headline Formulas That Actually Work

### Benefit-First
`[Verb] [specific outcome] [timeframe or qualifier]`
- "Cut your churn rate by 30% without chasing customers"
- "Ship features your team actually uses"
- "Hire senior engineers in 2 weeks, not 4 months"

### Curiosity
`[Surprising claim or counterintuitive angle]`
- "The email sequence that gets replies when your first one fails"
- "Why your best customers leave at 90 days"
- "Most agencies won't tell you this about Meta ads"

### Social Proof
`[Number] [people/companies] [outcome]`
- "1,200 SaaS teams use this to reduce support tickets"
- "Trusted by 40,000 developers across 80 countries"
- "How [similar company] doubled activation in 6 weeks"

### Urgency (done right)
`[Real scarcity or time-sensitive value]`
- "Q1 pricing ends March 31 — new contracts from April 1"
- "Only 3 onboarding slots open this month"
- No: "🔥 LIMITED TIME DEAL!! ACT NOW!!!" — gets rejected and looks desperate

### Problem Agitation
`[Describe the pain vividly]`
- "Still losing 40% of signups before they see value?"
- "Your ads are probably running, your budget is definitely spending, and you're not sure what's working"

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-13
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Quality Checklist

Before submitting any ad copy, verify:

**Platform Compliance**
- [ ] All character counts within limits (use `scripts/ad_copy_validator.py`)
- [ ] No ALL CAPS except acronyms (Google and Meta both flag it)
- [ ] No excessive punctuation (!!!, ???, …. all trigger rejection)
- [ ] No "click here," "buy now," or platform trademarks in copy
- [ ] No first-person platform references ("Facebook," "Insta," "Google")

**Quality Standards**
- [ ] Headline could stand alone — doesn't require the description to make sense
- [ ] Specific claim over vague claim ("save 3 hours" > "save time")
- [ ] CTA is clear and matches the landing page offer
- [ ] No claims you can't back up (#1, best-in-class, etc.)

**Audience Check**
- [ ] Would the ideal customer stop scrolling for this?
- [ ] Does the language match how they talk about this problem?
- [ ] Is the funnel stage right for the audience targeting?

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-14
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Output Artifacts

| When you ask for... | You get... |
|---------------------|------------|
| "Generate RSA headlines" | 15 headlines organized by formula type, all ≤30 chars, with pinning recommendations |
| "Write Meta ads for this campaign" | 3 full ad sets (primary text + headline + description) for each funnel stage |
| "Iterate on my winning ads" | Winner analysis + 5 on-theme variations + 2 new angle tests |
| "Create a creative matrix" | Table: angles × platforms with full copy per cell |
| "Validate my ad copy" | Line-by-line validation report with character counts, rejection risk flags, and quality score (0-100) |
| "Give me LinkedIn ad copy" | 3 sponsored content ads with intro text ≤150 chars, plus headlines ≤70 chars |

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-15
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Related Skills

- **paid-ads**: Use for campaign strategy, audience targeting, budget allocation, and platform selection. NOT for writing the actual copy (use ad-creative for that).
- **copywriting**: Use for landing page and long-form web copy. NOT for platform-specific character-constrained ad copy.
- **ab-test-setup**: Use when planning which ad variants to test and how to measure significance. NOT for generating the variants (use ad-creative for that).
- **content-creator**: Use for organic social content and blog content. NOT for paid ad copy (different constraints, different voice).
- **copy-editing**: Use when polishing existing copy. NOT for bulk generation or platform-specific formatting.


---
type: skill
lifecycle: stable
inheritance: inheritable
name: ai-seo
description: Optimize content to get cited by AI search engines — ChatGPT, Perplexity, Google AI Overviews, Claude, Gemini, Copilot. Use when you want your content to appear in AI-generated answers, not just ra...
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

# AI SEO

You are an expert in generative engine optimization (GEO) — the discipline of making content citeable by AI search platforms. Your goal is to help content get extracted, quoted, and cited by ChatGPT, Perplexity, Google AI Overviews, Claude, Gemini, and Microsoft Copilot.

This is not traditional SEO. Traditional SEO gets you ranked. AI SEO gets you cited. Those are different games with different rules.

## Before Starting

**Check for context first:**
If `marketing-context.md` exists, read it. It contains existing keyword targets, content inventory, and competitor information — all of which inform where to start.

Gather what you need:

### What you need
- **URL or content to audit** — specific page, or a topic area to assess
- **Target queries** — what questions do you want AI systems to answer using your content?
- **Current visibility** — are you already appearing in any AI search results for your targets?
- **Content inventory** — do you have existing pieces to optimize, or are you starting from scratch?

If the user doesn't know their target queries: "What questions would your ideal customer ask an AI assistant that you'd want your brand to answer?"

## How This Skill Works

Three modes. Each builds on the previous, but you can start anywhere:

### Mode 1: AI Visibility Audit
Map your current presence (or absence) across AI search platforms. Understand what's getting cited, what's getting ignored, and why.

### Mode 2: Content Optimization
Restructure and enhance content to match what AI systems extract. This is the execution mode — specific patterns, specific changes.

### Mode 3: Monitoring
Set up systems to track AI citations over time — so you know when you appear, when you disappear, and when a competitor takes your spot.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-17
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## The 3 Pillars of AI Citability

Every AI SEO decision flows from these three:

### Pillar 1: Structure (Extractable)

AI systems pull content in chunks. They don't read your whole article and then paraphrase it — they find the paragraph, list, or definition that directly answers the query and lift it.

Your content needs to be structured so that answers are self-contained and extractable:
- Definition block for "what is X"
- Numbered steps for "how to do X"
- Comparison table for "X vs Y"
- FAQ block for "questions about X"
- Statistics with attribution for "data on X"

Content that buries the answer in page 3 of a 4,000-word essay is not extractable. The AI won't find it.

### Pillar 2: Authority (Citable)

AI systems don't just pull the most relevant answer — they pull the most credible one. Authority signals in the AI era:

- **Domain authority**: High-DA domains get preferential treatment (traditional SEO signal still applies)
- **Author attribution**: Named authors with credentials beat anonymous pages
- **Citation chain**: Your content cites credible sources → you're seen as credible in turn
- **Recency**: AI systems prefer current information for time-sensitive queries
- **Original data**: Pages with proprietary research, surveys, or studies get cited more — AI systems value unique data they can't get elsewhere

### Pillar 3: Presence (Discoverable)

AI systems need to be able to find and index your content. This is the technical layer:

- **Bot access**: AI crawlers must be allowed in robots.txt (GPTBot, PerplexityBot, ClaudeBot, etc.)
- **Crawlability**: Fast page load, clean HTML, no JavaScript-only content
- **Schema markup**: Structured data (Article, FAQPage, HowTo, Product) helps AI systems understand your content type
- **Canonical signals**: Duplicate content confuses AI systems even more than traditional search
- **HTTPS and security**: AI crawlers won't index pages with security warnings

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-18
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Mode 2: Content Optimization

### The Content Patterns That Get Cited

These are the block types AI systems reliably extract. Add at least 2-3 per key page.

See `references/content-patterns.md` for ready-to-use templates for each pattern.

**Pattern 1: Definition Block**
The AI's answer to "what is X" almost always comes from a tight, self-contained definition. Format:

> **[Term]** is [concise definition in 1-2 sentences]. [One sentence of context or why it matters].

Placed within the first 300 words of the page. No hedging, no preamble. Just the definition.

**Pattern 2: Numbered Steps (How-To)**
For process queries ("how do I X"), AI systems pull numbered steps almost universally. Requirements:
- Steps are numbered
- Each step is actionable (verb-first)
- Each step is self-contained (could be quoted alone and still make sense)
- 5-10 steps maximum (AI truncates longer lists)

**Pattern 3: Comparison Table**
"X vs Y" queries almost always result in table citations. Two-column tables comparing features, costs, pros/cons — these get extracted verbatim. Format matters: clean markdown table with headers wins.

**Pattern 4: FAQ Block**
Explicit Q&A pairs signal to AI: "this is the question, this is the answer." Mark up with FAQPage schema. Questions should exactly match how people phrase queries (voice search, question-style).

**Pattern 5: Statistics With Attribution**
"According to [Source Name] ([Year]), X% of [population] [finding]." This format is extractable because it has a complete citation. Naked statistics without attribution get deprioritized — the AI can't verify the source.

**Pattern 6: Expert Quote Block**
Attributed quotes from named experts get cited. The AI picks up: "According to [Name], [Role at Organization]: '[quote]'" as a citable unit. Build in a few of these per key piece.

### Rewriting for Extractability

When optimizing existing content:

1. **Lead with the answer** — The first paragraph should contain the core answer to the target query. Don't save it for the conclusion.

2. **Self-contained sections** — Every H2 section should be answerable as a standalone excerpt. If you have to read the introduction to understand a section, it's not self-contained.

3. **Specific over vague** — "Response time improved by 40%" beats "significant improvement." AI systems prefer citable specifics.

4. **Plain language summaries** — After complex explanations, add a 1-2 sentence plain language summary. This is what AI often lifts.

5. **Named sources** — Replace "experts say" with "[Researcher Name], [Year]." Replace "studies show" with "[Organization] found in their [Year] survey."

### Schema Markup for AI Discoverability

Schema doesn't directly make you appear in AI results — but it helps AI systems understand your content type and structure. Priority schemas:

| Schema Type | Use When | Impact |
|---|---|---|
| `Article` | Any editorial content | Establishes content as authoritative information |
| `FAQPage` | You have FAQ section | High — AI extracts Q&A pairs directly |
| `HowTo` | Step-by-step guides | High — AI uses step structure for process queries |
| `Product` | Product pages | Medium — appears in product comparison queries |
| `Organization` | Company pages | Medium — establishes entity authority |
| `Person` | Author pages | Medium — author credibility signal |

Implement via JSON-LD in the page `<head>`. Validate at schema.org/validator.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-19
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Proactive Triggers

Flag these without being asked:

- **AI bots blocked in robots.txt** — If GPTBot, PerplexityBot, or ClaudeBot are blocked, flag it immediately. Zero AI visibility is possible until fixed, and it's a 5-minute fix. This trumps everything else.
- **No definition block on target pages** — If the page targets informational queries but has no self-contained definition in the first 300 words, it won't win definitional AI Overviews. Flag before doing anything else.
- **Unattributed statistics** — If key pages contain statistics without named sources and years, they're less citable than competitor pages that do. Flag all naked stats.
- **Schema markup absent** — If the site has no FAQPage or HowTo schema on relevant pages, flag it as a quick structural win with asymmetric impact for process and FAQ queries.
- **JavaScript-rendered content** — If important content only appears after JavaScript execution, AI crawlers may not see it at all. Flag content that's hidden behind JS rendering.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-20
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Communication

All output follows the structured standard:
- **Bottom line first** — answer before explanation
- **What + Why + How** — every finding includes all three
- **Actions have owners and deadlines** — no "consider reviewing..."
- **Confidence tagging** — 🟢 verified (confirmed by citation test) / 🟡 medium (pattern-based) / 🔴 assumed (extrapolated from limited data)

AI SEO is still a young field. Be honest about confidence levels. What gets cited can change as platforms evolve. State what's proven vs. what's pattern-matching.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-21
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

---
type: skill
lifecycle: stable
inheritance: inheritable
name: analytics-tracking
description: Set up, audit, and debug analytics tracking implementation — GA4, Google Tag Manager, event taxonomy, conversion tracking, and data quality. Use when building a tracking plan from scratch, auditing...
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

# Analytics Tracking

You are an expert in analytics implementation. Your goal is to make sure every meaningful action in the customer journey is captured accurately, consistently, and in a way that can actually be used for decisions — not just for the sake of having data.

Bad tracking is worse than no tracking. Duplicate events, missing parameters, unconsented data, and broken conversions lead to decisions made on bad data. This skill is about building it right the first time, or finding what's broken and fixing it.

## Before Starting

**Check for context first:**
If `marketing-context.md` exists, read it before asking questions. Use that context and only ask for what's missing.

Gather this context:

### 1. Current State
- Do you have GA4 and/or GTM already set up? If so, what's broken or missing?
- What's your tech stack? (React SPA, Next.js, WordPress, custom, etc.)
- Do you have a consent management platform (CMP)? Which one?
- What events are you currently tracking (if any)?

### 2. Business Context
- What are your primary conversion actions? (signup, purchase, lead form, free trial start)
- What are your key micro-conversions? (pricing page view, feature discovery, demo request)
- Do you run paid campaigns? (Google Ads, Meta, LinkedIn — affects conversion tracking needs)

### 3. Goals
- Building from scratch, auditing existing, or debugging a specific issue?
- Do you need cross-domain tracking? Multiple properties or subdomains?
- Server-side tagging requirement? (GDPR-sensitive markets, performance concerns)

## How This Skill Works

### Mode 1: Set Up From Scratch
No analytics in place — we'll build the tracking plan, implement GA4 and GTM, define the event taxonomy, and configure conversions.

### Mode 2: Audit Existing Tracking
Tracking exists but you don't trust the data, coverage is incomplete, or you're adding new goals. We'll audit what's there, gap-fill, and clean up.

### Mode 3: Debug Tracking Issues
Specific events are missing, conversion numbers don't add up, or GTM preview shows events firing but GA4 isn't recording them. Structured debugging workflow.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-23
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## GA4 Setup

### Data Stream Configuration

1. **Create property** in GA4 → Admin → Properties → Create
2. **Add web data stream** with your domain
3. **Enhanced Measurement** — enable all, then review:
   - ✅ Page views (keep)
   - ✅ Scrolls (keep)
   - ✅ Outbound clicks (keep)
   - ✅ Site search (keep if you have search)
   - ⚠️ Video engagement (disable if you'll track videos manually — avoid duplicates)
   - ⚠️ File downloads (disable if you'll track these in GTM for better parameters)
4. **Configure domains** — add all subdomains used in your funnel

### Custom Events in GA4

For any event not auto-collected, create it in GTM (preferred) or via gtag directly:

**Via gtag:**
```javascript
gtag('event', 'signup_completed', {
  method: 'email',
  user_id: 'usr_abc123',
  plan_name: "trial"
});
```

**Via GTM data layer (preferred — see GTM section):**
```javascript
window.dataLayer.push({
  event: 'signup_completed',
  signup_method: 'email',
  user_id: 'usr_abc123'
});
```

### Conversions Configuration

Mark these events as conversions in GA4 → Admin → Conversions:
- `signup_completed`
- `checkout_completed`
- `demo_requested`
- `trial_started` (if separate from signup)

**Rules:**
- Max 30 conversion events per property — curate, don't mark everything
- Conversions are retroactive in GA4 — turning one on applies to 6 months of history
- Don't mark micro-conversions as conversions unless you're optimizing ad campaigns for them

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-24
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Conversion Tracking: Platform-Specific

### Google Ads

1. Create conversion action in Google Ads → Tools → Conversions
2. Import GA4 conversions (recommended — single source of truth) OR use the Google Ads tag
3. Set attribution model: **Data-driven** (if >50 conversions/month), otherwise **Last click**
4. Conversion window: 30 days for lead gen, 90 days for high-consideration purchases

### Meta (Facebook/Instagram) Pixel

1. Install Meta Pixel base code via GTM
2. Standard events: `PageView`, `Lead`, `CompleteRegistration`, `Purchase`
3. Conversions API (CAPI) strongly recommended — client-side pixel loses ~30% of conversions due to ad blockers and iOS
4. CAPI requires server-side implementation (Meta's docs or GTM server-side)

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-25
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Data Quality

### Deduplication

**Events firing twice?** Common causes:
- GTM tag + hardcoded gtag both firing
- Enhanced Measurement + custom GTM tag for same event
- SPA router firing pageview on every route change AND GTM page view tag

Fix: Audit GTM Preview for double-fires. Check Network tab in DevTools for duplicate hits.

### Bot Filtering

GA4 filters known bots automatically. For internal traffic:
1. GA4 → Admin → Data Filters → Internal Traffic
2. Add your office IPs and developer IPs
3. Enable filter (starts as testing mode — activate it)

### Consent Management Impact

Under GDPR/ePrivacy, analytics may require consent. Plan for this:

| Consent Mode setting | Impact |
|---------------------|--------|
| **No consent mode** | Visitors who decline cookies → zero data |
| **Basic consent mode** | Visitors who decline → zero data |
| **Advanced consent mode** | Visitors who decline → modeled data (GA4 estimates using consented users) |

**Recommendation:** Implement Advanced Consent Mode via GTM. Requires CMP integration (Cookiebot, OneTrust, Usercentrics, etc.).

Expected consent rate by region: 60-75% EU, 85-95% US.

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-26
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Output Artifacts

| When you ask for... | You get... |
|--------------------|-----------|
| "Build a tracking plan" | Event taxonomy table (events + parameters + triggers), GA4 configuration checklist, GTM container structure |
| "Audit my tracking" | Gap analysis vs. standard SaaS funnel, data quality scorecard (0-100), prioritized fix list |
| "Set up GTM" | Tag/trigger/variable configuration for each event, container setup checklist |
| "Debug missing events" | Structured debugging steps using GTM Preview + GA4 DebugView + Network tab |
| "Set up conversion tracking" | Conversion action configuration for GA4 + Google Ads + Meta |
| "Generate tracking plan" | Run `scripts/tracking_plan_generator.py` with your inputs |

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-27
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Related Skills

- **campaign-analytics**: Use for analyzing marketing performance and channel ROI. NOT for implementation — use this skill for tracking setup.
- **ab-test-setup**: Use when designing experiments. NOT for event tracking setup (though this skill's events feed A/B tests).
- **analytics-tracking** (this skill): covers setup only. For dashboards and reporting, use campaign-analytics.
- **seo-audit**: Use for technical SEO. NOT for analytics tracking (though both use GA4 data).
- **gdpr-dsgvo-expert**: Use for GDPR compliance posture. This skill covers consent mode implementation; that skill covers the full compliance framework.


---
type: skill
lifecycle: stable
inheritance: inheritable
name: app-store-optimization
description: App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store....
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

# App Store Optimization (ASO)

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-29
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Metadata Optimization Workflow

Optimize app store listing elements for search ranking and conversion.

### Workflow: Optimize App Metadata

1. Audit current metadata against platform limits:
   - Title character count and keyword presence
   - Subtitle/short description usage
   - Keyword field efficiency (iOS)
   - Description keyword density
2. Optimize title following formula:
   ```
   [Brand Name] - [Primary Keyword] [Secondary Keyword]
   ```
3. Write subtitle (iOS) or short description (Android):
   - Focus on primary benefit
   - Include secondary keyword
   - Use action verbs
4. Optimize keyword field (iOS only):
   - Remove duplicates from title
   - Remove plurals (Apple indexes both forms)
   - No spaces after commas
   - Prioritize by score
5. Rewrite full description:
   - Hook paragraph with value proposition
   - Feature bullets with keywords
   - Social proof section
   - Call to action
6. Validate character counts for each field
7. Calculate keyword density (target 2-3% primary)
8. **Validation:** All fields within character limits; primary keyword in title; no keyword stuffing (>5%); natural language preserved

### Platform Character Limits

| Field | Apple App Store | Google Play Store |
|-------|-----------------|-------------------|
| Title | 30 characters | 50 characters |
| Subtitle | 30 characters | N/A |
| Short Description | N/A | 80 characters |
| Keywords | 100 characters | N/A |
| Promotional Text | 170 characters | N/A |
| Full Description | 4,000 characters | 4,000 characters |
| What's New | 4,000 characters | 500 characters |

### Description Structure

```
PARAGRAPH 1: Hook (50-100 words)
├── Address user pain point
├── State main value proposition
└── Include primary keyword

PARAGRAPH 2-3: Features (100-150 words)
├── Top 5 features with benefits
├── Bullet points for scanability
└── Secondary keywords naturally integrated

PARAGRAPH 4: Social Proof (50-75 words)
├── Download count or rating
├── Press mentions or awards
└── Summary of user testimonials

PARAGRAPH 5: Call to Action (25-50 words)
├── Clear next step
└── Reassurance (free trial, no signup)
```

See: `references/platform-requirements.md`

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-30
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## App Launch Workflow

Execute a structured launch for maximum initial visibility.

### Workflow: Launch App to Stores

1. Complete pre-launch preparation (4 weeks before):
   - Finalize keywords and metadata
   - Prepare all visual assets
   - Set up analytics (Firebase, Mixpanel)
   - Build press kit and media list
2. Submit for review (2 weeks before):
   - Complete all store requirements
   - Verify compliance with guidelines
   - Prepare launch communications
3. Configure post-launch systems:
   - Set up review monitoring
   - Prepare response templates
   - Configure rating prompt timing
4. Execute launch day:
   - Verify app is live in both stores
   - Announce across all channels
   - Begin review response cycle
5. Monitor initial performance (days 1-7):
   - Track download velocity hourly
   - Monitor reviews and respond within 24 hours
   - Document any issues for quick fixes
6. Conduct 7-day retrospective:
   - Compare performance to projections
   - Identify quick optimization wins
   - Plan first metadata update
7. Schedule first update (2 weeks post-launch)
8. **Validation:** App live in stores; analytics tracking; review responses within 24h; download velocity documented; first update scheduled

### Pre-Launch Checklist

| Category | Items |
|----------|-------|
| Metadata | Title, subtitle, description, keywords |
| Visual Assets | Icon, screenshots (all sizes), video |
| Compliance | Age rating, privacy policy, content rights |
| Technical | App binary, signing certificates |
| Analytics | SDK integration, event tracking |
| Marketing | Press kit, social content, email ready |

### Launch Timing Considerations

| Factor | Recommendation |
|--------|----------------|
| Day of week | Tuesday-Wednesday (avoid weekends) |
| Time of day | Morning in target market timezone |
| Seasonal | Align with relevant category seasons |
| Competition | Avoid major competitor launch dates |

See: `references/aso-best-practices.md`

---
type: skill
lifecycle: stable
inheritance: inheritable
name: marketing-skill-skill-31
description: Skill from marketing-skill plugin
tier: extended
applyTo: '**/*marketing*,**/*seo*,**/*campaign*,**/*brand*'
currency: 2026-05-03
lastReviewed: 2026-05-03
---

## Before/After Examples

### Title Optimization

**Productivity App:**

| Version | Title | Analysis |
|---------|-------|----------|
| Before | "MyTasks" | No keywords, brand only (8 chars) |
| After | "MyTasks - Todo List & Planner" | Primary + secondary keywords (29 chars) |

**Fitness App:**

| Version | Title | Analysis |
|---------|-------|----------|
| Before | "FitTrack Pro" | Generic modifier (12 chars) |
| After | "FitTrack: Workout Log & Gym" | Category keywords (27 chars) |

### Subtitle Optimization (iOS)

| Version | Subtitle | Analysis |
|---------|----------|----------|
| Before | "Get Things Done" | Vague, no keywords |
| After | "Daily Task Manager & Planner" | Two keywords, benefit clear |

### Keyword Field Optimization (iOS)

**Before (Inefficient - 89 chars, 8 keywords):**
```
task manager, todo list, productivity app, daily planner, reminder app
```

**After (Optimized - 97 chars, 14 keywords):**
```
task,todo,checklist,reminder,organize,daily,planner,schedule,deadline,goals,habit,widget,sync,team
```

**Improvements:**
- Removed spaces after commas (+8 chars)
- Removed duplicates (task manager → task

…(truncated)
