🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
99 lines
2.2 KiB
Markdown
99 lines
2.2 KiB
Markdown
# Component 5: Realtime Watcher
|
|
|
|
**Type:** Standalone Service
|
|
**Priority:** P3
|
|
**Status:** Deferred
|
|
|
|
## Goal
|
|
|
|
Real-time GA4 monitoring with periodic snapshots to Slack.
|
|
|
|
## Status
|
|
|
|
**Deferred** — Complete components 1-4 first.
|
|
|
|
## Original Concept
|
|
|
|
- Screenshot GA4 real-time dashboard every 5 minutes
|
|
- Send screenshots to Slack channel
|
|
- Trigger via Slack command or user request
|
|
|
|
## Challenges
|
|
|
|
| Challenge | Issue |
|
|
|-----------|-------|
|
|
| Browser auth | GA4 requires Google login |
|
|
| Maintenance | Screenshots break when UI changes |
|
|
| Complexity | Headless browser + auth + scheduling |
|
|
| Value | Screenshots may not be best UX |
|
|
|
|
## Simplified Approach (Recommended)
|
|
|
|
Instead of screenshots, use the GA4 Real-time API:
|
|
|
|
1. Fetch real-time data via API
|
|
2. Generate chart image with Plotly
|
|
3. Send image to Slack
|
|
|
|
### Benefits
|
|
|
|
- No browser automation
|
|
- More reliable
|
|
- Cleaner output
|
|
- Programmatic data access
|
|
|
|
## Structure (Future)
|
|
|
|
```
|
|
05-realtime-watcher/
|
|
├── README.md
|
|
├── realtime_api.py # GA4 Real-time API client
|
|
├── chart_generator.py # Generate chart images
|
|
├── slack_sender.py # Upload to Slack
|
|
├── watcher.py # Main service
|
|
├── config.yaml
|
|
└── requirements.txt
|
|
```
|
|
|
|
## GA4 Real-time API
|
|
|
|
```python
|
|
from google.analytics.data_v1beta import BetaAnalyticsDataClient
|
|
from google.analytics.data_v1beta.types import RunRealtimeReportRequest
|
|
|
|
def get_realtime_users(property_id: str):
|
|
client = BetaAnalyticsDataClient()
|
|
|
|
request = RunRealtimeReportRequest(
|
|
property=f"properties/{property_id}",
|
|
dimensions=[{"name": "unifiedScreenName"}],
|
|
metrics=[{"name": "activeUsers"}]
|
|
)
|
|
|
|
response = client.run_realtime_report(request)
|
|
return response
|
|
```
|
|
|
|
## Trigger Options
|
|
|
|
1. **Slack Command:** `/ga-realtime start`
|
|
2. **Scheduled:** During campaign launches
|
|
3. **API Endpoint:** Webhook trigger
|
|
|
|
## Implementation (When Ready)
|
|
|
|
1. Build real-time API client
|
|
2. Create chart generator
|
|
3. Add Slack integration
|
|
4. Implement start/stop controls
|
|
5. Add session timeout (1 hour default)
|
|
|
|
## Checklist (Future)
|
|
|
|
- [ ] Real-time API client
|
|
- [ ] Chart generation
|
|
- [ ] Slack integration
|
|
- [ ] Trigger mechanism
|
|
- [ ] Session management
|
|
- [ ] Deployment
|