Files
2024-09-25 09:25:31 -04:00

3274 lines
101 KiB
PHP

<?php
/**
* Manage all contact properties.
*
* @link https://makewebbetter.com/
* @since 1.0.0
*
* @package makewebbetter-hubspot-for-woocommerce
* @subpackage makewebbetter-hubspot-for-woocommerce/includes
*/
/**
* Manage all contact properties.
*
* Provide a list of functions to manage all the information
* about contacts properties and lists along with option to
* change/update the mapping field on hubspot.
*
* @package makewebbetter-hubspot-for-woocommerce
* @subpackage makewebbetter-hubspot-for-woocommerce/includes
*/
class HubWooContactProperties {
/**
* Contact Property Groups.
*
* @since 1.0.0
* @var array name of contact property groups.
*/
private $groups;
/**
* Contact Properties.
*
* @since 1.0.0
* @var array name of properties for contact.
*/
private $properties;
/**
* Contact Lists.
*
* @since 1.0.0
* @var array name of the lists.
*/
private $lists;
/**
* Workflows.
*
* @since 1.0.0
* @var array name of the workflows.
*/
private $workflows;
/**
* HubWooContactProperties Instance.
*
* @since 1.0.0
* @var HubWooContactProperties
*/
protected static $_instance = null;
/**
* Main HubWooContactProperties Instance.
*
* Ensures only one instance of HubWooContactProperties is loaded or can be loaded.
*
* @since 1.0.0
* @static
* @return HubWooContactProperties - Main instance.
*/
public static function get_instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
/**
* Define the contact prooperties related functionality.
*
* Set the contact groups and properties that we are going to use
* for creating/updating the contact information for our tacking purpose
* and providing other developers to add there field and group for tracking
* too by simply using our hooks.
*
* @since 1.0.0
*/
public function __construct() {
$this->groups = $this->_set( 'groups' );
$this->properties = $this->_set( 'properties' );
$this->lists = $this->_set( 'lists' );
$this->workflows = $this->_set( 'workflows' );
}
/**
* Get groups/properties.
*
* @param string $option groups/properties.
* @param string $group_name name of group to get properties.
* @param bool $all true/false.
* @return array array of groups/properties/lists/workflows information.
*/
public function _get( $option, $group_name = '', $all = false ) {
if ( 'groups' === $option ) {
return $this->groups;
} elseif ( 'properties' === $option ) {
if ( $all ) {
$properties = $this->get_all_active_groups_properties( true );
return $properties;
}
if ( ! empty( $group_name ) && isset( $this->properties[ $group_name ] ) && ! $all ) {
return $this->properties[ $group_name ];
} else {
return $this->_get_group_properties( $group_name );
}
} elseif ( 'lists' === $option ) {
return $this->lists;
} elseif ( 'workflows' === $option ) {
return $this->workflows;
}
}
/**
* Get an array of required option.
*
* @param String $option the identifier.
* @return Array An array of values.
* @since 1.0.0
*/
private function _set( $option ) {
$values = array();
if ( 'groups' === $option ) {
// order details.
$values[] = array(
'name' => 'order',
'label' => __( 'Order Information', 'makewebbetter-hubspot-for-woocommerce' ),
);
// products bought details.
$values[] = array(
'name' => 'last_products_bought',
'label' => __( 'Products Bought', 'makewebbetter-hubspot-for-woocommerce' ),
);
// shopping cart details.
$values[] = array(
'name' => 'shopping_cart_fields',
'label' => __( 'Shopping Cart Information', 'makewebbetter-hubspot-for-woocommerce' ),
);
// customer details.
$values[] = array(
'name' => 'customer_group',
'label' => __( 'Customer Group', 'makewebbetter-hubspot-for-woocommerce' ),
);
// categories bought details.
$values[] = array(
'name' => 'categories_bought',
'label' => __( 'Categories Bought', 'makewebbetter-hubspot-for-woocommerce' ),
);
// RFM details.
$values[] = array(
'name' => 'rfm_fields',
'label' => __( 'RFM Information', 'makewebbetter-hubspot-for-woocommerce' ),
);
// skus bought details.
$values[] = array(
'name' => 'skus_bought',
'label' => __( 'SKUs Bought', 'makewebbetter-hubspot-for-woocommerce' ),
);
// roi tracking.
$values[] = array(
'name' => 'roi_tracking',
'label' => __( 'ROI Tracking', 'makewebbetter-hubspot-for-woocommerce' ),
);
// Abandeond Cart.
$values[] = array(
'name' => 'abandoned_cart',
'label' => __( 'Abandoned Cart Details', 'makewebbetter-hubspot-for-woocommerce' ),
);
// filter for new groups.
$values = apply_filters( 'hubwoo_sync_groups', $values );
} elseif ( 'properties' === $option ) {
// let's check for all active tracking groups and get there associated properties.
$values = $this->get_all_active_groups_properties();
} elseif ( 'lists' === $option ) {
$values = $this->get_all_active_lists();
} elseif ( 'workflows' === $option ) {
$values = $this->get_all_workflows();
}
// add your values to the either groups or properties.
return apply_filters( 'hubwoo_contact_' . $option, $values );
}
/**
* Add subscription groups.
*
* @param array $values predefined groups.
* @return Array Properties array with there associated group.
* @since 1.0.0
*/
public static function _get_subs_groups( $values = array() ) {
$values[] = array(
'name' => 'subscriptions_details',
'label' => __( 'Subscriptions Details', 'makewebbetter-hubspot-for-woocommerce' ),
);
return apply_filters( 'hubwoo_subs_groups', $values );
}
/**
* Check for the active groups and get there properties.
*
* @param bool $all to get all propertues or not.
* @return Array Properties array with there associated group.
* @since 1.0.0
*/
private function get_all_active_groups_properties( $all = false ) {
$active_groups_properties = array();
$active_groups = $all ? $this->_get( 'groups' ) : $this->get_active_groups();
if ( is_array( $active_groups ) && count( $active_groups ) ) {
foreach ( $active_groups as $active_group ) {
if ( ! empty( $active_group ) ) {
if ( $all ) {
$active_groups_properties[ $active_group['name'] ] = $this->_get_group_properties( $active_group['name'] );
} else {
$active_groups_properties[ $active_group ] = $this->_get_group_properties( $active_group );
}
}
}
}
return apply_filters( 'hubwoo_active_groups_properties', $active_groups_properties );
}
/**
* Filter extra properties to avaoid error on hubspot.
*
* @return only created properties
* @since 1.0.0
*/
public function hubwoo_get_filtered_properties() {
$filtered_properties = array();
$all_filtered_properties = array();
$active_groups = $this->get_active_groups();
if ( is_array( $active_groups ) && count( $active_groups ) ) {
foreach ( $active_groups as $active_group ) {
if ( ! empty( $active_group ) && ! is_array( $active_group ) ) {
$active_groups_properties[ $active_group ] = $this->_get_group_properties( $active_group );
}
}
}
if ( ! empty( $active_groups_properties ) ) {
$group_name = '';
$created_properties = array_map(
function( $property ) {
return str_replace( "'", '', $property );
},
get_option( 'hubwoo-properties-created', array() )
);
foreach ( $active_groups_properties as $group_name_key => $single_group_property ) {
$group_name = $group_name_key;
$filtered_properties = array();
foreach ( $single_group_property as $single_property ) {
if ( isset( $single_property['name'] ) && in_array( $single_property['name'], $created_properties ) ) {
$filtered_properties[] = $single_property;
}
}
$all_filtered_properties[ $group_name ] = $filtered_properties;
}
}
return apply_filters( 'hubwoo_active_groups_properties', $all_filtered_properties );
}
/**
* Filter for active groups only.
*
* @return Array active group names.
* @since 1.0.0
*/
private function get_active_groups() {
$active_groups = array();
$all_groups = $this->_get( 'groups' );
if ( is_array( $all_groups ) && count( $all_groups ) ) {
foreach ( $all_groups as $group_details ) {
$group_name = isset( $group_details['name'] ) ? $group_details['name'] : '';
if ( ! empty( $group_name ) ) {
$created_groups = get_option( 'hubwoo-groups-created', array() );
$is_active = false;
if ( in_array( $group_name, $created_groups ) ) {
$is_active = true;
}
if ( $is_active ) {
$active_groups[] = $group_name;
}
}
}
}
return apply_filters( 'hubwoo_active_groups', $active_groups );
}
/**
* Get all the groups properties.
*
* @param string $group_name name of the existed valid hubspot contact properties group.
* @return Array Properties array.
* @since 1.0.0
*/
private function _get_group_properties( $group_name ) {
$group_properties = array();
if ( ! empty( $group_name ) ) {
if ( 'customer_group' === $group_name ) {
$group_properties[] = array(
'name' => 'customer_group',
'label' => __( 'Customer Group/ User role', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'newsletter_subscription',
'label' => __( 'Accepts Marketing', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => true,
'options' => $this->get_user_marketing_action(),
);
$group_properties[] = array(
'name' => 'marketing_newsletter',
'label' => __( 'Marketing Newsletter', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'checkbox',
'formField' => true,
'options' => $this->get_user_marketing_sources(),
);
$group_properties[] = array(
'name' => 'shopping_cart_customer_id',
'label' => __( 'Shopping Cart ID', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
);
$group_properties[] = array(
'name' => 'customer_source_store',
'label' => __( 'Customer Source Store', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
} elseif ( 'shopping_cart_fields' === $group_name ) {
$group_properties[] = array(
'name' => 'shipping_address_line_1',
'label' => __( 'Shipping Address Line 1', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'shipping_address_line_2',
'label' => __( 'Shipping Address Line 2', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'shipping_city',
'label' => __( 'Shipping City', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'shipping_state',
'label' => __( 'Shipping State', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'shipping_postal_code',
'label' => __( 'Shipping Postal Code', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'shipping_country',
'label' => __( 'Shipping Country', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'billing_address_line_1',
'label' => __( 'Billing Address Line 1', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'billing_address_line_2',
'label' => __( 'Billing Address Line 2', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'billing_city',
'label' => __( 'Billing City', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'billing_state',
'label' => __( 'Billing State', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'billing_postal_code',
'label' => __( 'Billing Postal Code', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
$group_properties[] = array(
'name' => 'billing_country',
'label' => __( 'Billing Country', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => true,
);
} elseif ( 'last_products_bought' === $group_name ) {
$group_properties[] = array(
'name' => 'last_product_bought',
'label' => __( 'Last Product Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_product_types_bought',
'label' => __( 'Last Product Types Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought',
'label' => __( 'Last Products Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_html',
'label' => __( 'Last Products Bought HTML', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_total_number_of_products_bought',
'label' => __( 'Last Total Number Of Products Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
);
$group_properties[] = array(
'name' => 'product_types_bought',
'label' => __( 'Product Types Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'products_bought',
'label' => __( 'Products Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'total_number_of_products_bought',
'label' => __( 'Total Number Of Products Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_1_image_url',
'label' => __( 'Last Products Bought Product 1 Image URL', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_1_name',
'label' => __( 'Last Products Bought Product 1 Name', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_1_price',
'label' => __( 'Last Products Bought Product 1 Price', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'showCurrencySymbol' => true,
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_1_url',
'label' => __( 'Last Products Bought Product 1 Url', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_2_image_url',
'label' => __( 'Last Products Bought Product 2 Image URL', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_2_name',
'label' => __( 'Last Products Bought Product 2 Name', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_2_price',
'label' => __( 'Last Products Bought Product 2 Price', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_2_url',
'label' => __( 'Last Products Bought Product 2 Url', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_3_image_url',
'label' => __( 'Last Products Bought Product 3 Image URL', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_3_name',
'label' => __( 'Last Products Bought Product 3 Name', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_3_price',
'label' => __( 'Last Products Bought Product 3 Price', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'last_products_bought_product_3_url',
'label' => __( 'Last Products Bought Product 3 Url', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
} elseif ( 'order' === $group_name ) {
$group_properties[] = array(
'name' => 'last_order_status',
'label' => __( 'Last Order Status', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_order_statuses(),
);
$group_properties[] = array(
'name' => 'last_order_fulfillment_status',
'label' => __( 'Last Order Fulfillment Status', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_order_statuses(),
);
$group_properties[] = array(
'name' => 'last_order_tracking_number',
'label' => __( 'Last Order Tracking Number', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_order_tracking_url',
'label' => __( 'Last Order Tracking URL', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_order_shipment_date',
'label' => __( 'Last Order Shipment Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_order_order_number',
'label' => __( 'Last Order Number', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_order_currency',
'label' => __( 'Last Order Currency', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formField' => false,
);
$group_properties[] = array(
'name' => 'total_number_of_current_orders',
'label' => __( 'Total Number of Current Orders', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
);
} elseif ( 'rfm_fields' === $group_name ) {
$group_properties[] = array(
'name' => 'total_value_of_orders',
'label' => __( 'Total Value of Orders', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'average_order_value',
'label' => __( 'Average Order Value', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'total_number_of_orders',
'label' => __( 'Total Number of Orders', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
);
$group_properties[] = array(
'name' => 'first_order_value',
'label' => __( 'First Order Value', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'first_order_date',
'label' => __( 'First Order Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_order_value',
'label' => __( 'Last Order Value', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'last_order_date',
'label' => __( 'Last Order Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'average_days_between_orders',
'label' => __( 'Average Days Between Orders', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
);
$group_properties[] = array(
'name' => 'account_creation_date',
'label' => __( 'Account Creation Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'monetary_rating',
'label' => __( 'Monetary Rating', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_rfm_rating(),
);
$group_properties[] = array(
'name' => 'order_frequency_rating',
'label' => __( 'Order Frequency Rating', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_rfm_rating(),
);
$group_properties[] = array(
'name' => 'order_recency_rating',
'label' => __( 'Order Recency Rating', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_rfm_rating(),
);
} elseif ( 'categories_bought' === $group_name ) {
$group_properties[] = array(
'name' => 'last_categories_bought',
'label' => __( 'Last Categories Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'categories_bought',
'label' => __( 'Categories Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
} elseif ( 'skus_bought' === $group_name ) {
$group_properties[] = array(
'name' => 'last_skus_bought',
'label' => __( 'Last SKUs Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
$group_properties[] = array(
'name' => 'skus_bought',
'label' => __( 'SKUs Bought', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
} elseif ( 'subscriptions_details' == $group_name ) {
$group_properties[] = array(
'name' => 'last_subscription_order_number',
'label' => __( 'Last Subscription Order Number', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_subscription_parent_order_number',
'label' => __( 'Last Subscription Parent Order Number', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_subscription_order_status',
'label' => __( 'Last Subscription Order Status', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_subscription_status_options(),
);
$group_properties[] = array(
'name' => 'last_subscription_order_creation_date',
'label' => __( 'Last Subscription Order Creation Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_subscription_order_paid_date',
'label' => __( 'Last Subscription Order Paid Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_subscription_order_completed_date',
'label' => __( 'Last Subscription Order Completed Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'related_last_order_creation_date',
'label' => __( 'Related Last Order Creation Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'related_last_order_paid_date',
'label' => __( 'Related Last Order Paid Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'related_last_order_completed_date',
'label' => __( 'Related Last Order Completed Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_subscription_trial_end_date',
'label' => __( 'Last Subscription Trial End Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_subscription_next_payment_date',
'label' => __( 'Last Subscription Next Payment Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'last_subscription_billing_period',
'label' => __( 'Last Subscription Billing Period', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_subscriptions_billing_period(),
);
$group_properties[] = array(
'name' => 'last_subscription_billing_interval',
'label' => __( 'Last Subscription Billing Interval', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_subscriptions_billing_interval(),
);
$group_properties[] = array(
'name' => 'last_subscription_products',
'label' => __( 'Last Subscription Products', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formField' => false,
);
} elseif ( 'roi_tracking' === $group_name ) {
$group_properties[] = array(
'name' => 'customer_new_order',
'label' => __( 'Customer New Order', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'options' => $this->hubwoo_new_order_status(),
);
$group_properties[] = array(
'name' => 'abandoned_cart_recovery_workflow_conversion',
'label' => __( 'Abandoned Cart Recovery Workflow Conversion', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'booleancheckbox',
'formField' => false,
'options' => $this->hubwoo_campaign_conversion_options(),
);
$group_properties[] = array(
'name' => 'abandoned_cart_recovery_workflow_conversion_amount',
'label' => __( 'Abandoned Cart Recovery Workflow Conversion Amount', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'abandoned_cart_recovery_workflow_conversion_date',
'label' => __( 'Abandoned Cart Recovery Workflow Conversion Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_recovery_workflow_start_date',
'label' => __( 'Abandoned Cart Recovery Workflow Start Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'current_roi_campaign',
'label' => __( 'Current ROI Campaign', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formField' => false,
'options' => $this->get_all_campaign_names(),
);
$group_properties[] = array(
'name' => 'customer_reengagement_workflow_conversion',
'label' => __( 'Customer Reengagement Workflow Conversion', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'booleancheckbox',
'formField' => false,
'options' => $this->hubwoo_campaign_conversion_options(),
);
$group_properties[] = array(
'name' => 'customer_reengagement_workflow_conversion_amount',
'label' => __( 'Customer Reengagement Workflow Conversion Amount', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'customer_reengagement_workflow_conversion_date',
'label' => __( 'Customer Reengagement Workflow Conversion Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'customer_reengagement_workflow_start_date',
'label' => __( 'Customer Reengagement Workflow Start Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'customer_rewards_workflow_conversion',
'label' => __( 'Customer Rewards Workflow Conversion', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'booleancheckbox',
'formField' => false,
'options' => $this->hubwoo_campaign_conversion_options(),
);
$group_properties[] = array(
'name' => 'customer_rewards_workflow_conversion_amount',
'label' => __( 'Customer Rewards Workflow Conversion Amount', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'customer_rewards_workflow_conversion_date',
'label' => __( 'Customer Rewards Workflow Conversion Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'customer_rewards_workflow_start_date',
'label' => __( 'Customer Rewards Workflow Start Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'mql_capture_nurture_conversion_conversion',
'label' => __( 'MQL Capture, Nurture & Conversion Conversion', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'booleancheckbox',
'formField' => false,
'options' => $this->hubwoo_campaign_conversion_options(),
);
$group_properties[] = array(
'name' => 'mql_capture_nurture_conversion_conversion_amount',
'label' => __( 'MQL Capture, Nurture & Conversion Conversion Amount', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'mql_capture_nurture_conversion_conversion_date',
'label' => __( 'MQL Capture, Nurture & Conversion Conversion Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'mql_capture_nurture_conversion_start_date',
'label' => __( 'MQL Capture, Nurture & Conversion Start date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'new_customer_workflow_conversion',
'label' => __( 'New Customer Workflow Conversion', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'booleancheckbox',
'formField' => false,
'options' => $this->hubwoo_campaign_conversion_options(),
);
$group_properties[] = array(
'name' => 'new_customer_workflow_conversion_amount',
'label' => __( 'New Customer Workflow Conversion Amount', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'new_customer_workflow_conversion_date',
'label' => __( 'New Customer Workflow Conversion Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'new_customer_workflow_start_date',
'label' => __( 'New Customer Workflow Start Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'second_purchase_workflow_conversion',
'label' => __( 'Second Purchase Workflow Conversion', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'booleancheckbox',
'formField' => false,
'options' => $this->hubwoo_campaign_conversion_options(),
);
$group_properties[] = array(
'name' => 'second_purchase_workflow_conversion_amount',
'label' => __( 'Second Purchase Workflow Conversion Amount', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'second_purchase_workflow_conversion_date',
'label' => __( 'Second Purchase Workflow Conversion Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'second_purchase_workflow_start_date',
'label' => __( 'Second Purchase Workflow Start Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'third_purchase_workflow_conversion',
'label' => __( 'Third Purchase Workflow Conversion', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'booleancheckbox',
'formField' => false,
'options' => $this->hubwoo_campaign_conversion_options(),
);
$group_properties[] = array(
'name' => 'third_purchase_workflow_conversion_amount',
'label' => __( 'Third Purchase Workflow Conversion Amount', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formField' => false,
'showCurrencySymbol' => true,
);
$group_properties[] = array(
'name' => 'third_purchase_workflow_conversion_date',
'label' => __( 'Third Purchase Workflow Conversion Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
$group_properties[] = array(
'name' => 'third_purchase_workflow_start_date',
'label' => __( 'Third Purchase Workflow Start Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formField' => false,
);
} elseif ( 'abandoned_cart' === $group_name ) {
$group_properties[] = array(
'name' => 'current_abandoned_cart',
'label' => __( 'Current Abandoned Cart', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'enumeration',
'fieldType' => 'select',
'formfield' => false,
'options' => Hubwoo_Admin::get_abandoned_cart_status(),
);
$group_properties[] = array(
'name' => 'abandoned_cart_date',
'label' => __( 'Abandoned Cart Date', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'date',
'fieldType' => 'date',
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_counter',
'label' => __( 'Abandoned Cart Counter', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_url',
'label' => __( 'Abandoned Cart URL', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'text',
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_products_skus',
'label' => __( 'Abandoned Cart Products SKUs', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_products_categories',
'label' => __( 'Abandoned Cart Products Categories', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_products',
'label' => __( 'Abandoned Cart Products', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_products_html',
'label' => __( 'Abandoned Cart Products HTML', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'string',
'fieldType' => 'textarea',
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_tax_value',
'label' => __( 'Abandoned Cart Tax Value', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'showCurrencySymbol' => true,
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_subtotal',
'label' => __( 'Abandoned Cart Subtotal', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'showCurrencySymbol' => true,
'formfield' => false,
);
$group_properties[] = array(
'name' => 'abandoned_cart_total_value',
'label' => __( 'Abandoned Cart Total Value', 'makewebbetter-hubspot-for-woocommerce' ),
'type' => 'number',
'fieldType' => 'number',
'showCurrencySymbol' => true,
'formfield' => false,
);
}
}
return apply_filters( 'hubwoo_group_properties', $group_properties, $group_name );
}
/**
* Get all active lists for hubspot.
*
* @since 1.0.0
*/
private function get_all_active_lists() {
$lists = array();
$optin = 'yes';
$abandoned_status = 'yes';
$property_updated = get_option( 'hubwoo_newsletter_property_update', 'no' );
$abandoned_property_updated = get_option( 'hubwoo_abandoned_property_update', 'no' );
if ( ! empty( $property_updated ) && 'yes' == $property_updated ) {
if ( 'yes' == $optin ) {
$optin = true;
}
}
if ( ! empty( $abandoned_property_updated ) && 'yes' == $abandoned_property_updated ) {
$abandoned_status = true;
}
$lists[] = array(
'name' => __( 'Customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 'customer',
'property' => 'lifecyclestage',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Leads', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 'lead',
'property' => 'lifecyclestage',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Abandoned Cart', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => $abandoned_status,
'property' => 'current_abandoned_cart',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Best Customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 5,
'property' => 'monetary_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 5,
'property' => 'order_frequency_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 5,
'property' => 'order_recency_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Big Spenders', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 5,
'property' => 'monetary_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Loyal Customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 5,
'property' => 'order_frequency_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 5,
'property' => 'order_recency_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Churning Customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 5,
'property' => 'monetary_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 5,
'property' => 'order_frequency_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 1,
'property' => 'order_recency_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Low Value Lost Customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 1,
'property' => 'monetary_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 1,
'property' => 'order_frequency_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 1,
'property' => 'order_recency_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'New Customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 1,
'property' => 'order_frequency_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 1,
'property' => 'order_recency_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Customers needing attention', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 3,
'property' => 'monetary_rating',
'type' => 'enumeration',
),
array(
'operator' => 'EQ',
'value' => 3,
'property' => 'order_frequency_rating',
'type' => 'enumeration',
),
array(
'operator' => 'SET_ANY',
'value' => implode( ';', array( 1, 2 ) ),
'property' => 'order_recency_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'About to Sleep', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'SET_ANY',
'value' => implode( ';', array( 1, 2 ) ),
'property' => 'monetary_rating',
'type' => 'enumeration',
),
array(
'operator' => 'SET_ANY',
'value' => implode( ';', array( 1, 2 ) ),
'property' => 'order_frequency_rating',
'type' => 'enumeration',
),
array(
'operator' => 'SET_ANY',
'value' => implode( ';', array( 1, 2 ) ),
'property' => 'order_recency_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Mid Spenders', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 3,
'property' => 'monetary_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Low Spenders', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 1,
'property' => 'monetary_rating',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Newsletter Subscriber', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => $optin,
'property' => 'newsletter_subscription',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'One time purchase customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 1,
'property' => 'total_number_of_orders',
'type' => 'number',
),
),
),
);
$lists[] = array(
'name' => __( 'Two time purchase customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 2,
'property' => 'total_number_of_orders',
'type' => 'number',
),
),
),
);
$lists[] = array(
'name' => __( 'Three time purchase customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 3,
'property' => 'total_number_of_orders',
'type' => 'number',
),
),
),
);
$lists[] = array(
'name' => __( 'Bought four or more times', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 4,
'property' => 'total_number_of_orders',
'type' => 'number',
),
),
),
);
$lists[] = array(
'name' => __( 'Marketing Qualified Leads', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'EQ',
'value' => 'marketingqualifiedlead',
'property' => 'lifecyclestage',
'type' => 'enumeration',
),
),
),
);
$lists[] = array(
'name' => __( 'Engaged Customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'operator' => 'WITHIN_TIME',
'withinLastTime' => 60,
'withinLastTimeUnit' => 'DAYS',
'withinLastDays' => 60,
'withinTimeMode' => 'PAST',
'property' => 'last_order_date',
'type' => 'date',
),
),
),
);
$lists[] = array(
'name' => __( 'DisEngaged Customers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'withinLastTime' => 60,
'withinLastTimeUnit' => 'DAYS',
'reverseWithinTimeWindow' => true,
'withinLastDays' => 60,
'withinTimeMode' => 'PAST',
'type' => 'date',
'operator' => 'WITHIN_TIME',
'property' => 'last_order_date',
),
array(
'withinLastTime' => 180,
'withinLastTimeUnit' => 'DAYS',
'withinLastDays' => 180,
'withinTimeMode' => 'PAST',
'type' => 'date',
'operator' => 'WITHIN_TIME',
'property' => 'last_order_date',
),
),
),
);
$lists[] = array(
'name' => __( 'Repeat Buyers', 'makewebbetter-hubspot-for-woocommerce' ),
'dynamic' => true,
'filters' => array(
array(
array(
'type' => 'number',
'operator' => 'GTE',
'property' => 'total_number_of_orders',
'value' => 5,
),
array(
'type' => 'number',
'operator' => 'LTE',
'property' => 'average_days_between_orders',
'value' => 30,
),
),
),
);
return apply_filters( 'hubwoo_lists', $lists );
}
/**
* Get all workflows.
*
* @since 1.0.0
*/
private function get_all_workflows() {
$workflows = array();
$abandoned_status = 'yes';
$abandoned_property_updated = get_option( 'hubwoo_abandoned_property_update', 'no' );
if ( ! empty( $abandoned_property_updated ) && 'yes' == $abandoned_property_updated ) {
$abandoned_status = true;
}
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: MQL to Customer lifecycle stage Conversion',
'enabled' => true,
'actions' => array(
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'mql_capture_nurture_conversion_start_date',
'name' => 'MQL Capture, Nurture & Conversion Start Date',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'MQL Nurture & Conversion',
'propertyName' => 'current_roi_campaign',
'name' => 'Current ROI Campaign',
),
array(
'type' => 'DELAY',
'delayMillis' => 172800000,
),
array(
'type' => 'DELAY',
'delayMillis' => 432000000,
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Current ROI Campaign',
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'enumeration',
'property' => 'lifecyclestage',
'value' => 'customer',
'operator' => 'SET_ANY',
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: Welcome New Customer & Get a 2nd Order',
'enabled' => true,
'actions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'New Customer Welcome & Get a 2nd Order',
'propertyName' => 'current_roi_campaign',
'name' => 'Current ROI Campaign',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'second_purchase_workflow_start_date',
'name' => 'Second Purchase Workflow Start Date',
),
array(
'type' => 'DELAY',
'delayMillis' => 172800000,
),
array(
'type' => 'DELAY',
'delayMillis' => 172800000,
),
array(
'type' => 'DELAY',
'delayMillis' => 604800000,
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Current ROI Campaign',
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'number',
'property' => 'total_number_of_orders',
'value' => 1,
'operator' => 'GT',
),
),
),
'onlyExecOnBizDays' => true,
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: 2nd Order Thank You & Get a 3rd Order',
'enabled' => true,
'actions' => array(
array(
'type' => 'DELAY',
'delayMillis' => 172800000,
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => '2nd Order Thank You & Get a 3rd Order',
'propertyName' => 'current_roi_campaign',
'name' => 'Current ROI Campaign',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'third_purchase_workflow_start_date',
'name' => 'Third Purchase Workflow Start Date',
),
array(
'type' => 'DELAY',
'delayMillis' => 172800000,
),
array(
'type' => 'DELAY',
'delayMillis' => 172800000,
),
array(
'type' => 'DELAY',
'delayMillis' => 432000000,
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Current ROI Campaign',
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'number',
'property' => 'total_number_of_orders',
'value' => 2,
'operator' => 'GT',
),
),
),
'onlyExecOnBizDays' => true,
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: 3rd Order Thank You',
'enabled' => true,
'actions' => array(
array(
'type' => 'DELAY',
'delayMillis' => 172800000,
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => '3rd Order Thank You',
'propertyName' => 'current_roi_campaign',
'name' => 'Current ROI Campaign',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Current ROI Campaign',
),
),
'onlyExecOnBizDays' => true,
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: ROI Calculation',
'enabled' => true,
'enrollOnCriteriaUpdate' => true,
'actions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'enumeration',
'property' => 'current_roi_campaign',
'value' => 'MQL Nurture & Conversion',
'operator' => 'SET_ANY',
),
),
),
'acceptActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'true',
'propertyName' => 'mql_capture_nurture_conversion_conversion',
'name' => 'Set Property',
),
array(
'type' => 'COPY_PROPERTY',
'sourceProperty' => 'last_order_value',
'targetProperty' => 'mql_capture_nurture_conversion_conversion_amount',
'targetModel' => 'CONTACT',
'name' => 'Copy property',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'mql_capture_nurture_conversion_conversion_date',
'model' => 'CONTACT',
'name' => 'MQL Capture, Nurture & Conversion Conversion Date',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Set Property',
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'enumeration',
'property' => 'current_roi_campaign',
'value' => 'New Customer Welcome & Get a 2nd Order',
'operator' => 'SET_ANY',
),
),
),
'acceptActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'true',
'propertyName' => 'new_customer_workflow_conversion',
'name' => 'Set Property',
),
array(
'type' => 'COPY_PROPERTY',
'sourceProperty' => 'last_order_value',
'targetProperty' => 'new_customer_workflow_conversion_amount',
'targetModel' => 'CONTACT',
'name' => 'Copy property',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'new_customer_workflow_conversion_date',
'model' => 'CONTACT',
'name' => 'New Customer Workflow Conversion Date',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Set Property',
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'enumeration',
'property' => 'current_roi_campaign',
'value' => '2nd Order Thank You & Get a 3rd Order',
'operator' => 'SET_ANY',
),
),
),
'acceptActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'true',
'propertyName' => 'second_purchase_workflow_conversion',
'name' => 'Set Property',
),
array(
'type' => 'COPY_PROPERTY',
'sourceProperty' => 'last_order_value',
'targetProperty' => 'second_purchase_workflow_conversion_amount',
'targetModel' => 'CONTACT',
'name' => 'Copy property',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'second_purchase_workflow_conversion_date',
'model' => 'CONTACT',
'name' => 'Second Purchase Workflow Conversion Date',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Set Property',
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'enumeration',
'property' => 'current_roi_campaign',
'value' => '3rd Order Thank You',
'operator' => 'SET_ANY',
),
),
),
'acceptActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'true',
'propertyName' => 'third_purchase_workflow_conversion',
'name' => 'Set Property',
),
array(
'type' => 'COPY_PROPERTY',
'sourceProperty' => 'last_order_value',
'targetProperty' => 'third_purchase_workflow_conversion_amount',
'targetModel' => 'CONTACT',
'name' => 'COPY_PROPERTY',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'third_purchase_workflow_conversion_date',
'model' => 'CONTACT',
'name' => 'Third Purchase Workflow Conversion Date',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Set Property',
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'enumeration',
'property' => 'current_roi_campaign',
'value' => 'Customer Reengagement',
'operator' => 'SET_ANY',
),
),
),
'acceptActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'true',
'propertyName' => 'customer_reengagement_workflow_conversion',
'name' => 'Set Property',
),
array(
'type' => 'COPY_PROPERTY',
'sourceProperty' => 'last_order_value',
'targetProperty' => 'customer_reengagement_workflow_conversion_amount',
'targetModel' => 'CONTACT',
'name' => 'Copy property',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'customer_reengagement_workflow_conversion_date',
'name' => 'Customer Reengagement Workflow Conversion Date',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Set Property',
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'enumeration',
'property' => 'current_roi_campaign',
'value' => 'Customer Rewards',
'operator' => 'SET_ANY',
),
),
),
'acceptActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'true',
'propertyName' => 'customer_rewards_workflow_conversion',
'name' => 'Set Property',
),
array(
'type' => 'COPY_PROPERTY',
'sourceProperty' => 'last_order_value',
'targetProperty' => 'customer_rewards_workflow_conversion_amount',
'targetModel' => 'CONTACT',
'name' => 'Copy property',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'customer_rewards_workflow_conversion_date',
'model' => 'CONTACT',
'name' => 'Customer Rewards Workflow Conversion Date',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Set Property',
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'enumeration',
'property' => 'current_roi_campaign',
'value' => 'Abandoned Cart Recovery',
'operator' => 'SET_ANY',
),
),
),
'acceptActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'true',
'propertyName' => 'abandoned_cart_recovery_workflow_conversion',
'name' => 'Set Property',
),
array(
'type' => 'COPY_PROPERTY',
'sourceProperty' => 'last_order_value',
'targetProperty' => 'abandoned_cart_recovery_workflow_conversion_amount',
'targetModel' => 'CONTACT',
'name' => 'Copy Property',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'abandoned_cart_recovery_workflow_conversion_date',
'model' => 'CONTACT',
'name' => 'Abandoned Cart Recovery Workflow Conversion Date',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Set Property',
),
),
'rejectActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'None',
'propertyName' => 'current_roi_campaign',
'name' => 'Set Property',
),
),
),
),
),
),
),
),
),
),
),
),
),
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: After order Workflow',
'enabled' => true,
'actions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'number',
'property' => 'total_number_of_orders',
'value' => 3,
'operator' => 'EQ',
),
),
),
'acceptActions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: 3rd Order Thank You',
'workflowId' => get_option( 'WooCommerce: 3rd Order Thank You', '' ),
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => '',
'propertyName' => 'customer_new_order',
'name' => 'Customer New Order',
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'number',
'property' => 'total_number_of_orders',
'value' => 2,
'operator' => 'EQ',
),
),
),
'acceptActions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: 2nd Order Thank You & Get a 3rd Order',
'workflowId' => get_option( 'WooCommerce: 2nd Order Thank You & Get a 3rd Order', '' ),
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => '',
'propertyName' => 'customer_new_order',
'name' => 'Customer New Order',
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinTimeMode' => 'PAST',
'type' => 'number',
'property' => 'total_number_of_orders',
'value' => 1,
'operator' => 'EQ',
),
),
),
'acceptActions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: Welcome New Customer & Get a 2nd Order',
'workflowId' => get_option( 'WooCommerce: Welcome New Customer & Get a 2nd Order', '' ),
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => '',
'propertyName' => 'customer_new_order',
'name' => 'Customer New Order',
),
),
'rejectActions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => '',
'propertyName' => 'customer_new_order',
'name' => 'Customer New Order',
),
),
),
),
),
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: Order Workflow',
'enabled' => true,
'actions' => array(
array(
'type' => 'DELAY',
'delayMillis' => 300000,
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => '',
'propertyName' => 'lifecyclestage',
'name' => 'Lifecycle stage',
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 'customer',
'propertyName' => 'lifecyclestage',
'name' => 'Lifecycle stage',
),
array(
'type' => 'WORKFLOW_ENROLLMENT',
'workflowId' => get_option( 'WooCommerce: ROI Calculation', '' ),
'name' => 'WooCommerce: ROI Calculation',
),
array(
'type' => 'WORKFLOW_ENROLLMENT',
'workflowId' => get_option( 'WooCommerce: After order Workflow', '' ),
'name' => 'WooCommerce: After order Workflow',
),
),
'enrollOnCriteriaUpdate' => true,
'segmentCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'PropertyValue',
'type' => 'enumeration',
'property' => 'customer_new_order',
'value' => 'yes',
'operator' => 'SET_ANY',
),
),
),
);
if ( 'yes' == get_option( 'hubwoo_abncart_enable_addon', 'yes' ) ) {
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: Abandoned Cart Recovery',
'enabled' => true,
'actions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'propertyName' => 'current_roi_campaign',
'newValue' => 'Abandoned Cart Recovery',
'name' => 'Current ROI Campaign',
),
array(
'type' => 'DATE_STAMP_PROPERTY',
'propertyName' => 'abandoned_cart_recovery_workflow_start_date',
'name' => 'Abandoned Cart Recovery Workflow Start Date',
),
array(
'type' => 'DELAY',
'delayMillis' => 345600000,
),
array(
'type' => 'DELAY',
'delayMillis' => 1209600000,
),
array(
'type' => 'SET_CONTACT_PROPERTY',
'propertyName' => 'current_roi_campaign',
'newValue' => 'None',
'name' => 'Current ROI Campaign',
),
),
'onlyExecOnBizDays' => true,
'enrollOnCriteriaUpdate' => true,
'segmentCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'PropertyValue',
'type' => 'enumeration',
'property' => 'current_abandoned_cart',
'value' => $abandoned_status,
'operator' => 'SET_ANY',
),
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'Workflow',
'workflowId' => get_option( 'WooCommerce: Order Workflow', '' ),
'operator' => 'ACTIVE_IN_WORKFLOW',
),
),
),
'reEnrollmentTriggerSets' => array(
array(
array(
'type' => 'CONTACT_PROPERTY_NAME',
'id' => 'current_abandoned_cart',
),
array(
'type' => 'CONTACT_PROPERTY_VALUE',
'id' => $abandoned_status,
),
),
),
);
}
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: set Order Recency 1 Ratings',
'enabled' => true,
'actions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 1,
'propertyName' => 'order_recency_rating',
'name' => 'Order Recency Rating',
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'Workflow',
'workflowId' => get_option( 'WooCommerce: Order Workflow', '' ),
'operator' => 'ACTIVE_IN_WORKFLOW',
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: set Order Recency 2 Ratings',
'enabled' => true,
'actions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 2,
'propertyName' => 'order_recency_rating',
'name' => 'Order Recency Rating',
),
array(
'type' => 'DELAY',
'delayMillis' => '31104000000',
),
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 1 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 1 Ratings', '' ),
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'Workflow',
'workflowId' => get_option( 'WooCommerce: Order Workflow', '' ),
'operator' => 'ACTIVE_IN_WORKFLOW',
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: set Order Recency 3 Ratings',
'enabled' => true,
'actions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 3,
'propertyName' => 'order_recency_rating',
'name' => 'Order Recency Rating',
),
array(
'type' => 'DELAY',
'delayMillis' => '15552000000',
),
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 2 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 2 Ratings', '' ),
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'Workflow',
'workflowId' => get_option( 'WooCommerce: Order Workflow', '' ),
'operator' => 'ACTIVE_IN_WORKFLOW',
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: set Order Recency 4 Ratings',
'enabled' => true,
'actions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 4,
'propertyName' => 'order_recency_rating',
'name' => 'Order Recency Rating',
),
array(
'type' => 'DELAY',
'delayMillis' => '7776000000',
),
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 3 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 3 Ratings', '' ),
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'Workflow',
'workflowId' => get_option( 'WooCommerce: Order Workflow', '' ),
'operator' => 'ACTIVE_IN_WORKFLOW',
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: set Order Recency 5 Ratings',
'enabled' => true,
'actions' => array(
array(
'type' => 'SET_CONTACT_PROPERTY',
'newValue' => 5,
'propertyName' => 'order_recency_rating',
'name' => 'Order Recency Rating',
),
array(
'type' => 'DELAY',
'delayMillis' => '2592000000',
),
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 4 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 4 Ratings', '' ),
),
),
'goalCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'Workflow',
'workflowId' => get_option( 'WooCommerce: Order Workflow', '' ),
'operator' => 'ACTIVE_IN_WORKFLOW',
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: Update Historical Order Recency Rating',
'enabled' => true,
'actions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinLastTime' => 31,
'withinLastTimeUnit' => 'DAYS',
'withinLastDays' => 31,
'withinTimeMode' => 'PAST',
'type' => 'date',
'property' => 'last_order_date',
'operator' => 'WITHIN_TIME',
),
),
),
'acceptActions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 5 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 5 Ratings', '' ),
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinLastTime' => 30,
'withinLastTimeUnit' => 'DAYS',
'reverseWithinTimeWindow' => true,
'withinLastDays' => 30,
'withinTimeMode' => 'PAST',
'type' => 'date',
'property' => 'last_order_date',
'operator' => 'WITHIN_TIME',
),
array(
'withinLastTime' => 91,
'withinLastTimeUnit' => 'DAYS',
'withinLastDays' => 91,
'withinTimeMode' => 'PAST',
'type' => 'date',
'property' => 'last_order_date',
'operator' => 'WITHIN_TIME',
),
),
),
'acceptActions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 4 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 4 Ratings', '' ),
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinLastTime' => 90,
'withinLastTimeUnit' => 'DAYS',
'reverseWithinTimeWindow' => true,
'withinLastDays' => 90,
'withinTimeMode' => 'PAST',
'type' => 'date',
'property' => 'last_order_date',
'operator' => 'WITHIN_TIME',
),
array(
'withinLastTime' => 181,
'withinLastTimeUnit' => 'DAYS',
'withinLastDays' => 181,
'withinTimeMode' => 'PAST',
'type' => 'date',
'property' => 'last_order_date',
'operator' => 'WITHIN_TIME',
),
),
),
'acceptActions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 3 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 3 Ratings', '' ),
),
),
'rejectActions' => array(
array(
'type' => 'BRANCH',
'filters' => array(
array(
array(
'withinLastTime' => 180,
'withinLastTimeUnit' => 'DAYS',
'reverseWithinTimeWindow' => true,
'withinLastDays' => 180,
'withinTimeMode' => 'PAST',
'type' => 'date',
'property' => 'last_order_date',
'operator' => 'WITHIN_TIME',
),
array(
'withinLastTime' => 365,
'withinLastTimeUnit' => 'DAYS',
'withinLastDays' => 365,
'withinTimeMode' => 'PAST',
'type' => 'date',
'property' => 'last_order_date',
'operator' => 'WITHIN_TIME',
),
),
),
'acceptActions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 2 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 2 Ratings', '' ),
),
),
'rejectActions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'name' => 'WooCommerce: set Order Recency 1 Ratings',
'workflowId' => get_option( 'WooCommerce: set Order Recency 1 Ratings', '' ),
),
),
),
),
),
),
),
),
),
),
);
$workflows[] = array(
'type' => 'DRIP_DELAY',
'name' => 'WooCommerce: Enroll Customers for Recency Settings',
'enabled' => true,
'actions' => array(
array(
'type' => 'WORKFLOW_ENROLLMENT',
'workflowId' => get_option( 'WooCommerce: Update Historical Order Recency Rating', '' ),
'name' => 'WooCommerce: Update Historical Order Recency Rating',
),
),
'enrollOnCriteriaUpdate' => true,
'segmentCriteria' => array(
array(
array(
'withinTimeMode' => 'PAST',
'filterFamily' => 'PropertyValue',
'type' => 'enumeration',
'property' => 'lifecyclestage',
'value' => 'customer',
'operator' => 'SET_ANY',
),
),
),
'reEnrollmentTriggerSets' => array(
array(
array(
'type' => 'CONTACT_PROPERTY_NAME',
'id' => 'lifecyclestage',
),
array(
'type' => 'CONTACT_PROPERTY_VALUE',
'id' => 'customer',
),
),
),
);
return apply_filters( 'hubwoo_workflows', $workflows );
}
/**
* Customer new order.
*
* @since 1.0.0
*/
public function hubwoo_new_order_status() {
$values = array();
$values[] = array(
'label' => __( 'Yes', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'yes',
);
$values[] = array(
'label' => __( 'No', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'no',
);
return $values;
}
/**
* Get optin sources.
*
* @since 1.0.0
*/
public function get_user_marketing_sources() {
$sources = array();
$sources[] = array(
'label' => __( 'Checkout', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'checkout',
);
$sources[] = array(
'label' => __( 'Registration', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'registration',
);
$sources[] = array(
'label' => __( 'Others', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'other',
);
$sources = apply_filters( 'hubwoo_user_marketing_sources', $sources );
return $sources;
}
/**
* Get all campaigns names for hubspot.
*
* @since 1.0.0
*/
public function get_all_campaign_names() {
$all_names = array();
$all_names[] = array(
'label' => 'MQL Nurture & Conversion',
'value' => 'MQL Nurture & Conversion',
);
$all_names[] = array(
'label' => 'New Customer Welcome & Get a 2nd Order',
'value' => 'New Customer Welcome & Get a 2nd Order',
);
$all_names[] = array(
'label' => '2nd Order Thank You & Get a 3rd Order',
'value' => '2nd Order Thank You & Get a 3rd Order',
);
$all_names[] = array(
'label' => '3rd Order Thank You',
'value' => '3rd Order Thank You',
);
$all_names[] = array(
'label' => 'Customer Reengagement',
'value' => 'Customer Reengagement',
);
$all_names[] = array(
'label' => 'Customer Rewards',
'value' => 'Customer Rewards',
);
$all_names[] = array(
'label' => 'Abandoned Cart Recovery',
'value' => 'Abandoned Cart Recovery',
);
$all_names[] = array(
'label' => 'None',
'value' => 'None',
);
return $all_names;
}
/**
* Conversion options for campaigns on hubspot.
*
* @since 1.0.0
*/
public function hubwoo_campaign_conversion_options() {
$values = array();
$values[] = array(
'label' => __( 'Yes', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'true',
);
$values[] = array(
'label' => __( 'No', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'false',
);
return $values;
}
/**
* Get subscriptions billing period for hubspot.
*
* @since 1.0.0
*/
public static function get_subscriptions_billing_period() {
$values = array();
$values[] = array(
'label' => __( 'Day', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'day',
);
$values[] = array(
'label' => __( 'Week', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'week',
);
$values[] = array(
'label' => __( 'Month', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'month',
);
$values[] = array(
'label' => __( 'Year', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'year',
);
$values = apply_filters( 'hubwoo_subscriptions_period', $values );
return $values;
}
/**
* Get subscriptions billing interval for hubspot.
*
* @since 1.0.0
*/
public static function get_subscriptions_billing_interval() {
$values = array();
$values[] = array(
'label' => __( 'Every', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 1,
);
$values[] = array(
'label' => __( 'Every Second', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 2,
);
$values[] = array(
'label' => __( 'Every Third', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 3,
);
$values[] = array(
'label' => __( 'Every Fourth', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 4,
);
$values[] = array(
'label' => __( 'Every Fifth', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 5,
);
$values[] = array(
'label' => __( 'Every Sixth', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 6,
);
$values = apply_filters( 'hubwoo_subscriptions_interval', $values );
return $values;
}
/**
* Get all available woocommerce order statuses.
*
* @return JSON Order statuses in the form of enumaration options.
* @since 1.0.0
*/
public static function get_order_statuses() {
$all_wc_statuses = array();
// get all statuses.
$all_status = wc_get_order_statuses();
// if status available.
if ( is_array( $all_status ) && count( $all_status ) ) {
foreach ( $all_status as $status_id => $status_label ) {
$all_wc_statuses[] = array(
'label' => $status_label,
'value' => $status_id,
);
}
}
$all_wc_statuses = apply_filters( 'hubwoo_order_status_options', $all_wc_statuses );
return $all_wc_statuses;
}
/**
* Get all available woocommerce order statuses for subscriptions.
*
* @return JSON Order statuses in the form of enumaration options.
* @since 1.0.0
*/
public static function get_subscription_status_options() {
$all_wc_subs_status = array();
// get all statuses.
$all_status = wcs_get_subscription_statuses();
// if status available.
if ( is_array( $all_status ) && count( $all_status ) ) {
foreach ( $all_status as $status_id => $status_label ) {
$all_wc_subs_status[] = array(
'label' => $status_label,
'value' => $status_id,
);
}
}
$all_wc_subs_status = apply_filters( 'hubwoo_order_status_options', $all_wc_subs_status );
return $all_wc_subs_status;
}
/**
* Get ratings for RFM analysis.
*
* @return ratings for RFM analysis.
* @since 1.0.0
*/
public function get_rfm_rating() {
$rating = array();
$rating[] = array(
'label' => __( '5', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 5,
);
$rating[] = array(
'label' => __( '4', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 4,
);
$rating[] = array(
'label' => __( '3', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 3,
);
$rating[] = array(
'label' => __( '2', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 2,
);
$rating[] = array(
'label' => __( '1', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 1,
);
$rating = apply_filters( 'hubwoo_rfm_ratings', $rating );
return $rating;
}
/**
* Get user actions for marketing.
*
* @return array marketing actions for users.
* @since 1.0.0
*/
public function get_user_marketing_action() {
$user_actions = array();
$user_actions[] = array(
'label' => __( 'Yes', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'yes',
);
$user_actions[] = array(
'label' => __( 'No', 'makewebbetter-hubspot-for-woocommerce' ),
'value' => 'no',
);
$user_actions = apply_filters( 'hubwoo_user_marketing_actions', $user_actions );
return $user_actions;
}
/**
* Last order products html for hubspot.
*
* @since 1.0.0
* @param int $last_order_id last order if to create html.
*/
public function hubwoo_last_order_html( $last_order_id = '' ) {
$products_html = '';
if ( ! empty( $last_order_id ) ) {
$order = new WC_Order( $last_order_id );
$key = 0;
$last_order_products = array();
if ( ! empty( $order ) || ! is_wp_error( $order ) ) {
$order_items = $order->get_items();
if ( is_array( $order_items ) && count( $order_items ) ) {
foreach ( $order_items as $item_id_1 => $wc_order_item_product ) {
if ( ! empty( $wc_order_item_product ) && $wc_order_item_product instanceof WC_Order_Item ) {
$item_id = $wc_order_item_product->get_variation_id();
if ( empty( $item_id ) ) {
$item_id = $wc_order_item_product->get_product_id();
}
$product = wc_get_product( $item_id );
if ( get_post_status( $item_id ) == 'trash' || get_post_status( $item_id ) == false ) {
continue;
}
$attachment_src = wp_get_attachment_image_src( get_post_thumbnail_id( $product->get_id() ), 'single-post-thumbnail' );
$last_order_products[ $key ]['image'] = isset( $attachment_src[0] ) ? $attachment_src[0] : '';
$last_order_products[ $key ]['name'] = get_the_title( $item_id );
$last_order_products[ $key ]['url'] = get_permalink( $item_id );
$last_order_products[ $key ]['price'] = $product->get_price();
$last_order_products[ $key ]['qty'] = $wc_order_item_product->get_quantity();
$last_order_products[ $key ]['disc'] = $wc_order_item_product->get_total();
$key++;
}
}
}
}
if ( count( $last_order_products ) ) {
$products_html = '<div><hr></div><!--[if mso]><center><table width="100%" style="width:600px;"><![endif]--><table style="font-size: 14px; font-family: Arial, sans-serif; line-height: 20px; text-align: left; table-layout: fixed;" width="100%"><thead><tr><th style="text-align: center;word-wrap: unset;">' . __( 'Image', 'makewebbetter-hubspot-for-woocommerce' ) . '</th><th style="text-align: center;word-wrap: unset;">' . __( 'Item', 'makewebbetter-hubspot-for-woocommerce' ) . '</th><th style="text-align: center;word-wrap: unset;">' . __( 'Qty', 'makewebbetter-hubspot-for-woocommerce' ) . '</th><th style="text-align: center;word-wrap: unset;">' . __( 'Price', 'huwboo' ) . '</th><th style="text-align: center;word-wrap: unset;">' . __( 'Discount', 'makewebbetter-hubspot-for-woocommerce' ) . '</th><th style="text-align: center;word-wrap: unset;">' . __( 'Total', 'makewebbetter-hubspot-for-woocommerce' ) . '</th></tr></thead><tbody>';
foreach ( $last_order_products as $single_product ) {
$total = $single_product['disc'];
$disc = ( (int) $single_product['price'] * $single_product['qty'] ) - $total;
$products_html .= '<tr><td style="max-width: 20%;width: 100%; text-align: center;"><img height="50" width="50" src="' . $single_product['image'] . '"></td><td style="max-width: 50%;width: 100%; text-align: center; font-weight: normal;font-size: 12px;word-wrap: unset;"><a style="display: inline-block;" target="_blank" href="' . $single_product['url'] . '"><strong>' . $single_product['name'] . '</strong></a></td><td style="max-width: 10%;width: 100%;text-align: center;">' . $single_product['qty'] . '</td><td style="max-width: 10%;width: 100%;text-align: center; font-size: 10px;">' . wc_price( $single_product['price'], array( 'currency' => $order->get_currency() ) ) . '</td><td style="max-width: 10%;width: 100%;text-align: center; font-size: 10px;">' . wc_price( $disc, array( 'currency' => $order->get_currency() ) ) . '</td><td style="max-width: 10%;width: 100%;text-align: center; font-size: 10px;">' . wc_price( $total, array( 'currency' => $order->get_currency() ) ) . '</td></tr>';
}
$products_html .= '</tbody></table><!--[if mso]></table></center><![endif]--><div><hr></div>';
}
}
return $products_html;
}
}