# Webhooks & Integration Filters
These filter hooks let you customize webhook processing, import providers, commerce integrations, and third-party data.
## Webhooks
### `fluent_crm/incoming_webhook_data`
Filter incoming webhook data before it gets validated and processed. Use this to format or transform data from external sources.
**Parameters**
- `$postData` Array - Posted data on the webhook
- `$webhook` [Webhook Model](/database/models/webhook)
- `$request` Request Object
**Usage:**
```php
add_filter('fluent_crm/incoming_webhook_data', function($postData, $webhook, $request) {
if ($webhook->id != 1) {
return $postData;
}
// Transform data for webhook #1
$postData['email'] = $postData['user_email'] ?? '';
return $postData;
}, 10, 3);
```
**Source:** `app/Hooks/Handlers/ExternalPages.php`
---
### `fluent_crm/webhook_contact_data`
Filter the formatted contact data from a webhook before it is used to create or update a contact. At this point the raw webhook data has already been processed.
**Parameters**
- `$data` Array - Formatted contact data
- `$postData` Array - Original posted data
- `$webhook` [Webhook Model](/database/models/webhook)
**Usage:**
```php
add_filter('fluent_crm/webhook_contact_data', function($data, $postData, $webhook) {
// Override the status for a specific webhook
if ($webhook->id === 2) {
$data['status'] = 'subscribed';
}
return $data;
}, 10, 3);
```
**Source:** `app/Hooks/Handlers/ExternalPages.php`
---
## Import & Migration
### `fluent_crm/import_providers`
Filter the registered import provider definitions (CSV, WP Users, etc.).
**Parameters**
- `$providers` Array - Import provider definitions
**Usage:**
```php
add_filter('fluent_crm/import_providers', function($providers) {
$providers['my_source'] = [
'label' => 'My Data Source',
'callback' => 'MyImporter::handle'
];
return $providers;
});
```
**Source:** `app/Http/Controllers/ImporterController.php`
---
### `fluent_crm/csv_import_contact_limit_per_request`
Filter the number of CSV rows to process per import request.
**Parameters**
- `$limit` INT - Default `100`
**Usage:**
```php
add_filter('fluent_crm/csv_import_contact_limit_per_request', function($limit) {
return 500;
});
```
**Source:** `app/Http/Controllers/CsvController.php`
---
### `fluent_crm/import_users_limit_per_request`
Filter the number of WordPress users to process per import request.
**Parameters**
- `$limit` INT - Default `100`
**Usage:**
```php
add_filter('fluent_crm/import_users_limit_per_request', function($limit) {
return 200;
});
```
**Source:** `app/Http/Controllers/ImporterController.php`
---
### `fluent_crm/saas_migrators`
Filter the array of registered SaaS migrator definitions (MailChimp, ConvertKit, MailerLite, etc.).
**Parameters**
- `$migrators` Array - Migrator definitions keyed by service slug
**Usage:**
```php
add_filter('fluent_crm/saas_migrators', function($migrators) {
$migrators['my_service'] = [
'title' => 'My Email Service',
'description' => 'Import contacts from My Email Service',
'logo' => 'https://example.com/logo.png'
];
return $migrators;
});
```
**Source:** `app/Http/Controllers/MigratorController.php`
---
## Commerce & Integration Providers
### `fluent_crm/purchase_history_providers`
Filter the array of registered purchase history providers (WooCommerce, Easy Digital Downloads, etc.).
**Parameters**
- `$providers` Array - Provider definitions
**Usage:**
```php
add_filter('fluent_crm/purchase_history_providers', function($providers) {
$providers[] = 'my_shop';
return $providers;
});
```
**Source:** `app/Services/Helper.php`
---
### `fluent_crm/woo_purchase_sidebar_html`
Filter the WooCommerce purchase summary HTML shown on a contact's profile sidebar.
**Parameters**
- `$html` String - Sidebar HTML
- `$subscriber` [Subscriber Model](/database/models/subscriber)
- `$page` INT - Pagination page number
**Usage:**
```php
add_filter('fluent_crm/woo_purchase_sidebar_html', function($html, $subscriber, $page) {
if (!$html) {
return ''; // No data
}
$html .= '
Custom WooCommerce info
';
return $html;
}, 20, 3);
```
**Source:** `app/Hooks/Handlers/PurchaseHistory.php`
---
### `fluent_crm/edd_purchase_sidebar_html`
Filter the Easy Digital Downloads purchase summary HTML shown on a contact's profile sidebar.
**Parameters**
- `$html` String - Sidebar HTML
- `$subscriber` [Subscriber Model](/database/models/subscriber)
- `$page` INT - Pagination page number
**Usage:**
```php
add_filter('fluent_crm/edd_purchase_sidebar_html', function($html, $subscriber, $page) {
if (!$html) {
return '';
}
$html .= 'Custom EDD info
';
return $html;
}, 20, 3);
```
**Source:** `app/Hooks/Handlers/PurchaseHistory.php`
---
### `fluent_crm/contact_lifetime_value`
Filter the contact's lifetime value (total revenue). Provided by commerce integrations.
**Parameters**
- `$value` Float - Default `0`
- `$profile` Array - Contact profile data
**Usage:**
```php
add_filter('fluent_crm/contact_lifetime_value', function($value, $profile) {
// Calculate from your own commerce data
return $value;
}, 10, 2);
```
**Source:** `app/Functions/helpers.php`
---
### `fluentcrm_currency_sign`
Filter the currency symbol used for displaying monetary values.
**Parameters**
- `$sign` String - Default `''`
**Usage:**
```php
add_filter('fluentcrm_currency_sign', function($sign) {
return '$';
});
```
**Source:** `app/Hooks/Handlers/AdminMenu.php`, `app/Functions/helpers.php`
---
### `fluent_crm/form_submission_providers`
Filter the list of registered form submission provider slugs for the contact profile (e.g., FluentForms, Gravity Forms).
**Parameters**
- `$providers` Array - Provider slugs
**Usage:**
```php
add_filter('fluent_crm/form_submission_providers', function($providers) {
$providers[] = 'gravity_forms';
return $providers;
});
```
**Source:** `app/Hooks/Handlers/AdminMenu.php`
---
### `fluentcrm_deep_integration_providers`
Filter the array of deep-integration provider definitions (Elementor, Gravity Forms, etc.).
**Parameters**
- `$providers` Array - Provider definitions
- `$withFields` Boolean - Whether to include field mappings
**Usage:**
```php
add_filter('fluentcrm_deep_integration_providers', function($providers, $withFields) {
$providers['my_form_plugin'] = [
'title' => 'My Form Plugin',
'logo' => 'https://example.com/logo.png'
];
return $providers;
}, 10, 2);
```
**Source:** `app/Http/Controllers/SettingsController.php`
---
### `fluent_crm/advanced_report_providers`
Filter the array of registered advanced reporting provider definitions.
**Parameters**
- `$providers` Array - Default `[]`
**Usage:**
```php
add_filter('fluent_crm/advanced_report_providers', function($providers) {
$providers['my_reports'] = [
'title' => 'My Custom Reports',
'slug' => 'my_reports'
];
return $providers;
});
```
**Source:** `app/Http/Controllers/ReportingController.php`
---
## Dynamic Segments
### `fluentcrm_dynamic_segments`
Filter the list of registered dynamic segments. Use this to add custom segment types (e.g., "VIP Customers", "Users with Pending Orders").
**Parameters**
- `$segments` Array - registered segment definitions
**Usage:**
```php
add_filter('fluentcrm_dynamic_segments', function($segments) {
$segments[] = [
'slug' => 'high_value_customers',
'label' => 'High Value Customers',
'description' => 'Customers with total orders > $1000'
];
return $segments;
});
```
**Source:** `fluentcampaign-pro/app/Http/Controllers/DynamicSegmentController.php`
---
### `fluentcrm_dynamic_segment_{$slug}`
Filter subscriber data for a specific dynamic segment type. Implement this for each custom segment slug registered via `fluentcrm_dynamic_segments`.
**Parameters**
- `$segmentData` Mixed - segment query results
- `$segmentId` INT - segment ID
- `$options` Array - contains `subscribers` (bool) and `paginate` (bool)
**Usage:**
```php
add_filter('fluentcrm_dynamic_segment_high_value_customers', function($data, $segmentId, $options) {
// Return subscribers matching segment criteria
if ($options['subscribers']) {
// Return actual subscriber data
}
return ['total' => 150];
}, 10, 3);
```
**Source:** `fluentcampaign-pro/app/Http/Controllers/DynamicSegmentController.php`
---
## WooCommerce
### `fluent_crm/woo_checkout_fields`
Filter WooCommerce checkout form fields available for newsletter signup integration.
**Parameters**
- `$fields` Array - checkout field definitions
**Usage:**
```php
add_filter('fluent_crm/woo_checkout_fields', function($fields) {
// Customize checkout fields for CRM
return $fields;
});
```
**Source:** `fluentcampaign-pro/app/Services/Integrations/WooCommerce/WooInit.php`
---
### `fluent_crm/woo_block_checkout_consent_position`
Control the position of the newsletter consent checkbox in WooCommerce block-based checkout.
**Parameters**
- `$position` String - Default `'order'`
**Usage:**
```php
add_filter('fluent_crm/woo_block_checkout_consent_position', function($position) {
return 'contact'; // Move to contact section
});
```
**Source:** `fluentcampaign-pro/app/Services/Integrations/WooCommerce/WooInit.php`
---
### `fluent_crm/woo_checkout_auto_subscribe_data`
Filter subscriber data created during WooCommerce checkout auto-subscription.
**Parameters**
- `$subscriberData` Array - contact data to create/update
- `$order` WC_Order - the WooCommerce order
**Usage:**
```php
add_filter('fluent_crm/woo_checkout_auto_subscribe_data', function($subscriberData, $order) {
$subscriberData['source'] = 'woo_checkout';
return $subscriberData;
}, 10, 2);
```
**Source:** `fluentcampaign-pro/app/Services/Integrations/WooCommerce/WooInit.php`
---
### `fluent_crm/woo_order_conditions`
Filter available WooCommerce order-based automation conditions.
**Parameters**
- `$orderProps` Array - condition property definitions
**Usage:**
```php
add_filter('fluent_crm/woo_order_conditions', function($orderProps) {
$orderProps[] = [
'value' => 'custom_order_field',
'label' => 'Custom Order Field'
];
return $orderProps;
});
```
**Source:** `fluentcampaign-pro/app/Services/Integrations/WooCommerce/AutomationConditions.php`
---
### `fluent_crm/user_can_view_woo_report`
Control whether a user can access WooCommerce integration reports in FluentCRM.
**Parameters**
- `$canView` Boolean - default checks `view_woocommerce_reports` capability
**Usage:**
```php
add_filter('fluent_crm/user_can_view_woo_report', function($canView) {
return current_user_can('manage_options');
});
```
**Source:** `fluentcampaign-pro/app/Services/Integrations/WooCommerce/DeepIntegration.php`
---
### `fluent_crm/disable_woo_subscriptions_widget`
Disable the WooCommerce subscriptions widget for specific subscribers.
**Parameters**
- `$shouldDisable` Boolean - Default `false`
- `$subscriber` [Subscriber Model](/database/models/subscriber)
**Usage:**
```php
add_filter('fluent_crm/disable_woo_subscriptions_widget', function($shouldDisable, $subscriber) {
return $shouldDisable;
}, 10, 2);
```
**Source:** `fluentcampaign-pro/app/Services/Integrations/WooCommerce/WooInit.php`
---
## WooCommerce Abandoned Cart
### `fluent_crm/ab_cart_cookie_validity`
Filter how long the abandon cart tracking cookie is valid (in days).
**Parameters**
- `$days` INT - Default `30`
**Usage:**
```php
add_filter('fluent_crm/ab_cart_cookie_validity', function($days) {
return 14; // Track for 14 days
});
```
**Source:** `fluentcampaign-pro/app/Modules/AbandonCart/Woo/WooCartTrackingInit.php`
---
### `fluent_crm/ab_cart_opt_out_cookie_validity`
Filter how long the abandon cart opt-out cookie persists (in days).
**Parameters**
- `$days` INT - Default `7`
**Usage:**
```php
add_filter('fluent_crm/ab_cart_opt_out_cookie_validity', function($days) {
return 30;
});
```
**Source:** `fluentcampaign-pro/app/Modules/AbandonCart/Woo/WooCartTrackingInit.php`
---
### `fluent_crm/ab_cart_is_win_status`
Determine whether a WooCommerce order status should be considered a "win" (recovered cart).
**Parameters**
- `$isWon` Boolean - whether the status counts as recovery
- `$orderStatus` String - WooCommerce order status
- `$driver` Object - cart driver instance
**Usage:**
```php
add_filter('fluent_crm/ab_cart_is_win_status', function($isWon, $orderStatus, $driver) {
// Custom statuses that count as cart recovery
if ($orderStatus === 'wc-on-hold') {
return true;
}
return $isWon;
}, 10, 3);
```
**Source:** `fluentcampaign-pro/app/Modules/AbandonCart/Woo/WooDriver.php`
---
## EDD
### `fluent_crm/user_can_view_edd_report`
Control whether a user can access EDD integration reports in FluentCRM.
**Parameters**
- `$canView` Boolean - default checks `view_shop_sensitive_data` capability
**Usage:**
```php
add_filter('fluent_crm/user_can_view_edd_report', function($canView) {
return current_user_can('manage_options');
});
```
**Source:** `fluentcampaign-pro/app/Services/Integrations/Edd/DeepIntegration.php`
---
## Integration Metaboxes
### `fluentcrm_disable_integration_metaboxes`
Disable FluentCRM metaboxes within specific third-party plugin admin pages (WooCommerce, EDD, LearnDash, etc.).
**Parameters**
- `$shouldDisable` Boolean - Default `false`
- `$integrationName` String - integration slug (e.g., `woocommerce`, `edd`, `learndash`, `lifterlms`, `learnpress`, `tutorlms`)
**Usage:**
```php
add_filter('fluentcrm_disable_integration_metaboxes', function($shouldDisable, $integrationName) {
if ($integrationName === 'woocommerce') {
return true; // Disable metabox on WooCommerce product pages
}
return $shouldDisable;
}, 10, 2);
```
**Source:** `fluentcampaign-pro/app/Services/Integrations/` (multiple integration init files)