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 filters on lead status, lifecycle stage and trashed records. 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 a summary from Odden\Core\Actions\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. - 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 free-text reason) 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, calls Quote::accept() and, if the deal is still open, Deal::markWon(). |
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. |
Service
Registered when getodden/crm-service is installed. See the service module docs.
| Resource | Model | Navigation | Pages |
|---|---|---|---|
TicketResource |
Odden\Service\Models\Ticket |
Service › Tickets | list, board, create, edit |
SlaPolicyResource |
Odden\Service\Models\SlaPolicy |
Service › SLA Policies | list, create, edit |
KnowledgeArticleResource |
Odden\Service\Models\KnowledgeArticle |
Service › Knowledge Base | list, create, edit |
CannedResponseResource |
Odden\Service\Models\CannedResponse |
Service › Canned Responses | list, create, edit |
TicketRoutingRuleResource |
Odden\Service\Models\TicketRoutingRule |
Service › Ticket Routing Rules | list, create, edit |
Tickets
- List page: a Tickets Board button. Row actions are Resolve (
ResolveTicketAction, with a resolution note), Merge (MergeTicketsAction), Portal (opensTicket::getPortalUrl()) and Auto-Route (RouteTicketAction). - Board page (
/tickets/board): a kanban by ticket status. Dragging a card updates the ticket'sstatus. - Edit page: the Conversation Thread & Notes relation manager, with an Add Reply / Note action that calls
ReplyTicketAction.
Side effects to be aware of:
- Add Reply / Note with a public reply sends the ticket's contact a
TicketRepliedNotificationemail and logs a note on the contact's timeline. - Resolve sends the contact a
TicketResolvedCsatNotificationemail.
Neither notification implements ShouldQueue, so the mail is sent during the request.
Marketing
Registered when getodden/crm-marketing is installed. See the marketing module docs.
| Resource | Model | Navigation | Pages |
|---|---|---|---|
CampaignResource |
Odden\Marketing\Models\Campaign |
Marketing › Campaigns | list, create, edit |
MarketingTemplateResource |
Odden\Marketing\Models\MarketingTemplate |
Marketing › Email Templates | list, create, edit |
MarketingFormResource |
Odden\Marketing\Models\MarketingForm |
Marketing › Lead Capture Forms | list, create, edit |
MarketingWorkflowResource |
Odden\Marketing\Models\MarketingWorkflow |
Marketing › Marketing Workflows | list, create, edit |
LandingPageResource |
Odden\Marketing\Models\LandingPage |
Marketing › Landing Pages | list, create, edit |
LeadScoringRuleResource |
Odden\Marketing\Models\LeadScoringRule |
Marketing › Lead Scoring Rules | list, create, edit |
NpsSurveyResource |
Odden\Marketing\Models\NpsSurvey |
Marketing › Nps Surveys | list, create, edit |
MarketingSubscriptionResource |
Odden\Marketing\Models\MarketingSubscription |
Marketing › Suppression List | list, create (no edit page) |
MarketingAssetResource |
Odden\Marketing\Models\MarketingAsset |
Marketing › Marketing Assets | list, create, edit |
MarketingEventResource |
Odden\Marketing\Models\MarketingEvent |
Marketing › Marketing Events | list, create, edit |
AdAudienceSyncResource |
Odden\Marketing\Models\AdAudienceSync |
Marketing › Ad Audience Sync Bridges | list, create, edit |
Campaigns
Row actions:
| Action | What it does |
|---|---|
| Preview | Renders the campaign with sample data in a modal. |
| Spam Audit | Runs AuditCampaignDeliverabilityAction and shows the result. |
| Send Now | Shown for draft and scheduled campaigns. Runs DispatchCampaignAction immediately, during the request, against all targeted recipients. |
| Pick Winner & Deploy | Shown for A/B campaigns that are sending and have no winner yet. Runs EvaluateAbTestWinnerAction, which also sends the winning variant to the remaining audience. |
| AI Copy Assistant | Generates subject lines with GenerateAiSubjectLinesAction and saves the one you pick to the campaign. |
| Send Test | Sends a proof to the addresses you enter with SendCampaignProofAction, optionally using a contact's data for merge tags. The proof is queued like other marketing mail (see Sending mail), so a queue worker must be running for it to arrive. |
| Duplicate | Creates a draft copy named "Copy of …" with the delivery counters reset. |
The edit page also has Send Test and Duplicate header actions.
Other marketing resources
| Resource | Extra actions |
|---|---|
MarketingTemplateResource |
Layout presets and reusable snippets in the form, Generate AI Variants, Live Preview, Send Test (a one-off preview sent with Mail::html() during the request, not queued like campaign proofs), Evaluate A/B, Revisions, Export HTML, Export MJML, Download ZIP, and Replicate. The presets and the block editor come from getodden/mail, which getodden/crm-marketing requires. |
MarketingFormResource |
Embed Code modal and a public URL column. |
LandingPageResource |
Embed Snippet modal and a public URL column. |
MarketingWorkflowResource |
Visual Journey modal and the Workflow Execution Steps & Branching relation manager. |
MarketingSubscriptionResource |
Restore / Resubscribe for non-subscribed rows and Suppress for subscribed rows. |
MarketingAssetResource |
Copy URL for the asset's download link. |
AdAudienceSyncResource |
Sync Now, which runs SyncAdAudienceAction. |