Skip to content

How it Works

Concepts

  • Conversation - limetype that represents an email thread and contains a collection of messages that are related to each other. A conversation can be attached to a conversation parent and has followers. A conversation is created when sending or receiving the first message of an email thread.
  • Conversation parents - limetype that represents the main object that should be created alongside the conversation. It can be a ticket, deal or any other limetype that you want to attach the conversation to.
  • Conversation message - limetype that represents a message in a conversation. Each response within the same email thread results in a new conversation message.
  • Followers - limetype that represent every participant involved in a conversation. A conversation has a list of followers showing everyone who at some point in the thread has sent or received an email.
  • Message followers - limetype which represent a follower of a particular message. Each message therefore has a list of message followers showing who was involved in this message.
  • Follower parents - limetype that is following a conversation. It allows you to map participants of a conversations by their email addresses to already existing entities in your application. A follower parent can be a person, a company, or any other limetype. A follower will be created per conversation but always connected to the same parent. Let's assume a user with the address [email protected] is involved in 5 conversations. Each conversation has a follower representing this email address, but they can all be connected to the same person.
  • Document - limetype that represents any attachments connected to an email.
  • Embedded Files - limetype that represents any embedded images which are part of an email.

Example

Let's consider an example to illustrate these concepts:

Scenario

John Doe sends an email to support@lime regarding an issue with his wife Jane Doe on CC. The email initiates a new conversation in the system.

Breakdown

Conversation:

  • A new conversation is created for John Doe's email thread.
  • This conversation is attached to a conversation parent, which in this case is a support ticket.

Conversation Parents:

  • The support ticket is the main object created alongside the conversation.

Conversation Message:

  • John Doe's initial email is stored as a conversation message.
  • Any replies from the support team, John Doe or his wife will be added as new conversation messages.

Followers:

  • John and Jane Doe and the support team members are added as followers of this conversation.
  • Each follower tracks whether the participant is still in a conversations. If the support team removes Jane Doe on a response, her follower will be updated to inactive.

Message Followers:

  • Each email message within the conversation has its own list of followers.
  • For example, if a support team member replies, they are added as a message follower of that specific message.

Follower Parents:

  • John Doe's email address is mapped to his customer profile in the system.
  • This allows the system to link all conversations involving John Doe to his profile.

Document:

  • If John Doe attaches a screenshot of his order issue, it is stored as a document.

Embedded Files:

  • If John Doe's email includes embedded images, they are stored as embedded files.

Text Formatting from Incoming Emails

Some of the text formatting from incoming emails is kept and respected when creating conversation messages based on their content. Both when showing the conversation message inside Lime CRM (in Activities on the conversation parent or on a conversation card) and also when including the conversation message as part of the historic conversation in outgoing emails.

In the examples below, text color, text highlighting, table, and inline image are kept from the original incoming email throughout the handling of the conversation messages.

Original Incoming Email

Incoming email

Message Shown in Activities in Lime CRM

Message in feed

Message as Part of Conversation History in Outgoing Emails

Historic message in outgoing email

Automatic Reply

It is possible to configure, for each account in Lime Admin, if an automatic reply should be sent as reply to an incoming email. The automatic reply will only be sent if the conversation does not already exist in Lime CRM.

It is possible to use merge codes in the automatic reply where you can fetch relevant information from the conversation object. Curly brackets is used as delimiter for the merge codes. For example, {{helpdesk.helpdesknumber}} will fetch the helpdesknumber from the object that is attached on the helpdesk relation on the conversation object.

It is possible to configure that automatic replies should not be sent if an email is older than X hours, this is useful if old emails are being recovered in the recovery process. It is also possible to completely turn off the automatic reply through the Send automatic reply account setting.

Account settings

Loop Protection

A risk with automatic replies is that they can create a loop of emails. That can happen when the original sender has an automatic reply set up, which then reacts to the automatic reply from Lime CRM with its own automatic reply. That reply though isn't a real response to the original email and therefore doesn't contain the unique ID that Lime CRM needs to identify the conversation, categorises it as a new conversation and sends an automatic reply to that, which will trigger the original sender's automatic reply and so on.

The industry standard to prevent this is to include headers in the email that are used to identify it as an automatic reply. Lime CRM uses those headers in all sent automatic replies and detects incoming automatic replies based on them. If an incoming email is detected as an automatic reply, it will be ignored since it can't be connected to the original conversation. Below you can see the headers the integration is looking for:

{
    "auto-submitted": "auto-replied",
    "x-auto-response-suppress": "All",
    "precedence": "auto_reply",
}

This is unfortunately not a foolproof solution since not all email clients include these headers in their automatic replies. This troubleshoot guides you through such a situation.

Identifying Existing Conversations

When a new email is received, the system will try to connect it to an existing conversation. You can choose between two different methods for how to detect existing conversations. In both cases the system extracts a unique ID from the incoming email and tries to find a conversation with the same ID.

The identification method can be configured in Lime Admin.

Plus Addressing

Every message sent from the system will include a unique ID in the reply-to address in the following format: <address>+<unique id>@<domain>.com. This is called plus addressing and allows you insert whatever you like after the plus, without invalidating the email address.

Subject

Every message sent from the system will include a unique ID in the subject in the following format: <subject> [ID-<unique id>].

Info

The subject will be truncated in outgoing emails to 128 characters to prevent email servers from removing the identifier.

Text Snippets

A text snippet is a limeobject that enables rapid and effortless insertion of pre-written text content into the text editor when composing a message in Lime CRM.

Creating and Maintaining Text Snippets

Since text snippets are regular limeobjects, they can be created and maintained in the same manner as any other limeobject through the global text snippet table.

A text snippet can also be created either via the text snippet menu in the composer's text editor, and via the unpromoted actions on an existing conversation message. The latter is typically useful when the same message may be of use in other conversations. It is important to note that only conversation messages created by users in Lime CRM are eligible for this feature.

Merge codes allow you to insert specific data from the conversation object directly into your text snippets. For instance, {{ helpdesk.company.name }} retrieves the name of the company associated with the ticket that is linked to the conversation. This demonstrates that merge codes with several relations away are supported.

Applying Text Snippets

To trigger the text snippet menu, you can type ! in the email composer's text editor in Lime CRM. You can search for text and select it either by pressing the ENTER or TAB key on your keyboard or by clicking on the text snippet with your mouse.

Text snippets are sorted based on the Pinned flag.