# OurDigital GTM Audit

Lightweight Google Tag Manager audit toolkit using Playwright browser automation.

> For comprehensive GTM management including dataLayer tag generation, see `14-ourdigital-gtm-manager`.

## Project Overview

This tool audits GTM container installations, validates dataLayer events, tests form tracking, simulates e-commerce checkout flows, and generates comprehensive reports.

## Quick Commands

```bash
# Install dependencies
pip install playwright
playwright install chromium

# Run full audit
python gtm_audit.py --url "https://example.com" --journey full

# Form tracking audit
python gtm_audit.py --url "https://example.com/contact" --journey form

# E-commerce checkout flow
python gtm_audit.py --url "https://example.com/cart" --journey checkout

# DataLayer deep inspection
python gtm_audit.py --url "https://example.com" --journey datalayer

# With specific container validation
python gtm_audit.py --url "https://example.com" --container "GTM-XXXXXX"
```

## Journey Types

| Journey | Description |
|---------|-------------|
| `pageview` | Basic page load + scroll simulation |
| `scroll` | Scroll depth trigger testing (25%, 50%, 75%, 90%) |
| `form` | Form discovery, field analysis, interaction simulation |
| `checkout` | E-commerce flow: cart → checkout → shipping → payment → purchase |
| `datalayer` | Deep dataLayer validation and event sequence analysis |
| `full` | All of the above combined |

## Output

Generates `gtm_audit_report.json` with:
- Container status (installed, position, duplicates)
- DataLayer analysis (events, validation issues, sequence errors)
- Form analysis (forms found, tracking readiness, missing events)
- Checkout analysis (elements detected, flow issues)
- Network requests (GA4, Meta, LinkedIn, etc.)
- Recommendations and checklist

## Key Files

- `gtm_audit.py` - Main audit script
- `docs/ga4_events.md` - GA4 event specifications
- `docs/ecommerce_schema.md` - E-commerce dataLayer structures
- `docs/form_tracking.md` - Form event patterns
- `docs/checkout_flow.md` - Checkout funnel sequence
- `docs/datalayer_validation.md` - Validation rules
- `docs/common_issues.md` - Frequent problems and fixes

## Coding Guidelines

When modifying this tool:

1. **Tag Destinations**: Add new platforms to `TAG_DESTINATIONS` dict
2. **Event Validation**: Add requirements to `GA4_EVENT_REQUIREMENTS` dict
3. **Form Selectors**: Extend `FormAnalyzer.discover_forms()` for custom forms
4. **Checkout Elements**: Add selectors to `CheckoutFlowAnalyzer.detect_checkout_elements()`

## Korean Market Considerations

- Support Korean payment methods (카카오페이, 네이버페이, 토스)
- Handle KRW currency (no decimals)
- Include Kakao Pixel and Naver Analytics patterns
- Korean button text patterns (장바구니, 결제하기, 주문하기)

## Testing a New Site

1. Run with `--journey full` first to get complete picture
2. Check `gtm_audit_report.json` for issues
3. Focus on specific areas with targeted journey types
4. Use `--container GTM-XXXXXX` to validate specific container

## Common Tasks

### Add support for new tag platform
```python
# In TAG_DESTINATIONS dict
"NewPlatform": [
    r"tracking\.newplatform\.com",
    r"pixel\.newplatform\.com",
],
```

### Add custom form field detection
```python
# In FormAnalyzer.discover_forms()
# Add new field types or selectors
```

### Extend checkout flow for specific platform
```python
# In CheckoutFlowAnalyzer.detect_checkout_elements()
# Add platform-specific selectors
```

## Notion Output (Required)

**IMPORTANT**: All GTM audit reports MUST be saved to the OurDigital GTM Audit Archive database.

### Database Configuration

| Field | Value |
|-------|-------|
| Database ID | `2cf581e5-8a1e-8163-997f-ccb387156a20` |
| URL | https://www.notion.so/dintelligence/OurDigital-GTM-Audit-Archive-2cf581e58a1e80c8b358f1625356e931 |

### Required Properties

| Property | Type | Description |
|----------|------|-------------|
| Site | Title | Site name or domain |
| URL | URL | Audited page URL |
| Audit Date | Date | Audit date (YYYY-MM-DD) |
| Audit ID | Rich Text | Format: GTM-YYYYMMDD-NNN |
| Audit Status | Select | Pass, Warning, Fail |
| GTM Status | Select | Installed, Not Found, Multiple Containers |
| Journey Type | Select | full, pageview, scroll, form, checkout, datalayer |
| Tags Fired | Multi-select | GA4, Google Ads, Meta Pixel, LinkedIn, TikTok, Kakao, Naver |
| Container IDs | Rich Text | GTM container ID(s) |
| Issues Count | Number | Total issues found |
| Critical Issues | Number | Critical issues count |
| Summary | Rich Text | Brief audit summary |

### Language Guidelines

- Report content in Korean (한국어)
- Keep technical English terms as-is (e.g., GTM, dataLayer, GA4)
- URLs and code remain unchanged

