> For the complete documentation index, see [llms.txt](https://missiveapp.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://missiveapp.com/docs/core-features/connected-accounts/avatars-and-logos.md).

# Avatars and logos

How Missive picks the avatar or logo shown next to senders, contacts, and accounts, and how to fix a missing or wrong one.

Every sender in Missive gets a picture: a face, a company logo, or a grey placeholder. You never upload these for external contacts. Missive finds them automatically from public sources. Knowing where it looks lets you control what your customers see when you email them, and fix your own logo when it goes missing.

## Where avatars come from

Missive checks these sources in order and uses the first one that returns a usable image.

{% stepper %}
{% step %}

### A custom account avatar set in Missive

If the sender address belongs to one of your organization's connected accounts (or one of its aliases) and that account has an [uploaded avatar](#your-account-avatar), Missive uses it and skips every lookup below. This only applies to your own accounts. Avatars you set on [contacts](#contact-avatars) show in contact cards, not next to messages.
{% endstep %}

{% step %}

### Gravatar

Missive looks up the sender's exact email address on [Gravatar](https://gravatar.com). If that address has a Gravatar profile picture, Missive uses it. The match is case-insensitive but otherwise exact: `info@acme.com` and `sales@acme.com` are looked up separately.
{% endstep %}

{% step %}

### The sender's website

If there is no Gravatar, Missive takes the domain from the email address and loads the website's homepage over plain HTTP, following redirects. It then reads the page's `<head>` for image tags, in this priority:

1. `<link rel="icon">` (only when a small image is needed, see [Sizes](#why-the-list-and-the-thread-can-differ))
2. `<link rel="apple-touch-icon">`
3. `<link rel="apple-touch-icon-precomposed">`
4. `<link rel="image_src">`
5. `<meta property="og:image">`
6. `<meta property="og:image:src">`
7. `<meta name="twitter:image">`
8. `<link rel="icon">` (when a large image is needed)

Missive picks the **first tag that exists**, then tries to download that one image. It does not keep going down the list if the download fails. If the first tag points to an image that is too large or unreachable, Missive moves on to the next source.

Subdomains are collapsed to the registered domain. An email from `jane@mail.acme.co.uk` is looked up at `acme.co.uk`.
{% endstep %}

{% step %}

### The website's favicon

As a last resort, Missive requests `/favicon.ico` at the root of the domain. If the homepage redirected somewhere else, Missive also tries the favicon of the final destination.
{% endstep %}

{% step %}

### Placeholder

If nothing works, Missive shows a grey default avatar.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Consumer mailboxes are handled separately. Addresses at `hotmail.*`, `outlook.*` and `live.*` always show the Outlook logo. Addresses at `me.com` are looked up as `icloud.com`, and `onmicrosoft.com` tenant addresses are looked up as `office365.com`.
{% endhint %}

## What makes an image usable

An image is rejected, and Missive falls through to the next source, when any of these is true:

| Requirement                                  | Why                                                                                               |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| **Under 200 KB**                             | Avatars are tiny on screen. Large files slow everything down, so anything over 200 KB is skipped. |
| **Served with an `image/*` content type**    | An HTML error page served at an image URL, or a file with no content type, is not an image.       |
| **Reachable over the public internet**       | Sites behind a login, a VPN, or a firewall rule blocking bots cannot be read.                     |
| **Responds within a few seconds**            | Slow or hanging servers are given up on.                                                          |
| **Absolute or root-relative URL in the tag** | Tags that point to an empty string or an unresolvable URL are ignored.                            |

The 200 KB limit is the most common reason a logo goes missing. Social share images (`og:image`) are often 1200×630 pixel PNGs weighing several hundred kilobytes.

## Why the list and the thread can differ

Missive requests avatars at two different sizes:

* **Small**, for the conversation list.
* **Large**, for the message header inside an open conversation, the composer, and contact cards.

For the small size, the favicon tag is checked first. For the large size, it is checked last, so Missive tries the higher-resolution `apple-touch-icon` and `og:image` first.

This means both sizes can land on different tags, and one can succeed while the other fails. The classic symptom: **your logo appears in the conversation list, but the messages inside the thread show a grey placeholder.** The small lookup found your favicon. The large lookup found your `og:image`, which is over 200 KB, and gave up.

## Fixing your own logo

Follow these steps in order. Stop as soon as you have found and fixed the cause.

{% stepper %}
{% step %}

### Check the file size of your social image

Open your website's homepage, view the page source, and find the `og:image`, `twitter:image`, and `apple-touch-icon` tags. Open each image URL and check its file size. Anything above 200 KB is the problem.

Compress the image, or replace the `og:image` with a smaller version. A 1200×630 PNG can usually be brought under 200 KB with a compression tool like [Squoosh](https://squoosh.app) or by exporting it as JPEG.
{% endstep %}

{% step %}

### Add an Apple touch icon

If you want a square logo that looks good at every size, add this to your `<head>`:

```html
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
```

Use a square PNG, 180×180 or 512×512 pixels, well under 200 KB. Because this tag comes before `og:image` in the priority list, Missive prefers it for the large size, and you no longer depend on your social share image.
{% endstep %}

{% step %}

### Make sure a favicon exists at the root

Place a file at `https://yourdomain.com/favicon.ico`. Many sites only declare a favicon through a `<link>` tag at a different path, which works for browsers but leaves the last-resort lookup empty.
{% endstep %}

{% step %}

### Check that your site can be read by non-browsers

Some hosting providers, CDNs, and security plugins (Cloudflare "Under attack" mode, bot protection, geo-blocking) return a challenge page instead of your HTML. If your site does this, none of the website sources work. Add an exception for the homepage and your image files, or rely on Gravatar or a custom avatar instead.

The lookup starts over plain `http://`, so your site must either serve the homepage over HTTP or redirect it to HTTPS.
{% endstep %}

{% step %}

### Set a Gravatar for the address

If you cannot change the website, create a free [Gravatar](https://gravatar.com) account and add the email address, for example `info@yourdomain.com`. Gravatar is checked before the website, so this overrides whatever the site provides. Each address needs to be added separately.
{% endstep %}

{% step %}

### Upload a custom avatar in Missive

For addresses connected to Missive, this is the guaranteed fix and needs no website change. It only affects what Missive users in your organization see, not what your customers see on their side.

See [Your account avatar](#your-account-avatar) below.
{% endstep %}
{% endstepper %}

## Caching

Missive caches every lookup result, including failures, for **24 hours**. Your browser or the desktop app caches the image on top of that.

After fixing your website or Gravatar:

1. Wait up to a day.
2. Clear the local cache. In the desktop app, open **Settings** → **Help** and click **Clear** next to **Cache storage**. In a browser, clear the browser cache for `mail.missiveapp.com`.

If the avatar is still wrong after 24 hours and a cache clear, the fix has not taken effect on the website itself. Open the image URL in a browser and check its size and content type.

## Your user avatar

This is the picture teammates see next to your comments, assignments and in the sidebar. See [How do I change my avatar?](/docs/administration/roles/faq.md#how-do-i-change-my-avatar) in the Roles FAQ.

Default user avatars are colored based on your initials, so two people can end up with similar colors. Uploading a picture solves this.

## Your account avatar

Each connected account can have its own image, shown in the conversation list and next to messages sent from that account.

1. Open **Settings** → **Accounts**.
2. Select the account.
3. Under **Avatar**, click **Upload image** (or **Replace** if one is already set).
4. When asked, click **Reload** so the new avatar shows on existing conversations.

This overrides Gravatar and website lookups for that address and its aliases, for everyone in your organization. Only users who can manage the account can change it. Click **Remove** to go back to the automatic lookup.

## Contact avatars

Contacts in your [contact books](/docs/core-features/contacts.md) can carry their own avatar. Open the contact, click **Edit**, and drag an image onto the avatar field or click **Upload avatar**.

A contact avatar shows in the contact card and the contacts panel. It does not replace the avatar next to messages in a conversation, which always comes from the lookup above.

Contacts synced from Google or Office 365 bring their photo along with them, and avatars you set in Missive are pushed back to those services.

## Related

* [Connected Accounts FAQ](/docs/core-features/connected-accounts/faq.md)
* [Contacts](/docs/core-features/contacts.md)
* [Managing your team signatures](/docs/core-features/aliases-and-signatures/managing-your-team-signatures.md) for showing user avatars inside signatures


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://missiveapp.com/docs/core-features/connected-accounts/avatars-and-logos.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
