We are excited to introduce BoardScribe, a new WordPress plugin we have been developing to help organizations publish accessible, searchable board meeting minutes and agendas.
At the time of our livestream, the free version of BoardScribe was going through the WordPress.org approval process. We also previewed an unreleased Pro version that will add more ways to organize meetings, publish supporting content, and customize the information displayed.
Here’s a complete recap of what we covered during the livestream.
Watch the Video
Video Transcript
[00:00:00] Introduction: What’s BoardScribe
Steve: Very good. I’m glad everybody’s here, and we’re excited to talk about a new plugin that we’ve been working on, which we have named… And naming the product itself was a whole experience. And trying to come up with something unique that is descriptive, that is not already in use, that is trademarkable, all these things, was quite the challenge.
We’ve internally had this plugin for a while, for a couple years or so, and we have internally been calling the project Meeting Minutes. And, Meeting Minutes was a plugin that just allowed us to post clients’ meeting minutes in an accessible table on their website.
There’s many factors that go into making sure that something like that is accessible. On the surface it sounds like a pretty simple concept, but there’s a little more than meets the eye in that case.
And, we’ll jump into it a little bit. But the name that we’ve come up with, the official name is, drum roll…
William, where’s your drums?
William: No, I-
Steve: No drums?
William: I’ll have to sound, sound board.
Sound board. I’m just… I can tap my keyboard.
Steve: There you go. We need a soundboard for real. it’s called BoardScribe. So it’s made out of two words. Board. We really wanted board to be in the word. That’s B-O-A-R-D. Not, not-
William: Not the other one …
Steve: not to be confused with B-O-R-E-D.
As in a board, a board of people, and Scribe as in writing things down, taking note. And, so together it’s BoardScribe.
This is a place where you can take your meeting minutes from your board meetings, and you can organize them and post them onto your website in a way that’s reliable, in a way that’s accessible.
The unofficial official description, because this plugin is new, we’re still in approval phase for the plugin. So that means that there is going to be a free offering of this plugin, and that is currently in approval stage with WordPress.org. Hopefully, by the time you watch this back, it will be approved. And then we will, in the future, have a pro version of this plugin released as well.
It’s publish accessible, searchable board meeting minutes and agendas for councils. So this could be your HOAs, this could be school boards, non-profits. It helps them display their… they have public record transparency. Some boards are required to publish these things. City councils and, county, governments, schools, to say the least.
And there is some compliance around this as well. I’m not super versed in these laws or the compliance, but there’s a law called the Sunshine Law that has certain requirements around boards and the things that they need to track and what they need to make public for people to access.
What makes this plugin accessible, right? So taking PDFs or documents and outputting them into a table is…
I got distracted by a comment in here where somebody’s-
William: Yeah
Steve: … somebody’s really into your Zelda-
William: I also smiled about that. So I will say before we go off, so yeah, I found there it is a 3D print, so if anyone wants to make one, just buy yourself a cheap 3D printer.
Steve: Yeah. Or an expensive 3D printer, right?
William: Yeah. Yeah. You could buy the expensive one.
I got the cheap one.
Steve: Very cool.
[00:04:26] BoardScribe Features
Steve: What measures have we taken to make sure that outputting your board minutes is accessible, right?
In BoardScribe, we provide a unique descriptive link names. Each agenda and/slash minutes links gets an aria-label. So what a lot of times happens in these tables is it just reads out the same thing for every document, and it’s not descriptive for somebody using a screen reader, or even worse, it just reads out the file name, and if a file’s not named correctly, that could be a big problem. And, so the plugin adds an aria-label that is formatted like “View Agenda for Monday, January 5th, 2026”. Instead of a full… so you end up with something very descriptive for screen readers and instead of a full page of ambiguous “View Agenda” links all the way down the page, right? And if you go down the page, it’d just be like, “View Agenda, View Agenda, View Agenda.” And the screen reader’s like, “View agenda for what?” So you do have a little bit of context when you’re in a table, like if the date is within the same table row. But, we also found a lot of times that these tables are not scoped correctly and to be as semantic and accessible as possible.
This outputs either through a shortcode or through a block and, we announce paginated changes. This is dynamic content, so it’s coming in through JavaScript so the pagination changes will be announced to the screen reader of those changes. And you would believe… you wouldn’t believe how many times we’ve gone through clients’ websites where that is not the case.
William: It’s never the case.
Never.
Steve: Yeah, announcing pagination is a little bit of a difficult thing. You wanna do it with an aria-live region that is set to polite so that you’re not just an- announcing it over top of other things.
We’ve taken a lot of care inside of BoardScribe to ensure that the pagination is accessible.
Focus moved into the table after a page change so the keyboard users aren’t dumped back at the top of the page.
Now, this isn’t always the case with BoardScribe because the content does refresh dynamically.
Correct, William?
William: Yes, that is true, and in the case of dynamically refreshed content, we… I, believe we focus people right back at the beginning of the table.
Steve: Yeah.
William: That’s why it’s tabable. But, in general, other systems typically don’t move, so to get to the next set of listings you have to reverse tab 500 times.
Steve: Cool.
So proper table semantics, right? So scoped columns, headers, row headers on the title cell so that the screen reader announces which meeting each cell belongs to. We do on the –
Keyboard scrollable table so that, if there is overflow or it’s, makes it easier for a keyboard to navigate through the table.
In the pagination we set- we, of course, we set the aria-current to true, and we are making sure that the pagination itself has an aria-label of pagination and that it’s using a semantic navigation element.
Screen reader text for empty cells. If there’s an agenda that’s not available, we actually output “Agenda not available” instead of just a blank cell to help give the screen reader context because they can’t see that cell’s empty.
Responsive stacking so cells keep their meeting on mobile.
Editable column and link labels, so you can write your own accessible links. So it will default to agenda with an aria-label that makes it descriptive, but you can also edit each link text that you import to your own liking and make it even more descriptive for visual users and for screen readers as well.
[00:09:21] BroadScribe Free
Steve: Cool. So William, do you wanna run down kind of the breakdown between Free and Pro a little bit? We can do this visually, as we go along, or we could talk-
William: Yeah.
Steve: … About it.
You wanna do it visual?
William: Sure. Yeah, let’s that be easier for me, I think.
Steve: Okay.
Yeah, we’re not sharing our screen yet, but we are about to right now.
William: Do you want me to start with just Free?
Steve: Yeah, let’s do that. Let’s start with just Free.
William: Okay.
Steve: So William’s pulling up his screen and-
William: Yeah, so general feature is… The base feature is this custom post type that I have open now. The board meetings… every meeting is a custom post type. It is a reduced set of what you might expect from WordPress.
So let’s click into this first post type right here. You can see there is four individual fields. All of, everything we see here is part of the free plugin that we will release on .org.
The first field is the Meeting Title. It’s right up here at the top where you would expect.
The next field we offer is the Date. The Meeting Date does not necessarily have to be the exact same date as the publish date. The publish date can be set in advance, and there is handling for meetings that are in the future, upcoming meetings.
We also have an Agenda URL field. This field here is plain text field where you can paste any document type, any page, any link you want. Right here in mines I have a demo PDF file. There’s also a Media Library button. You can click on that Media Library button, and the model will pop up. It’s the standard WordPress Media Library. You can pick any file from your Media Library to put in here. That could be images, PDFs, Word documents, whatever you choose.
Next field is the Minutes URL. It’s the same deal, it’s a plain text field. It can be any type of document, file, link you want, and it has the same Media Library option.
And the final option we have it’s just a checkbox for “meeting not held”, and some meetings may need to be announced that they are canceled, postponed, or not held for some other reason, but you’re still required to announce that schedule. So this checkbox here can be used to toggle on and off whether the meeting was actually held or not. And then if you make any changes here, you can just click Update, Publish, Save in the right-hand sidebar, which is the standard Classic Editor format. And all of this input is Classic Editor style.
None of this is blocks because there is no content on these individual meetings. They are just this set four fields: the Date, Agenda URL, Minutes URL, and a boolean of meeting not held.
Steve: And if you don’t add a title to a new board meeting post, what happens?
William: It does generate a title based on the meeting date.
Off the top of my head, I can’t remember the exact format. I think it is just meeting colon the date. I can test that.
Steve: Yeah, it’s board…
William: There we go… Board Meeting…
Steve: Yeah.
William: Hyphen and then the date in this format.
Steve: Yeah, just a little thing that we’re trying to do to make it, to make it…
William: It makes it easier.
Steve: Just easier to add these.
We wanna remove friction from people adding their meeting minutes, ’cause they’re like, “What should I title this?” ‘Cause this title really doesn’t get output anywhere, right?
William: It depends on what template you’re using for the output, but generally this… it is possible to show this, not through…
I think it is possible through the free. It does get-
Steve: Oh, it does. Yeah, yeah. It sure does.
William: The standard- Yeah … left-hand side panel.
Steve: But the reason why I say that is ’cause the title is a funny field that we’ve had in this kind of internal plugin for a long time, but we always turn it off.
William: Yes, and it is possible to turn this off, so I guess I can show the next set of features. So we have, in the menu, we have a Settings link.
Steve: Before you do, hold on.
I wanna pull up this comment. This says, “Long live classic.”
William: I think a lot of developers-
Steve: Now, now-
William: …really like Classic.
Steve: Yeah, I don’t wanna burst your bubble here, but we’re about to get very non-Classic Editor here in a minute.
But yes, the post type for the defining your meetings, your board meetings, is a Classic Editor currently. But we’re about to go deeper on the Block Editor here in a second. But, go ahead, William, with the Settings.
William: Yeah. So before we get to the Block Editor, we have the Settings page in the menu, which is under the board main’s top level item. It’s the final item in this end.
We have three options here.
General, which contains one default option we have currently. You can toggle it on and off. It is to Delete Data on Uninstall. This is just a way for us to clean up anything we save. I will point out that we actually will never delete the content that is saved in your meetings. If you wanna delete that, you should delete that yourself. We will only ever delete settings that we’ve stored in the database if this toggle is on. And yeah, there’s a red warning here that says, “Warning: cannot be undone.” It is irreversible. If you toggle this on and uninstall, any settings we save will be gone. So keep that in mind. and also keep in mind, we currently don’t have any settings in free, so maybe this will be gone by the time this releases, but worth calling out.
The second item in this menu is the Shortcode Builder. If we click onto this, you will see in the left-hand column of what appeared. So we have a Shortcode Builder Title, “Configure your shortcode options below, then copy the generated shortcode and paste it into any page or post.” This is a shortcode that most people who use WordPress will understand shortcodes.
Our shortcode is edbs_boardscribe, and it’s in the square brackets. That is shortcode parent, standard WordPress shortcode. If you paste that shortcode, underneath that we have a preview of what you will see. I’ll come back to that in a second.
On the left-hand panel we have an accordion that contains all of our Settings. We have the Display Settings, Column Labels, Link Labels, and Hide Columns. So four individual groups of Settings. Generally, you will be modifying just these Display Settings. We have a bunch. First one is Included Years, this is a filter to show just a single individual year. So if I were to type 2022 in this field, in the right-hand sidebar the preview updates and the shortcode updates. And you can use any permutation of basically any of these Settings, but if you pick a Start Date or an End Date, which are the two next Settings, it overrides the Included Years. The Start and the End Date take priority.
The next one is how many Posts per Page you want. The default of 20 per page, but you can change this number however you want.
And below that we have a toggle that is the Show all. If you wanna show every one of your meetings, you would toggle that on. If you have hundreds or thousands of meetings, you probably don’t wanna use that. But if you ever have a number, then, okay… If you have maybe 50 or 60, no issue with turning that on, and you might wanna show all of these posts on the same page.
Then we have the Held Date Format, which is the standard PHP date format. We also have a link to php.net/manual/en/datetime.format.php which you can reference the full Held Date Format, and that is what gets output in the Date Format field inside of the table. So your date will be formatted with whatever format you pick here, and it’s free form. You can pick any format that you might want.
The Not Held Format is the next Setting, and it is slightly different. If a meeting is not held, you might only wanna show a month and year as opposed to a specific date, which is what our default is, the capital F, capital Y.
Steve: Yeah. So if a meeting’s not held, there’s not really a specific date for a meeting not being held, but so you might wanna change the date format to be like, like you said, just June.
William: Yeah, just month and year or something else.
Steve: Yeah. Yeah.
William: Next Setting is a Display Template, and in the… We only have Table as the Default format right now, but when we get to the Pro plugin, we have one additional template that we can show off. We have a toggle after that, which is to force all columns to be the same width. By default, they will automatically wrap based on the size of the contents, and that can be jarring as people change between pages or scroll between different tables, page reloads. So you can force the columns to be the same width, and they’ll be equal width, number of columns divided by total space.
And then the final Display Setting is a Custom CSS Class, which you might wanna style a specific menu or a specific table to be a specific way. You can add the Custom CSS Class here, which will help developers to make sure that they only modify the display of the table that they want.
Next set, so we have Column Labels.
Every one of the four columns, the Title, Date, Agenda, and Minutes, you can change the label that appears at the top of the table.
And the Link Labels, you can also modify them. Inside the table, we have View Agenda and View Minutes for those two content types. You can change them to whichever you want.
And finally, we have a Hide Columns field where you can turn off any one of the columns from the table. If we turn off Title, we will then have only three columns, Date, Agenda, and Minutes in the table, which is most commonly the way we use this on client websites. We normally have just these three columns.
Steve: Yeah, so that’s a great walk down of the Shortcode Builder. I do wanna pause on the Shortcode Builder a little bit here, because this is an unusual feature, right? You don’t see these too often. And what this does is in real time when you make the changes, it actually generates the shortcode for you to copy out, right?
William: Correct. So the shortcode in this right-hand panel, the full shortcode is listed, so the Included Years, equal width columns, which columns are visible, which columns are hidden, and there’s a copy button.
So I do see we have a question, how much gets passed in the shortcode versus stored-
Steve: Oh, this one.
William: Yeah, in the database.
Steve: Yeah.
William: And yeah, it, it could get quite long, everything gets stored in the shortcode. Nothing gets stored and fetched via database query here at all. This is just configuration in the shortcode, and there is the button to copy it, and we get a toast appear, “Shortcode copied to clipboard.” That does get announced for screen readers as well. So you can click the copy button beside the shortcode, get that, or you can hand write your own shortcode if you know…
Steve: Yeah.
William: I wouldn’t expect anyone with so many options-
Steve: Yeah.
William: … To hand write these.
Steve: Yeah,
A-
William: And next one- An interesting thing is the Preview as well below here is a Live Preview. If I were to change any of the Settings on the left-hand side, so if I change the Included Year to be just this year, 2026, the minutes are updated in this preview. It is a live preview, and this is exactly the same markup that you will get on the front end. You will see here.
Steve: Yeah, so the shortcode, Michael had a question here, “Curious if it’s possible to result in a very long shortcode to copy and paste.”
A fairly long shortcode. I don’t know very long, but, that’s part of the reason why we kinda built this Shortcode Builder was, to kinda assist the user along and not having to build this themselves. And it serves as kind of a secondary kinda documentation of sorts on the shortcode.
We can write documentation on how to string together all these parameters in the shortcode, but, it’s a lot easier to actually just see it in action here. This shortcode is unique, too, because, technically, William, can you speak to how this relates to the block that’s available in the Free Board Meetings plugin?
William: Yeah.
Yes, so from a technical perspective, the rendering of the table outputs the exact same whether you use the shortcode or not. So all of these settings that are available in the Shortcode Builder are also available in the block. They are in sync entirely. Now, I have a possibly in progress version of Pro, so when I show you that, some of these column names might be different, but in general they will be completely in sync.
Steve: Yeah, totally. Cool.
William: And before we move on, we have one final item in this, the Settings Page. We have a Support Tab, and if you click on that, it loads up general documentation links, contact links, and it will link to some quick start guides. People can, click through. These currently are not live, but by the time this goes out, ideally they will all link somewhere and people can get, yeah, people can get whatever information they need, like getting started with BoardScribe, Display Meetings with the Shortcode, et cetera, et cetera.
There is a lot of help will be available if someone runs into a problem.
Steve: Cool. That sounds good.
Why don’t we jump over and take a look at the block then?
William: Sure.
Steve: We were talking about Classic Editor, and we’ve got some Classic Editor fans, and I think we’ve got some Block Editor fans as well.
We are fans of both on this end.
William: Yeah, so what I’ve done is I’ve gone to just Add New Post, and you can put this on a page, or a post, or anywhere you want. I’ve just came to the Standard Post Editor, and I’ve called the title of the page Meeting Page.
Steve: And it’ll work in a block theme as well, like if you have a block theme.
William: Correct. You can put it on, if you have a Full-site Editing theme, you can paste it there just fine. And you always have the shortcode. So the shortcode block exists in WordPress, and you can actually just take the shortcode and paste it right here. I have also used the shortcode inside of page builders like Elementor, and that is also perfectly possible.
As far as the block goes, if you type forward slash and start to type in Board, you will get the Board Meetings option as a block. If you select that, you instantly get a live copy with all the Default Settings for the… The Default Settings match and what the shortcode defaults are, right? The defaults are the same. And in the right-hand sidebar on the block options, we have similar groups. We have Display Settings, Column Labels, Link Labels, and Hide Columns. These are all the same.
In the block editor, you also have the advanced section, which is another place where you can put a CSS Class. But, redundant in our use case, but the additional CSS field also exists here under Advanced, and both of these are Core WordPress features. All of the Settings are effectively the same across all of the different groups.
Yep, and if you change one of the Settings, the live preview seems to not be updating as expected.
Oh, it is because I’m only showing the six items I have this year. Yeah, So if I change it to 2022 again. Yeah.
Steve: There you go. Yeah.
William: Yeah, number of different meetings.
Steve: Cool.
Can you show changing a table header name or-
William: Yes. If you go through the, down to the Column Labels option, and let’s say we wanted to change the title in the header of the table to be called Meeting Name, you can just change that in the sidebar. It instantly updates in the preview here in the actual editor panel, and now the title of that first column is Meeting Name. It’s exactly what was typed in the options at the side.
And similar story with the Link Labels. If we didn’t wanna call the minutes “Minutes”, if we wanted to instead of saying View Minutes, we wanted to say, “See Notes”, you can type that into the Label field, and then that is what the Link and similarly its Label will say in the table.
Steve: Yeah. So fully customizable. The Meeting name or the formerly Title named cell, you can go down and turn that off, which we have turned off on many of the projects that we do to not cause confusion. So this probably looks… turn that back off. Yeah. Without the Title, it looks more like what you would normally see on a Meetings Agenda page or a Board page.
We’re not seeing any pagination here, but we see the pagination on the front end, right?
William: Correct. So here, this is just a preview, but if I were to, publish this page and then click the view post button, here we are on the front end. Oh, I’m showing all of the items. Let me… Yeah, I gotta go back to the Edit. And just for sake of showing this I’m gonna remove the Included Years and resave the page so that we will have a longer list. And then back to the preview front-end.
Steve: You still showing all?
William: I’m still showing it all. I seem… I maybe have got a bug here in the front end.
Steve: Oh, limit it. Yeah. Can you limit it to 10 and see what that does?
William: That is the bug. I see that- Oh … that field is missing here.
Steve: Oh, very cool.
Try it with your shortcut.
William: I guess I will fix that. I will. I actually do have a different page open that I can show.
Earlier I set up a different page-
Steve: Okay, nice.
William: That has a couple of them. If I scroll all the way to the end of this, we can see there is Pagination. So we have the previous, and then numbered pages, and then next at the end. So we have 7 pages total of meetings on this. If I were to click, say, number three on this, focus shifted back to the top of that table specifically.
Steve: Yeah. You said that table.
William: I have two on this page.
Steve: Yeah, so, this works with multiple tables on the same page.
William: Correct. So if you wanted to show just 2022 in one section, 2025 in a different section, you could filter it based on that, and you could place them in different places on the page.
There is no one per page limitation here.
Steve: And we pass query parameters to that target, specific-
William: Correct.
Steve: Cool.
William: So if you were to… You could hot link someone directly to page five of this table as needed.
Steve: And that’ll, since we actually do update the URL, that allows for forward and backwards paging, right?
William: Correct.
Steve: Yeah.
William: You can press the back key on the browser. It would move you back or forward as needed. It is fully native browse patterns.
Steve: On the View Links, and part of the big thing about BoardScribe was that we are allowing you to do something quickly that, to abstract the table creation out of the way and we take the heavy lifting on that.
But also, in that regard, it’s to make it accessible.
And that’s kinda hard to read. I don’t know if you can zoom in.
William: Yeah, trying.
Steve: It’s gonna zoom everything.
There you go.
William: Yeah.
Yeah, on every one of the View Links, either the View Meeting or the View Agenda or the View Minutes Links, we output an aria-label.
This one that I’ve just picked at random says, “View Agenda for Saturday, February 12th, 2022.” And the, the visible text is “View Agenda”, but the label for screen readers will read out with the Date included so that context is never lost as you tab through the table.
Steve: And if you change the label from view agenda to something else, it will…
The aria-label will update-
William: Correct. The label will reference … The beginning of the label is always the same as the visible label, and that is a AAA requirement. I can’t remember the exact criteria, but-
Steve: yeah …
William: The beginning of the label is always the same as the visible text.
Steve: Cool.
And the table scoping as well, is properly set up for accessibility?
William: Yes, correct. If we inspect the headers, we have a TH scope of column and a roll of column header on each of the columns which, scopes the headers appropriately. If we look at a row as a TR role equals row, and yeah. So each of the scopings for the headers is scoped to-
where it is.
Steve: And then we do have a row header on the row. Correct? Yeah.
Yeah, at the very top there.
William: Yes.
Steve: Yeah. This delineates that this is the header for that whole row.
Yeah, That’s-
William: Yeah. Role- Item role then for role headers …
Steve: Role equals role header. Yep. Cool.
We don’t have a screen reader up and running right now, but, if you were to paginate and go through these pages, it would be announced to the screen-
William: It would be appropriately announced. We tested that before, so everything is done.
I guess-
Steve: Good.
William: While I have this open, I can also quickly show if you go to mobile size view, there is actually slight… there’s quite a difference and variance of how it looks, as opposed to being columns up and down, we actually have groups of rows. So the Title is now a row, the Date is a row, Agenda is a row, and the Minutes is a row, and these are appropriately scoped as well.
Steve: Yeah. A lot of times with tables and responsiveness, you get down to the responsive screen, and it’s very difficult to get something that is legible or easy to see. And a lot of times, and I think it’s, I think it’s fairly okay, a lot of times what people do is they just do an overflow scroll on the table, so you just scroll left and right, and you can read all the table rows, which I think it’s fine. But we wanted to go a little bit extra of a step and actually collapse this down to a mobile view that was really acceptable for, and easy for people on mobile devices to read.
Just taking that extra step to do a little, go a little above and beyond, and give it a little bit more of a visual, more accessible visual view of that table.
William: Yes.
And when we get to showcasing a Pro table, I will be able to show the horizontal scroll because if, on Pro you can have additional columns, and I’ve specifically picked this theme because the content, it is really quite narrow.
Steve: Yeah.
William: And the only option here is to add a scroll.
Steve: Cool. that’s the free plugin.
We are hoping to have this out very shortly. We are currently under review with the plugins team and if you follow any of those things, in these days it takes a lot longer to get things through. But, we are hoping that comes out here later this week or early next week, and we are doing some of the finishing touches around documentation. We always take a lot of pride in our documentation, making sure that we not only create a good plugin for you, but that we provide you with all the documentation that you need to be able to be successful with the plugin. Because there’s more to it, than what you see here.
There’s a publis REST point that you can actually hook into and make your own things off of this post type. You can… there’s a slew of filters throughout this plugin that you can use to filter things to your own liking.
We will do our part to document all of that for you and link that in the Settings page as well.
[00:37:39] BoardScribe Pro
Steve: We probably should go into lightning mode here, William, and start going through some of the Pro features.
William: I will try and go as quick as I can.
I have enabled Pro, and we are back on the custom post type view section. Now, you will see there is a slight difference here.
Previously, we just had Title and Date by default as the two fields on this post table, but now we actually have Meeting Groups and also Meeting Types as headers, and these correspond to Taxonomies that are available through Pro, so you can actually group your meetings by the Meeting Group.
For example, in my test data, I have Work Session, Retreat, Work Session, Retreat, Special. These are free text. These are standard Taxonomies. You can call whatever you want, and these are used to group meetings for the purposes of filtering them.
Now, you have a second type as well, which I’ve not got in my test data, but the Meeting Types, and again, that’s also a free text option. You can put in any type of meeting you choose, and it’s just a way of you grouping particular meetings in particular ways. You might want a table that only shows the Work Sessions, not Retreats or Special meeting types or any combination. That is possible with the Pro plugin due to these Taxonomy Group Filters.
Steve: Those kind of lend themselves to future features that we have planned for the plugin-
William: Yes.
Steve: …As well.
Sure, you can go into the block or the shortcode and you can actually filter by these Taxonomy terms, but, we’re also looking at actually bringing some filters into the block as well to where you can actually output everything, and then you have filters that you can quickly…
William: Yes.
Steve: Dynamically search all the Board Meeting Minutes all in one place.
William: We have two new items that are related to them. We have the Groups link under Board Meetings, so we have the standard Board Meetings link, Add New Meeting, and under that’s one of the new links, Groups. Under that is another link, Types, and those are directly in reference to the Meeting Types and Meeting Groups columns. These are the Taxonomies, how you would add new terms, modify terms and things around. Below that we also have BoardScribe Documents. This is a Pro specific feature, and it is not necessarily a Taxonomy. We will talk more about that when we go back to the Add New Meeting page, which will have some additional new fields.
I will open that now. Or actually, I will open an existing meeting, show that. This is the equivalent of the Add New Meeting page. I’m on an edit copy of an existing meeting I’ve set in, so it starts off with the Date, has Agenda followed by Minutes, and these are a new field type.
It has the URL, which was previously there, that is the same as before with a Media Library option underneath it. But there’s this new button at the top, which is Select or Create a Document. If I were to click this, there will be a notice that says, “Switching will remove the entered URL. Continue?” You can either confirm that with the remove and switch button, or you can cancel it. I’m gonna click cancel, and it just goes away. Your focus gets returned back to this button. So I’ll click it again, and I will click “Remove and switch”.
Now, this field has changed. It is a text field, plain text field, so if I were to start typing in, Agenda July. There is a flyout menu that appears, Create Agenda July. If I were to select that, there’s now an Edit and a Remove links, and this has just created the draft post. If you wanna have a specific post visible that isn’t created yet, you can link them, create it right here or, by editing it, because it gets created as a draft by default, and that is what the BoardScribe Documents are.
Not only can you link directly to a piece of content, with Pro you can then feasibly go through and create that exact content at meeting creation time.
Steve: And I think we should pause and talk about why we, why you would want to link to something besides a PDF or a Word document. Why, or even, why would you want a custom page in a custom post type to link to?
William: This is feasible, like a parent and child type relationship. This new Agenda July, which I’ve created as a draft, is technically a child of the Board Meeting July 3, 2026. This meeting here. And you might want to create the post or page as, with the Block Editor. So if I were to click Edit on this, it just takes you to the Block Editor. You can fill this in however you choose. Combinations of charts, images, text, videos, anything you want, anything you can build in the Block Editor can be where this goes to, and this does become a dedicated page on the website that people can be linked directly to as opposed to discovering just through, the-
Steve: Yeah.
William: Table.
Steve: I think on our end, and the reason why, and, this was a feature that was really pushed by Amber, and in thinking it through, we saw a lot of value in this as well. Because the problem with PDFs is a lot of times PDFs are not accessible at all, and they’re hard to read. Sometimes they open a new window, and you’ve gotta zoom in to be able to read everything, and, you know-
William: Yeah.
Steve: They’re limited, to what a PDF can support.
William: And-
Steve: And
William: While I was building this feature, actually, I will say I looked at probably hundreds of PDFs and found only three in total that passed general accessibility requirements.
Almost always a PDF is not gonna be fully accessible.
Steve: That’s not to say that this page that you’re creating is fully accessible. That’s just to say that you have a better chance of getting something here that is accessible. If it’s not accessible, you need to run Accessibility Checker on the page and do a little bit of manual auditing and checking to make sure that your theme itself is accessible.
But, this allows us to have alternative content that is not a document, that is an actual web page, and that has a relation to the Board Meeting itself, generated in real time. And William’s taken a lot of effort here to make this a little bit more of a seamless, process of adding new custom post types so you’re not having to jump back to that custom post type, create them, then come over here and attach them.
We’re doing all that legwork for you with this method.
William: Yes.
Steve: So-
William: I have come back to the edit page for the Board itself, and we are at this point. I do wanna call out that if I were to remove this, because I had no previous documents created, you saw only the create option. But if I were to remove that and go back to Select Document and start typing in July, it is actually available here so this document can be attached to several Meetings as needed. If you have the same Agenda for every Meeting, you can create it one time and attach it everywhere. No need to copy paste links or anything. You can search for it while adding or picking from the document selector.
Next field is the Minutes field, and it’s the same. It has the Enter URL, Select or Create Document, free text field, and Media Library, and it works exactly the same way. Under the hood there is a type assigned to this Agenda July, which is an Agenda Type, and similar is true of Minutes. So you can only pick an Agenda Type in the Agenda field and in the Minutes, a Minutes Type. And there might be more types in future or you can extend that yourself as needed if you’re a developer. But that’s worth calling out ’cause that’s an invisible constraint here.
Steve: But it’s in an effort to keep that select, kinda clean in that, you’re only selecting Minutes in this field, things that were actually intended to be Minutes or things that were intended to be-
William: Yeah.
Feasibly-
Steve: …other than-
William: …They could be called the same thing. I have came across a situation where they had a PDF called July and a PDF called July, and they were different contents.
I’m picking July as an example, but they had the same PDF file with the same name, with two different types of content, and this keeps them separated the way we’ve got this set up.
I will try and power through it just a little bit here.
We have some additional new fields for Pro. The Meeting Not Held is a free feature, but below that we have a Date Display Override. In the Date field, you may actually not want a full meeting date displayed. You may only want to say July or March Special so you can override that field or that output here in the table. If you want a Custom Date visible, or it can be anything you choose, but this is a free text field set, and it replaces the Displayed Date in the tables.
We also have a Location field, which feasibly might be a physical location. It could be a link. It could be whatever you want. It is free text. But the expectation is Location will be a place, a physical address. And in the not too distant future, this probably will become a Taxonomy of its own, so you can create your locations one time and then just select them here in this field.
We also offer a Livestream URL, a Recording URL, and these are just links. They will be links in the output of the table. And then Closed Caption Transcripts. If you include a video, you’ll most likely want to also include a transcript alongside those videos. And again, that has a Media Library button and opens the Media Library. You would just upload it to WordPress the same way you would upload any other file, and then pick it, and it would appear in the link field for the transcript.
The final one is a Supporting Document. At the end of the table, in its default configuration, we have a Supporting Documents thing in Pro, and that has two options. First you have to click the Add Document button, and then you have two fields, a Document Name, which free text name field, and then we have a link field, and that will be the link to the document, and the link will be output with the name you put in the first field. Or you, can choose a file or you can choose to remove it, and Choose a File, opens the Media Library. Remove deletes the file. And you can have any number of supporting documents you like that-
Steve: Yeah, and we do have some thoughts around integrating this with the official BoardScribe Documents post type as well.
William: Yes.
Steve: Yeah. Very cool. So some-
William: One other thing to call out is that in the right-hand side, we don’t just have the Update or the Publish option anymore. We do have the Taxonomies, the Meeting Groups, which are pre-filled with the Taxonomies I created for my… these are manually created for my test data. The Meeting Types, which I did not select in any of my test Meetings, I actually do have three pre-filled options: Regular Meeting, Retreat, Special Meeting. And you can pick from any of those three, or you can add a new type as you want, because these are just standard WordPress Taxonomies.
Steve: Very good. So I think that’s the Board Meeting’s post.
Let’s… We should probably, take a look at the block, the Additional Block Settings.
William: Yep. So I believe this one here is the Additional Block Settings.
Let me just reload this page. This is one of the blocks, and as we can see, it spans horizontally, requiring a horizontal scroll. And I specifically picked this theme because it has a short content area but no overflow set, so that we could actually see that the scrolling is required here.
Steve: Yeah.
William: But this here is the block. We have all the Additional New Options, and Hide Columns. All of the additional columns, like the Location, Livestream, Recording, Transcript, and Supporting Documents, are off by default, as opposed to the four default fields of Title, Date, Agenda, and Minutes, which are on by default. So we have the Hide Columns group, a Settings Group, which is for the default columns, and we have a Show Columns Settings group, which are for the Pro-only features. So you can upgrade to Pro from free, and nothing will change on the output. You get the option of pick and choosing. You might have Supporting Documents, you can toggle that on. It also gets the live reload, and you can see in my table, I do have in my test there some meetings which have Supporting Documents.
Steve: Yeah. So Supporting Documents get output in a list, right?
William: Correct.
Do I have any tests there? Yep. Yeah, so I have this test there here, which there is two Supporting Documents, and this is, a column or a cell in the table with a list in it, and it is an actual semantic list. This isn’t just visual.
Steve: And we do this for accessibility reasons, so that when a screen reader gets to that list, that it actually reads out the number of items in that list and screen readers that are good with their keyboards can skip over that list if they don’t wanna read it.
William: Correct. Let me just, I’ll just toggle on all of the fields so that we can see I have a table with test data in, all of these. And I will save this post, and we can have a look at it on the front end. Here on the front end, as you can see, this extends beyond the edge of the screen.
Steve: Are you still zoomed in?
William: No.
Steve: Oh, okay. Okay.
William: Do you want me to?
Steve: No, it’s okay. I just… I was just curious if you were.
William: No, I’m not zoomed in and I have this sized specifically.
Steve: Oh, okay.
William: So that we can show that this does have-
Steve: Side scroll.
William: Yeah … side scroll. And this is not the side scroll for our table as such. This is because this theme, which is the latest default theme, 2026-5, it works. Like this is the default theme and it doesn’t break, but they have no overflow hidden on a very narrow content column size.
Steve: Oh yeah, I see.
William: So yeah, if I use tab we can get through all of the items as, tab stops work. If I was using a screen reader I would have a slightly enhanced table navigator. That this is default keyboard features, but table navigation would actually read entire rows and allow me using arrow keys to move between them.
Steve: What if you want a different look? Do you have this set to a year?
William: So I-
Steve: You do.
William: Okay… I do. I actually have this as the timeline. If I go back to the editor, and I scroll up to the Display Settings, the first Setting is the Display Template, and the default is table, which is what we looked at previously.
But in Pro, we also have this Timeline view, and this is, it forces all Meetings to be shown if you pick the Timeline View, because the Timeline View is every Meeting Grouped by Year, and each year has its own table. So what I’m scrolling up and down now is 2026s, and then we’ve reached 2025, and these are separate tables. Two tables. One table per year. And it’s all part of the same block, but they are individual tables, and that was a need for a client specifically, but I think this will probably be quite a common need.
You could create individual tables for every single row. But with this display template, we just make it easy.
Steve: And the templates is a newer feature that we are looking to flesh out and provide a nice set of templates that can be used, maybe even things as simple as a striped table that kinda brings some design elements in. And in the Pro plugin we’re also thinking about some style level changes that you can make to the block, that you can control, like the header background color and header foreground color and things like that.
William: I will call out as well, the calendar, please don’t ask for calendar. I did try and build calendars, and calendars are really quite complicated to do accessibly.
Steve: Yeah.
William: While I have a stashed PR or stashed branch with calendar options, I think it is probably too complicated of an accessible navigation to really output this as calendars.
Potentially, a single month for Upcoming Meetings or Next Year’s Planned Meetings, but in general, I would suggest- It isn’t great for most people.
Steve: Yeah, it’s tempting when you build something like this to think of it like a calendar, right? Because essentially it is a calendar. And so there is that pull to bring in some of those familiar calendar features that you’ve come to recognize inside of WordPress. But we’re trying to narrow this down and niche this to something very specific and, needs for Board Members.
And we should pause now for the wonderful sounds of Scotland.
William: Don’t get me started on my neighbor and the seagulls…
Steve: Scottish seagulls as they pass by.
William: I wish they were just passing by, but I bet my neighbor has just fed them.
Steve: Yeah.
William: And now I’m gonna have to hear that for the rest of the night.
Steve: It puts me in a calming state hearing-
William: Yeah, I do live near the sea in Scotland.
Steve: They’re showing off now. They know we’re talking about them. And, I have pictures of the ocean, and mountains, and a castle.
William: I think that’s not too far off, but I do live in a big rural area.
Steve: Yeah, very cool. So that’s most of the Pro Features.
[00:58:02] What’s Next?
William: Yeah. Do you think we have time to maybe talk through some future-
Steve: Some future.
Yeah, I don’t, there’s a lot around this. There’s a lot around governance and a lot around of approvals of Board Meeting Minutes, and there’s a lot around Activity Tracking, to make an kind of an Audit Trail of when Board Meeting Minutes are posted and every time a Board Meeting is modified and who it’s modified by.
And even there’s some things that require Approvals of Boards, right? When Meeting Minutes are posted, can we build a system that allows each Board Member to Approve the Meeting Minutes before they get posted to the website?
We have a whole slew of features, planned out for this pro plugin to really flesh it out into kind of a one-stop solution for everything Board Meeting Minutes or Board Documents that get posted for WordPress.
Am I missing any?
William: Yeah, probably.
I do wanna call out though that while this is designed specifically with Boards in mind, I do really think this might just be quite good for any meetings that someone has set up.
You don’t necessarily have to be holding Board Meetings, which is why we’ve provided, the ability to edit your labels on these additional fields. You might just run a game group or have sports meetings or whatever.
This will be usable for that as well. You don’t need to take advantage of any of the future governance options we might build. That you can just use this to handle your actual meetings. It doesn’t have to be Boards.
Steve: Yeah, we’ve made it fully extensible, like anything that kind of you needs a table and you wanna make sure the table’s accessible. And anything that is date bound, it is a really good solution for that.
BoardScribe, it fits into our offering of accessible WordPress plugins quite well with Accessibility Checker and with ArchiveWP and we have some ideas around how we can integrate BoardScribe directly into ArchiveWP so that you can actually archive some of the board content, so that it can be considered not current data that is fully archived and thus allowing you to not have to remediate certain things in regards to accessibility compliance.
We’ve had a lot of internal talks around that, how we can integrate the two plugins and they work well together and, but there’s a little bit of challenges around templates and things like that.
That is BoardScribe Free and Pro. We hope to have this out to users very soon in the WordPress plugin repository and on our website, and shortly following that, we hope to have the Pro version ready to go out to the public.
We are doing some internal testing. We practice what we preach here. We try to make our accessibility products accessible themselves. So BoardScribe has undergone an initial audit, accessibility audit from our internal team, and we came back with pretty, good flying, passing, flying colors.
The dev team gets a round of applause for making stuff accessible. And…
William: It’s not a given these days for a developer to be able to do that. It is quite difficult.
Steve: Yeah.
William: Especially this Shortcode Builder.
And I actually did forget one feature in Pro.
We have an Import feature in Pro where if you have meetings in a different format, you can provide them as a CSV to get them imported, which is actually how I imported meetings going all the way back to 2020 in this testing. So I used the Importer Option, and the importer itself is fully documented on the page. It shows the columns, the order it expects, and whether or not they’re required, plus a short description about what needs to be in them.
Steve: You could feed that and your current document into a Codex or a Claude and have it say, “Format my data like this,” and then just import it directly here.
William: Correct. And that is what I did for one of the client websites, is I gave them the format and the contents, and it provided the CSV for their website.
Steve: This is just another area where in our plugins we’re trying to make things easier because there are plugins that can do this. There’s plugins that can import in the post types and stuff.
William: Yeah, but what was the one that Amber was mentioning? WP All Import? She was planning on importing meetings on the client website.
Steve: Yeah, that’s what we typically use. Yeah.
William: Yeah, feasibly she can just use this import only. No need to go through the setup on WP All Import. You just make it in the expected format with the required fields, and it is only the title and the date is the required fields. Everything else is optional.
Steve: And, just it allows us to actually tool this as we move along to our own specific needs, and it takes all that guesswork out of, when you’re in one of those importing plugins where you have to, drag the field over-
William: Do the field maps…
Steve: map everything. This just allows us to build something custom to our own needs for our users to get their data in there real quick.
I think that’s gonna be about it for the episode.
Now, I will say that we had a lot of stuff to talk about on Accessibility Checker and Accessibility Checker Pro, and because a lot of work has been done on that, but I’m gonna hold off on all those till the next Changelog live stream, and we’ll go through all that. The releases are already out. If you saw our last live stream where we showed our new Issues Explorer with Accessibility Checker Pro 2.0, we have done refinements on those things and released updates and fixes and minor little UI tweaks to kinda make that user experience even better since its initial release and just a whole slew of fixes and things that we continue to improve inside of the Accessibility Checker suite of plugins.
We will talk more about those next time on the next Changelog. I appreciate everybody being here in the chat. I appreciate the seagulls of Scotland joining us and soothing us-
William: I don’t.
Steve: …and making us calm.
William: That only works the first dozen times.
Steve: Yeah. And thanks for all your hard work on the new BoardScribe plugin, William, and more work to go, and we are excited to get this out to everybody.
Hope everybody has a good month, and we will see you next month on the Accessibility Checker Changelog. See ya.
William: See ya.
What Is BoardScribe?
BoardScribe provides a place to organize board meeting information and publish it on a WordPress website in an accessible format.
The idea behind BoardScribe is not new to us. We have used an internal plugin for a couple of years that we called Meeting Minutes. It allowed us to publish client meeting minutes in an accessible table on a their website. Although the concept sounds simple, organizing meeting documents and presenting them in an accessible, reliable format involves more work than might be apparent at first.
We designed BoardScribe for organizations such as city councils, county governments, school boards, homeowners’ associations, and nonprofits.
These organizations may need to publish agendas, minutes, and other records to support transparency in public records. Some boards are also subject to sunshine-law requirements concerning what they track and make available to the public. BoardScribe is intended to make publishing this work easier and more consistent.
Although we built the plugin with boards in mind, it is not limited to formal board meetings. Its editable labels and extensible structure make it useful for other date-based meeting records, including community groups, sports organizations, and other groups that need to publish meeting information in a table.
Accessibility Built Into BoardScribe
We practice what we preach, so accessibility is always at the forefront of everything we do. That commitment shaped BoardScribe from the beginning because publishing a list of documents in a table can create multiple barriers if the links, table relationships, pagination, focus behavior, and responsive layout are not handled carefully.
Descriptive Links Preserve Context
Agenda and minutes tables often contain rows of links with identical visible text, such as “View Agenda” or “View Minutes.” A screen reader user navigating through a list of links may hear the same phrase repeated without knowing which meeting each link belongs to. In other cases, the link may expose an unclear filename instead.
We address this by giving each agenda and minutes link a descriptive, accessible name. For example, a visible “View Agenda” link can have an accessible label such as “View Agenda for Monday, January 5th, 2026.” The date provides screen reader users with the context they need when moving through the table or navigating links, independent of the surrounding content.
When an administrator changes the visible link label, BoardScribe updates the accessible label to match. The accessible label begins with the same words as the visible link text and then adds the meeting date for context.
Pagination Changes Are Announced
BoardScribe loads paginated results dynamically with JavaScript. We use a polite live region so screen readers can announce when the displayed results change without interrupting other information already being read.
We have frequently encountered paginated interfaces that do not announce dynamic changes. We took particular care with this behavior because pagination is one of the areas where an interface can look visually correct but leave a screen reader user unsure whether anything changed.
Focus Returns to the Table
When someone selects another page of meeting results, we move the focus to the beginning of the updated table. This prevents keyboard users from being sent to the top of the page or from having to scroll through a long series of controls to find the new results.
The table itself can receive keyboard focus, which also supports keyboard interaction when a wide table needs horizontal scrolling.
Tables Use Meaningful Semantics
We use scoped column headers and identify the meeting title cell as the row header. These relationships help a screen reader announce which meeting each cell belongs to as someone navigates across a row.
We also identify the pagination as navigation, provide an accessible “Pagination” label, and mark the current page appropriately. If an agenda or another document is unavailable, we provide screen reader text, such as “Agenda not available,” rather than leaving the cell blank.
Responsive Tables Retain Their Meaning
On smaller screens, the standard free table changes from a traditional column layout into grouped rows for the title, date, agenda, and minutes. The labels remain connected to their values, so the content continues to make sense after it has been rearranged.
Many responsive tables rely only on horizontal scrolling. That can be a valid approach, but we wanted the standard BoardScribe table to provide a more comfortable mobile reading experience. Wider Pro tables with additional columns can still use keyboard-accessible horizontal scrolling when the available content area is too narrow.
Labels Can Be Customized
Administrators can edit the table’s column labels and the visible text used for links. This allows administrators to match an organization’s terminology while maintaining the accessible context that BoardScribe adds to the links.
BoardScribe Free Demo
We began the live demonstration with the free plugin and its Board Meetings custom post type. Each meeting is stored as an individual WordPress post, but the editing screen is intentionally smaller and more focused than a standard post editor.
Creating a Board Meeting
The meeting editor uses native WordPress fields in the Classic Editor. It does not require Advanced Custom Fields or another third-party dependency. We showed the primary fields available for a meeting:
- Meeting Title: An optional name for the meeting.
- Meeting Date: The date on which the meeting occurs. It can differ from the WordPress publication date, so an upcoming meeting can be published in advance.
- Agenda URL: A link to a PDF, Word document, image, webpage, or another resource. An administrator can paste a URL or choose a file from the WordPress Media Library.
- Minutes URL: A separate link field with the same URL and Media Library options.
- Meeting Not Held: A checkbox for a meeting that was canceled, postponed, or not held for another reason but still needs to appear in the public schedule.
There is no standard body-content area because the meeting record only needs these structured fields. If an administrator leaves the title blank, BoardScribe generates one from the meeting date. During the demo, the generated format appeared as “Board Meeting” followed by the date. We added this behavior to reduce friction for people entering a large number of meetings.
Reviewing the Settings Page
In the Settings page, the General tab includes a “Delete Data on Uninstall” option. If enabled, this removes settings we stored in the database when the plugin is uninstalled. It does not delete the meeting content itself. An administrator must delete meeting posts separately if they want to remove them.
We also showed the Support tab, which connects users to documentation, contact options, quick-start information, and guidance on displaying meetings with the shortcode. We were still completing those resources when the livestream aired.
Building a Shortcode Without Writing It Manually
The Shortcode Builder is one of the most detailed parts of the plugin. BoardScribe uses the [edbs_boardscribe] shortcode, but administrators don’t need to remember or manually assemble all its attributes.
The builder presents controls on one side and generates the complete shortcode on the other. As settings change, both the shortcode and the preview update. The preview uses the same markup that appears on the front end, so it gives administrators an accurate view of the finished table.
We organized the builder controls into:
- Display Settings
- Column Labels
- Link Labels
- Hide Columns
Display Settings
The display controls allow an administrator to limit meetings to a particular year or to a start and end date. When a start or end date is present, the date range takes priority over the included-year setting.
Administrators can also choose how many meeting posts appear on each page. The default is 20. A “Show All” option removes pagination and displays every matching meeting, which may work well for a smaller collection but may not be appropriate for hundreds or thousands of records.
BoardScribe includes separate date formats for held and not-held meetings. A held meeting may need a complete date, while a meeting that did not occur may be better represented by only a month and year. Both settings accept standard PHP date formatting.
The free plugin currently includes the table display template. Administrators can also set all columns to the same width. Without this option, columns size themselves according to their contents, which can cause their widths to shift between result pages or separate tables.
Finally, a custom CSS class can be added to a specific BoardScribe table. This gives developers a way to target an individual table without changing every BoardScribe instance on the website.
Column, Link, and Visibility Controls
The Title, Date, Agenda, and Minutes column headings can all be renamed. The visible “View Agenda” and “View Minutes” link text can also be changed.
Any of the four standard columns can be hidden. We frequently hide the Title column on client websites so the final table contains only Date, Agenda, and Minutes, which often matches the familiar structure of a public meeting records page.
A Live Preview and Accessible Copy Confirmation
All of the selected options are written directly into the shortcode. The configuration is not stored separately and retrieved through a database query, so a highly customized shortcode can become fairly long. That is one reason we built the Shortcode Builder.
Administrators can select a copy button instead of highlighting the shortcode manually. BoardScribe displays a “Shortcode copied to clipboard” confirmation, and we made that confirmation available to screen readers as well.
The builder also acts as practical documentation. Rather than reading instructions about how to combine a long series of attributes, an administrator can adjust the controls, see the result, and copy the generated shortcode.
Adding the Board Meetings Block
We then moved to the Block Editor and added the Board Meetings block to a standard post. The block can also be placed on a page or used in a full-site editing theme. For page builders and other contexts that support WordPress shortcodes, the generated shortcode remains available as an alternative.
The block and shortcode use the same table rendering and matching defaults. The block provides the same groups of controls for display settings, column labels, link labels, and hidden columns. Changes appear in a live editor preview. During the demo, we changed the Title column to “Meeting Name” and changed “View Minutes” to “See Notes,” and the preview updated immediately.
Using Multiple Paginated Tables on One Page
BoardScribe supports multiple meeting tables on the same page. We showed two tables with independent pagination. This could, for example, be used to place meetings from one year in one section and those from another year elsewhere on the page.
Each table has its own set of query parameters. A visitor can link directly to a specific results page within a particular table. Because the URL updates during pagination, the browser’s Back and Forward controls continue to work as expected.
When we selected another page, focus returned to the beginning of the correct table rather than moving to the top of the webpage or to the other BoardScribe instance.
Inspecting the Accessible Front-End Markup
We used the browser inspector to look at the output behind the table. The visible agenda link read “View Agenda,” while its accessible label included the corresponding meeting date. We also inspected the table headers, column scopes, row structure, and row-header relationship.
Developer Options and Documentation
The free plugin also includes a public REST endpoint that developers can use to build their own experiences from the Board Meetings post type. We added filters throughout the plugin so developers can adjust its behavior for their projects.
A Preview of BoardScribe Pro
The Pro features shown in the livestream are still under development and have not been released.
Organizing Meetings With Groups and Types
BoardScribe Pro adds Meeting Groups and Meeting Types. These are standard WordPress taxonomies that can be used to organize meetings and filter which records appear in a table.
For example, a site could distinguish work sessions, retreats, special meetings, and regular meetings. Administrators can add or edit terms through dedicated Groups and Types screens. The meeting editor also exposes these taxonomies in the sidebar.
The Pro version can use these taxonomy terms when configuring a block or shortcode. We also discussed a possible future interface that would let website visitors dynamically search and filter all board meeting records in one place.
Creating BoardScribe Documents
We also have BoardScribe Documents, a custom post type connected to an individual meeting. In the free plugin, the Agenda and Minutes fields accept a URL or Media Library item. In Pro, an administrator can also select an existing BoardScribe Document or create a new one without leaving the meeting workflow.
During the demo, we selected “Create Agenda July” from the Agenda field. BoardScribe created the new document as a draft and provided options to edit or remove it. Opening the document opened the Block Editor, where an administrator could build an agenda or minutes page with text, images, charts, video, and other blocks.
This creates a dedicated webpage for meeting content rather than requiring every agenda or set of minutes to be a PDF or Word document. PDFs are frequently difficult to read or inaccessible. A WordPress page is not automatically accessible; it still needs to be checked with the Accessibility Checker, manual testing, and an accessible theme. However, the document post type gives organizations another way to create web content and connect it directly to a meeting.
We also built the document selector so that an existing item can be found and reused. If the same agenda applies to several meetings, an administrator can create it once and attach it to each meeting instead of repeatedly copying its URL.
Agenda and Minutes documents remain separated by type behind the scenes. An agenda selector returns agenda documents, while a minutes selector returns minutes documents. This reduces confusion when two files or pages have the same title but contain different kinds of information.
Adding More Meeting Information
The Pro meeting editor includes several additional fields:
- Date Display Override: Replaces the formatted date in the table with custom text, such as a month name or a phrase like “March Special.”
- Location: Accepts free text for a physical address, link, or another location description. We also discussed possibly turning locations into a taxonomy in the future.
- Livestream URL: Adds a link to a meeting livestream.
- Recording URL: Adds a link to a meeting recording.
- Closed aption transcript: Connects a transcript file selected through the Media Library.
- Supporting Documents: Allows an administrator to add any number of named documents and corresponding links or Media Library files.
Choosing Which Pro Columns to Display
The Pro block retains the standard Title, Date, Agenda, and Minutes columns. The additional Location, Livestream, Recording, Transcript, and Supporting Documents columns are turned off by default. Upgrading from Free to Pro, therefore, does not automatically change an existing table’s output. Administrators choose which additional columns to display.
When a meeting has several supporting documents, BoardScribe renders them as a semantic list inside the table cell. This allows a screen reader to announce the number of list items and gives experienced screen reader users the option to move past the list without reading every link.
We enabled all fields and viewed the resulting table on the front end. Because the selected theme used a narrow content column, the table extended horizontally and could be scrolled. Its links remained reachable with the keyboard, and a screen reader could use table navigation commands to move through its rows and cells.
Displaying a Timeline by Year
The free plugin currently provides the standard table template. In Pro, we demoed an additional Timeline template. The timeline displays all matching meetings grouped by year, with a separate accessible table for each year inside the same block.
This format grew out of a client need, but we expect it could be useful for many organizations with records spanning several years. Instead of creating and maintaining a separate block for every year, an administrator can select the Timeline template and let BoardScribe group the records.
We would like to expand the available templates and explore simple design controls, such as table striping, header background colors, and text colors.
Importing Existing Meetings From a CSV
BoardScribe also has a CSV importer. It allows organizations to place existing meeting data into the required format and import it directly into BoardScribe.
The importer page documents the expected columns, their order, whether each field is required, and the expected value for each field. Only the title and date were required in the version we demonstrated. The other fields were optional.
The purpose is to remove the mapping and setup work often involved in configuring a general-purpose WordPress importer. Because the importer is built for BoardScribe, we can continue adapting it to the plugin’s fields and user needs.
What’s Next for BoardScribe?
We have a larger set of ideas for the Pro plugin, particularly around board governance and accountability. These include activity tracking and an audit trail showing when meeting minutes were posted, when a meeting record was changed, and who made the change.
We are also considering approval workflows. For organizations where board members need to approve minutes before publication, BoardScribe could eventually provide a process for collecting those approvals before the content becomes public.
Our long-term goal is to explore how BoardScribe can become a more complete WordPress solution for meeting minutes and board documents.
We have also discussed a possible integration with ArchiveWP. That connection could help organizations distinguish current meeting information from content that has been formally archived, although there are still template and implementation questions for us to work through.
Building an Accessible Plugin Experience
We want the plugin’s administrative experience to reflect the same accessibility goals as its public output. Our internal accessibility team completed an initial audit of BoardScribe, and the results were strong. Building accessible interfaces is not automatic, particularly for a live Shortcode Builder with dynamic controls, previews, copy confirmations, and changing content.
We will continue our internal testing as we finish the free release and prepare BoardScribe Pro. We also plan to complete the documentation so site owners and developers can use both the standard features and the extension points successfully.
BoardScribe Free and Pro are the latest additions to our collection of accessible WordPress plugins. We are excited to make the free version available through the WordPress plugin repository and our website, followed by the Pro version when it is ready for the public.
Join Us for the Next Livestream
The Equalize Digital Changelog livestream airs on the fourth Thursday of the month. Each episode will feature demos, technical deep dives, and previews of new features or plugins. Follow us on YouTube to get notified when we go live.
To learn more about Accessibility Checker, download Accessibility Checker or upgrade to Pro.
If you have feedback or questions, you can connect with Steve Jones on X or join our Facebook group.
We look forward to sharing more soon in the next changelog.
