Mastering the Creation of Self-Service Administrative Sections

After launching your passive income site, you might be tempted to celebrate. However, managing your customers often takes precedence unless you have efficient systems in place.

I’ve run a passive income site for over six years, prioritizing its passive income aspect. That’s why streamlining my business has always been crucial.

Optimizing an online business relies heavily on having the right features and capabilities within your admin panel.

This article delves into common issues with admin dashboards and provides solutions for each. By the end, you’ll have a comprehensive set of best practices to build an efficient admin panel for your automated business.

Addressing User Errors

Users aren’t perfect and will make mistakes, so we need an admin panel equipped to handle them. Here are some examples:

One of your suppliers accidentally ships the wrong product to a customer.
A customer orders the wrong product or orders the same product twice.
A musician on your music tablature listings website creates nearly identical taxonomies, which already exist in your database. For example, your website’s users, considered as a collective, disperse electric guitar tablature across three categories: "Electric-guitars,” "E-guitars,” and "Elec. Guitars.” These should really be one, otherwise your front-end navigation and usability is compromised.

Enhance your admin panel to accommodate user errors by:

Allow end-users to fix their mistakes. For example, Amazon has forms in its users’ dashboards, which allow customers to change orders at any point in time before the order has been processed in their warehouse. This feature empowers Amazon customers to fix their mistakes without reaching out to customer support.
Promote a subset of users to moderator status. Forums, such as Reddit and StackOverflow, have a special user class, known as moderators. Moderators remove spam, edit typos, rid the site of offensive or self-promotional messages, and correctly categorize content. In many cases, moderators are volunteers, who simply feel loyal to the community.

Addressing User Inexperience

Don’t assume users are familiar with your business intricacies. Here are some scenarios illustrating this point:

Imagine users with limited photography skills needing to upload appealing photos of their holiday rentals listed on your platform.

Or users struggling with salesmanship tasked with crafting enticing, SEO-friendly descriptions for products sold through your platform.

Another example is an online shoe store where users struggle with foot measurements, resulting in frequent wrong size orders and returns.

Admin areas that cater to user inexperience:

Create inline documentation. Advise users on how to get the most out of their experience with your site. For instance, you could write a post like, “5 Copywriting Tips That Will Increase Sales.” By providing users with robust reference material, you’ll drastically reduce their need for human help.
Semi-automate assistance. By connecting external software APIs, your website can do things, like autosuggest the best keywords for meta descriptions, and encourage users to incorporate certain keywords into their copy.
Do it yourself. Send your own photos or write your own product descriptions. This, of course, necessitates the end-user somehow signaling their readiness for this service to the right person in your organisation. Here, your admin system needs to streamline this communication and the later delivery of work by the expert.

Handling Pending Business Decisions

While automation is helpful, some scenarios require human judgment.

For instance, verifying the identity of a babysitter applicant on your high-trust platform might necessitate a manual review.

Similarly, pricing a new digital product submitted by a platform author could fall under your purview.

Time-saving measures for admin tasks involving pending decisions:

Leverage existing groups of users. Plenty Of Fish, a dating website, outsources moderation of potentially offensive profile photos to bands of volunteer users who spend countless hours checking these pics, without any pay to speak of. Unlike traditional forum moderators, they don’t moderate content after it’s published. Instead, they vet user-submitted photos prior to publication, thus making sure inappropriate profile pics never get published.
Connect to humans-as-a-service APIs. For example, Facebook connects its admin panels to cloud APIs, such as Amazon Turk (or in-house equivalents) and outsources moderation en-masse to cheaper workers. In Facebook’s case, professional moderators account for one-third of its workforce. Indeed, it’s the presence of moderation that helps ensure that Facebook comments are relatively benign compared to the monstrous remarks appearing on comparatively unmoderated websites.

Managing User Communication With Website Management

Running a business inevitably involves addressing user inquiries. Proactive planning can significantly reduce response times and potentially minimize the volume of requests.

Admin areas that streamline user communication:

Plan ahead. By analyzing past customer service questions, you can spot common themes, and answer them ahead of time. A prime example of this would be designing a FAQ page with a list of these questions and answers.
Be quick to refund customers. Offering a quick refund in response to a customer complaint is a quite effective way to satisfy disappointed customers. Don’t worry -- this won’t result in less profits; in fact, it may even lead to more.
Create forums for confused visitors. Google is notorious for its practically non-existent customer service. In place of humans, Google has created product forums, where confused users can get help from other users. On the rare occasion when a Google employee answers a question on one of these forums, their answer is saved, readily indexed by Google, and made available to future users with the same problem. While this may seem cruel to end-users, it’s pretty justifiable, when you consider that the majority of Google’s unsupported offerings are free.
Utilize canned responses and virtual assistants (VAs). Review your customer service tickets from the past year, and extract consistently asked questions. By crafting templated responses for each one, you’ll save yourself a massive amount of time. Write your answers in an easily accessible Google Doc or better yet, use an email plugin, like Canned Responses. Then hire a VA to forward these templates to customers as questions arise.

