What does Woo Happiness look like?

One of our product images we use when setting up test stores.

As I’ve mentioned before, my day-to-day customer-facing work right now is in Woo Happiness. While both Woo Happiness and WordPress.com Happiness are part of Automattic Happiness, they are incredibly different.

I’ll pause here and explain a little bit. WordPress.com is the freely available blog and website platform; you can make a blog or website for free, or you can pay for plans to get access to more fun stuff. The pros of WordPress.com are that you can get up and running really quickly – you don’t have to worry about waiting for a domain to propagate, to set up a server, to purchase hosting, to configure security, to worry about backups, nor do you need to do one lick of coding. Because we host every WordPress.com site, we have specific limitations in place – like limited plugins (or, widgets), themes must be chosen from our internal repository (not all WordPress.org themes work on WordPress.com), and specific code isn’t even allowed. For many people, these aren’t an issue at all – they don’t ever bump into one of those limitations. But other people want something a bit different, and that’s where a WordPress.org set up is a better fit. One example of someone who would be better served on WordPress.org is someone who wants to set up a ecommerce store. Enter WooCommerce – a plugin for WordPress.org that is incredibly flexible. With 300+ extensions (that is, bits of code you can enable on your site to work with the WooCommerce plugin to add functionality), it can do pretty much anything you would ever want an ecommerce store to do. Woo Happiness helps customers who have WordPress.org sites and have purchased WooCommerce extensions and need help.

On WordPress.com, we are the host. We don’t have to worry about server set up, we don’t have to wonder how the customer is securing their site, they are always running the same version of WordPress.com, we have access to their dashboard without them having to make us an admin – it is all very streamlined. But with WooCommerce support, the customer can have almost any host – and some of them are not very good for hosting WordPress and WooCommerce, which adds additional wrenches – the customer may or may not have site security, they may be running a wildly out-of-date version of PHP and mySQL, they may be running a wildly out-of-date version of WordPress and WooCommerce! They can have any number of plugins – which vary from 4 or 5 to 90+, they can have any theme – some of which haven’t been fully tested with WooCommerce, and accidentally omit critical elements (like a “purchase” button).

The way we manage supporting these customers is by working with specific plugin developers for WooCommerce extensions and testing the extensions ourselves on test sites. When we find a bug or cannot progress any further with a test site, we talk with the developer – sometimes that is someone at Automattic, and sometimes it’s a third-party-developer. We file bug reports in Github when we uncover bugs, and we keep the customer in the loop throughout.

So what might a typical day look like? I’m going to just focus on this specific customer-facing support, since I’ve run through an average day already, and it involves a lot of other things. We use ZenDesk in Woo, which is a helpdesk with a lot of features. It took me awhile to get up to speed after using WordPress.com’s very old installation of Kayako for so long! There are a few different queues, that are divided up into different umbrella subjects- such as Payment Gateways (tickets that address the various payment gateways, like PayPal, Stripe, Square, and more), Shipping (all the shipping-related extensions), Core, and more. My team focuses on the Payment queue, but more extensions than strictly payment gateways come through our queue, so we have a few different areas we cover.

I’m still a novice at Woo support, because it helps a lot to have a strong understanding of various hosts, WordPress.org set up (specifically what can go wrong with both), be comfortable with FTPing into users servers to check files, and dig into debug logs. These are all things I have a passing acquaintance with, and I’m lucky to get a chance to grow more here – but everyone else on the team is far ahead of me! Consequently, I ask for a lot of help. Luckily, everyone on the team is very generous with their time, and I’ve learned a lot from them.

So, I open a ticket, and if I’m very lucky, it’s about an extension that I’m already familiar with – like the Min/Max Quantities plugin, or the Measurement Price Calculator (notice that neither of these are payment gateways!). There are a small handful of product extensions that I have gained something I can call mastery in (but is really just a basic familiarity with the docs and the plugin settings). I read the customer’s message to us, and what they ask and the ticket history determines what I do next. If it’s a very complex ticket that has been going on for some time, I write an internal note with what the issue is right now – a customer’s need can grow and change throughout their conversation with us, so their very first message may be about something completely different, and their most recent message can be something like “didn’t work. now what?” So having an up-to-date note that explains the current situation only is incredibly helpful for me – particularly because tickets take me awhile to plough through, so I will be configuring my test site, come back and wonder “ok, so what else did they need here?” Writing the note also helps me clarify in my own mind what I should be doing.

