Database¶
The plugin creates one custom table on activation: {prefix}klaviyo_events.
klaviyo_events¶
| Column | Type | Description |
|---|---|---|
id | int unsigned PK | Auto-increment primary key |
event_code | varchar(50) | Event type identifier (e.g. ORDER_PLACED) |
entity_id | int | WooCommerce entity ID (order ID, subscription ID, …) |
created_at | datetime | When the event was scheduled |
customer_properties | longtext (JSON) | Klaviyo customer/profile properties |
properties | longtext (JSON) | Event-specific properties |
data | longtext (JSON) | Internal data (e.g. force_event, $event_id) |
UNIQUE KEY unique_event (event_code, entity_id) — prevents duplicate events for the same entity. Events with force_event = true in data bypass this constraint by deleting the existing row before inserting.
ER diagram¶
erDiagram
klaviyo_events {
int id PK
varchar event_code
int entity_id
datetime created_at
longtext customer_properties
longtext properties
longtext data
}
wp_posts {
int ID PK
varchar post_type
varchar post_status
}
wp_users {
int ID PK
varchar user_email
}
klaviyo_events }o--|| wp_posts : "entity_id → order/subscription"
klaviyo_events }o--o| wp_users : "customer_properties.$id → user"
entity_idis a soft reference — no foreign key constraint exists at the database level.