Accommodating Changes in User Circumstances and Decisions

Change is constant, and your platform should adapt.

A user might get married and need to update their last name, or a customer might relocate, requiring an address change for their monthly subscription box.

These are just two instances of unavoidable changes that you must anticipate.

Time-saving features for admin related to user changes:

Your users need editing capabilities. If you don’t provide editing functionality within your user dashboards, sooner or later your customer support team -- and your database programmers -- will have to manually make changes, like the ones mentioned above.
Don’t freeze editing capabilities. In the case of a forum or a site with comments, you must consider your policy for freezing posts for deletion or instead place a button requesting an exception to the normal policy. This solution saves time by decreasing the number of back-and-forth messages between your support team and the end-user.

Addressing User Concerns

Unlike physical stores, online businesses lack the reassurance of face-to-face interaction.

Purchasing from Best Buy offers a sense of security because their physical presence assures customers of their ability to return products or seek refunds.

This certainty diminishes online due to the ease of ignoring digital communication. Doubts arise, especially when dealing with unknown startups lacking established brand equity.

Time-saving features to alleviate user worries:

Preemptively address concerns. Dispatch an email or two once someone buys from you in order to increase confidence. For example, Amazon, and just about every eCommerce business, dispatches an email as soon as an order is shipped. Others also provide a series of emails, which update the user until the product is delivered.

Eliminating Ambiguities

Imagine it’s been a year since launch, and your successful business allows you to delegate website administration.

However, your administrator falls ill, requiring you to take over without a handover. You rely solely on the admin panel’s information to understand their progress, identifying completed and pending tasks.

This becomes challenging with poorly designed systems that fail to differentiate between unseen (unprocessed) and considered (processed) items. For example, consider this admin workflow:

What HappensState Changes
An artist applies to sell their art on your art-selling platformThe artist entry appears in the admin panel with the starting state “applied”
Someone on your admin team accepts this artist, allowing them to sell their artAdmin changes state to “accepted”
Your team rejects this artist because it knows, for sure, it will never want that artistAdmin changes state to “rejected”
Your team is on the fence about this artist and wishes to defer the decisionDo nothing

The issue here is that “accepted” applies to both unseen new artists and those reviewed but postponed without outright rejection.

The distinction of “considered” (processed) exists solely within the absent administrator’s mind. Without a “postponed” status, this information is lost, forcing the replacement to duplicate efforts.

A robust activity feed resolves such ambiguities.

Prioritizing Transparency

Many admin actions trigger a series of background processes.

Clicking “accept applicant” might send an acceptance email, credit a sign-up bonus, and update the applicant’s database status from “applied” to “accepted.” These are essentially “side effects” in software engineering.

As the developer, you understand the implications of “accept applicant.”

You can easily access the source code for clarification if needed.

However, your customer service representatives lack this insight. They might be unsure about the button’s consequences, whether an automatic notification is sent, or if a manual email is necessary.

This uncertainty slows down the process, prompting administrators to seek clarification from management or engineers, potentially leading to redundant work and errors.

Ideally, the “accept applicant” button’s admin page should include a clear explanation of its actions.

Alternatively, a message could appear after clicking, outlining the subsequent steps.

So far, we’ve focused on successful scenarios. Things get trickier when errors occur. Ideally, a well-designed system would inform the administrator (and the technical team) about incomplete actions, such as a successful acceptance email but a failed sign-up bonus payment. This transparency enables prompt issue resolution. Implementation-wise, this could involve detailed state machines or service objects that provide feedback on successful and failed commands.

In my experience, the discrepancy between information visibility for administrators and end-users can be frustratingly opaque.

Addressing customer inquiries or bug reports might require your admin team to understand the customer’s dashboard view, automated email content, or royalty information displayed to users.

Access to this information helps your team perceive issues from the user’s perspective.

A “View as User” admin feature could be a solution, avoiding the need to create separate admin screens replicating user functionality.

For automated emails, consider a simple admin area email renderer allowing staff to review messages sent to users.

External Events Can Create Complications

Efficient administration thrives within a self-contained system, not scattered fragments.

Imagine managing refunds across an Excel sheet, sticky notes, and emails to your accountant - utter chaos.

A centralized solution is crucial, like a comprehensive list of refunds within your admin dashboard’s database. This single source of truth ensures the accuracy and reliability of your reports.

This might seem obvious but often gets overlooked during the hustle of managing a business.

I speak from experience.

My initial eCommerce system only recorded sales.

Months later, I realized I hadn’t accounted for refunds, chargebacks, freebies, discounts, and payment adjustments.

This oversight meant there was no system in place to process or report them.

Refunds were often handled hastily through readily available channels like PayPal’s web interface (bypassing my website’s database) or a third-party iPhone app connected to Paypal’s API.

This scattered approach resulted in disorganized accounting spread across various external sources. My production database contradicted my complete order history.

Problems were inevitable. Admin reports on revenue and commissions didn’t reflect reality, leading to inaccurate financial reports for some authors and overestimated tax filings.

