Data Table Pro for HubSpot

Sortable, searchable, paginated data tables for HubSpot. Column data types, sticky headers, a sticky first column, and a stacked card layout on small screens. Sorting runs on the column data type, so numbers and dates order by value. Every colour, size and radius comes from a field.

Instance 1

Defaults, untouched

This instance carries no overrides. It is the module exactly as it drops onto a page: Inter, hairline borders on a white card, a ten pixel corner radius, comfortable row height, numbered pages. The footer bar carries the previous arrow on the left, the page numbers in the middle and the next arrow on the right, with the rows per page dropdown beside the previous arrow. Change that dropdown and the table redraws at the new size. Sorting, search and pagination all work before a single field is edited.

Regional performance

Sort any column, search across every field, and page through the results.

8 rows

North America
A. Whitfield
128
Mar 14, 2027
$482,000
EMEA
M. Okafor
96
Nov 2, 2026
$361,500
Latin America
S. Ferreira
54
Jun 30, 2027
$198,250
Asia Pacific
H. Tanaka
112
Jan 19, 2027
$427,900
United Kingdom
R. Delaney
73
Sep 8, 2026
$254,600
Nordics
L. Bergstrom
41
Apr 22, 2027
$146,300
Central Europe
K. Novak
88
Feb 11, 2027
$312,750
Middle East
N. Haddad
36
Aug 5, 2027
$121,400

No rows match that search

Clear the search field to see every row again.

Scroll sideways for the remaining columns

Instance 2

Compact, blue accent

Open Sans throughout, a blue accent on the sort indicator and the active page, compact row density and striped rows. Pagination runs on a load more button instead of pages, and the rows per page dropdown is switched off, so the footer bar carries the one control. Nothing here is a different module, only field values on the Style tab.

Invoice register

Every column sorts. Search runs across the invoice number, the client and the status.

10 invoices

Harrow & Blake
Feb 3, 2026
Cleared
$12,480
Castellan Group
Feb 9, 2026
Cleared
$8,150
Nine Elms Ltd
Feb 17, 2026
Open
$21,900
Torrance Media
Mar 1, 2026
Open
$4,375
Brightwater Co
Mar 6, 2026
Cleared
$16,720
Alder & Finch
Mar 14, 2026
Review
$9,240
Marlowe Partners
Mar 22, 2026
Cleared
$33,600
Quayside Works
Apr 2, 2026
Open
$7,910
Ravensmoor PLC
Apr 11, 2026
Cleared
$28,050
Coldharbour Ltd
Apr 19, 2026
Review
$5,480

Nothing matches that search

Clear the field to bring the register back.

Scroll sideways for the balance and the paid flag

Instance 3

Dark surface, sky accent

The same table on a dark section. Surface, border, text and stripe colours come from the colour fields; the accent drives the sort arrow, the check icon and the current page marker. The rows per page dropdown carries its own dark palette and its own focus ring, and it sits on the right of the next arrow rather than the left of the previous one. Small Screen Layout is set to stack, so under seven hundred pixels each row becomes a labelled card.

Service fleet

Loads sorted by request volume. Below the mobile breakpoint each row becomes a labelled card.

9 services

edge-router
us-east-1
v4.12.0
48,210
Aug 4, 2026
auth-gateway
us-east-1
v2.8.3
31,905
Aug 6, 2026
media-encoder
eu-west-2
v9.1.1
12,470
Jul 29, 2026
search-index
eu-west-2
v6.4.0
27,338
Aug 7, 2026
billing-core
us-west-2
v3.0.7
9,842
Aug 1, 2026
webhook-relay
ap-south-1
v1.19.2
18,655
Aug 5, 2026
asset-cache
ap-south-1
v7.2.4
52,014
Aug 8, 2026
report-worker
us-west-2
v5.6.1
4,127
Jul 24, 2026
mail-dispatch
eu-central-1
v2.2.0
22,760
Aug 3, 2026

No services match

Reset the filter to list the fleet again.

Instance 4

Framed layout, status pills, totals bar

Table Layout set to Framed. The column headers sit straight on the tinted surface with no bar behind them, the rows sit in an inset white card with hairline dividers, and the total sits on the surface below the card. The status column renders as a pill with a coloured dot, and each dot colour is matched to its cell value in a repeater. Rows per page reads Show and offers a shorter set of options.

Contract register

The framed layout: column headers on the tinted surface, rows in an inset card, the total on the surface below it.

8 contracts

