The plugin creates two custom database tables on activation using dbDelta.
{prefix}aop_traffic_visits — stores every individual visit record.
| Column | Type | Description |
|---|---|---|
id | BIGINT UNSIGNED | Auto-increment primary key |
source | VARCHAR(255) | Traffic source |
medium | VARCHAR(255) | Traffic medium |
campaign | VARCHAR(255) | Campaign name |
channel | VARCHAR(100) | Traffic channel |
landing_page | TEXT | Landing page path and query string |
referrer | VARCHAR(500) | HTTP referrer |
click_id_type | VARCHAR(50) | Click ID type detected (e.g., gclid) |
visitor_hash | VARCHAR(64) | Anonymous SHA-256 visitor hash |
campaign_id | BIGINT UNSIGNED | Reference to campaigns table (nullable) |
device_type | VARCHAR(20) | Device type (desktop, mobile, tablet) |
browser | VARCHAR(50) | Browser name |
os | VARCHAR(50) | Operating system |
is_new_visitor | TINYINT(1) | 1 if this visitor hash has not been seen before |
created_at | DATETIME | When the visit was recorded |
{prefix}aop_campaigns — stores campaign definitions.
| Column | Type | Description |
|---|---|---|
id | BIGINT UNSIGNED | Auto-increment primary key |
name | VARCHAR(255) | Campaign display name |
slug | VARCHAR(255) | URL-safe slug (unique) |
source | VARCHAR(255) | utm_source value |
medium | VARCHAR(255) | utm_medium value |
campaign | VARCHAR(255) | utm_campaign value |
term | VARCHAR(255) | utm_term value |
content | VARCHAR(255) | utm_content value |
status | VARCHAR(20) | active, paused, or ended |
goal_visits | INT UNSIGNED | Target visit count |
tags | VARCHAR(500) | Comma-separated tags |
start_date | DATE | Campaign start date (nullable) |
end_date | DATE | Campaign end date (nullable) |
notes | TEXT | Internal notes |
created_at | DATETIME | Creation timestamp |
updated_at | DATETIME | Last updated timestamp |