How to Create Forms for Hugo with Netlify

One of my main concerns about moving from WordPress to Hugo was, “How on earth do I create a contact form on a static site?”. Fortunately, Netlify came my rescue. Netlify already provides an excellent free service for deploying smaller static sites. I discovered that it also handles forms without the need for any JavaScript or plugins. In this tutorial, I’ll explain my process for setting up a simple contact form. Submissions are both stored in Netlify and emailed to me. I’m using the Papermod theme for Hugo, so your setup might vary. ...

16 January, 2026 · 4 min · 722 words · Catherine Pope

Why I Moved My Website to Hugo

I’ve been using WordPress for at least two decades. During that time, I’ve become intimately acquainted with its quirks, and mostly indulgent of them. A couple of years ago, though, I realised that I’d stopped blogging. The more significant WordPress updates - namely the block editor - had introduced a lot of friction. It was taking me 20 minutes to draft a post that should have taken only 10. Also, I noticed clients grumbling about WordPress a lot more. Although frameworks like Genesis and GeneratePress made it easier, they also added another layer (and learning curve) on top of WordPress. And keeping plugins up-to-date was a part-time job. ...

9 January, 2026 · 5 min · 867 words · Catherine Pope

How to Create a Book Database with Hugo and YAML - Part 3

Once I got my YAML book list set up, I couldn’t stop thinking of different uses for it. Although I’m mainly using it to generate reading lists for specific workshops, I thought it would be useful to also generate a full reading list or bibliography. In this tutorial, I’ll extend the code from Part 1 and Part 2 to retrieve and display all the books, arranged by subject. To follow along, you’ll need the following files from those earlier tutorials: ...

5 October, 2025 · 3 min · 569 words · Catherine Pope

How to Create a Book Database With Hugo and YAML - Part 2

In my previous tutorial, I showed how to create a simple YAML database in Hugo for reusable book links. Only five minutes passed before I started tinkering and building something fancier. In this tutorial, I’ll explain how to create subject-specific book lists. This approach works well for quickly generating and sharing reading lists. As with the previous tutorial, you can also adapt this code for organising web links, tools, or other resources. ...

30 September, 2025 · 5 min · 948 words · Catherine Pope

How to Create a Book Database with Hugo and YAML - Part 1

While creating resources for some of my workshops, I realised I was recommending the same books repeatedly. This also meant I was typing the same details repeatedly - time I could be spending reading. I then started experimenting with creating a simple database in Hugo. I wanted a solution that would allow me to maintain my book details (title, author, and ISBN) in one place, then pull them into specific pages with a shortcode and link to a bookstore. This way, I’d: ...

29 September, 2025 · 5 min · 979 words · Catherine Pope

Open External Links in a New Tab With Hugo

After months of faffing around and configuring external links manually in Hugo, I decided there must be a better way. There is! Here’s the solution that worked for me for my bookstore links. Some themes include native support, so it’s a case of checking the documentation and adding a line to your hugo.yaml or hugo.toml config file. If, like me, you’re using a theme that doesn’t support this feature, here’s a method that might work for you. ...

18 September, 2025 · 3 min · 582 words · Catherine Pope

Manage Multiple Hugo Versions with Docker

Hugo is usually the simple solution for website generation. Recently, though, I ran into a frustrating situation: the theme I wanted to use for one site required an older version of Hugo, whereas another site demanded the latest version. Although it’s possible to run multiple Hugo versions on the same machine, life is already complicated enough. In this tutorial, I’ll explain how you can build and preview a Hugo site with a Docker container. ...

15 September, 2025 · 4 min · 684 words · Catherine Pope

How to Add a Theme as a Hugo Module

Although Hugo modules are supposed to make life simple, this took me an embarrassingly long time to fathom. In this tutorial, I’ll show you how to add a theme as a module of your Hugo site. I’m assuming you already have a Hugo site and have chosen a theme that’s available as a module. You also need to have run git init in your site folder. If you want to learn more about modules, take a look at the Hugo documentation. ...

30 March, 2023 · 2 min · 394 words · Catherine Pope