All because I hadn’t factored in refunds.

By storing order and accounting data both internally and externally, I compromised the core advantages of software: accuracy and precision. I lost trust in the system and, consequently, its automation potential.

This experience made me averse to storing company data outside my primary software.

While integrating all necessary information might seem costly initially, the long-term benefits outweigh the drawbacks of haphazard workarounds.

Despite my automation efforts, some situations simply resist it.

Many software companies use automated sales emails to guide users toward account activation or purchases, ideally without human intervention.

However, things get complicated when a lead makes a special request during these drip campaigns.

Imagine a lead requesting a follow-up after their two-week vacation instead of receiving the scheduled automated reminder in five days. Ignoring their request would make the company seem pushy, inattentive, and impersonal, potentially harming the relationship.

What’s the solution?

Semi-automation could be the answer.

An admin interface could allow you to select emails and manually reschedule them.

While potentially an engineering overkill, sometimes accepting the occasional inaccuracy of automated emails is the most practical approach.

Highlighting Relevant Admin Information and Actions

Customer interactions often revolve around orders, accounts, or offerings.

Your application likely holds valuable customer data and interaction histories through stored information, login cookies, and tracking data.

Retrieving this data and presenting relevant snippets to your administrators can expedite customer service responses.

For instance, contact forms could automatically append an information box containing order details like payment status, shipping status, line items, and more.

Furthermore, these enhanced emails could provide direct links to frequently used and relevant admin sections, such as refund dashboards or shipping trackers.

Anticipating, Mitigating, and Recovering from Administrator Errors

Administrators, like anyone else, are prone to errors.

However, their access to critical data means their mistakes can have far-reaching consequences.

Implement these measures to prevent catastrophic errors:

Automatically schedule consistent backups: This is the crudest, most trivial, yet most vital of all conceivable due diligence measures. But, even if you have good backups, you are already in a world of hurt if you need to tinker with SQL dumps. Therefore, scheduled backups should not be your sole source of restoration.
Buttons designed to terrify users:For actions with potentially irreparable consequences, color them bright red, slap the radioactivity icon on them, and label them with titles, like "WARNING: HARD-DELETE IS THE NUCLEAR OPTION: DO NOT USE IF UNCERTAIN OF ITS CONSEQUENCES." (Obviously, you should display what those consequences are right next to this button.)
Employ JavaScript confirmation pop-ups: Sometimes administrators' fingers slip and instead of pressing the "back" button they accidentally press the "permanently delete everything" button placed two pixels below. The hapless administrator may be entirely without fault for this mishap, with the ultimate blame going to clumsy UI design or nasty browser quirks when rendering CSS. If you think this is an absurd and overly dramatic example, you’re wrong. The financial services industry has lost millions through what they call fat-finger errors. As a result, they design software to prevent these types of errors. One dead-simple fix is an "Are you sure you want to delete all order history?" Javascript pop-up. Notice how I included entity-specific data -- "all order history" -- within the Javascript confirmation? This is better than merely asking "Are you sure?" If the administrator intended to delete a single entry in the order history but accidentally hit the button for deleting all order history, having this clearly stated in the Javascript confirmation popup helps avoid an “OMG” moment, when the administrator realizes what [s]he has mistakenly done.
Take advantage of data versioning and revision control: In standard SQL database technologies, edits to data overwrite the old values. This is problematic when edits were wrongly made, doubly so when the original data is difficult to find or create again -- e.g. long description fields that take hours to write, or customer information that would be embarrassing to ask for again. Revision control libraries, like in Wikipedia, are the go-to fix for these situations. They let you easily store and restore old versions of data on an as needed basis. These libraries typically work by tracking the changes in your database and retaining timestamped versions of previous values. Unfortunately, revision control libraries usually cannot handle big binary files, such as photos and pdfs. So, for these data types, you can keep old versions around, using something like Amazon’s S3 versioning.
Consider implementing a No-Delete Policy: This is all about preventing records in some tables from ever being deleted. Here’s the reasoning behind this: Given modern data storage prices, there’s little to be gained by removing old records, and a lot to be lost in terms of compromised data integrity, incomplete reporting, or mismatched record-keeping. A no-delete policy is implemented by placing a "deleted_at" date column on every major table. Wherever you previously had code to delete a record, you replace with code that sets the “deleted_at” column for that record to the current time. Elsewhere throughout the code, you selectively display or hide the “deleted” record depending on business needs. For example, “deleted” digital downloads will continue to appear in the admin area, for past customers, who bought that specific thing before the “deleted_at” date, and within "all-time" sales reports. However, the front-end shop should no longer show this digital product as available to prospective customers.

Expect the Unexpected

While this article provides numerous solutions, treat them as adaptable guidelines, not strict rules.

The ultimate goal is to streamline your business by optimizing your admin panel. Investing time in refining these areas can yield substantial long-term profitability.

Remember, exceptions exist, so use your best judgment when optimizing your admin panels. Once that’s done, you can finally celebrate.

Licensed under CC BY-NC-SA 4.0