Skip to content

Database

Tables

{prefix}wc_status_log_orders

Logs every WooCommerce order status transition.

Column Type Description
id int unsigned Primary key
order_id bigint unsigned FK → orders table (posts or HPOS)
subscription_id bigint unsigned FK → parent subscription, if any
status_id tinyint unsigned FK → wc_statuses.id (new status)
status_id_prev tinyint unsigned FK → wc_statuses.id (previous status)
customer_id bigint unsigned FK → wp_users.ID
time datetime When the transition occurred
context varchar(30) Optional tag (e.g. renewal)

{prefix}wc_status_log_subscriptions

Logs every WooCommerce Subscriptions status transition.

Column Type Description
id int unsigned Primary key
subscription_id bigint unsigned FK → subscription (posts or HPOS)
status_id tinyint unsigned FK → wc_statuses.id (new status)
status_id_prev tinyint unsigned FK → wc_statuses.id (previous status)
customer_id bigint unsigned FK → wp_users.ID
time datetime When the transition occurred
context varchar(30) Optional tag (e.g. renewal)

ER diagram

erDiagram
    wp_users {
        bigint ID PK
    }
    wp_posts {
        bigint ID PK
    }
    wp_wc_orders {
        bigint id PK
    }
    wc_statuses {
        tinyint id PK
        varchar name
    }
    wc_status_log_orders {
        int id PK
        bigint order_id FK
        bigint subscription_id FK
        tinyint status_id FK
        tinyint status_id_prev FK
        bigint customer_id FK
        datetime time
        varchar context
    }
    wc_status_log_subscriptions {
        int id PK
        bigint subscription_id FK
        tinyint status_id FK
        tinyint status_id_prev FK
        bigint customer_id FK
        datetime time
        varchar context
    }

    wc_status_log_orders }o--|| wc_statuses : "status_id"
    wc_status_log_orders }o--|| wc_statuses : "status_id_prev"
    wc_status_log_orders }o--o| wp_users : "customer_id"
    wc_status_log_orders }o--|| wp_posts : "order_id (classic)"
    wc_status_log_orders }o--|| wp_wc_orders : "order_id (HPOS)"
    wc_status_log_orders }o--o| wp_posts : "subscription_id (classic)"
    wc_status_log_orders }o--o| wp_wc_orders : "subscription_id (HPOS)"

    wc_status_log_subscriptions }o--|| wc_statuses : "status_id"
    wc_status_log_subscriptions }o--|| wc_statuses : "status_id_prev"
    wc_status_log_subscriptions }o--o| wp_users : "customer_id"
    wc_status_log_subscriptions }o--|| wp_posts : "subscription_id (classic)"
    wc_status_log_subscriptions }o--|| wp_wc_orders : "subscription_id (HPOS)"

The order_id / subscription_id foreign keys switch between wp_posts and wp_wc_orders depending on the active WooCommerce data store. See Architecture → HPOS compatibility.