None of us likes to feel that we’re part of an anonymous crowd, all looking and behaving the same. When organizations sign up for a cloud service, they cede control over the scope of the service they receive, and they lose the ability to tailor how software works. In a nutshell, you get what the service provider delivers.
Which is why you might want to customize the default theme used for Office 365 browser apps to apply your choice of corporate colors and logo and generally make the apps appear a little less one size fits all. With a little up-front preparation and maybe some assistance from people who are good with colors, this is easily done.
Customizing Your Tenant’s Theme
To start, go to the Org settings section under Settings in the Microsoft 365 admin center and choose Custom themes. You’ll then have some options to change the appearance of the bar displayed at the top of browser apps.
The bar is made up of several components from the waffle menu on the far left-hand side to the avatar on the far right. The components you can customize are in the middle and comprise of your logo, the background image for the piece between the corporate logo and the settings (cogwheel icon etc.), the overall color for the bar, and the color used for the text and icons placed on the bar (Figure 1). You can also make the logo clickable (bring the user to another web page).
Figure 1: Custom theme settings for a Microsoft 365 tenant
When Microsoft specifies an image size, they mean it. It took a few tries to upload a custom logo. All attempts were rebuffed until I used an image sized at precisely 200 x 30 pixels. 199 x 30 pixels didn’t work.
Microsoft recommends SVG files for the logo because the SharePoint Online mobile app won’t display other formats. If you don’t care about this then PNG or JPG work just fine.
If you make the logo clickable, it closes the current page and goes to the place you specify. It doesn’t seem to be possible to make the link open in a new tab or window.
Color choice is really important. A color palette picker is available to choose colors from (or you can input the hex value of a color). It’s easy to make a mess, so if you are color blind (like I am), get someone who isn’t to check your selections. Or even better, find out the hex values for the corporate approved colors and use those.
A tenant can only have one custom theme.
If you make a mess, it’s easy to revert to the default theme and start over by using the Remove custom theming button at the bottom of the theme settings.
Figure 2 shows the result of some quick customizations to create an Office 365 for IT Pros theme. In this case, I chose a red background image with a red navigation bar with white text and icons. It was enough to validate that it’s easy to create a custom theme. I’m sure people can create something more artistic than I managed.
Figure 2: Components of a custom theme
Once saved, the custom theme will be picked up by the Office 365 browser apps. Well, most apps, as Teams will do its own thing.
Limiting Theme Choice
If you want to force people to use the custom theme, you can set this option in the settings (Figure 3).
Figure 3: Option to stop users overriding the corporate (custom) theme
With the setting in place, users won’t be able to select one of the many optional themes packaged with Office 365 (Figure 4) and will have to be content choosing between the custom theme and the default Office 365 high contrast theme. There’s no administrative method available to select a specific theme for users.
Figure 4: Browsing the optional themes available in Office 365
Limiting choice to a bland corporate theme and a high contract theme seems like a step too far. I can see why some people might consider it a good thing to eliminate themes like Cats and the splendidly named Super Sparkle Happy theme, but let’s give users the chance to express themselves, even if their personal choices might occasionally be doubtful.
Hello Tony,
I know that on-prem is more and more passe, but do you know if the same (or something similar) is possible on the Exchange Server (say, 2019)?
I mean the company’s logo on the left upper corner.
There is a kind of guide regarding how to create/customize OWApp theme (https://docs.microsoft.com/en-us/exchange/clients/outlook-on-the-web/themes?view=exchserver-2019), but there is no clear indication how to put such logo there.
I’m going to give it some tests anyway, but maybe you happen to know it already.
{"id":null,"mode":"button","open_style":"in_modal","currency_code":"EUR","currency_symbol":"\u20ac","currency_type":"decimal","blank_flag_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":100,"top_media_type":"featured_image","featured_image_url":"https:\/\/office365itpros.com\/wp-content\/uploads\/2022\/11\/cover-141x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Virtual Tip Jar","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Office 365 for IT Pros","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Office 365 for IT Pros","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for supporting the work of Office 365 for IT Pros!","payment_confirmation_title":"Office 365 for IT Pros","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
Hello Tony,
I know that on-prem is more and more passe, but do you know if the same (or something similar) is possible on the Exchange Server (say, 2019)?
I mean the company’s logo on the left upper corner.
There is a kind of guide regarding how to create/customize OWApp theme (https://docs.microsoft.com/en-us/exchange/clients/outlook-on-the-web/themes?view=exchserver-2019), but there is no clear indication how to put such logo there.
I’m going to give it some tests anyway, but maybe you happen to know it already.
Thanks in advance