Analytics Storage

Analytics data storage uses WordPress post meta for efficient click tracking and engagement metrics.

Storage Method

Post Meta Integration
Analytics stored using _smi_click_analytics meta key:

  • Single meta entry per post
  • JSON-encoded structured data
  • Atomic update operations
  • WordPress cache integration

Data Structure

{
    "attachment_123": {
        "clicks": 15,
        "last_click": "2023-10-15 14:30:00",
        "first_click": "2023-10-10 09:15:00"
    },
    "attachment_456": {
        "clicks": 8,
        "last_click": "2023-10-15 12:45:00",
        "first_click": "2023-10-12 16:20:00"
    }
}

Click Tracking

Data Collection
Real-time button click recording:

  • Attachment-specific metrics
  • Timestamp precision
  • Incremental counting
  • First/last click tracking

Update Process

// Atomic click tracking
$analytics = get_post_meta($post_id, '_smi_click_analytics', true) ?: [];
$analytics["attachment_{$attachment_id}"] = [
    'clicks' => ($analytics["attachment_{$attachment_id}"]['clicks'] ?? 0) + 1,
    'last_click' => current_time('mysql'),
    'first_click' => $analytics["attachment_{$attachment_id}"]['first_click'] ?? current_time('mysql')
];
update_post_meta($post_id, '_smi_click_analytics', $analytics);

Performance Characteristics

Efficient Storage

  • Single meta entry per post minimizes database overhead
  • JSON encoding provides structured access
  • WordPress object cache integration
  • Minimal impact on site performance

Scalability

  • Suitable for high-volume sites
  • Efficient bulk data retrieval
  • Aggregation-friendly structure
  • Export capabilities

Analytics Calculations

Engagement Metrics
Post-level engagement analysis:

  • Total clicks per post
  • Most popular attachments
  • Click distribution patterns
  • Engagement trends over time

Conversion Analysis
Integration with job data for conversion tracking:

// Calculate conversion rates
$clicks = array_sum(array_column($analytics, 'clicks'));
$conversions = JobManager::get_count(['post_id' => $post_id, 'status' => 'completed']);
$conversion_rate = $clicks > 0 ? ($conversions / $clicks) * 100 : 0;

Data Retrieval

Single Post Analytics

$analytics = AnalyticsTracker::get_post_analytics($post_id);
// Returns: Array of click data by attachment ID

Bulk Analytics

$bulk_data = AnalyticsTracker::get_bulk_analytics($post_ids);
// Returns: Associative array indexed by post ID

Privacy Considerations

Data Minimization

  • No personal information stored
  • IP addresses not tracked
  • Anonymous engagement metrics only
  • GDPR-compliant data handling

Data Retention

  • Configurable retention periods
  • Bulk deletion capabilities
  • Export functionality
  • Right to erasure compliance

Integration Points

Admin Interface

  • Analytics page data source
  • Performance report generation
  • Export functionality
  • Trend analysis

REST API

  • Click tracking endpoint integration
  • Real-time data collection
  • Frontend JavaScript compatibility
  • Error handling

Database Optimization

Index Utilization
WordPress post meta indexes support efficient queries:

  • Meta key index for _smi_click_analytics
  • Post ID index for bulk operations
  • Combined indexes for complex queries

Query Patterns

-- Get analytics for specific posts
SELECT post_id, meta_value 
FROM wp_postmeta 
WHERE meta_key = '_smi_click_analytics'
AND post_id IN (123, 456, 789);

-- Find posts with high engagement
SELECT post_id, meta_value
FROM wp_postmeta 
WHERE meta_key = '_smi_click_analytics'
AND JSON_EXTRACT(meta_value, '$.*.clicks') > 10;

Backup and Recovery

Data Export

  • CSV export functionality
  • JSON data format preservation
  • Post association maintenance
  • Time range filtering

Import Capabilities

  • Analytics data restoration
  • Migration between sites
  • Bulk data processing
  • Validation and cleanup