Live demo of Pivot Table Pro — every feature free, no signup
Buy Pro · from $70

Pivot Table — Pro Demo

Showing data for 2026

Try it: click any cell to drill down into raw records · change Aggregation (Sum / Avg / Count / Min / Max) · sort columns by clicking headers · export to CSV or Excel · notice the heatmap colors and trend arrows between adjacent quarters.

Category
Product
Quarter
Month
Category Product
2026-Q1
2026-Q2
Total
2026-01
2026-02
2026-03
Σ
2026-04
Σ
Furniture - Living Room
Tables
Wardrobes
Chairs
Sofas
Footwear - Men - Sports
Sneakers
Sandals
Running Shoes
Boots
Electronics - Mobile Devices
Laptops
Headphones
Phones
Tablets
Clothing - Women - Casual
Pants
Shirts
Jackets
T-Shirts
Grand Total

Widget Integration

Use the pivot table as a Livewire widget on any Filament page.

@livewire('pivot-table-widget', [
    'name' => 'sales-pivot',
    'model' => \App\Models\Sale::class,
    'availableFields' => [
        ['name' => 'category', 'label' => 'Category', 'type' => 'string'],
        ['name' => 'product', 'label' => 'Product', 'type' => 'string'],
        ['name' => 'region', 'label' => 'Region', 'type' => 'string'],
        ['name' => 'quarter', 'label' => 'Quarter', 'type' => 'string'],
        ['name' => 'cost', 'label' => 'Cost', 'type' => 'numeric'],
    ],
    'rowDimensions' => ['category', 'product'],
    'columnDimensions' => ['quarter'],
    'aggregationField' => 'cost',
    'aggregationType' => 'sum',
    'valuePrefix' => '$',
    'drillDownEnabled' => true,
    'drillDownColumns' => [
        ['name' => 'id', 'label' => 'ID', 'type' => 'numeric'],
        ['name' => 'date', 'label' => 'Date', 'type' => 'string'],
        ['name' => 'product', 'label' => 'Product', 'type' => 'string'],
        ['name' => 'region', 'label' => 'Region', 'type' => 'string'],
        ['name' => 'cost', 'label' => 'Cost', 'type' => 'numeric'],
    ],
    'showTrends' => true,
    'showHeatMap' => true,
])

Resource Integration

Add a pivot table page to any Filament resource.

use PtPlugins\FilamentPivotTable\Pages\ListPivotRecords;

class SaleResource extends Resource
{
    public static function getPages(): array
    {
        return [
            'index' => Pages\ListSales::route('/'),
            'pivot' => ListPivotRecords::route('/pivot'),
        ];
    }
}

Standalone Page

Create a dedicated Filament page for your pivot table.

<x-filament-panels::page>
    @livewire('pivot-table-widget', [
        'model' => \App\Models\Sale::class,
        'rowDimensions' => ['category', 'product'],
        'columnDimensions' => ['quarter'],
        'aggregationField' => 'cost',
        'aggregationType' => 'sum',
    ])
</x-filament-panels::page>