White-Label WordPress Tools for Agencies - Dashboard, Reports, and Branding

White-labelling WordPress puts your agency brand in the client admin. Tools and code snippets for a fully branded WordPress client experience.

Dobromir Dechev
Dobromir WordPress agency owner

White-labelling a WordPress site means presenting it to clients under your agency's brand - not WordPress's. The admin says "Powered by YourAgency" instead of "Powered by WordPress". Plugin menus are simplified or hidden. The login page has your logo. Reports go out under your name.

For agencies, this is about professionalism and client retention. A client who sees "WordPress" everywhere is more likely to go direct to a WordPress agency or developer next time they need work. A client who sees "YourAgency Platform" throughout their admin feels they have invested in your system.

Here is how to implement it at each layer.


Rebrand the WordPress admin

Custom login page

The default WordPress login page is wp-login.php with the WordPress logo. Replace it with your branding:

// In a plugin or functions.php

// Replace login logo
add_action( 'login_enqueue_scripts', function() {
    ?>
    <style>
        #login h1 a {
            background-image: url('<?php echo get_stylesheet_directory_uri(); ?>/images/agency-logo.svg');
            background-size: contain;
            background-repeat: no-repeat;
            width: 200px;
            height: 60px;
        }
    </style>
    <?php
});

// Change logo URL (clicking the logo goes to your site, not WordPress.org)
add_filter( 'login_headerurl', function() {
    return 'https://youragency.com';
});

add_filter( 'login_headertext', function() {
    return 'YourAgency';
});

Or use the White Label CMS plugin or Ultimate Dashboard plugin for a no-code approach.

Replace "Thank you for creating with WordPress" with your agency credit:

add_filter( 'admin_footer_text', function() {
    return 'Managed by <a href="https://youragency.com" target="_blank">YourAgency</a>';
});

add_filter( 'update_footer', '__return_empty_string', 11 );

Custom admin colour scheme

Register a custom admin colour scheme with your brand colours:

add_action( 'admin_init', function() {
    wp_admin_css_color(
        'agency-brand',
        'YourAgency',
        get_template_directory_uri() . '/admin-colors.css',
        [ '#1A1A2E', '#16213E', '#0F3460', '#E94560' ],  // brand colours
        [ 'base' => '#ffffff', 'focus' => '#E94560', 'current' => '#E94560' ]
    );
});

Then set all users to this colour scheme by default:

add_action( 'user_register', function( $user_id ) {
    update_user_meta( $user_id, 'admin_color', 'agency-brand' );
});

Remove or simplify the admin menu

Non-technical clients do not need access to Appearance > Theme Editor, Tools > Export, or the Comments menu (if comments are not used). Removing unused items reduces confusion:

add_action( 'admin_menu', function() {
    // Remove items for non-admin users
    if ( ! current_user_can( 'manage_options' ) ) {
        remove_menu_page( 'tools.php' );
        remove_menu_page( 'themes.php' );
        remove_menu_page( 'plugins.php' );
        remove_menu_page( 'users.php' );
        remove_submenu_page( 'themes.php', 'theme-editor.php' );
    }
});

White-label the dashboard

Replace the default dashboard widgets

The default WordPress dashboard shows the "Welcome to WordPress" widget, a news feed from WordPress.org, and QuickPress. Replace these with an agency-branded welcome widget:

add_action( 'wp_dashboard_setup', function() {
    // Remove default widgets
    remove_meta_box( 'dashboard_welcome',        'dashboard', 'normal' );
    remove_meta_box( 'dashboard_primary',        'dashboard', 'side'   );
    remove_meta_box( 'dashboard_quick_press',    'dashboard', 'side'   );
    remove_meta_box( 'dashboard_activity',       'dashboard', 'normal' );

    // Add agency welcome widget
    wp_add_dashboard_widget(
        'agency_welcome',
        'Your Website',
        function() {
            echo '<p>Welcome to your website dashboard. Need help? Contact us:</p>';
            echo '<p><strong>Email</strong>: [email protected]<br>';
            echo '<strong>Phone</strong>: +44 XX XXXX XXXX</p>';
            echo '<p><a href="https://youragency.com/client-portal/" target="_blank" class="button">Client Portal</a></p>';
        }
    );
});

Add a performance summary widget

A custom dashboard widget that shows key site stats positions your agency as actively monitoring the site:

add_action( 'wp_dashboard_setup', function() {
    wp_add_dashboard_widget(
        'agency_site_stats',
        'Site Overview',
        function() {
            $post_count     = wp_count_posts()->publish;
            $comment_count  = wp_count_comments()->approved;
            $user_count     = count_users();
            ?>
            <ul>
                <li><strong><?php echo $post_count; ?></strong> published articles</li>
                <li><strong><?php echo $comment_count; ?></strong> approved comments</li>
                <li><strong><?php echo $user_count['total_users']; ?></strong> users</li>
            </ul>
            <?php
        }
    );
});

White-label plugins and themes

Hide plugin and theme update notifications from clients

Clients clicking "update all" without testing on staging causes problems. Hide the update prompts:

// Hide plugin update notifications from non-admins
add_action( 'admin_menu', function() {
    if ( ! current_user_can( 'manage_options' ) ) {
        remove_action( 'admin_notices', 'update_nag', 3 );
    }
});

// Hide update counts in the menu
add_action( 'admin_head', function() {
    if ( ! current_user_can( 'manage_options' ) ) {
        echo '<style>#wp-admin-bar-updates, .update-plugins, .update-themes { display: none; }</style>';
    }
});

Rename plugins in the admin

If you have custom functionality in a plugin named "My Client Plugin", rename it to something professional by filtering the plugin data:

add_filter( 'all_plugins', function( $plugins ) {
    if ( isset( $plugins['my-client-plugin/my-client-plugin.php'] ) ) {
        $plugins['my-client-plugin/my-client-plugin.php']['Name']        = 'Site Features';
        $plugins['my-client-plugin/my-client-plugin.php']['Description'] = 'Core features for this website.';
        $plugins['my-client-plugin/my-client-plugin.php']['Author']      = 'YourAgency';
        $plugins['my-client-plugin/my-client-plugin.php']['AuthorURI']   = 'https://youragency.com';
    }
    return $plugins;
});

White-label reporting

Sending clients PDF or email reports with WordPress metrics presented under your brand (not a third-party tool's brand) reinforces the value you deliver.

ManageWP

ManageWP (by GoDaddy) has a white-label reporting feature. Monthly performance reports, uptime reports, and security reports go out with your agency logo and colours. The client portal can also be white-labelled.

MainWP

MainWP is a self-hosted WordPress management platform (you install it on your own server). Free and open-source. White-label includes:

  • Custom branding on the management dashboard
  • Client reports with your branding
  • No GoDaddy/third-party branding anywhere

MainWP extensions handle specific features: client reports, security, performance monitoring, and backup integration.

Manual reports with Google Looker Studio

For full control over report design, connect Google Analytics and Search Console to Google Looker Studio (free). Create a report template with your agency colours and logo. Share the URL with clients - it updates automatically with live data.


Client portal

A simple client portal page (on your agency website or a subdomain) where clients can:

  • View their site's live URL
  • Access support ticket submission
  • See recent work/updates
  • View invoices

This does not need to be complex. A password-protected page on your agency site with links and an embedded helpdesk widget can serve as a client portal. Clients who have a portal feel they have an ongoing relationship, not just a transactional one.

Tools for client portals: Copilot, Moxo, or simply a password-protected WordPress page with a form and document links.


Was this article helpful?