Sometimes, the customer is asking for clarification on what an extension can or cannot do. In those cases, I read the documentation, and about a third of the time, the answer is there. Simple! I can answer and direct the customer to the documentation as well. The other 2/3 of the time, I need to set up the plugin and fiddle with it to see if I can get it to do what they’re asking. More often than not, I can. If I can’t figure it out, I ask my team or the wider Woo Happiness team if it is or isn’t possible.

Other times, they have a problem with an extension – it’s either not working as they think it should, or there’s an error message, or it’s not working at all. In those cases, I set up my test site to match the user’s as best I can, and see if I get the same problem. Sometimes, they have a lot of plugins, and in that case, we recommend that they disable all their plugins but WooCommerce and the extension and switch to a standard theme, like Twenty Seventeen. That’s because we know that the plugins we support will work in that environment. Sometimes that means they should set up a staging site, so they can fiddle with their theme and plugins, and not have their live site suddenly look different to customers. Other times, they’re just getting set up, and disabling plugins isn’t a big deal. Usually, there’s a conflict between the plugins or between the plugin and theme. Other times, something else is afoot. It could be that they need to upgrade their PHP or mySQL (or need to ask their host to do so), or it could be that their host installs a plugin that quietly runs in the background and breaks everything (it happens!). When we find a genuine bug, we report that in Github in the appropriate repo, and let the user know that we will take a closer look. Occasionally, the issue isn’t exactly a bug, but something is wrong, and we are out of troubleshooting options. If the extension is managed by a third-party-developer, we can ping them in the ticket (perk of ZenDesk!) and leave a detailed note for them to take a look. They will reply back in a note with a solution, or suggestions for next steps. There are also some devs we can ping in Slack to get further clarification or just get confirmation on something before replying to a user.

If that all sounds very confusing and involved and exhausing, it’s because it is! It’s all those things! But it’s also deeply satisfying. You might be asking yourself “wouldn’t batching those tickets be easier?” (Batching is when you assign yourself all of one kind of ticket, rather than taking the tickets from the oldest->newest strictly.) We have SLAs (service level agreements) for our extensions, which means we promise to reply to our customers within X amount of time. Because of the volume of tickets we receive, our best strategy is to consistently reply from oldest to newest. However! There are a few exceptions. With one extension in particular, we’ve been experimenting in having week-long rotations dealing with those tickets (one person signs up for the week and takes all those tickets, plus whatever other tickets they can manage). It’s been working well, since the extension is so complex it is far more efficient to batch in that case. Other times, a subject-matter-expert arises, when someone has dug into a particular plugin in-depth, and they are a great resource for getting quick confirmation on how that plugin works. Ticket replies may be relatively quick – passing along information from a dev, for example – or they may be long and difficult to work through. Our Slack channel might be casual chatter, targeted questions about a specific plugin, or even answering questions from other folks in Woo about the plugins we care for.


Digging into a tricky ticket, setting up an extension to function flawlessly, and explaining it in detail to a user is really cool – these are sites that people are using to generate income and support themselves, their families, their employees, or sometimes just something they’re doing as a hobby. Sometimes, they are in the business of setting up sites for clients, and getting to help that one person who will then turn and use that knowledge with all their clients is really cool, too. I’ve said it before, but the coolest thing about WordPress is that users manage to use it for so many different things – I constantly come across sites I never would have dreamed up. Working with WooCommerce sites affords me the chance to see a whole new dimension of this, and it’s incredibly exciting work.

My work, now

Right now you can read all about the work that Happiness Engineers at Automattic do, by checking out the #a8cday tag on WordPress.com and Twitter. To get a good idea of the nuts-and-bolts of what Happiness Engineers work on, like live chat, ticket work, bug reporting, and so on, please read some of those posts! They are also really great to read as a group, to see the true variety of experience at Automattic.

My work has changed significantly lately, and I’m not just talking about getting a pushy cat. Let’s back up, to before the cat, and get a little refresher of some of the things that have been different for me over the past 15 or 16 months.

Two Octobers ago (2015), Bob and I discovered we were going to get to have another baby, and that’s really when things started to shift. My team at work was almost at peak size, and I had just come home from a Grand Meetup (when the entire company gets together).

