Mugo Web main content.

The 49th Shelf

The 49th Shelf hosts about 100,000 books, and data about their contributors and publishers, as well as rich metadata like cover images, reviews, target audience, etc.

The 49th Shelf has several objectives. Primarily, the site attempts to list every in-print Canadian title; to facilitate it's discovery and to support consumer's ability to decide to buy a title (in print or ebook formats). As well, The 49th Shelf serves as a concrete use for ONIX bibliographic meta data (see and thus aids the Canadian publishing supply chain to advance its use of good metadata.

Currently the site houses data for some 56,000 titles from 26,000 contributors and 100s of 1000s of supporting content pieces. The site is in constant development, rolling out new features and incrementally improving on a monthly basis.

The 49th Shelf aims to provide access to every Canadian book; to provide a platform for discovering, learning about, discussing and promoting, buying, and finding books. Currently the site hosts about 50,000 books, and information about their contributors and publishers, as well as lots of rich metadata like cover images, reviews, target audience and so on.

"We have worked closely with Mugo Web for more than three years now to conceptualize, build, operate, and expand 49th Shelf, a very ambitious web platform for Canadian books.
"From our earliest discussions it was clear that we would not have a typical client-vendor relationship with Mugo. They distinguished themselves right away not only as a team with considerable development expertise but also as partners in our project. They helped us develop our ideas for a unique web property for Canadian books, and to resolve some of the significant challenges we would face in importing and handling the large volumes of data that the project required.
"Mugo has consistently delivered beyond our already-high expectations for the project. More to the point, the Mugo team has always added considerable value in improving not only the back-end systems and server-side performance for the site but also in strengthening the user experience and usability for what has become a fairly complex site with hundreds of thousands of content objects and an expanding range of user groups.
"When we began this project, it was anything but clear that it could be successfully executed. Today, 49th Shelf presents the largest, public-facing collection of Canadian books ever assembled and traffic has scaled sharply over our just-concluded first full year of operations. The site has been widely praised by industry stakeholders and readers alike as an important new community hub and resource, and the development of the platform has resulted in some valuable new IP that has broader application in the promotion of books online and the enabling of reader communities in Canada and elsewhere.
"Mugo has played a key part in all of this and needless to say we recommend them highly as an expert team with a remarkably strong commitment to building great projects that work."
- Craig Riggs, Project Lead, 49th Shelf


Mugo Web has been the development team for The 49th Shelf since conception and we consider this one of our proudest moments.

In addition to the lead objectives, The 49th Shelf is building an online community around Canadian books and providing specialized tools to key audiences including librarians and movie producers.

Mugo has a long involvement in helping the Canadian book industry around ONIX data dating back to 2003 and the release of PExOD in conjunction with with Simon Fraser University's Canadian Centre for Studies in Publishing.

The 49th Shelf is a highly interactive community around Canadian books that helps connect readers with books and other readers, while having fun doing so!  If you are a young reader, an occasional reader, a bookworm, a librarian, a teacher, a chef, or a playwright... if you read hardcovers while curled up by the fireplace or on your e-reader while on public transit... if you haven't read since you were in school or if you host a monthly book club... The 49th Shelf can help you get the most out of Canadian books.

Book, books, and more books

The 49th Shelf is continuously updated with new books, featured books, book lists, and ongoing commentary through a blog. eBooks are also featured.

The book search enables books to be found by title, author, category, and publisher. Recommended reading lists are regularly added by the site editors and by the community.

On each book page is detailed book information, enhanced by excerpts, editorial reviews, community reviews, author biographies, and more. Purchase, share, and bookmark links are provided.

The web site is heavily social, enabling users to shape the site day by day. Books can be rated, tagged, reviewed, grouped into lists, and pinned on a map.  The activity log widget shows every public user activity. There is also tight Facebook and Twitter integration.

Canadian book map

Read Local is the 49th Shelf book map, which displays an interactive map of Canada. On the map are pins representing locations that have significance to various Canadian books. The pins are completely crowd-sourced; users can add, annotate, and categorize pins, which makes the map an evolving landscape of literary Canada. Users can share a link to the map, links to individual map points, and links to themes on Twitter and Facebook.

More fun

Periodically, The 49th Shelf hosts giveaways of books and supporting items, such as an e-reader.

Another fun element is the cover shuffle game, which gives players 6 minutes to name as many book titles as possible, based on their cover images.  Anybody can play!

Web development

The 49th Shelf runs on the Enterprise Content Management System eZ Publish. eZ Publish's robust content model enables all book and supporting data to be stored and displayed. It also provides a flexible framework for working with the data in various ways, as well as connecting to external services for data exchange.

As eZ Publish experts, Mugo Web's web development for The 49th Shelf has included:

  • Customized data import and update scripts to consolidate large sets external book data feeds of different quality
  • Scripts to manage record updates in bulk, by section, or individually; and to update entire sets of information, or specific pieces of information such as purchase links
  • Content maintenance scripts that dynamically adjust behavior depending on server load
  • Content modeling for categorization, site structure, and content attributes
  • Enhanced object relations to store not only the internal links but also information about the relationships themselves (such as contributor type)
  • Workflows for contests and all user activity around account creation and management, book interactivity, newsletter signup, and special features (such as mapping, games)
  • Custom content management reports and interfaces
  • Custom front-end JavaScript coding to achieve the interactive client-side elements as well as the server-side Ajax web service listeners
  • Templating for dynamic landing pages, extended search functionality (using the Solr-based eZ Find extension), search engine optimization fields, sitemaps, book pages, and more
  • Social media integration
  • Server setup, caching settings, MySQL database optimization, server status reports

Case study


Read more

Setting up custom Events in GA4

Events are the buzziest change between Universal Analytics (UA) and Google Analytics 4 (GA4). There’s a good reason for that — they mark a very substantial shift in how property owners track data on their sites. This is a daunting prospect and an opportunity. As a property owner, you will need to reevaluate how you use your analytics and how you can make the new system work for you. As you make the switch to GA4 before UA’s End Of Service date (July 1, 2023), you might be focusing on just recreating a familiar pattern and making your GA4 property look the same as your old UA dashboard; the better option is to clarify exactly what you need from your site’s analytics and leverage GA4’s superior flexibility to accomplish your goals.

Part of a data table in ASCII format showing output of the eep:location:subtree command

eep-bundle: eep is back, this time for eZ Platform / Ibexa DXP

We’ve discussed eep (Ease eZ Publish) several times over the years. It’s a powerful tool we at Mugo Web have used for innovative solutions. For the uninitiated, eep is a collection of scripts to support developers working with eZ Publish. Now that eZ Publish is a legacy product, we needed a new option for eZ Platform and Ibexa DXP. Introducing eep-bundle, a collection of Symfony commands specifically selected to work with the new system! We’ll dive in and look at some of the more useful functions eep-bundle provides, such as commands to work with cache, content, content field and type, location, section, and user data.

Business person riding rocket over top the GA logo

An introduction to what's coming with GA4, or: How I learned to stop worrying and love analytics

If you have a Google Analytics property, you’ve probably heard about the upcoming switch to GA4. You might have seen the banners across the top of the page when you log into UA. “Universal Analytics will no longer process new data in standard properties beginning July 1, 2023”, a polite yet vaguely threatening notification, easily ignored as a problem for next year. If you are proactive, you might have already started the switch to the new platform, having heard the recommendation to run both concurrently until the switch. And if you are like many, that might be as far as you’ve gotten.

A small shopping cart filled with boxes that say online shopping, next to a large magnifying glass

Explore flexible commerce features with Mugo’s ReaderBound platform for publishers

Specialty presses have specific requirements that aren’t met by run-of-the-mill websites or standard e-commerce solutions. Their readers are among the most demanding consumers you’ll find online, and they want precise details about your publications, trustworthy reviews, and recommendations from a community of like-minded readers.

A retail shopping cart e-commerce system isn’t up to the standard these customers expect.

This is part of the reason why Mugo built ReaderBound, an all-in-one, a feature-rich website platform for publishers. The specific demands of this industry require an integrated, purpose-built commerce experience.

There is an image of a phone with a material request form showing on the screen. Text beside the phone reads Custom Forms with Mugo Library.

Seven examples of how libraries use Mugo Library's Custom Forms to engage with their patrons

Libraries provide a myriad of services for their patrons, which requires a lot of coordination and communication. Patrons need multiple ways to interact with their librarians; in-person, via phone, social media, chat, etc. A modern library needs tools to quickly collect information and requests with an intuitive workflow for staff and the public.

outline of a person sitting at a computer typing. Text on screen reads Tales from a Developer: Troubleshooting Varnish

Tales from the Developer: Troubleshooting and fixing issues with Varnish

When things go seriously wrong in a well-built but complicated system, the cause is often a cascade of small failures that pile up. Not that we’re building rockets over here, but an excellent example is the ill-fated Ariane flight V88. Solving the issues behind such failures can be problematic. Many things contribute to the difficulty, from the extensive use of caching to the need to convincingly reconstruct the failure in retrospect. Debugging this kind of failure, especially under pressure, is hard. We consider the ability to do this to be the hallmark of a senior developer. Even so, it is essential to have a team of experts working together to troubleshoot issues and find solutions promptly to help keep your site running.

Google Analytics logo beside a bar graph with a magnifying glass

Cross-domain tracking in Google Analytics: Excluding domains in GA4 and GTM

If you manage one of the millions of websites affected by the Google-mandated migration from Universal Analytics (UA) to Google Analytics 4 (GA4), you might be following the best practice of simultaneously running UA and GA4 scripts until you’re ready to adopt GA4 fully. One of the analytics features that needs special attention is cross-domain tracking.