Documentation
vTables documentation
Install vTables, build your first table and get the most out of Premium and Ultimate. Every guide in one place.
InstallationImport a fileShortcodesSmart cellsTable settingsLicense
Documentation
Install vTables, build your first table and get the most out of Premium and Ultimate. Every guide in one place.
InstallationImport a fileShortcodesSmart cellsTable settingsLicense
Getting started
Tables work in all modern browsers and with any theme.
You can also download the plugin from WordPress.org and upload it under Plugins → Add New → Upload Plugin.
.zip file from the link in your order confirmation.vTables Pro is an add-on that works on the same tables as the free plugin. You can add it at any time without re-creating anything, and if you remove it later, your file-based tables keep working in the free plugin.
A license can be active on 1 site, 5 sites or unlimited sites at the same time, depending on the one you bought. To move it to another site, click Deactivate first, then activate the key on the new site.
A trial lets you build one table with paid features. When the trial ends, that table stops syncing until you upgrade.
Creating tables
The new table opens in the editor, ready for you to fill in the cells.
Large files are uploaded in chunks and imported in the background. A progress row shows how far the import has got, and you can abort it at any time.
If the table structure looks different from your file, check that each column holds one type of data. In Google Sheets, select all columns, choose Format → Number → Plain text and import again.

Without an API key, vTables reads the sheet through Google’s public endpoint, which is not always reliable and may return incomplete data. Add a Google Sheets API key under vTables → Settings for dependable imports and syncing.
Click Add table, open the External tab and paste a direct link to a CSV or JSON file. The link must return the file itself, not a web page. vTables warns you if it doesn’t look like a data file.
URL tables can be refreshed with manual sync or auto-sync.
By default the table shows name, image, description, SKU, rating, stock, price, quantity and an add-to-cart button. Categories, weight, dimensions and product attributes are available too. Turn them on in the Columns settings.
For the smoothest experience, enable “Enable AJAX add to cart buttons on archives” in WooCommerce → Settings → Products.
Tables created from Google Sheets, a URL or WooCommerce can be refreshed from their source.
Auto-sync runs on WP-Cron. On low-traffic sites, or if WP-Cron is disabled, set up a real server cron job so syncing happens on time.
Editing
For tables synced from Google Sheets, a URL or WooCommerce, edit the source instead. The next sync replaces the table data.
Indexed columns make sorting, filtering and searching large tables faster. You can index up to 5 columns and give each one a type: Text, Number, Date or Boolean.
Choose them with Configure indexed columns when you create or import a table, or skip this step with Create without indexes.
To rename a table, open it, use the rename action next to its title, enter the new title and click Save.
On the Tables screen, select one or more tables with the checkboxes and click Remove selected, or use the delete icon in a table’s row. Remember to remove its shortcode from your pages too.
Displaying tables
Every table has a shortcode. Copy it from the Shortcode column on the Tables screen and paste it into a Shortcode block, the Classic editor, a page builder such as Elementor, WPBakery or Divi, or any widget that supports shortcodes.
[vtables id="1"]Add row and column to print one cell inside your text. Rows start at 1, column names are case-insensitive and spaces become underscores.
[vtables id="1" row="2" column="email"]Tables load lazily from their own URL (/vtables-embed/{id}/), so they don’t slow down your page and are excluded from page caching and script optimization. Because the table loads separately, search engines don’t index its content. If some information matters for SEO, mention it in the page text as well.
If a page still shows old table content after an update, clear your page cache once.
vTables checks each cell value and picks the right format automatically. You don’t set column types. Just write the value in the format below.
| Format | Cell value | Plan |
|---|---|---|
| Image | https://example.com/photo.jpg | Free |
| Link | https://example.com | Free |
| Button | <button href="https://example.com">Buy now</button> | Free |
| Basic HTML | <a>, <img>, <br>, <button> | Free |
| Video | YouTube or Vimeo link, or an .mp4 / .webm file | Premium |
https://example.com/report.pdf | Premium | |
| Audio | .mp3, .wav, .ogg, .m4a and more | Premium |
| Google Maps | https://www.google.com/maps/embed?pb=… | Premium |
| Star rating | <rating value="4.5" total="5"/> | Premium |
| Progress bar | <progress value="75"/> | Premium |
| JSON | {"name": "Alice", "score": 95} | Premium |
photo.jpg?v=1 is shown as a link, not an image.Customizing
Each table has its own settings. Open the table and click the settings button. Tabs you have changed are marked, so you can see at a glance what’s customized.
| Tab | What you can change | Plan |
|---|---|---|
| Dimensions | Table height and maximum width | Free |
| Header | Show or hide the header and title, sticky header | Free |
| Style | Colors for the title bar, header, body, buttons, links and pagination; dense, flat and separator options | Free |
| Columns | Show or hide columns, minimum and maximum width, sticky first or last column | Premium |
| Col. groups | Grouped, nested column headers | Premium |
| Search | A search box for visitors | Premium |
| Sorting | Click-to-sort headers, binary sorting and default direction | Premium |
| Filter | Rules that pre-filter rows: contains, equals, starts with, greater than, is empty and more, combined with AND/OR | Premium |
| Pagination | Rows per page (5, 10, 15 or 20) | Premium |
| View | Table or card layout per device and cards per row | Premium |
| Rows | Thumbnail size, image popup, vertical alignment, JSON preview lines | Premium |
| Custom CSS | CSS scoped to this table | Premium |
| Sync | Auto-sync interval | Ultimate |
| Woo | Add-to-cart labels, notification, stock badges and product links | Ultimate |
| Reset | Restore the default settings | Free |
On every plan, wide tables scroll horizontally on small screens. With Premium you can choose a layout for each device in the View tab:
Pick table or grid (cards) for each one and set how many cards sit side by side. Combine this with a sticky header and a sticky first column to keep long tables easy to read.
Open the table settings and go to the Custom CSS tab. The CSS you write is automatically scoped to that table, so it never affects the rest of your site. Write plain selectors:
.q-table th {
background: #eef0ff;
font-weight: 700;
}Download any table as CSV, JSON or XLSX on every plan. Open the table settings and choose Export. Use it for backups or to move data between sites.
Advanced
Under vTables → Settings you can save a Google Sheets API key. With a key, imports, manual syncs and auto-sync use the official Google Sheets API instead of the public endpoint.
vTables adds WP-CLI commands for maintenance tasks:
wp vtables migrate-rows [--table-id=<id>]
wp vtables sync
wp vtables reindexmigrate-rows moves tables created by older versions to the new row storage. Use it for tables the background migration skipped.sync runs the scheduled sync for synced tables.reindex rebuilds the WooCommerce product index.Your tables, their data and their shortcodes keep working, and the update runs automatically:
vtables/v1 REST routes were removed.Deleting the free plugin removes its settings but keeps your tables, so reinstalling brings them back. To delete the tables as well, add this line to wp-config.php before deleting the plugin:
define( 'VTABLES_REMOVE_ALL_DATA', true );This setting is ignored while vTables Pro is installed, because Pro uses the same tables. Deleting vTables Pro only removes its WooCommerce index and its own options.
Check the FAQ, ask on the support forum or contact us. We’re happy to help.