A Positive Digital Experience

28 January, 2021

A few weeks ago, I published a post titled Using Drupal for Digital Experiences; in it, I attempted to illustrate an abstraction for thinking about digital user experiences generally and suggest that Drupal could evolve into a tool for creating them. At the end of the post, I asked readers to imagine practical applications for Drupal in that role.

Well, this morning, I had a practical digital user experience IRL!

The experience

My electricity went out for a few hours this morning. Ugh.

However, within 10 minutes, I received an email from my utility company that let me know that a power outage had been reported by one of my neighbors and that at least 352 other customers were affected. “Such precision!” I thought.

The email contained this text:

We are alerting you to a power outage near your address of 123 NOTMYSTREE**.

This outage was reported at 08:11 AM on January 28. Approximately 352 customers are affected at this time.

Due to the current weather conditions, we are temporarily unable to provide further updates. We will resume our outage alerts as soon as possible and appreciate your patience.

Please click POWER ON if you have power. Please click POWER OFF if you do not have power at this location. If you are currently away from this location and do not know if the power has been restored, please click UNKNOWN.

To change your outage alert preferences, log in to our site at

The bolded words were links. After I clicked the words POWER OFF, I was brought to a page that had a message like this one:

Thank you for letting us know about your power outage. Currently at least 423 customers are affected. We are sending technicians to investigate and restore service. High winds in the area have caused widespread power outages. Thank you for your patience.

Later, once my power was restored, I received this message:

We have restored power to the area near your address of 123 NOTMYSTREE**.

This outage was reported at 08:11 AM on January 28. Your outage was caused by fallen trees or limbs damaging our equipment. Approximately 499 customers were affected by this outage. Power was restored at 09:45 AM on January 28.

Whenever I got an update, I’d let my wife know what the email said. She wasn’t thinking about all this digital experience stuff like I was, but she remarked “wow, they’re really on top of it!”

I smiled. I knew it was a machine behind the curtain. A digital system operated by the company, interacting with us. No one was emailing me, personally.

But it didn’t matter. This usually aggravating experience had been transformed. We knew what the problem was, we knew it was going to be fixed soon, we knew that we weren’t the only ones without electricity, and we knew that our utility company knew about our problem.

The application

What can we learn from this experience?

My utility company is using a notification framework and they are aggregating responses to those notifications (I assume this is why the number went from 352, to 423, to 499 affected customers).

Digital systems can turn negative user experiences into positive ones, at least as far as the organization is involved (I was still without power, after all).

However, these systems can do much more than simply make users feel better about the organizations that operate them; they can help the organizations themselves operate more efficiently. By correlating user responses with service addresses, my utility company was presumably able to help their technicians pinpoint the cause of the power outage and restore service sooner.

Wondering about Drupal again

I can’t help but wonder why Drupal shouldn’t be the tool that empowers organizations of all sizes—from yoga studios, to libraries, to Fortune 500 companies, not just massive conglomerates alone—to have interactions like these with their customers.

Why shouldn’t Drupal developers and agencies start winning contract after contract because we’re the best at this digital experience game, just as we’re the best in the “structured content” game?

Bright horizons

Apparently, there is no reason!

A few days ago, Théodore Biadala (nod_) put me in touch with Jürgen Haas (jurgenhaas). We spoke for a while and he told me all about how he has been using Drupal to create digital experiences for a long time.

Especially relevant to this post, he sent me a link to a module named DANSE which describes its basic architecture like this:

The best way to understand DANSE is to look at its building blocks:

  • Something noticeable happens: this is an Event and gets stored as a content entity
  • Users have interests and preferences: those are Subscriptions and get stored as user data
  • Recipients selection: this is a Notification and gets stored as a content entity

Sounds familiar, doesn’t it? It sounds exactly like the kind of system that my utility company must be using! They could have created an “Outage Report” content type so that when a customer reported an outage, a new node would be created and DANSE could trigger a customizable notification workflow with preferences and more!

And relevant to my favorite topic, decoupled Drupal. My utility company has iOS and Android apps too, which lets customers report outages as well. No matter how users want to interact with an organization, Drupal needs to be able to handle it. Decoupling makes that possible (I had to sneak decoupled Drupal in somewhere 😉)