# Company Hooks These action hooks fire during company lifecycle events — creation, updates, deletion, status/type/category changes, and notes management. ## Company CRUD ### `fluent_crm/company_created` This action fires when a new company is created. **Parameters** - `$company` [Company Model](/database/models/company) - `$data` Array - creation data **Usage:** ```php add_action('fluent_crm/company_created', function($company, $data) { // A new company was created }, 10, 2); ``` **Source:** `app/Api/Classes/Companies.php` --- ### `fluent_crm/company_updated` This action fires when a company is updated. **Parameters** - `$company` [Company Model](/database/models/company) - `$data` Array - update data **Usage:** ```php add_action('fluent_crm/company_updated', function($company, $data) { // Company was updated }, 10, 2); ``` **Source:** `app/Api/Classes/Companies.php` --- ### `fluent_crm/before_company_delete` This action fires before a company is deleted. Use it to clean up related data. **Parameters** - `$company` [Company Model](/database/models/company) **Usage:** ```php add_action('fluent_crm/before_company_delete', function($company) { // Clean up related data before company is deleted }); ``` **Source:** `app/Http/Controllers/CompanyController.php` --- ### `fluent_crm/company_deleted` This action fires after a company has been deleted. **Parameters** - `$companyId` INT - deleted company ID **Usage:** ```php add_action('fluent_crm/company_deleted', function($companyId) { // Company was deleted }); ``` **Source:** `app/Http/Controllers/CompanyController.php` --- ## Status, Type & Category Changes ::: warning Only fires from the bulk actions All three are dispatched from the Companies list bulk actions (`change_company_status`, `change_company_type`, `change_company_category`), once per company whose value actually changed. Editing a company on its profile screen does not fire them. The slug in the hook name is the raw new value, so a category such as `Alternative Dispute Resolution` produces `fluent_crm/company_category_to_Alternative Dispute Resolution`. Build the hook name from the same value rather than guessing at a slugified form. ::: ### `fluent_crm/company_status_to_{$status}` This dynamic action fires when a company's status is changed. **Parameters** - `$company` [Company Model](/database/models/company) - `$oldStatus` string - previous status **Usage:** ```php add_action('fluent_crm/company_status_to_active', function($company, $oldStatus) { // Company status changed to active }, 10, 2); ``` **Source:** `app/Http/Controllers/CompanyController.php` --- ### `fluent_crm/company_type_to_{$type}` This dynamic action fires when a company's type is changed. **Parameters** - `$company` [Company Model](/database/models/company) - `$oldType` string - previous type **Usage:** ```php add_action('fluent_crm/company_type_to_customer', function($company, $oldType) { // Company type changed to customer }, 10, 2); ``` **Source:** `app/Http/Controllers/CompanyController.php` --- ### `fluent_crm/company_category_to_{$category}` This dynamic action fires when a company's industry/category is changed. The value is stored in the company's `industry` column despite the hook's `category` wording. **Parameters** - `$company` [Company Model](/database/models/company) - already saved with the new `industry` - `$oldCategory` string - previous `industry` value **Usage:** ```php add_action('fluent_crm/company_category_to_technology', function($company, $oldCategory) { // Company category changed to technology }, 10, 2); ``` **Source:** `app/Http/Controllers/CompanyController.php` --- ## Contact Attachment ::: warning Suppressed by silent imports Like the contact tag/list hooks, both hooks below are skipped when the `FLUENTCRM_DISABLE_TAG_LIST_EVENTS` constant is defined — the CSV importer and the WP-user importer both define it. They also fire only for companies that were actually added or removed, so re-attaching an already-attached company is silent. ::: ### `fluentcrm_contact_added_to_companies` This action runs when one or more companies have been attached to a contact via `Subscriber::attachCompanies()`. It receives only the company IDs that were **newly** attached in that call. FluentCampaign Pro's *Company Applied* automation trigger listens on this hook. **Parameters** - `$attachedCompanyIds` Array - IDs of the companies that were attached to the contact - `$subscriber` [Subscriber Model](/database/models/subscriber) ::: tip Parameter order Unlike the modern `fluent_crm/contact_added_to_*` tag/list hooks, the IDs come **first** and the subscriber second — there is no `fluent_crm/`-prefixed counterpart for companies. ::: **Usage:** ```php add_action('fluentcrm_contact_added_to_companies', function($attachedCompanyIds, $subscriber) { // Companies were attached to the contact }, 10, 2); ``` **Source:** `app/Functions/helpers.php` (fired from `app/Models/Subscriber.php`) --- ### `fluentcrm_contact_removed_from_companies` This action runs when one or more companies have been detached from a contact via `Subscriber::detachCompanies()`. It receives only the company IDs that were actually removed. FluentCampaign Pro's *Company Removed* automation trigger listens on this hook. **Parameters** - `$detachedCompanyIds` Array - IDs of the companies that were removed from the contact - `$subscriber` [Subscriber Model](/database/models/subscriber) **Usage:** ```php add_action('fluentcrm_contact_removed_from_companies', function($detachedCompanyIds, $subscriber) { // Companies were removed from the contact }, 10, 2); ``` **Source:** `app/Functions/helpers.php` (fired from `app/Models/Subscriber.php`) --- ## Company Notes ### `fluent_crm/company_note_added` This action fires when a note is added to a company. **Parameters** - `$note` [SubscriberNote Model](/database/models/subscriber-note) - `$company` [Company Model](/database/models/company) - `$noteData` Array - note data **Usage:** ```php add_action('fluent_crm/company_note_added', function($note, $company, $noteData) { // A note was added to the company }, 10, 3); ``` **Source:** `app/Http/Controllers/CompanyController.php` --- ### `fluent_crm/company_note_updated` This action fires when a company note is updated. **Parameters** - `$note` [CompanyNote Model](/database/models/company-note) - `$company` [Company Model](/database/models/company) - `$noteData` Array - updated note data **Usage:** ```php add_action('fluent_crm/company_note_updated', function($note, $company, $noteData) { // A company note was updated }, 10, 3); ``` **Source:** `app/Http/Controllers/CompanyController.php` --- ### `fluent_crm/company_note_deleted` This action fires when a company note is deleted. **Parameters** - `$noteId` INT - Note ID - `$company` [Company Model](/database/models/company) **Usage:** ```php add_action('fluent_crm/company_note_deleted', function($noteId, $company) { // A company note was deleted }, 10, 2); ``` **Source:** `app/Http/Controllers/CompanyController.php`