In mid-November, I told my lead, Spittle, about the baby, and he was appropriately delighted for me, and over the coming months probably got tired of telling me that I had his full support in anything I needed. It may have been a small (but I know sincere) gesture on his part, but it was really empowering for me to plan a maternity leave that would be best for my family. I originally planned for a US-standard 12 weeks off. I later (in March) came to my senses and decided to take 5 months off instead. Automattic’s policy is to let new parents take off the time they need, and I dithered over what that should be for a long time. Finally, I emailed our HR team (this is sort of unusual, in that I don’t email anyone else in the company, but I knew I could connect with the entire team in one fell swoop), and deluged them with questions and my own angst, and Ingrid replied and patiently counselled me through everything.

As you can tell, my upcoming leave was already taking up a certain portion of my mental space – I was able to keep it to a relatively small amount week-to-week, because I had given myself a lot of time to plan.

In January, I asked that my team receive no new HEs, and on February 15, the final (ever!) member of Hermes joined; Eduardo. That put my team at 18 Happiness Engineers. Our focus on Hermes was fast communication – we started out with just live chat and mobile support, but eventually spread to include tickets as well very regularly. We had several Brazilian teammates, who also focused on Brazilian Portuguese-language tickets. We covered a lot of bases! Our timezone spread was from the US Central timezone (UTC-6) to the Philippines (UTC+8) – this was a big support team.

In January, we were in a steady holding pattern of 1:1s – I met with everyone on the team for an hour either weekly or bi-weekly. HEs who had been on the team for a long time could choose the cadence, but new HEs (anyone under 6 months) had to meet with me each week. I tried to make sure those all happened before lunch time for me. The reality was that from 9am-2pm every day was filled with 1:1s and team or lead chats.

Anticipating that I would be AFK (away from keyboard) come the mid-year, I chose to do 321s with my team in February, so that everyone would have something concrete to work towards for the next few months, and that then their new lead could pick up seamlessly when the HE was ready for new goals to reach for. I conducted 321s roughly quarterly, and we discussed 3 things that the HE does well, 2 things they want to work on (or learn about, or improve), and 1 way that I can help them get to where they see themselves in the next 3 or 4 months.

From March to June of 2016, I did interaction reviews for everyone on the team. I started working 10-12 hour days a lot of this time. I read through about 250 interactions per HE, covering the previous 3 months of work. Each review took about 3 hours to deliver, as well.

In March, the team and I were discussing in earnest what the next steps would be for the team. It was pretty clear that we were too big, and we’d have to break into smaller teams. There was some resistance to the idea, because everyone was really well bonded, and enjoyed being part of such a successful team. As I like to say, while everyone was bummed the band was breaking up, they were excited to see what came next.

In April we had our team meetup. The team came to me, and indeed, I haven’t been to an offsite (away from Durham) meetup since the Grand Meetup in 2015. At that meetup, we chose a squad structure of three squads that were timezone-based. From that point on, we functioned as three squads within one team. From April to mid-June, the squads got a chance to work closely together as if a self-sufficient team, and there was ample opportunity for everyone on the squads to practice doing things like running squad chats, writing weekly updates, and so on. From April to June, I continued to do 1:1s with everyone and continued to work on and deliver ticket reviews.

In June, the three squads were formalized into teams. During a two week transition period, I ran 321s with each HE along with their new lead. In mid June, it was time for me to take a step back and let the new leads start to work autonomously (I desperately have to supress my urge to micromanage at all times). I formed a Slack channel for the new leads and myself so that I could discuss issues that arose with them as a group, since they all ran into similar issues where I had been unclear or could have better prepared them. I continued to gently mentor (gentor? mently?) them until one morning I logged into Slack and let the leads know I wouldn’t make the video call that day, because I was having contractions.

Then I had a baby. Five month pause at work.

December rolled around! I started back up at work, and I was so freaking excited to be back. I love my children. I do. I’m not actually great at being a stay-at-home-parent, however. It is a really difficult job, and I don’t think I was prepared, or really understood the unreleting tedium/stratospheric activity. It’s such a weird mix of highs and lows and fast and slow – I couldn’t deal with it well. I would absolutely do it again, however. I feel like I bonded incredibly well with all three children during that time.

