# Extending FluentCRM
FluentCRM provides a modular architecture that lets third-party plugins add custom automation components, merge tags, profile sections, and more. This section covers all the extension points available to developers.
## Automation Components
FluentCRM automations (called "Funnels") are built from three types of components:
| Component | Base Class | Description |
|-----------|-----------|-------------|
| [Trigger](/modules/trigger) | `BaseTrigger` | An event that starts an automation (e.g., user registers, form submitted) |
| [Action](/modules/action) | `BaseAction` | A task executed during the automation (e.g., apply tag, send email) |
| [Benchmark](/modules/benchmark) | `BaseBenchMark` | A goal/checkpoint that contacts must reach to proceed (e.g., link clicked, tag applied) |
All base classes live in the `FluentCrm\App\Services\Funnel` namespace.
Each component is a PHP class that extends the corresponding base class and implements a set of abstract methods. The base class handles registration automatically — you just define the component's metadata, UI fields, and processing logic.
### Registration
Register your components on the `fluent_crm/after_init` hook:
```php
add_action('fluent_crm/after_init', function () {
new YourPlugin\Automation\CourseEnrolledTrigger();
new YourPlugin\Automation\AddToGroupAction();
new YourPlugin\Automation\TagAppliedBenchmark();
});
```
### Form Fields
Automation components use a declarative field system to render their settings UI. See the [Form Field Types](/modules/form-field-code-structure) reference for all 26 available field types (`input-text`, `select`, `radio`, `yes_no_check`, `html_editor`, etc.).
## Other Extension Points
| Extension | API | Description |
|-----------|-----|-------------|
| [Smart Codes](/modules/smart-code) | `FluentCrmApi('extender')->addSmartCode()` | Custom merge tags for emails and templates |
| [Event Tracking](/modules/event-tracking) | `FluentCrmApi('event_tracker')->track()` | Track custom contact activities and behaviors |
| [Contact Profile Section](/modules/contact-profile-section) | `FluentCrmApi('extender')->addProfileSection()` | Custom tabs on the contact profile page |
| [Company Profile Section](/modules/company-profile-section) | `FluentCrmApi('extender')->addCompanyProfileSection()` | Custom tabs on the company profile page |