Custom fields


Go to Airpress
Airpress banner
30th Jun, 2018

By Chester McLaughlin

Love Airtable? Love WordPress too? With Airpress, you can now use Airtable as a cms from WordPress.

In case you don’t know, Airtable is basically Google Sheets but on steroids. A lot of agencies, marketing companies and small businesses use Airtable as a CRM, project management tool, project planner tool, etc. Airtable has a fantastic API via which you can use it as a CMS. However, you’ll still need to setup a server where you’ll:

  • Need to authenticate the API(cause you can’t store the API keys in the frontend javascript scripts)
  • Need a caching mechanism because Airtable allows only 5 requests per second(and even then, its a good idea to cache API results)

Read on to see how Airpress solves these issues.

Setting up Airpress

Unfortunately, there’s no documentation other than a 30 minute video so here we will show you how to setup Airpress first.

Before setting up Airpress, create a new account on Airtable and setup a Base.

Terminology wise an Airtable Base maps to a Database and an Airtable Table maps to a Table. Each column inside an Airtable Table is, well.. a Column. Likewise for records too.

For the sake of this review/tutorial, I’m using a free Airtable account and using the product catalog template as my base.

Download Airpress from the WordPress plugin repository and activate it. Now head over to Sidebar > Airpress > Airtable Connections

Airpress connection setup
Airpress connection setup

Over here you’ll need to create a new configuration. Give the configuration a name(don’t leave the textbox with the default text – it won’t create the connection) then head over to your Airtable Base.

You can get the Airtable API key from the account section of the Airtable website. The Airtable app ID is basically the ID attached to the Airtable Base. To get the ID, open the Airtable Base of your choice inside the Airtable API documentation. You should see some urls on the right side. Copy the highlighted text in the url. This thing basically:

Get the APP ID for Airpress
Get the APP ID for Airpress

Note that the app ID starts with ‘app’.

Ignore the other options for now and enable the debugger for admin only.

This is how you can setup an Airpress connection. Note that one Airpress connection maps to one Base only. You can always create multiple connections.


There are three ways of fetching records from Airtable Tables using Airpress.

  • Use Virtual Posts
  • Use Virtual Fields
  • Use AirpressQuery()

Virtual Posts allow you to map posts directly to Airtable records. So basically you can do something like map to the the Airtable vendor record. This will use the default page type. Setting up Virtual Posts is definitely a bit of work and is out of scope for this review. Check out this video for a tutorial on setting up Virtual Posts.

Virtual Fields work by mapping your Airtable Table to a WordPress page(or post, cpt, etc). Virtual Fields are definitely easier to setup than Virtual Posts and you can also use shortcodes with it but again, setting up Virtual Fields is another rabbit hole and I’ll leave it up to the plugin author to explain in this video.

That leaves us to using AirpressQuery which is possibly the closest thing to an ACF/custom fields like API for Airpress.

AirpressQuery is pretty simple to use. Basically AirpressQuery is to be used like a querybuilder class.

Once you instantiate a new object using the AirpressQuery, you can feed that in AirpressCollection and bam, you get an array as the return value which contains all the results. Here’s some sample code for ya’ll:

$query = new AirpressQuery();

$events = new AirpressCollection($query);

foreach($events as $e){
echo $e["Name"].": ".$e["Picture"].$e["In Stock"]." ".$e["Settings"].$e["Designer"].$e["Link"]."<br><hr><br>";

You can drop this code inside your theme to check it out, provided you’re using the same product catalog I mentioned earlier and your Airpress connection name is ‘Default’.

This it how it looks like when using the twentyseventeen theme:

Airpress records
Airpress records

On top of this, you can also filter the results via setting options in AirpressQuery like this $query->addFilter("{Status}='Enabled'"); where Status is the name of the Airtable column and its value is ‘Enabled’. I believe this is very similar to how you can filter records inside Airtable itself.

There’s definitely a lot you can do via AirpressQuery and AirpressCollection. Check out the plugin page for more info.

Now in the middle of all this, does it support updating/creating records?

According to the plugin page, it does support CRUD operations but there’s no API example given for creating and updating records. For now I’ll leave this as undocumented. Its a shame the documentation isn’t clear on this issue otherwise Airpress would make Airtable a very viable alternative as a CMS.

Apart from this, Airpress importantly supports caching. It stores the cache data via wp transients. By default, it refreshes the Airtable data every 300 seconds and will completely refresh the cache after 86400 seconds(24 hours). This ensures that the data is always fresh everyday and doesn’t overload the API rate limits.

There is a way to refresh the cache manually. If you’re using the Virtual Fields or Virtual Posts then you can append ?fresh=true at the end of the url to refresh the cache. You can always change the query variable as well as the refresh and expire time inside Airpress connection settings.

Use cases

You may be wondering why use Airtable as a CMS in the first place when you’re already using WordPress. There are a couple of scenarios where using Airpress makes a lot of sense.

  • Your marketing/content writing team is already using Airtable and you want to integrate some tables/columns in your main website, perhaps as an updates page/about us page, etc.
  • You have created an awesome curated list of things in some xyz niche and want to setup a site around it.
  • You’re already using WordPress but you want to move everything over to Airtable.

That being said there are definitely some use cases where using this setup won’t work.

  • You’re building a content heavy site and plan to create all your content on Airtable. This is solely because Airtable doesn’t have a full blown wysiwyg field. And WordPress’s wysiwyg field is pretty expandable anyways.
  • You are creating a site where you’re expecting a lot of records. This is uncharted territory as few have use Airtable API to CRUD records at a large scale. In this scenario, its not even advisable to use WordPress anyways.

Documentation & support

Documentation is almost non-existent. The only pieces of documentation is the 30 minute video and the plugin description on the WordPress plugin’s page.

Again, there’s no official support whatsoever. The developer may answer queries on the plugin’s support page though.

It should be noted that this is a single developer’s effort and one can’t expect the developer to provide help to everyone. Providing examples and tutorials on a github gist perhaps would’ve been awesome though.


The plugin is pretty solid, its Airtable I’m worried about.

You need to keep these things in mind when using Airpress:

  • API access can always change in the future. This may break Airpress.
  • You(or your clients) can/may change Column names and the site breaks. Locating this issue can be problematic.
  • There is no documentation updating Airtable data via Airpress.
  • Multiple line text fields won’t return formatted HTML. You’ll need to replace \n with <p></p> yourself.


A really handy plugin which makes WordPress act as a front controller for Airtable. Gives you many ways to use the Airtable API. Only issue is the documentation which is lackluster.


API Yes - extensive but lacking documentation.
Has shortcodes Yes - its seems like you can only use them inside templates if you're using Virtual Fields.


A workhorse of a plugin. Excellent choice if you want to use Airtable as a CMS using WordPress.

  • Extensive API. Made by a developer, for developers.

  • Caching is baked in and configurable.

  • Documentation is lacking.


Helpful disclosure

Our works are supported by earning an affiliate commision
when readers choose to purchase a plugin based our reviews.

Leave a Reply

Your email address will not be published. Required fields are marked *