Skip to content

Integrations Actions

6 unique action hooks currently map to this category, across 7 call sites.

Hook Inventory

HookEditionCall SitesFirst Source
fluent_community/install_fluent_player_pluginCore1fluent-community/app/Http/Controllers/SettingController.php:317
fluent_community/install_messaging_pluginCore1fluent-community/app/Http/Controllers/SettingController.php:310
fluent_community/paywall_addedCore1fluent-community/Modules/Integrations/FluentCart/Http/Controllers/PaywallController.php:93
fluent_community/paywall_removedCore1fluent-community/Modules/Integrations/FluentCart/Http/Controllers/PaywallController.php:128
fluent_community/product_integration_feed_createdCore1fluent-community/Modules/Integrations/FluentCart/Paywalls.php:84
fluent_community/product_integration_feed_updatedCore2fluent-community/Modules/Integrations/FluentCart/Paywalls.php:57

fluent_community/install_fluent_player_plugin

  • Type: action
  • Edition: Core
  • Call sites: 1
  • When it fires: Fires when an administrator asks to install the FluentPlayer plugin from the add-ons screen.

Guarded by an explicit Pro check before it fires — a free install gets an error telling it to upgrade, so unlike the messaging hook this one is genuinely unreachable without Pro. Pro answers it with a direct background install from the vendor's S3 bucket. No arguments.

Call Sites

EditionSourceParameters
Corefluent-community/app/Http/Controllers/SettingController.php:317No parameters

Example

php
add_action('fluent_community/install_fluent_player_plugin', function () {
}, 10, 0);

Related: fluent_community/install_messaging_plugin · fluent_community/fluentplayer_defaults_settings

fluent_community/install_messaging_plugin

  • Type: action
  • Edition: Core
  • Call sites: 1
  • When it fires: Fires when an administrator asks to install the Fluent Messages plugin from the add-ons screen.

Fluent Messages is not hosted on wordpress.org, so there is no default installer — Pro answers this hook with a direct background install from the vendor's S3 bucket. On a free site nothing is listening and the endpoint reports success without having installed anything. The action carries no arguments and no result: it runs synchronously inside the request and the response is fixed either way.

Call Sites

EditionSourceParameters
Corefluent-community/app/Http/Controllers/SettingController.php:310No parameters

Example

php
add_action('fluent_community/install_messaging_plugin', function () {
}, 10, 0);

Related: fluent_community/install_fluent_player_plugin

fluent_community/paywall_added

  • Type: action
  • Edition: Core
  • Call sites: 1
  • When it fires: Fires after a FluentCart product is attached to a space or course as a paywall.

The product ID is already stored in the space's settings.cart_product_ids by the time it runs. Core answers by finding or creating the product's FluentCommunity integration feed so that a paid order grants access — which is why the paywall works at all. It requires FluentCart; without it the whole route group is absent.

Parameters

#NameTypeDescription
1$space\FluentCommunity\App\Models\BaseSpaceThe space or course being paywalled.
2$productIdintThe FluentCart product ID.

Call Sites

EditionSourceParameters
Corefluent-community/Modules/Integrations/FluentCart/Http/Controllers/PaywallController.php:93$space (Space)
$productId (int)

Example

php
add_action('fluent_community/paywall_added', function ($space, $productId) {
}, 10, 2);

Related: fluent_community/paywall_removed · fluent_community/product_integration_feed_created

fluent_community/paywall_removed

  • Type: action
  • Edition: Core
  • Call sites: 1
  • When it fires: Fires after a FluentCart product is detached from a space or course.

The third argument is the raw request payload, and core reads one key from it: unless revoke_access is exactly yes, the core handler returns immediately and the product's integration feed keeps granting access to the space even though the paywall is gone. Detaching and revoking are separate decisions, in other words.

Parameters

#NameTypeDescription
1$space\FluentCommunity\App\Models\BaseSpaceThe space or course the paywall was removed from.
2$productIdintThe FluentCart product ID.
3$requestDataarrayThe full request payload; revoke_access decides whether the integration feed is updated.

Call Sites

EditionSourceParameters
Corefluent-community/Modules/Integrations/FluentCart/Http/Controllers/PaywallController.php:128$space (Space)
$productId (int)
$request->all() (array)

Example

php
add_action('fluent_community/paywall_removed', function ($space, $productId, $requestData) {
}, 10, 3);

Related: fluent_community/paywall_added · fluent_community/product_integration_feed_updated

fluent_community/product_integration_feed_created

  • Type: action
  • Edition: Core
  • Call sites: 1
  • When it fires: Fires when a new FluentCommunity integration feed is created on a FluentCart product.

Only reached when the product had no enabled FluentCommunity integration listening for order_paid_done; if one already existed, the space is appended to it and fluent_community/product_integration_feed_updated fires instead. Note the first argument can be null when the record could not be created, and that the arguments are IDs, not models — and that the second is the product ID here, where the update hook passes the space ID.

Parameters

#NameTypeDescription
1$integrationIdintID of the created ProductMeta integration row, or null if creation failed.
2$productIdintThe FluentCart product the integration belongs to.

Call Sites

EditionSourceParameters
Corefluent-community/Modules/Integrations/FluentCart/Paywalls.php:84$communityIntegration->id ?? null (int)
$productId (int)

Example

php
add_action('fluent_community/product_integration_feed_created', function ($integrationId, $productId) {
}, 10, 2);

Related: fluent_community/product_integration_feed_updated · fluent_community/paywall_added

fluent_community/product_integration_feed_updated

  • Type: action
  • Edition: Core
  • Call sites: 2
  • When it fires: Fires when a space or course is added to or removed from a product's integration feed.

Both directions use this one hook, and nothing in the arguments says which happened — check the integration's space_ids or course_ids if you need to know. Courses are tracked under course_ids and community spaces under space_ids, chosen by the space type. The second argument is the space ID, unlike the create hook which passes the product ID.

Parameters

#NameTypeDescription
1$integrationIdintID of the ProductMeta integration row that was updated.
2$spaceIdintThe space or course that was added or removed.

Call Sites

EditionSourceParameters
Corefluent-community/Modules/Integrations/FluentCart/Paywalls.php:57$integration->id (int)
$space->id (int)
Corefluent-community/Modules/Integrations/FluentCart/Paywalls.php:120$integration->id (int)
$space->id (int)

Example

php
add_action('fluent_community/product_integration_feed_updated', function ($integrationId, $spaceId) {
}, 10, 2);

Related: fluent_community/product_integration_feed_created · fluent_community/paywall_removed

FluentCommunity developer documentation