When I came back, at Spittle’s urging, I started slowly. I worked part time for two weeks as we got our nanny situation sorted out, and I figured out whether or not breastfeeding while working was something I could do (I can’t, really). So I settled into a routine, which looks something like this:

8:00am – get up sometime around now. Get dressed, change the baby, feed the twins, get them dressed. Make coffee (I use a chemex), make toast. Eat. Talk to the nanny.

9:00-9:30am – sit down at my desk. I catch up on P2 posts that came in overnight, read Slack scrollback.


9:30-10:00am – pump milk for the baby. I do this three times a day, and it is a drag every time. It makes me incredibly thirsty.

10:00am -12:00pm – this is tickets or 1:1s or team or lead chats. In January, I slid myself into a WooCommerce Support team, to learn more about their work. Before starting on that, I pinged about 10 Woo Support Ninjas, to ask them some very frank questions about Woo and the work they did. I got back such interesting answers, I knew I wanted to find out more.

12:00-12:30pm – I pump again. I eat something. I drink some water. Sometimes I play twodots so I can rest my melting brain. Trying to do Woo tickets is incredibly complex and challenging, and I really love the chance to stretch myself in this really new way. But it’s hard, too!

Around 1pm-5pm – I go back to tickets, or anything else I had to accomplish that day – bug reports, reading background on Woo-specific issues, etc. A lot of solving Woo tickets involves setting up specific plugins on a test installation, so I also do a lot of reading on our various extensions – exploring all the documentation available to our users, so I can best direct users in the tickets. I pump again around 3:30pm.

5:00pm – the nanny needs to leave, so I walk away from work, and go downstairs. I breastfeed the baby, and listen to Henry ask repeatedly if he can play Minecraft.

5:45-6:00pm – I make the kids dinner, and we talk about their day and what’s coming up the next day. Bob usually gets home around this time.

6:00-7:00 – I or Bob will make dinner for us (sometimes if Bob gets home early, we will have a normal family dinner and all eat together a bit earlier). Depending on how tired everyone is, we will either do something as a family like play a card game or a board game, or we will let the kids play Xbox while Bob and I talk and connect over a glass of wine. I feed the baby again.

8:00pm – the twins start baths now.

8:30pm – twins are out of the bath, and Bob gets them in jammies and reads them stories. I feed Grant again.

9:00pm – twins are in bed with the lights out. I read Harry Potter to them on my phone, while feeding the baby (he tanks up at night).

9:30pmish – all three kids are asleep!

10:00pm – Bob and I watch something on TV (we’re currently watching Orange is the New Black), or we put on some music and just hang out.

11pm or 12am – we go to bed.

2:00am-3:00am – Grant wants to eat again.

6:00-7:00am – Grant eats again.

8:00-8:30am – time to start it all over again.

Right now, I’m helping to wrangle a squad on my Woo team – much like those Hermes squads split into squads before becoming proper independent teams. I have been given charge of a small flock of Woo Ninjas who reside in Europe and India. I’m looking forward to the challenge of helping them continue to set and reach goals, while also finding out more about Woo work. It’s going to be a fun and interesting challenge! The team is meeting in Lisbon in a few weeks for a meetup, but I won’t be going along (unfortunately). I am not traveling until Grant is a year old, and I’ll wean him then. My next meetup will likely be the 2017 Grand Meetup, in September – two years after my previous offsite meetup. How much has changed!


A day in the life of a Happiness Engineer (who is me)

I’ve written a bit about my life with Automattic before, so you can catch up here, here, here, and here.

Today I’m going to write about a really specific day that I had (yesterday).

I got up at 7:14 am, which is a little bit late. Summer is the busy season for Bob, so he’s typically up, dressed, and at work (he doesn’t work from home) by 7 am. I like to get up about when he does (or at least wake up when he leaves), so that I can get my day started before I have to wrestle two toddlers into their school clothes.

In an ideal world, I get my contacts in, shower, get dressed, organize tiny outfits (something that I could do the night before, but perennially forget to), and get the three of us downstairs for breakfast bars and sneakers and jackets. We’ve been practicing counting off when the kids line up by the door. They both want to say “one” so when I say “Count off!” I hear “One!” “One!” “No, Hemy, you’re two, I am one!” “I don’t waaaaaant to be two! I am one!” So probably it would be easier to just stop doing that. I didn’t manage to get a shower before the kids were up and discussing which show they wanted to watch before school (spoiler alert: they got to watch none shows. None.), so I just put in my contacts, brushed my teeth, and got the three of us dressed.

