Resources
Reference for every Filament resource OddenPlugin registers, with its model, pages, relation managers and custom actions.
This page lists the resources OddenPlugin registers, grouped by the module that provides them. All classes are in the Odden\Filament\Resources namespace. Every resource has the standard Filament create, edit and delete actions, plus a bulk delete action, unless noted otherwise. Labels are given as they appear in the panel.
Resources for a module are only registered when that module is installed. See How modules are detected.
The custom actions listed here check your model policies when you register them. See Resource actions for the ability each one needs.
Core
| Resource | Model | Navigation | Pages |
|---|---|---|---|
ContactResource |
Odden\Core\Models\Contact |
CRM › Contacts | list, create, view, edit |
CompanyResource |
Odden\Core\Models\Company |
CRM › Companies | list, create, view, edit |
CrmListResource |
Odden\Core\Models\CrmList |
CRM › Lists | list, create, view, edit |
PropertyDefinitionResource |
Odden\Core\Models\PropertyDefinition |
Settings › Custom Properties | list, create, edit |
Contacts
The contact form has Contact Details (name, job title, email, phone, LinkedIn URL, lifecycle stage, lead status, owner), Marketing & Lead Qualification (lead score, email verified date, last marketing email), and a Custom Properties section when contact properties are defined (see Custom properties in forms).
The table has an Email Status column (valid, risky, invalid, or "Not checked") with the reason as a tooltip, and the column can be sorted or hidden. It filters on email status (including "Not checked"), lead status, lifecycle stage and trashed records. See Email validation for what each status means. Contacts are soft-deleted, so you also get bulk restore and force-delete.
Row actions:
| Action | What it does |
|---|---|
| Playbook | Pick an active sales playbook, answer its questions, and record the answers with Odden\Sales\Actions\ExecuteSalesPlaybookAction. Requires getodden/crm-sales. |
| Auto-Route | Runs Odden\Sales\Actions\RouteLeadAction to assign an owner using the active lead routing rules. Requires getodden/crm-sales. |
| AI Briefing | Shows the briefing from the bound Odden\Core\Contracts\SummarizesTimeline (by default the rule-based SummarizeTimelineAction) in a modal. |
| Merge | Merges a selected duplicate into this contact with Odden\Core\Actions\MergeContactsAction: its activities, associations, deals and tickets move to this contact, custom properties are merged, and the duplicate is soft-deleted. |
Relation managers: Companies (attach/detach), Associated Deals (sales), Sales Sequences & Cadences (sales; enroll, advance step, unenroll), Marketing Campaigns & Email Touchpoints (marketing), Lead Capture & Form Submissions (marketing), Lead Score & Decay History (marketing; includes an Adjust Score action), Activities (create, edit, delete, complete), and Property History / Audit Trail.
Companies
The company form includes a Custom Properties section for company properties. Like contacts, companies are soft-deleted and the table has a trashed filter with bulk restore and force-delete.
Row actions: Recalculate Health (Odden\Core\Actions\CalculateCustomerHealthScoreAction), Recalculate Intent (Odden\Marketing\Actions\CalculateCompanyIntentScoreAction, only shown when marketing is installed), AI Briefing, and Merge (Odden\Core\Actions\MergeCompaniesAction).
Relation managers: Contacts (attach/detach), Associated Deals (sales), Activities, and Property History / Audit Trail.
Lists
Lists are static or active. Active lists have a Sync row action, and a Sync Members action on the view page, which call CrmList::syncActiveMembers(). The view page has a List Members relation manager.
Custom properties
PropertyDefinitionResource manages PropertyDefinition records: entity type, internal key (lowercase letters, digits and underscores), label, data type, group, description, select options, and the required and searchable flags. See Custom properties in forms for how these appear on forms.
Sales
Registered when getodden/crm-sales is installed. See the sales module docs for the underlying models and actions.
| Resource | Model | Navigation | Pages |
|---|---|---|---|
DealResource |
Odden\Sales\Models\Deal |
Sales › Deals | list, board, create, view, edit |
QuoteResource |
Odden\Sales\Models\Quote |
Sales › Quotes | list, create, view, edit |
SalesQuotaResource |
Odden\Sales\Models\SalesQuota |
Sales › Sales Quotas | list, create, edit |
SalesEmailTemplateResource |
Odden\Sales\Models\SalesEmailTemplate |
Sales › Email Templates | list, create, edit |
SalesSequenceResource |
Odden\Sales\Models\SalesSequence |
Sales › Sales Cadences | list, create, edit |
SalesPlaybookResource |
Odden\Sales\Models\SalesPlaybook |
Sales › Sales Playbooks | list, create, edit |
SalesMeetingLinkResource |
Odden\Sales\Models\SalesMeetingLink |
Sales › Meeting Links | list, create, edit |
LeadRoutingRuleResource |
Odden\Sales\Models\LeadRoutingRule |
Sales › Lead Routing Rules | list, create, edit |
PipelineResource |
Odden\Sales\Models\Pipeline |
Settings › Pipelines | list, create, edit |
Deals
- List page: the
DealPipelineForecastWidgetstats header (open pipeline, weighted forecast, closed won, win rate) and a Pipeline Board button. Row actions are Playbook and Auto-Route (the same actions as on contacts, run against the deal). Deals are soft-deleted, so the table has a trashed filter with bulk restore and force-delete. - Board page (
/deals/board): a kanban of the selected pipeline's stages. It starts on the default pipeline, or the first pipeline if none is the default. Dragging a card callsDeal::moveToStage()with the current user. A card dropped on a stage of a different pipeline isn't moved, and an error notification is shown. - Create page: sets
owner_idto the current user if left empty, and writes an initialDealStageHistoryrow. - View page: a deal health button (its label and color come from
Deal::getHealthScore()) that opens the health analysis, Generate Quote (GenerateQuoteFromDealAction), Run Playbook, Mark Won (Deal::markWon()), Mark Lost (Deal::markLost(), with a requiredLostReasonselect) and Edit. - Form: includes a Custom Properties section for
dealproperties.
Relation managers: Associated Contacts, Associated Companies (attach/detach), Products & Line Items, Quotes & Proposals (with Generate from Products, Portal and Accept & Sign), Stage Movement History, Activities, and Property History / Audit Trail.
Other sales resources
| Resource | Extra actions |
|---|---|
QuoteResource |
Portal opens the public quote page (route odden.quotes.show). Accept & Sign asks for a signer name and email and runs AcceptQuoteAction::accept(), the same rules as the public page: it refuses accepted, declined and expired quotes, and accepts the quote and closes the deal as won in one transaction. If that fails (for example a won-stage requirement), the quote and deal are left unchanged and the error is shown in a notification. The Quotes relation manager on a deal does the same. |
SalesQuotaResource |
Attainment columns calculated with CalculateQuotaAttainmentAction. |
SalesSequenceResource |
Enroll Contact row action (EnrollContactInSequenceAction). The list page has a Process Due Cadences header action that runs ProcessCadencesAction for every due enrollment, for all users, during the request. |
SalesMeetingLinkResource |
Public URL column linking to route odden.meetings.show. The form's Availability section edits the link's booking settings: a searchable Timezone select (empty uses the app timezone), Buffer Between Meetings in minutes (0 to 240), and one tag input per weekday for working-hour windows such as 09:00-12:00. Each window must be HH:MM-HH:MM with the start before the end. Days without windows are dropped, and leaving every day empty saves null, so the link uses odden-sales.meetings.default_working_hours. |
PipelineResource |
Pipeline Stages relation manager. |
Add-on resources
Odden Marketing and Odden Service are separate, paid packages. When one is installed, it adds its own resources, pages and navigation group to the panel through Odden\Filament\Support\Modules; they are documented with the add-on.