I can think of two options available, neither of which are elegant:
- Add a
-to:my-team@example.com
to all the other filters that may archive the message.
- Use a variation of the above but instead of hard-coding the address, add a descriptive label.
There's no option to send an email to the inbox via a filter. Your only option is to prevent the message from being archived in the first place.
Solution #1: This one's pretty simple. So, for example, say you have the filter:
- when mail matches
to:other-team@example.com
, archive the message
You need to change it to:
- when mail matches
to:other-team@example.com -to:my-team@example.com
, archive the message
To use this negation, it may be easier to type in the "has the words" box.
Using this solution doesn't require you to maintain the filter order. The only downside is that if you have multiple email addresses that you need to keep (e.g. my-team2@example.com, my-team3@example.com, etc.), using this method you would need to add all of those to each filter. This can become hard to maintain. That's where solution #2 comes in...
Solution #2:
This one is more complicated and relies on the way Gmail processes filter rules. Basically it processes them from the top down. This means that if you modify one (which causes it to go to the bottom), you will need to remember to reorder your filters, so that it works correctly again.
You create the following filters, in this order:
- when mail matches
to:my-team@example.com
, apply the label dont-archive
.
- when mail matches
to:my-team2@example.com
, apply the label dont-archive
.
- when mail matches
to:my-team3@example.com
, apply the label dont-archive
.
- when mail matches
to:other-team@example.com -label:dont-archive
, archive the message
When creating the last filter, it will warn you about using the label. This message can be safely ignored, since you ordered the filters correctly.
Tip for solution #1:
Of course, if the email addresses are very similar, you might be able to use Gmail's limited stemming in order to use solution #1 with multiple addresses (e.g. instead of using -to:my-team@example.com
, use -to:(my @example.com)
which will also match my-team2@example.com
in this case.
Remember that you can use any Gmail search operator in a filter via the Has the words:
textbox since Gmail just AND's together the operators that are filled in via the filter dialog.
I'll suggest you start by trying this:
Create a filter that finds new emails with your name in them and applies a temporary label. The search operation you would use in the filter is:
is:unread AND body:"Your Name"
Create a filter that finds read emails in the temporary label and removes the label.
label:templabel AND is:read
Unfortunately, while filters can operate on read emails, they cannot currently remove labels, we are at a stopping point.
-
Sorry can't help more, but until Gmail filters can remove a label, you will not be able to accomplish this via filters.
Potential workarounds would be:
Setup an IMAP client with the equivalent filtering where instead of adding/removing a temporary label you would be copying/deleting the email from the temporary folder.
Google recently introduced a new scripting framework for Google Apps.
One really crude hack for step 2 would be to have the filter forward the email as well as delete it. You would forward to your own email address with a plus extension, e.g. username+templabelname@gmail.com
.
Then a new step 3 would be to catch those emails using the deliveredto:username+templabel@gmail.com
search string, and reapply some label.
Not sure how cleanly this method would work, especially because you would get header cruft from the forward (vs. redirecting).
Personally, I would look at #2 since learning scripting for Google Apps would pay off in the long run.
Best Answer
The only way I know is to use the multiple inboxes option.
You can decide where to place the multiple inbox sections, and you can decide how many to show.
That section of your inbox will show all your unread messages/conversations.
When you read an message/conversation there is a lag before it refreshes the list.