Anyway, the drive to daycare is pretty short. 5-10 minutes, depending on which bridge and which set of railroad tracks the kids want to go over. Since it isn’t that important for me to be anywhere (and whether I’ve showered or not) at any particular time in the morning, I like to indulge their special requests when driving to school.

Typically by 8:30 am, I’ve dropped them off, picked up coffee and a bagel, and am back at my desk. If I’m back before 8:30, I don’t sit at my desk yet. I get back in bed and catch up on what’s happening on Facebook or read while I eat my bagel and drink my coffee. If I do that, I typically stay there until I’ve eaten and finished my coffee. But yesterday I was running late, so I just sat at my desk when I got home, and started doing my morning reading.

Yes, it's messy. I understand where everything is, however.
Yes, it’s messy. I understand where everything is, however.

Starting around 8:30 am, I start my day by signing into Slack and reading the backscroll on any channel I am responsible for and skimming the backscroll on any other channel I think it’s important to follow. I am the lead of our Live Chat and Mobile support team, so I have a handful of channels I consider Very Important to be up-to-date on. Other channels have either funny jokes from the team members on the other side of the world (or night owls on this side), or interesting (user) errors that mean we should flesh out our documentation, or bugs that we need to be aware of.

After I finish the Slack backscroll, I hop over to email. I subscribe to our internal blogs (called P2s or O2s, almost interchangeably) and, again, depending on the subject, receive email notifications for new posts either instantly, daily, or weekly. If it looks like the post is something I want to reply to, or think about more, I open the post in a new tab and move on to the next email.

Once I have no new emails, I go to the tabs and reply to each post or do whatever research I wanted to do before replying. Once all those tabs are closed, it’s usually about 9 or 9:15 am. I’m always surprised this doesn’t take a lot longer, but I think I’ve just gotten better at mentally filing information away faster. (I will communicate as much as possible, because it’s the oxygen of a distributed company. – from the Automattic creed.)

Yesterday, I wrapped up my reading and headed into my team’s channel to chat with the team about any issues that cropped up for the people who signed on earlier (my team has people in Israel, Scotland, the US, Canada, and one person who is on rotation with another team who lives in the Philippines).

With 10 am fast approaching, I filed a bug report on the iPad mobile app that I found the evening before and tried to run it down with one of our iOS mobile devs between the P2 and Slack. We were able to find where it happened in my app error log, but weren’t able to reproduce it. He asked if I would mind checking my stats later that evening on my iPad around 8:30 pm (same time I had checked the previous day). I promised I would and set a notification (but ultimately did not remember to check).

At 10 am, I had a one-on-one (1:1) chat with someone on my team, Rachel. You can read about her day at the link 🙂 We chatted about her recent move from New Zealand to Scotland, and what sorts of things she wanted to work on. With those goals in mind, we agreed to chat each week about where she was on her journey to include those things in her day-to-day work, and where I could help her hit targets as they were defined. It was a good chat.

After that chat wrapped up, I checked in again with my team and helped troubleshoot a couple of issues that Happiness Engineers were working on with users on Live Chat.

It was close to noon, so I grabbed a quick shower (as I was running late that morning, I hadn’t gotten one yet), changed out of my yoga pants, took the dog out, and met my husband for lunch. We had sushi.

Then I hurried back home to host a Google Hangout with my team and one of our mobile devs, Sendhil, to discuss our mobile strategy (at a very high level), and how we as Happiness Engineers can best triage and handle support issues so that they (the developers) are focused on making the apps as awesome as possible.

After Sendhil signed off, the rest of the team chatted about some team stuff, but we also joked around for a few minutes. We do a weekly video hangout, so we can see each other, so a recurring bit we do (thanks to a team member who is actually shortly moving to another team, Adam) is show-and-tell. It’s basically us showing the rest of the team random things on our desks. It is usually hilarious. We are trying to spend a little more time interacting with each other, on my team, because Live Chat can be pretty intense, and it’s easy to fall into the trap of not interacting with the rest of the team. We’ve found that spending just a couple of minutes a week joking and seeing each other makes a lot of difference in how we feel about our jobs.