Harrow & Blake
A. Whitfield
Active
120
Mar 14, 2027
$482,000
Castellan Group
M. Okafor
Active
96
Nov 2, 2026
$361,500
Nine Elms Ltd
S. Ferreira
Pending
54
Jun 30, 2027
$198,250
Torrance Media
H. Tanaka
Active
112
Jan 19, 2027
$427,900
Brightwater Co
R. Delaney
Closed
73
Sep 8, 2026
$254,600
Alder & Finch
L. Bergstrom
Active
41
Apr 22, 2027
$146,300
Marlowe Partners
K. Novak
Pending
88
Feb 11, 2027
$312,750
Quayside Works
N. Haddad
Closed
36
Aug 5, 2027
$121,400

No contracts match that search

Clear the field to see the whole register.

Total annual value $2,304,700

Annual values are the contracted figure at the last renewal.

Documentation

Module Guide

What it does

Data Table Pro turns rows and columns entered in the page editor into a table that sorts, searches, pages and reflows. Columns are defined once and carry their own header, alignment, width and data type. Rows reference those columns by position.

Columns

Each column sets a header, a data type, an alignment, a width and an optional prefix and suffix.

Width accepts narrow, auto or wide. The first column takes its width from Table Shell › First Column Width so the pinned column stays a fixed size.

Rows and cells

Every cell holds a value, an optional link and an emphasis setting. Emphasis switches between plain, strong, muted, badge and status pill. A cell with a link renders as an underlined anchor in the link colour.

Status pills

Setting a cell's emphasis to status pill renders it as a coloured dot followed by the label. Status Pills › Status Colours is a repeater pairing a cell value with a dot colour, matched without regard to case, so Active, Pending and whatever else the table carries each get their own dot. A value with no match falls back to the muted cell colour. The pill background, text colour, border, radius, text size, padding, dot size and the space between the dot and the label are fields under Style › Cells. The dot is hidden from assistive technology, so the pill reads as its label alone.

Table layout

Table Behaviour › Table Layout chooses the arrangement.

Framed is an arrangement, not a set of fixed values: the surface colour, radius and padding, the card colour, radius, border colour and width, the header label colour and every part of the totals bar are fields under Style › Framed Layout. Framed carries its totals from Footer Row › Totals Label and Totals Value rather than from the grid cells, and it leaves the header in place while the page scrolls, since there is no bar behind it to pin.

Sorting

Sortable headers render as buttons, so they are reachable with the keyboard and operable with Enter or Space. A first click sorts ascending, a second click reverses it. The column header carries aria-sort and the chevron pair shows the active direction. Set Sort On Load — Column to a column position to sort the table as it renders; zero keeps the rows in the order they were entered. Individual columns can opt out with Sortable.

Search

The search field filters rows against every cell value in the row, across the whole table rather than the current page. The result count sits in a polite live region so screen readers hear the new total. When nothing matches, the table and the pagination controls are replaced by the empty state, whose title and text are both editable.

Pagination and the footer bar

Pagination › Mode chooses between showing every row, numbered pages, and a load more button.

Under numbered pages the footer bar runs on space-between in three parts: the previous control at the start, the page numbers in the middle, the next control at the end. Previous and next carry an arrow and no text, so each takes its accessible name from Previous Button Description and Next Button Description, and each disables at its end of the range. Page buttons carry aria-current. Sorting or searching returns to the first page. Below the mobile breakpoint the bar wraps: the arrows and the rows per page control hold the first line, the page numbers take a line of their own beneath them.

Arrow size, arrow button padding and the space between the three groups are all fields under Style › Pagination & Buttons.

Rows per page

Rows Per Page Options is a repeater, so the options are yours to define. Each carries the text the reader sees and the row count it applies, and a count of zero makes an option that shows every row. Rows Per Page — Selected On Load picks which one starts selected, and that option sets the starting page size. Rows Per Page Label sets the wording beside it, and Rows Per Page Placement puts it at either end of the bar. Switching Show Rows Per Page Control off removes it and hands the page size back to Rows Per Page.

Choosing a new size redraws the table straight away, returns to the first page, and leaves the search text and the sorted column exactly as they were. The control is a native select with a real label bound to it, so it reaches the keyboard and the screen reader the way a dropdown should. Its background, border colour and width, radius, text colour, size, padding and focus ring are all fields under Style › Rows Per Page Control.

Sticky header and first column

With Sticky Header on, the header bar pins to the top of the window while the page scrolls past the table and releases as the table ends. It stays aligned with the body when the table scrolls sideways. Sticky First Column pins the first column against horizontal scrolling.

Small screens

Small Screen Layout chooses between two behaviours below the mobile breakpoint.

Style

Every colour, size, radius, border width and spacing value on the Style tab writes a CSS custom property, so nothing in the markup carries an inline style. The body font and the heading font inherit from the host theme, as do the accent colour and the link colour. Density switches the vertical cell padding between the value you set and that value scaled by Compact Density Scale.

Accessibility

Notes on this page

The first instance runs on field defaults. The rest change only Style tab values, behaviour switches and content. The last one sets Table Layout to Framed, which is why it reads as a different product while running the same module.