Skip to content

Orders

All hooks related to order lifecycle, payments, shipping, and refunds.

order_created

fluent_cart/order_created — Fired when an order is created

When it runs: This action is fired immediately after a new order is created in the database, before any payment processing occurs.

Parameters:

  • $data (array): Order creation data
    php
    $data = [
        'order' => [
            'id' => 123,
            'customer_id' => 456,
            'status' => 'processing',
            'payment_status' => 'pending',
            'total' => 10000,
            'currency' => 'USD',
            'customer' => [],
            'shipping_address' => [],
            'billing_address' => []
        ],
        'customer' => [],
        'transaction' => []
    ];

Usage:

php
add_action('fluent_cart/order_created', function($data) {
    $order = $data['order'];
    // Send notification to admin
    wp_mail(
        get_option('admin_email'),
        'New Order #' . $order->id,
        'A new order has been created.'
    );
}, 10, 1);

order_paid_done

fluent_cart/order_paid_done — Fired when an order is paid (Subscription on one-time)

When it runs: This action is fired when an order's payment status changes to 'paid', after payment processing is complete.

Parameters:

  • $data (array): Order payment data
    php
    $data = [
        'order' => [
            'id' => 123,
            'customer_id' => 456,
            'payment_status' => 'paid',
            'total' => 10000,
            'customer' => [],
            'order_items' => [],
            'shipping_address' => [],
            'billing_address' => []
        ],
        'customer' => [],
        'transaction' => []
    ];

Usage:

php
add_action('fluent_cart/order_paid_done', function($data) {
    $order = $data['order'];
    // Grant access to membership
    update_user_meta($order->customer_id, 'membership_active', true);
}, 10, 1);

order_updated

fluent_cart/order_updated — Fired when an order is updated

When it runs: This action is fired whenever an order's data is modified and saved to the database.

Parameters:

  • $data (array): Order update data
    php
    $data = [
        'order' => [
            'id' => 123,
            'customer_id' => 456,
            'status' => 'completed',
            'updated_at' => '2025-01-15 10:30:00'
        ],
        'old_order' => [
            'id' => 123,
            'status' => 'processing'
        ]
    ];

Usage:

php
add_action('fluent_cart/order_updated', function($data) {
    $order = $data['order'];
    $oldOrder = $data['old_order'];
    // Log order changes
    error_log('Order #' . $order->id . ' updated');
}, 10, 1);

order_deleted

fluent_cart/order_deleted — Fired when an order is deleted

When it runs: This action is fired before an order is permanently deleted from the database.

Parameters:

  • $data (array): Order deletion data
    php
    $data = [
        'order' => [
            'id' => 123,
            'customer_id' => 456,
            'customer' => [],
            'shipping_address' => [],
            'billing_address' => []
        ],
        'customer' => [],
        'connected_order_ids' => [124, 125]
    ];

Usage:

php
add_action('fluent_cart/order_deleted', function($data) {
    $order = $data['order'];
    // Clean up related data
    delete_user_meta($order->customer_id, 'last_order_id');
}, 10, 1);

order_canceled

fluent_cart/order_canceled — Fired when an order is canceled

When it runs: This action is fired when an order's status is changed to 'canceled'.

Parameters:

  • $data (array): Order cancellation data
    php
    $data = [
        'order' => [
            'id' => 123,
            'customer_id' => 456,
            'status' => 'canceled',
            'customer' => [],
            'shipping_address' => [],
            'billing_address' => []
        ],
        'customer' => []
    ];

Usage:

php
add_action('fluent_cart/order_canceled', function($data) {
    $order = $data['order'];
    // Restore product stock
    foreach ($order->order_items as $item) {
        // Restore stock logic
    }
}, 10, 1);

order_status_changed

fluent_cart/order_status_changed — Fired when order status changes

When it runs: This action is fired whenever an order's status is updated to a different value.

Parameters:

  • $data (array): Order status change data
php
    $data = [
        'order' => [
            'id' => 123,
            'status' => 'completed'
        ],
        'old_status' => 'processing',
        'new_status' => 'completed',
        'manageStock' => true,
        'activity' => []
    ];

Usage:

php
add_action('fluent_cart/order_status_changed', function($data) {
    $order = $data['order'];
    // Send status update email
    wp_mail(
        $order->customer->email,
        'Order Status Updated',
        'Your order status: ' . $data['new_status']
    );
}, 10, 1);

payment_status_changed

fluent_cart/payment_status_changed — Fired when payment status changes

When it runs: This action is fired whenever an order's payment status is updated to a different value.

Parameters:

  • $data (array): Payment status change data
    php
    $data = [
        'order' => [
            'id' => 123,
            'payment_status' => 'paid'
        ],
        'old_status' => 'pending',
        'new_status' => 'paid',
        'manageStock' => true,
        'activity' => []
    ];

Usage:

php
add_action('fluent_cart/payment_status_changed', function($data) {
    $order = $data['order'];
    // Send payment confirmation
    if ($data['new_status'] === 'paid') {
        wp_mail($order->customer->email, 'Payment Confirmed', 'Payment received.');
    }
}, 10, 1);

payment_status_changed_to_{status}

fluent_cart/payment_status_changed_to_{status} — Fired when payment status changes to specific status

When it runs: This action is fired when payment status changes to a specific status (paid, pending, failed, refunded, etc.).

Parameters:

  • $data (array): Payment status change data
    php
    $data = [
        'order' => [
            'id' => 123,
            'payment_status' => 'paid'
        ],
        'old_status' => 'pending',
        'new_status' => 'paid'
    ];

Available statuses: pending, paid, partially_paid, failed, refunded, partially_refunded, authorized

Usage:

php
add_action('fluent_cart/payment_status_changed_to_paid', function($data) {
    $order = $data['order'];
    // Trigger fulfillment
    do_action('custom_fulfillment_start', $order->id);
}, 10, 1);

order_fully_refunded

fluent_cart/order_fully_refunded — Fired when an order is fully refunded

When it runs: This action is fired when an order receives a full refund.

Parameters:

  • $data (array): Full refund data
    php
    $data = [
        'order' => [],
        'refunded_items' => [],
        'new_refunded_items' => [],
        'refunded_amount' => 10000,
        'manage_stock' => true,
        'transaction' => [],
        'customer' => [],
        'type' => 'full'
    ];

Usage:

php
add_action('fluent_cart/order_fully_refunded', function($data) {
    $order = $data['order'];
    // Revoke access
    update_user_meta($order->customer_id, 'membership_active', false);
}, 10, 1);

order_partially_refunded

fluent_cart/order_partially_refunded — Fired when an order is partially refunded

When it runs: This action is fired when an order receives a partial refund.

Parameters:

  • $data (array): Partial refund data
    php
    $data = [
        'order' => [],
        'refunded_items' => [],
        'new_refunded_items' => [],
        'refunded_amount' => 3000,
        'manage_stock' => true,
        'transaction' => [],
        'customer' => [],
        'type' => 'partial'
    ];

Usage:

php
add_action('fluent_cart/order_partially_refunded', function($data) {
    $order = $data['order'];
    // Notify customer
    wp_mail($order->customer->email, 'Partial Refund Processed', 'Refund issued.');
}, 10, 1);

FluentCart developer documentation