• The schedule doesn’t run at defined time.
    Follow this article  and replace WordPress cron with real cron.
  • I haven’t received any emails.
    Did you choose option “Since Last Run”?
    You will get only new orders in this case, so you should create test order to get the email.
  • I am exporting the Orders data with its individual Products/Items as separate rows. But the Product rows don’t seem to have rest of order details included.
    You should mark checkbox “Populate other columns if products exported as rows” for selected format ( CSV or XLS)


  • We display settings to export orders/items/coupons. So there are next filters

    Example: we add usermeta field to interface
    add_filter( 'woe_get_order_fields', function( $fields,$format ) { 
      $fields['first_name'] = array(
       'label'=>'User Meta Key',
       'colname'=>'User Meta Key',
      return $fields;
    } , 10, 2);


  • Each column can be modified by filter before output.
    Hook names depend on type of field  and field name
    for order  – woe_get_order_coupon_value_{$field}
    for product  – woe_get_order_product_value_{$field}
    for coupon  – woe_get_order_value_{$field}

    Example: we fill usermeta field  
    add_filter('woe_get_order_value_first_name',function( $value,$order ) {
      $user_id = $order->get_user_id();
      return get_user_meta($user_id, 'first_name', true); 
    , 10, 2 );


  • It’s possible to filter  row before output using filter woe_fetch_order_row

    Example: we skip rows if order total less than $100 
    add_filter( 'woe_fetch_order_row', function( $row,$order_id ) { 
     return ($row['order_total']<100) ? false : $row;
    } , 10, 2);


  • There are next  filters to format final text before output
    woe_xls_output_filter, woe_csv_output_filter, woe_xml_output_filter, woe_json_output_filter

    Example: we add namespace "ns2:" to all tags
    add_filter( 'woe_xml_output_filter', function( $xml, $rec  ) { 
      // for <test> 
      $xml = preg_replace( '/(?<=\<)([^\/].*?)(?=\>)/', 'ns2:$1', $xml);
      // for </test>
     $xml = preg_replace( '/(?<=\<\/)(.*?)(?=\>)/', 'ns2:$1', $xml); 
     return $xml; } , 10, 2);

More examples here