venturedrake/laravel-crm-filament
Filament plugin that brings VentureDrake's Laravel CRM into your admin panel. Provides ready-to-use Filament resources, forms, and tables for managing CRM contacts, companies, deals, and activities, so you can run your CRM from an existing Filament dashboard without building custom CRUD screens.
Architecture fit
venturedrake/laravel-crm, not a standalone CRM. What changed is the coupling contract — v1.4.0 requires core ~2.5.0 (was ~2.4.2), so the panel no longer tracks core 2.4 patches at all. The compatibility gate flagged in the prior assessment has now closed in one direction: core 2.5.0 is required, and core 2.4.x is no longer served by this release line.ProductAttributeResource and its pages because core 2.5.0 deletes the ProductAttribute model the page was built on. Removing a UI that never had a backing table is the right call and reduces dead surface, but it is a host-visible removal, not an internal refactor.ProductService::syncVariations()). That is the correct direction — the panel stays a UI over core logic rather than a parallel persistence path — but it hardens the deploy-together requirement: variation data only persists correctly when core 2.5.0 is present.PersonService::linkToOrganization() themselves across lead, deal, quote, order, invoice and purchase order. Functionally fine, but it is duplicated logic across six surfaces — if a later core release moves the call into a service, the panel has redundant code to unwind, and any panel page that misses the call produces inconsistent data.purchaseOrderLines shim removal is a genuine simplification: the panel now submits the products shape core actually reads instead of maintaining a bespoke form-state contract.Integration feasibility
comments/order_product_id, removal of crm product attributes permissions), a deleted model, and a removed UI section.php artisan laravelcrm:filament-update, which runs core's laravelcrm:update and therefore core 2.5.0's three migrations. A single documented entry point is a real adoption advantage over a manual migration list.filament.*.resources.product-attributes.* routes will 404 after upgrade. This is an inventory task, not a code task: search views, menus, dashboards, saved bookmarks and any custom navigation for those route names.--no-scripts, or whose public/ is read-only, will not get the republished stylesheet and will keep the broken-table-scroll behaviour this release exists to fix.Technical risk
ProductAttribute model and missing variation columns. There is no safe mixed state.crm product attributes are deleted, however, and any role assignments referencing them need cleanup — cheap but easy to forget.cost_per_unit before unit_price. The second is a margin-affecting default and should be validated by finance or product ops, not just engineering.crm_labelables.id. Any team that built a workaround around that failure should remove it.dcblogdev/laravel-xero) with its silent sync-stop behaviour, Guzzle ^7 cap, PHP-side decrypted search when encrypt_db_fields is on, headless route gating, and the "empty select unlinks" relation-clearing semantics. Xero and encryption both need re-validation against the new core 2.5.0 baseline rather than assumed.Key questions
laravelcrm:filament-update fails midway?laravelcrm:filament-update idempotent and safe to run on every deploy, or is it a one-shot upgrade command?crm product attributes permission rows and any role bindings to them — deleted cleanly, or left orphaned?cost_per_unit before unit_price on order → purchase order conversion the intended default for all tenants, and is it configurable?PersonService::linkToOrganization() call been verified on all six document types, and is it genuinely idempotent where a link already exists?public/ during composer install? Is running php artisan filament:assets in the build pipeline supported as an alternative?Stack fit
composer install --no-scripts, and hosts on read-only filesystems.LARAVEL_CRM_USER_INTERFACE=false; Xero users still own that dependency.Migration path
encrypt_db_fields, headless flag, and any multi-currency product pricing.^1.3 and stop — do not attempt a partial upgrade.product-attributes route names and remove those links before or with the release.composer update venturedrake/laravel-crm venturedrake/laravel-crm-filament together — never one without the other.php artisan laravelcrm:filament-update to apply core 2.5.0's three migrations. Confirm it completed before any application smoke test.crm product attributes permission references in roles and any seeders.laravelcrm:filament-upgrade runs filament:assets on post-autoload-dump; otherwise run php artisan filament:assets explicitly in the build pipeline.cost_per_unit behaviour; PDF, email and portal rendering of Product — Variation; purchase-order line edit persistence; product price load and save for a non-default-currency product; contact + organization saved together on all six document types; table horizontal scrolling under the current Filament version.crm_xero_* rows intact, sync resuming without re-authorisation.Compatibility
~2.5.0. Panel 1.4.0 does not support core 2.4.x. Panel 1.3.x is the last line compatible with core 2.4.2–2.4.7.dcblogdev/laravel-xero:^1.1.3, Guzzle ^7) but unverified against core 2.5.0 — treat as a validation item this cycle.encrypt_db_fields on routes affected pickers through PHP-side decrypted matching rather than SQL LIKE.LARAVEL_CRM_USER_INTERFACE=false must be set; Connect/Disconnect remain hidden.filament.*.resources.product-attributes.* no longer exist.ProductAttribute and its permissions are gone; variations are soft-deleted on removal so historical document lines retain their label.Sequencing
laravelcrm:filament-update → asset publish → cache clears → smoke test. Do not reorder the migration after the asset step.~2.5.0 without a release, mirroring the previous 2.4 patch behaviour — but that should be confirmed rather than assumed, since v1.4.0 is the first release on this constraint.Maintenance
ProductAttributeResource, its pages, ProductVariationsRelationManager as a writable manager, and the purchaseOrderLines shim. Smaller surface, fewer places for form-state drift against core.Support
Product — Variation.filament:assets has run and that composer hooks are intact — this is the exact failure v1.4.0 fixes and it recurs wherever assets are stale.Scaling
LIKE on very large contact/organization tables.Failure modes
ProductAttribute model and absent variation columns.comments/order_product_id and variation columns produce save errors for purchase-order lines and variation edits that do not persist — the latter is the silent case to watch.filament:assets never ran. Most likely in --no-scripts deploys and read-only public/ filesystems, where composer install may also fail outright.filament.*.resources.product-attributes.* now 404s.purchaseOrderLines form-state key breaks, since the shim is removed.crm product attributes in roles or seeders cause drift between environments.dcblogdev/laravel-xero after a core upgrade stops sync with no exception and no failed job; tokens and rows are retained and sync resumes once installed.Ramp-up
cost_per_unit behaviour. This is the first release in this line where the risk is partly commercial rather than purely technical.How can I help you explore Laravel packages today?