Integration Hooks
FluentCRM Core IntermediateThese action hooks fire when contacts are created or updated through third-party integrations.
Fluent Forms
fluent_crm/contact_added_by_fluentform
This action runs when a contact has been added via Fluent Forms.
Parameters
$subscriberSubscriber Model$entryArray$formObject$feedArray
Usage:
add_action('fluent_crm/contact_added_by_fluentform', function($subscriber, $entry, $form, $feed) {
// Do whatever you want with the $subscriber created by Fluent Forms
}, 10, 4);Source: app/Services/ExternalIntegrations/FluentForm/Bootstrap.php
fluent_crm/contact_updated_by_fluentform
This action runs when a contact has been updated via Fluent Forms.
Parameters
$subscriberSubscriber Model$entryArray$formObject$feedArray
Usage:
add_action('fluent_crm/contact_updated_by_fluentform', function($subscriber, $entry, $form, $feed) {
// Do whatever you want with the $subscriber updated via Fluent Forms
}, 10, 4);Source: app/Services/ExternalIntegrations/FluentForm/Bootstrap.php
WooCommerce
fluent_crm/woo_dynamic_coupon_created
This action runs when a dynamically created coupon has been applied. This hook provides access to the created coupon object and related data, allowing for the programmatic addition of required metadata fields.
Parameters
$createdCoupon- WC_Coupon object$funnelMetric- Funnel Metric Model$subscriber- Subscriber Model$couponData- Array of coupon data
Usage:
add_action('fluent_crm/woo_dynamic_coupon_created', function($createdCoupon, $funnelMetric, $subscriber, $couponData) {
// Do your stuff here
}, 10, 4);Source: fluentcampaign-pro/app/Services/Integrations/WooCommerce/WooSmartCodeParse.php
fluent_crm/before_woo_checkout_check
ProFires before processing the WooCommerce checkout subscription checkbox. Useful for custom validation.
Parameters
$isCheckedBoolean - whether the checkbox is checked$orderIdINT - WooCommerce order ID
Usage:
add_action('fluent_crm/before_woo_checkout_check', function($isChecked, $orderId) {
// Custom pre-subscription validation
}, 10, 2);Source: fluentcampaign-pro/app/Services/Integrations/WooCommerce/WooInit.php
WooCommerce Abandoned Cart
Profluent_crm/ab_cart_woo_recovered
Fires when an abandoned cart is recovered (customer returns and completes the purchase).
Parameters
$abandonCartObject - abandoned cart data$orderWC_Order - the completed order$oldStatusString - previous cart status
Usage:
add_action('fluent_crm/ab_cart_woo_recovered', function($abandonCart, $order, $oldStatus) {
// Track cart recovery metrics
}, 10, 3);Source: fluentcampaign-pro/app/Modules/AbandonCart/Woo/WooCartTrackingInit.php
fluent_crm/ab_cart_woo_lost
Fires when an abandoned cart is marked as lost (expired, no recovery).
Parameters
$abandonCartObject - abandoned cart data$orderWC_Order - the associated order$oldStatusString - previous cart status
Usage:
add_action('fluent_crm/ab_cart_woo_lost', function($abandonCart, $order, $oldStatus) {
// Handle lost cart
}, 10, 3);Source: fluentcampaign-pro/app/Modules/AbandonCart/Woo/WooCartTrackingInit.php
fluentcrm/ab_cart_restore_failed
Fires when an abandoned cart restore attempt fails.
Two different names for the same event
The WooCommerce driver fires fluentcrm/ab_cart_restore_failed — note the fluentcrm/ prefix, which does not match FluentCRM's usual fluent_crm/ convention. The FluentCart driver in core fires fluent_crm/ab_cart_restore_failed instead. Register both if you want to cover either store:
foreach (['fluentcrm/ab_cart_restore_failed', 'fluent_crm/ab_cart_restore_failed'] as $hook) {
add_action($hook, function($abandonCart) {
// Log the failed cart restore attempt
});
}Parameters
$abandonCartObject|null - abandoned cart data (null if not found)
Usage:
add_action('fluentcrm/ab_cart_restore_failed', function($abandonCart) {
// WooCommerce carts only — see the warning above for FluentCart
});Source: fluentcampaign-pro/app/Modules/AbandonCart/Woo/WooCartTrackingInit.php (fluentcrm/…), app/Modules/AbandonCart/Drivers/FluentCart/FluentCartTrackingInit.php (fluent_crm/…)
Abandoned Cart Drivers
fluent_crm/abandon_cart_register_drivers
Fires on init (priority 90) while the abandoned cart module boots, right after the built-in FluentCart driver is registered and before the module's active check — so drivers registered here always appear in the abandoned cart settings, even when the feature is not enabled yet. The Pro addon registers its WooCommerce driver on this hook.
A driver extends FluentCrm\App\Modules\AbandonCart\Drivers\AbstractCartDriver — implementing getProviderSlug(), getProviderLabel(), isAvailable(), register(), registerAutomationTrigger(), and the cart rendering/recovery methods — and must be registered explicitly with DriverManager::register(); unlike SMS drivers, instantiating one does not self-register. Only drivers that are available and toggled on in the settings are booted.
Parameters
None.
Usage:
use FluentCrm\App\Modules\AbandonCart\Drivers\DriverManager;
add_action('fluent_crm/abandon_cart_register_drivers', function () {
DriverManager::register(new MyCartDriver()); // extends AbstractCartDriver
});Source: app/Modules/AbandonCart/AbandonCart.php
FluentCart Abandoned Cart
These are the FluentCart siblings of the WooCommerce abandoned cart hooks above — same argument shape, fired by the FluentCart driver that ships in core.
fluent_crm/ab_cart_fluent_cart_recovered
Fires when a FluentCart abandoned cart is marked as recovered — the tracked order is paid, or its status changes to a "win" status while the cart is still processing, lost, or cancelled. Carts still in draft, opt_out, or pending are deleted instead of recovered, so this hook does not fire for them. The cart row is already saved with status = 'recovered', the order ID, the order total, and recovered_at when this runs. FluentCart sibling of fluent_crm/ab_cart_woo_recovered.
Parameters
$abCartObject - abandoned cart model, already saved asrecovered$orderObject - the FluentCart order$oldStatusString - the cart's status before recovery
Usage:
add_action('fluent_crm/ab_cart_fluent_cart_recovered', function($abCart, $order, $oldStatus) {
// Track cart recovery metrics
}, 10, 3);Source: app/Modules/AbandonCart/Drivers/FluentCart/FluentCartTrackingInit.php
fluent_crm/ab_cart_fluent_cart_lost
Fires when a FluentCart abandoned cart is marked as lost — the tracked order's status changes to failed or canceled. Nothing fires when the cart is already lost. The cart row is already saved with status = 'lost' when this runs; the driver's "lost" list/tag actions and automation cancellation happen after the hook. FluentCart sibling of fluent_crm/ab_cart_woo_lost.
Parameters
$abCartObject - abandoned cart model, already saved aslost$orderObject - the FluentCart order$oldStatusString - the cart's status before it was marked lost
Usage:
add_action('fluent_crm/ab_cart_fluent_cart_lost', function($abCart, $order, $oldStatus) {
// Handle lost cart
}, 10, 3);Source: app/Modules/AbandonCart/Drivers/FluentCart/FluentCartTrackingInit.php
SureCart
Profluent_surecart_purchase_created_wrap
Fires when a SureCart purchase is created. Contains formatted order data.
Parameters
$orderDataArray - formatted order data
Usage:
add_action('fluent_surecart_purchase_created_wrap', function($orderData) {
// Handle SureCart purchase
});Source: fluentcampaign-pro/app/Services/Integrations/SureCart/SureCartInit.php
fluent_surecart_purchase_refund_wrap
Fires when a SureCart purchase is refunded or revoked.
Parameters
$orderDataArray - formatted order data
Usage:
add_action('fluent_surecart_purchase_refund_wrap', function($orderData) {
// Handle SureCart refund
});Source: fluentcampaign-pro/app/Services/Integrations/SureCart/SureCartInit.php