Skip to content

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_id is a soft reference — no foreign key constraint exists at the database level.