Skip to content
View as Markdown

Company Filters

FluentCRM Core Intermediate

These filter hooks let you customize company types, industry categories, profile sections, and CSV export columns.

fluent_crm/company_types

Filter the list of company type options (e.g., Prospect, Partner, Reseller, Vendor).

Parameters

  • $types Array - Company type strings

Usage:

php
add_filter('fluent_crm/company_types', function($types) {
    $types[] = 'Enterprise';
    $types[] = 'Non-Profit';
    return $types;
});

Source: app/Services/Helper.php


fluent_crm/company_categories

Filter the list of company industry/category strings.

Parameters

  • $categories Array - Category strings (e.g., Technology, Healthcare, Finance)

Usage:

php
add_filter('fluent_crm/company_categories', function($categories) {
    $categories[] = 'Aerospace';
    $categories[] = 'Agriculture';
    return $categories;
});

Source: app/Services/Helper.php


fluent_crm/company_profile_sections

Filter the array of tab sections displayed on the Company profile page. Use this to add custom tabs. A custom tab registered with 'handler' => 'route' and a 'query' => ['handler' => $key] entry renders its content through fluent_crm/company_profile_section_{$sectionId} — register both, or the tab opens empty. The FluentCrmApi('extend')->addCompanyProfileSection() helper (app/Api/Classes/Extender.php) wires the pair for you.

Parameters

  • $sections Array - section definitions keyed by section key. Each entry carries a name (the Vue route name — custom tabs use fluent_crm_company_section_extended), a title, 'handler' => 'route', and for custom tabs a 'query' => ['handler' => $key] pointing at the content filter

Usage:

php
add_filter('fluent_crm/company_profile_sections', function($sections) {
    $sections['invoices'] = [
        'name'    => 'fluent_crm_company_section_extended',
        'title'   => __('Invoices', 'fluent-crm'),
        'handler' => 'route',
        'query'   => [
            'handler' => 'invoices'
        ]
    ];
    return $sections;
});

Source: app/Services/Helper.php


fluent_crm/company_profile_section_{$sectionId}

Supply the content of a custom company-profile tab. When a tab registered on fluent_crm/company_profile_sections is opened, the admin UI requests companies/{id}/custom_tab_view with a section_provider parameter, and CompanyController::getCompanyExternalView() returns whatever this dynamic filter produces. The dynamic portion, $sectionId, is the section's query.handler key.

Escape your section content

content_html is rendered as raw HTML in the admin UI (Vue v-html) with no client-side sanitization. Escape any user-authored data with esc_html() or wp_kses_post() before returning it, or you introduce stored XSS in the admin. Rich markup is allowed by design.

Parameters

  • $section Array - Default ['heading' => '', 'content_html' => '']
  • $company Company Model

Usage:

php
add_filter('fluent_crm/company_profile_section_invoices', function($section, $company) {
    $section['heading'] = __('Invoices', 'my-plugin');
    $section['content_html'] = '<p>' . esc_html($company->name) . ' has 3 open invoices.</p>';
    return $section;
}, 10, 2);

Source: app/Http/Controllers/CompanyController.php


fluent_crm/company_profile_section_save_{$sectionId}

Handle the save request of a custom company-profile section. CompanyController::saveExternalViewData() passes the submitted form data to this dynamic filter; return a truthy response array (for example ['message' => ..., 'content_html' => ...]) to confirm the save, or leave the default empty string to make the controller respond with a "Handler could not be found." error. FluentCrmApi('extend')->addCompanyProfileSection() registers a callback here when you pass its optional $saveCallback argument.

WARNING

As of now no REST route is wired to CompanyController::saveExternalViewData() — the company custom-tab UI is read-only and only the GET companies/{id}/custom_tab_view route exists. The contact-profile equivalent (POST subscribers/{id}/external_view) does have a route. Treat this filter as the forward-compatible save contract rather than something reachable today.

Parameters

  • $response String|Array - Default ''; falsy means "no handler"
  • $data Array - the submitted section form data (data request parameter)
  • $company Company Model

Usage:

php
add_filter('fluent_crm/company_profile_section_save_invoices', function($response, $data, $company) {
    my_plugin_save_invoice_settings($company->id, $data);

    return [
        'message' => __('Invoice settings saved', 'my-plugin')
    ];
}, 10, 3);

Source: app/Http/Controllers/CompanyController.php


fluent_crm/company_table_columns

Filter the company columns offered as mapping targets when a CSV is uploaded for import (CsvController::upload(), with type=company). It does not affect CSV export.

Parameters

  • $columns Array - a plain list of column slugs a CSV header can be mapped onto

Usage:

php
add_filter('fluent_crm/company_table_columns', function($columns) {
    $columns[] = 'industry';
    return $columns;
});

Source: app/Http/Controllers/CsvController.php