Front's rules are made up of three types of conditions:
When: trigger events that qualify a rule to start scanning for the filter conditions
If: filters that need to exist in order for the rule to run the actions
Then: resulting actions that occur from the rule once conditions are met
This article provides a description of each When trigger, If filter, and Then action offered in Front's rule engine for standard and custom rules. There are additional specialized rules found in the rules library with pre-set formatting depending on the rule.
For more general information about how rules work and pricing, see Understanding rules.
The When section contains triggering events that will cause Front to start evaluating the conditions of your rule and see if they are met.
When - Message
Inbound message is received: A new message arrives, either a brand new conversation or within an existing thread.
Conversation is moved*: A conversation is moved from one shared inbox to another shared inbox within the same Workspace.
Outbound message is sent (new conversation): The first outgoing message in a new thread is sent (not a reply in an existing conversation).
Outbound reply is sent (existing conversation): A reply is sent in an existing thread.
Message delivery fails*: A message fails to be delivered.
When - Status
Conversation is archived*: A conversation is archived.
Conversation is reopened*: A conversation is un-archived.
Conversation is deleted*: A conversation is deleted. Also applies to conversations marked as spam.
Conversation is restored*: A conversation is restored from the trash.
Conversation is snoozed*: A conversation is snoozed.
Snooze expired*: When a snooze expires and conversation is reopened.
When - Teammates
New comment is added*: An internal comment is posted in a conversation, excluding internal discussions (updating an existing comment does not count). You can optionally input the comment author and the comment body content.
Teammate is mentioned*: When one or more teammates are @mentioned in a comment. Select who the teammates are.
Assignee is changed*: A conversation is assigned or re-assigned to a teammate.
Conversation is unassigned*: A conversation is un-assigned from a teammate.
When - Tags
Tag is added: A conversation is tagged.
Tag is removed*: A tag is removed from a conversation.
When - Custom fields
Custom field is updated†: When a custom conversation field is updated.
The If section contains the filters you've set that must exist in order for the actions to run.
† Dagger symbol below denotes rule conditions only available on the Scale plan or above.
If - Dynamic variables†
If - Status
Conversation is currently archived: Conversation is in an archived state.
Conversation is currently snoozed: Conversation is in a snoozed state.
Conversation is currently open: Conversation is in an open state.
If - Inbox
Conversation is in specific inboxes: Check off the inboxes the rule should apply to, or choose Any inbox at the top.
Conversation is in specific channels*: Check off channels the rule should apply to.
This condition works on the whole conversation, so once a specified channel is associated with the conversation at any point, this condition will be true for the conversation moving forward.
If - Recipient
From field contains: Specific requirements of the text in the From field, which has sub-filters.
To field contains: Specific requirements of the text in the To field, which has sub-filters.
Cc field contains: Specific requirements of the text in the Cc field, which has sub-filters.
Bcc field contains: Specific requirements of the text in the Bcc field, which has sub-filters. Should be used with outbound messages.
To or Cc field contains: Specific requirements for either the To or the Cc field, which has sub-filters.
Any recipient field contains: Specific requirements of the text in any of the From, To, Cc, Bcc fields, which has sub-filters.
If - Contact
Contact is in specific list*: Choose the contact list that the contact is in.
Contact is not in specific list*: Choose the contact list that the contact is not in.
Custom contact field contains*: Define criteria based on any custom contact fields.
If - Tags
Conversation has specific tag(s): Conversation already has the chosen tag(s).
Conversation does not have specific tag(s)*: Conversation does not have the chosen tag(s).
Has no tags*: Conversation has no tags at all.
If - Content
Email subject contains: Specific requirements of the text in the conversation subject line, which has sub-filters.
Headers contain*: Specific requirements for certain text or elements that the headers contain, which has sub-filters.
Message body contains: Specific requirements of the text in the conversation body, which has sub-filters. You can also click the dropdown arrow on the top right to optionally choose whether you want the rule to Include past email history, which refers to whether you want the rule to scan the past email history of the thread when there is a new inbound and/or outbound message.
HTML message body*: Specific requirements of the HTML text in the conversation body, which has sub-filters. For inbound direction messages, the condition works for the message body and signature. For outbound direction messages, it applies only for the message body and not the signature.
Message language is*: Language of the conversation body. If the text is too short or contains multiple languages, Front's language detector will not detect the language. There is a threshold of 25% detection for the condition to be considered true.
Message has attachments*: Conversation has attachments.
Message has no attachments*: Conversation does not have attachments.
Attachment file name contains*: Specific requirements of the text in the attachment file name, which has sub-filters.
Attachment extension is*: Choose the extension type(s) for attachments in the conversation. e.g. PDF, CSV, etc. Custom extensions are supported.
Front Chat visitor URL contains*: Visitor URL associated with each message the visitor sends through the Front Chat widget.
Custom conversation field contains*: Define criteria based on any custom conversation fields.
If - Message
Message type is*: Filter the type of message, options being Email, Tweet, Retweet, Direct Message, SMS, Facebook, Front Chat, Intercom, Yalo/WhatsApp.
Message direction is*: Choose whether conversation is inbound or outbound direction.
If - Time*
Unreplied after*: Set the amount of time that the message (inbound or outbound) is unreplied, options being Minutes, Hours, Days, Weeks, Months, or Years.
Conversation unassigned and open after*: Set the amount of time that the message (inbound or outbound) is unassigned, options being Minutes, Hours, Days, Weeks, Months, or Years.
Time passed since trigger is*: Set amount of time to pass after the trigger, before the action will run. This condition will work with any trigger.
During business hours*: Compares time to the Workspace's business hours as defined in Analytics, or shared inbox business hours as defined in inbox settings.
Outside business hours*: Compares time to the Workspace's business hours as defined in Analytics, or shared inbox business hours as defined in inbox settings.
Time is between*: Define the time frame and choose the time zone.
Date is between / before / after*: Choose the specific calendar date(s) you want the rule to apply to.
Day of the week is*: Choose the day(s) of the week you want the rule to apply to.
If - Teammates
Assignee currently is one of*: Conversation is assigned to one of the people listed.
Assignee currently is not one of*: Conversation is currently assigned, but the assignee is not one of the people listed.
Conversation is unassigned*: Conversation is in an unassigned state.
If - Account
Custom account field contains*: Define criteria based on any custom account fields.
The Then section contains the list of actions that will result when all filters are met.
† Dagger symbol below denotes rule conditions only available on the Scale plan or above.
Then - Teammates
Assign to teammate(s)*: Assign conversation to a specific teammate or assign to a group of teammates. If you select more than 1 teammate, a new sub-menu will show to choose the assignment Randomly, Round-robin*, or Load balancing*.
There is a gray dropdown arrow to the right to optionally select two settings: 1. Assign conversation even if teammate does not have access - the rule will assign the conversation to the listed teammates even if the teammates do not have access to the inbox. If you check this box, then rules set up for your private inbox will automatically archive your copy after it assigns the private conversation to a teammate. 2. Replace current assignee (if any) - if the conversation is currently assigned to someone, the rule will re-assign to the teammate in the rule.
Conversations will not be assigned to a teammate who currently has their status set to Unavailable or teammates who do not already have access to that conversation.
Assign based on a contact field*: Choose from one of the contact fields for this contact.
Unassign*: Unassign the conversation.
Notify teammates: This will show the conversation in their Shared with me section. You have the option here whether to notify the teammates if they are Out of Office or Do Not Disturb status. Notifying teammates who didn't have access to the conversation will grant them access.
Notify assignee (if any)*: this will notify the teammate assigned to the conversation, and bump the conversation up in their Assigned to me folder.
Then - Status
Archive conversation: Archive the conversation.
Reopen conversation*: Unarchive the conversation.
Delete conversation*: Move the conversation to Trash. Note: you cannot set a rule to permanently delete messages automatically.
Update custom field value†: Update an existing custom field value to the value specified in the rule.
Then - Organization
Add tag: Add a specific tag.
Remove tag: Remove a specific tag.
Move to a specific inbox: Move conversation to a specific inbox.
Includes option to choose to Trigger automated rules if moved to another Workspace. Note that moving a conversation to a different inbox breaks the sync between Front and Google/Office 365 for that conversation.
Restrict participants means that after the conversation is moved, only the assignees and followers with access to the destination inbox will be kept as participants. Keep participants means that all assignees and followers will be kept after the move, even if they do not have access to the destination inbox.
Then - Message
Reply with a message template: Reply with a specific message template, either Once or Always. If the conversation already has an outbound message, an outbound reply, or more than one inbound message in it, reply Once will not send anything.
Forward to*: Forward the email to other addresses. Only for email conversations. Will not send to the recipient if they were one of the original receivers of the email.
Then - Comment
Add comment*: Post an internal comment on the conversation. The comment body can also contain @mentions. To automatically pin the comments posted by this rule, click the down arrow above the Body field, and select Pin comment.
Log variables in a comment (debugging)†: Log value of dynamic variables at the moment your rule was executed, useful for debugging your rules.
Then - Contacts
Add contact to a specific list*: Add the contact to specific contact lists.
Remove contact from a specific list*: Remove the contact from specific contact lists.
Send to Hipchat*: Send the conversation to a specific Hipchat room.
Log message in Hubspot*: Log the message to the contact in Hubspot if the contact exists.
Trigger in PagerDuty*: Trigger an alert in PagerDuty.
Create activity in Pipedrive*: Add content of the message as a new activity for the contact, if the contact exists.
Create lead in Salesforce*: Create lead in Salesforce for the contact if it does not exist already.
Send to Salesforce*: Log message as an activity in Salesforce. The assignee in Salesforce is the author of the message or the assignee of the Front conversation if they're a Front teammate who has signed into the Salesforce integration. After checking the message author and then the assignee, if no owner is found, the activity defaults to assigning the activity in Salesforce to the Front teammate who first enabled the Salesforce Integration.
Send to Slack*: Send the message to a specific Slack channel or user.
Send to a Webhook*: Send the message to your webhook URL.
Send to Zapier*: Send the information to Zapier.
Then - Account
Assign based on an account field*: Assign conversations based on a Teammate custom field on the account.
Notify based on an account field*: Notify a teammate based on a Teammate custom field on the account.
Stop processing other rules
The rule engine runs sequentially by default, meaning that the rule actions in one rule can trigger subsequent rules to run more actions. You have the option to check off Stop processing other rules if you don't want this to happen.
What are sub-filters in the If - Recipient filters?
The If - Recipient filters has these sub-filters:
You can use a semicolon (;) as an or separator to list several items. For example: Is not in domain "domain.com; anotherdomain.com" - this will be true if at least one recipient is not from domain.com or anotherdomain.com. For any Domain filters, do not add the @ symbol before the domain, as the Domain filter includes the symbol by default.
What are sub-filters in the If - Content filters?
The If - Content filters has these subfilters:
The filters below have some specific behaviors:
Contains: Includes partial matches, such as using Contains: order will match on the word reorder. If you only want to match order, use the Contains full word/phrase selection. It also includes all punctuation you enter into the rule text.
Contains full word/phrase: Matches full words or phrases. Partial words will not match. It ignores punctuation of these specific characters:
Contains and Contains full word/phrase: Not case-sensitive and reads consecutive multiple spaces as a single space.
Starts with and Ends with: Behaves exactly like Contains, except they only match for the beginning or end of the text.
The text that you enter in any of the If - Content filters should not be in quotes.
Subject, Header, and Body conditions only: Clicking the down-facing arrow will reveal the Case-sensitive checkbox. Check this box for your rule to trigger when the case sensitivity in the message's content matches how it is entered in this rule condition.
Below is a chart of examples for the Contains vs. Contains full word/phrase filters:
How do the And/Or filters work?
You are able to create conditions using And and Or types. Using And will require all the listed conditions to be true in order for the rule to take action. Using Or will require only one of those conditions to be true. You can also use a combination of these two types. More on how to use And/Or statements can be found in this article.
How do I list multiple keywords within an If filter?
Some conditions allow you to type in your own text for the condition (such as Subject, Body, To, From), and you can actually list multiple keywords within one condition if these options are all Or type. You would simply separate the words with a semicolon (;).
For example, if you wanted your condition to be for the Subject to contain the keywords Urgent or SOS; then instead of creating 2 separate Or conditions, you would just create one condition and list the two keywords as:
Should I be using the inbox filter?
A best practice is to always specify an inbox using the Conversation is in specific inboxes filter, unless the rule truly needs to apply to all inboxes (both individual and shared inboxes). The difference between this filter and the Conversation is in specific channels filter is that the channels filter can apply on any inbox containing messages from the channel, which can happen if conversations are moved away from the channel's default inbox. Specifying an inbox filter ensures the rule only affects that specific inbox.
Is there a difference between conversations vs. messages?
Some rule triggers and conditions apply to the whole conversation, and some apply to a specific message within the conversation. For example, the From condition applies to a specific message, and not the thread as a whole where the sender may change from message to message. Likewise, a tag can only apply to the whole conversation, and not an individual message.
Here are some specific cases:
When: Tag is added
If: To contains @company.com
Then: Assign to Andersen
This rule will check the To recipient of the last message in the tagged conversation.
When: Snoozed expired
If: Body contains example
Then: Move the conversation
This rule will check the body of the last message for the word example.
When: Inbound message is received
If: Subject contains Urgent
Then: Add tag Urgent
This rule will add the tag to the whole conversation, as tags cannot be added to individual messages.
Rule conditions and custom rules are available to legacy Growth plans and above that were created before May 2nd, 2023.
For accounts created after May 2nd, 2023, rule conditions and custom rules are available on the Scale plans and above. Custom rules allow you to build rules from scratch using any mix of when/if/then conditions.