Merge duplicate records in your Filament panels with a side-by-side comparison UI. Automatic relation transfer, audit logging, and full control via lifecycle hooks.
Filament v3
Full support for Filament v3.
Laravel 10, 11 & 12
Compatible with all modern Laravel versions.
PHP 8.1+
Uses modern PHP features and strict typing.
Handle duplicates properly — transfer relations, keep audit trails, and maintain data integrity.
Select two records and see every field side by side. Choose which values to keep, review differences at a glance, and merge with confidence.
use PtPlugins\FilamentModelMerger\Actions\MergeAction;
public static function table(Table $table): Table
{
return $table
->columns([...])
->actions([
MergeAction::make(),
]);
}
HasMany
Transfer child records
HasOne
Reassign one-to-one
BelongsToMany
Merge pivot tables
MorphMany
Move polymorphic children
MorphOne
Reassign morph one
MorphToMany
Merge morph pivots
All 6 Eloquent relation types are handled automatically. Child records, pivot tables, and polymorphic relations are transferred to the primary record. No data is lost.
Every merge operation is logged with full snapshots of both records before the merge. The polymorphic MergeLog model makes it easy to track who merged what, and when.
// MergeLog stores:
// - primary_record (morphTo)
// - merged_record_snapshot (JSON)
// - primary_record_snapshot (JSON)
// - performed_by (user who merged)
// - merged_at (timestamp)
use PtPlugins\FilamentModelMerger\Contracts\Mergeable;
class Customer extends Model implements Mergeable
{
public function getMergeableFields(): array
{
return ['name', 'email', 'phone', 'address'];
}
public function getMergeStrategy(): string
{
return 'soft-delete'; // or 'hard-delete'
}
}
Choose between soft-delete and hard-delete for the merged record. Define exactly which fields are mergeable through the Mergeable interface. Full control, zero surprises.
Built for real-world data problems. Every feature designed to keep your data clean.
Run custom logic before and after every merge with beforeMerge() and afterMerge() hooks.
Add merge functionality to any Resource with a single MergeAction. Works with tables and bulk actions.
Control exactly which fields can be merged and how. Your models define the rules.
All merge operations run inside a database transaction. If anything fails, everything rolls back.
Full translation support. Ships with English and Serbian. Add your own language in minutes.
Pairs perfectly with Filament Deduplication. Detect duplicates first, then merge them with one click.
From purchase to merging records in your Filament panel — it only takes a few minutes.
Register for free. No credit card required until you purchase.
Choose Solo or Unlimited. Secure payment via Paddle. Instant access.
Add our private repository and composer require — done.
Choose the plan that fits your needs. Keep using your current version forever, even after your update period ends.
Perfect for freelancers and individual developers working on a single project.
Get immediate accessAfter a year, optionally renew for $29 to continue receiving updates or stay on your current version forever.
For developers and agencies building multiple client projects.
Get immediate accessAfter a year, optionally renew for $89 to continue receiving updates or stay on your current version forever.
| Solo | Unlimited | |
|---|---|---|
| Activations | 1 site | Unlimited |
| 1 year of updates included | ||
| Use current version forever | ||
| All core features | ||
| Composer access via Satis | ||
| Full source code | ||
| E-mail support | ||
| Priority support | — |
Invoice available
Download after purchase
E-mail support
Get help when you need it
Regular updates
Continuously improved
Get Filament Model Merger + Filament Deduplication together and save 20%. Detect duplicates, review them, and merge — all in one workflow.
View Bundle →Everything you need to know about Filament Model Merger
Model Merger handles all 6 relation types: HasMany, HasOne, BelongsToMany, MorphMany, MorphOne, and MorphToMany. All child records and pivot entries are automatically transferred to the primary record during merge.
You choose the strategy: soft-delete keeps the record in the database (marked as deleted), or hard-delete permanently removes it. Both options transfer all relations first.
Yes. Every merge creates a MergeLog record with full JSON snapshots of both records before the merge, the user who performed it, and a timestamp. The log uses a polymorphic relation so it works with any model.
After your first year, you can optionally renew your license at a discounted rate to continue receiving updates. If you choose not to renew, you keep permanent access to the version you had when your update period expired.
Yes! Contact us at mihailo@ptplugins.com and we'll apply a prorated upgrade. You only pay the difference ($100).
Absolutely. The two plugins are designed to work together. Deduplication detects potential duplicates and shows a "Merge" link that opens the Model Merger comparison page directly.
Yes, we offer a 7-day money-back guarantee. If the plugin doesn't work for your use case, contact us and we'll process a full refund. See our refund policy for details.
Start merging duplicate records in minutes. 7-day money-back guarantee.