On this particular day, Pam showed us her broken headphones (which she continues to use) plus the new ones in the box that she’s afraid to take out of the box. Adam showed us a pencil holder his now-fiancee got for him. Dan showed us his green tea. I showed the team my son’s tiny sunglasses. Chrissie was visiting at her mother-in-laws, so we didn’t pressure her for a show-and-tell item 🙂

Some of our team members weren’t on the hangout, for various reasons. Simon is both at a conference and currently rotating with our spam prevention team (Akismet). Andrew is currently rotating with our Globalization team (they are working on the massive project of getting translations into place – with a huge team of volunteers – for WordPress.com). Jordan was out sick (but feeling better now!) Jason was afk (away from keyboard) to take care of a personal matter that came up. Which means that their next show-and-tell item will have to be a show-stopper! 😉

After the hangout wrapped up, it was about 2 pm. That gave me a chance to tie up loose ends with tracking stats, making some adjustments to the way we send out feedback with mobile support, alert the team to some posts I wanted to be sure they saw, and check in on the Theme Team (Theam!) members who are spending their annual support rotation in Live Chat. Side note: I’m really impressed by our Theamers who have jumped right into doing live chat for their rotation (all Automattic teams spend a week every year doing support); they’ve been not only doing an excellent job, they’ve been excited and eager every day engineer happiness with each and every user they chat with. It’s been neat to watch.

I made a point around 2:45 to publish a post from my phone (I’ve been dedicated to using the mobile app everyday to publish a post) so I wouldn’t forget to do it later.

By now, it was after 3:15 pm, and it was time for me to go pick up my kids from daycare. We really like our daycare, but we try to spend as much of the afternoon with the kids as we can. We try to get them by 4 pm every day, but sometimes it’s a little after that.

Yesterday after I got the kids home, I made an impromptu tent in Henry’s toddler bed with a blanket and some clamps. While the kids played in there, I helped a Happiness Gardener, Ricky, by clicking a link and describing what I saw. (Happiness Gardeners are sort of like tech support for Happiness Engineers; they help us with dev-type issues that users bring to us and build tools so we can do our jobs the best way possible). This was feedback on a tool the Gardeners have been building us.

Around 5 pm, Bob got home, and we packed up the kids and headed to the mall to get pizza and cruise around.

We headed home after a rousing half hour at the arcade, getting back around 7:30 pm. Bob does baths every night while I do stories and tuck in. After baths, we pile the kids onto our bed and get jammies on. Then we head down to the nursery. At the mall each kid picked out a new book, so we read those, plus a few old favorites (One Duck Stuck and Not a Box are both current favorites). Then I tucked them in and got some tears from Henry that his bed was no longer a tent and a detailed plea on how much he would prefer to sleep in a tent than a bed.

Eventually they were both sleepy and calm, so I checked Slack and the app (I do a lot of work post 4 pm from my phone or iPad – well, a lot of the work that I do after 4 pm, I do from my phone). I hopped on my computer to check a few of the P2 posts that were just a bit too unwieldy to read on the phone, and finally satisfied everything was humming along nicely, turned everything off.

Around 9 pm Bob got back from his run (once the kids are in their jammies and settled on my lap for stories, he kisses them goodnight and goes on a run) and we sat down to watch Can’t Hardly Wait (90’s teen movie week at the Ring house!)

By 11 pm, it was time to sleep (which is actually kind of hard to do, as the dog still has a cone, and he likes to patrol at night).

Around 1:30 am, Henry was up and asking to get in the big bed. Then it was really lights out, until 6:45 am this morning, when it all started again.

Some things to note: my day is unique to me. Some folks have a similar day, some folks have incredibly different days. My Thursday is not very much like my Wednesday at all. Some days I spend a lot more time interacting directly with users, some days I spend a lot of time interacting with my team, and some days I spend more time interacting with other Happiness leads. What’s important, however, is that I set my schedule to be the schedule that works best for me. I work a standard work week (because my kids and husband are on that schedule), but I am able to shift the hours around within each day so that I can spend a lot of time with my family, which it turn makes me a happy and productive worker.

We are, as ever, hiring. Come join us!