# GSC & GA4 Content Decision Guide

**Last Updated:** 2026-03-16

Use Google Search Console (GSC) and Google Analytics 4 (GA4) data to inform content optimization decisions for existing blog posts. This guide applies to the improvement workflow (lexikon and ratgeber).

## Overview

For existing posts, we have:

- **performance-gsc.json** – Clicks, impressions, CTR, position, top queries (last 90 days, last year)
- **performance-ga4.json** – Page views, sessions, bounce rate, average engagement time

These metrics inform outline creation, H2/FAQ mapping, meta optimization, and content depth decisions.

## GSC Query → Decision Logic

### High Impressions, Low CTR (Position 1–3)

**Signal:** Query ranks in top 3 but CTR is below expected (e.g. < 3% for position 1–3).

**Action:** Meta title and description optimization.

- Improve title to be more compelling and click-worthy
- Ensure primary keyword near start
- Add benefit or urgency in meta description
- Test different CTAs in description

**Where to find:** SERP_ANALYSIS.md "GSC Query Opportunities" → Meta Optimization section (auto-generated by `generate-serp-analysis-skeleton.php`).

### High Impressions, Position 4–10

**Signal:** Query has significant impressions but ranks just outside top 3.

**Action:** Content expansion for featured snippet opportunity.

- Add H2 or FAQ that directly answers the query
- Use answer-first format (40–60 words for definition, list/table for steps)
- Ensure direct answer in first paragraph of the section
- Consider 120–150 character answer capsule after question H2s (AEO/GEO)

**Where to find:** SERP_ANALYSIS.md "GSC Query Opportunities" → Content Expansion section; `data/section-briefs.md` "GSC queries to address" per H2.

### Queries Not in Content or FAQs

**Signal:** Top GSC query does not appear in any H2 or FAQ.

**Action:** Add H2 or FAQ to address the query.

- Prioritize by impressions and clicks
- Use `generate-section-briefs.php` – it maps GSC queries to sections by keyword overlap
- Manual review: ensure high-value queries are covered in outline

### Position Decline (Year-over-Year)

**Signal:** Average position or query-specific position has declined vs. previous year.

**Action:** Content refresh trigger.

- Re-run full improvement pipeline
- Update outdated information (dates, values, regulations)
- Expand thin sections
- Add missing competitor topics

## GA4 Engagement → Decision Logic

### Bounce Rate > 60%

**Possible causes:**

- Content doesn't match search intent
- Page is hard to scan (long paragraphs, no structure)
- Answer buried deep in content
- Missing expected format (e.g. table, list)

**Actions:**

- Add answer-first formatting (direct answer in first 40–60 words)
- Improve scannability (shorter paragraphs, H3s, lists, tables)
- Ensure definition in first 20% of content
- Verify meta description matches content (no bait-and-switch)

### Average Engagement Time < 2 Minutes

**Possible causes:**

- Content too thin for topic
- User finds answer quickly and leaves (acceptable for definition queries)
- Content doesn't hold interest

**Actions:**

- If content is thin: expand per competitive-depth target
- If definition query: ensure answer is complete; engagement may be naturally short
- Add practical examples, tables, or tools to increase value

### When to Treat as Content Quality vs. Intent Mismatch

| Scenario | Likely Cause | Action |
|----------|--------------|--------|
| High bounce + short engagement + thin content | Content quality | Expand, add structure, answer-first |
| High bounce + long engagement | Intent mismatch or technical issue | Review search intent; check page load |
| Low bounce + short engagement | User found answer quickly | May be acceptable; ensure answer is complete |
| Declining engagement over time | Content aging or competitor improvement | Full content refresh |

## Data Sources

| File | Location | Key Fields |
|------|----------|------------|
| performance-gsc.json | `docs/content/blog/posts/{category}/{slug}/data/` | metrics.last_90_days, metrics.top_queries |
| performance-ga4.json | Same | page_views, sessions, bounce_rate, avg_engagement |

## Scripts That Use GSC/GA4

- **derive-target-keywords.php** – Uses GSC top_queries for primary/secondary keyword derivation
- **collect-faq-research-data.php** – Merges GSC queries into faq-research.json
- **generate-faq-questions.php** – Prioritizes GSC queries in FAQ generation
- **generate-section-briefs.php** – Maps GSC queries to H2 sections
- **generate-serp-analysis-skeleton.php** – Adds "GSC Query Opportunities" section
- **generate-post-documentation.php** – Populates IMPROVEMENT_PLAN placeholders
- **generate-pre-content-checklist.php** – Adds GA4/GSC review items (improvement flow)

## Related Documentation

- [CONTENT_OPTIMIZATION_WORKFLOW.md](CONTENT_OPTIMIZATION_WORKFLOW.md)
- [BLOG_POST_IMPROVEMENT_PROCESS.md](BLOG_POST_IMPROVEMENT_PROCESS.md)
- [DATA_INTEGRATION_GUIDE.md](guides/DATA_INTEGRATION_GUIDE.md)
- [FAQ_GAP_REMEDIATION_RUNBOOK.md](FAQ_GAP_REMEDIATION_RUNBOOK.md)
