Receive an inbound email into the mailbox

A customer's email to a connected company mailbox is polled, captured, identified, grouped and routed into the shared Inbox.

When this happens: A customer sends an email to a connected company address.

How it works

  • EasyCRM sends an email from *[email protected]* to *[email protected]*, subject Order #4821 delayed?.
  • Delivers the message to the mailbox.
  • MailboxSyncJob polls the mailbox on its 5-minute cycle and fetches the new message via the provider's incremental endpoint.
  • Identifies the customer by the From address and finds or creates the Contact.
  • EasyCRM evaluates mailbox inbox-inclusion rules; no rule matches — the message is included.
  • Finds, reopens or creates the Conversation (FR-14 rules) and appends a Message (Inbound, Customer).
  • EasyCRM stores the EmailMessageHeader (Subject, From, To, Cc, Bcc, InternetMessageId, InReplyTo, References, ).
  • Downloads any attachments into object storage and links MessageAttachment rows.
  • Routes the conversation (FR-24) and notifies the eligible operators (FR-10).

Other paths

Message carries attachments

EasyCRM stores non-inline attachments via IFileStorageProvider in object storage; inline images referenced only from the HTML body are not persisted separately.

Message matches an exclusion rule

At step 5 an Exclude rule matches. The message is stored but never becomes a Conversation/Message, and is never routed or notified.

If something goes wrong

Mailbox in error state at poll time

EasyCRM skips the cycle for that connection; the message is picked up on the next successful poll. The checkpoint is not advanced, so nothing is lost.

One attachment fails to download

EasyCRM logs and skips the failed attachment; the rest of the message is still captured.

Good to know

  • MailboxSyncJob polls every 5 minutes per connection.
  • A newly connected mailbox's first sync imports the last 30 days.
  • A checkpoint only advances once its messages are confirmed processed.