Home Forums Pre-Sale WC Hook does not render WooCommerce Shipment Tracking (missing $order)

WC Hook does not render WooCommerce Shipment Tracking (missing $order)

  • Author
    Posts
  • #260749

    Christoph Durwen
    Participant

    Dear support team,

    First, thank you for fixing the email-type save bug in 1.3.2 — confirmed resolved. This is a separate, reproducible compatibility issue.

    Products & environment

    Email Template Customizer for WooCommerce 1.3.2 (free) + WooCommerce Email Template Customizer Premium 1.3.2 (both active, same version)
    WordPress + WooCommerce (WC 10.x), theme Hello Elementor, PHP 8.x
    Host: Dogado. No active WAF (Wordfence firewall disabled).
    3rd-party plugin: “WooCommerce Shipment Tracking” (the official one by WooCommerce). It stores tracking data in order meta _wc_shipment_tracking_items and normally adds a tracking block to the customer “Completed order” email.

    Problem

    In a custom email template of type “Completed order”, the WooCommerce Shipment Tracking block does not appear. I added a WC Hook element and tested all four available hooks, one by one, with a real email send:

    woocommerce_email_before_order_table
    woocommerce_email_after_order_table
    woocommerce_email_order_details
    woocommerce_email_order_meta

    None of them renders the tracking block.

    Decisive evidence (isolation test)

    With my custom template active → the completed-order email shows my design, but no tracking block (with any of the 4 hooks).
    I set my custom template to Draft (so WooCommerce sends its standard email) and re-sent the completed-order email for the same order (which has a saved DHL tracking number).
    The standard WooCommerce email renders the Shipment Tracking block perfectly:

    Tracking Information — Provider: Deutsche Post DHL, Tracking number: 00340434161094012345, Date: 20 June 2026, Link: Track

    ➡️ Conclusion: WooCommerce Shipment Tracking works correctly. The block is missing only inside the Email Template Customizer template.

    Steps to reproduce

    Install the official WooCommerce Shipment Tracking. Add a tracking number (provider “Deutsche Post DHL”) to a test order and mark it Completed.
    Create a custom “Completed order” template and add a WC Hook element set to woocommerce_email_after_order_table.
    Send the real completed-order email for that order → tracking block is absent.
    Set the template to Draft and resend → the standard WooCommerce email shows the tracking block.

    Suspected cause

    WooCommerce core fires the hook as:

    phpdo_action( ‘woocommerce_email_after_order_table’, $order, $sent_to_admin, $plain_text, $email );

    Shipment Tracking’s email-display callback relies on the $order argument. It appears your WC Hook element fires the hook without passing the order (and $email / $sent_to_admin / $plain_text), so the callback receives no order and outputs nothing.

    Your changelog lists “Advanced Shipment Tracking” and “TrackShip” as compatible, but not the official “WooCommerce Shipment Tracking”.

    Request

    Could you please either:

    make the WC Hook element pass the standard arguments ($order, $sent_to_admin, $plain_text, $email) when firing these email hooks, or
    add compatibility for the official WooCommerce Shipment Tracking plugin,

    so the tracking block renders inside the template?

    If there is already a supported way (filter / snippet) to inject the order into the WC Hook element today, please let me know and I will apply it.

    Thank you very much.

    Best regards,
    Christoph Durwen
    info@magnetfeldexperte.de

You must be logged in to see replies to this topic. Click here to login or register