Copy every email your team sends and receives to your CRM address with one Google Workspace or Microsoft 365 rule, so each conversation lands on the right contact without anyone pressing BCC.
Every Karmaflow.ai workspace has one inbound address of its own. Mail that reaches it is matched to a contact (and a company, by domain), stored, and shown on that contact's Activity Timeline. You can BCC the address by hand from any mailbox — but with one rule in your mail provider's admin console you can send it a copy of every message your team sends and receives, and the CRM fills itself.
This guide sets that up for Google Workspace and for Microsoft 365, explains what the CRM does with each kind of message, and lists what it does not capture.
flowchart LR
C[Customer] <-->|email| P[Your mail provider<br/>Google Workspace / Microsoft 365]
P <-->|email| T[Your team's mailboxes]
P -->|copy of every external message| K[Workspace ingest address<br/>CRM]
K -->|from outside| I[Logged as received<br/>on the sender's contact]
K -->|from your domain| O[Logged as sent<br/>on the recipient's contact]
K -->|colleague to colleague| N[Stored, attached to nobody]
The rules below hand Karmaflow.ai a copy of each message with the original sender and recipients intact, and that is all it needs. Three things decide what happens next:
| The message is… | Decided by | What the CRM does |
|---|---|---|
| From a customer (sender not on one of your domains) | The sender's domain | Logged as received on the sender's contact. A contact — and a company, by domain — is created when the sender is new. |
| From your team to a customer | The sender's domain | Logged as sent on the first external recipient's contact. A new recipient becomes a contact too. |
| Between colleagues (every address on one of your domains) | Every address | Stored, but attached to no one and triggering nothing. It appears under Messages that didn't reach anyone so you can see it arrived. |
| Automated — a newsletter, an out-of-office reply, a bounce, or anything from a no-reply address | The message's own headers and the sender address | Attached to the sender's contact if one already exists. Never creates a contact. Listed under Messages that didn't reach anyone as Automated mail — no contact created. |
"Your domains" are worked out for you: the domains of your team members' sign-in addresses, your sending domains, and anything you add under Settings (the gear icon) → Workspace → Internal Email Domains. Free-mail domains such as gmail.com are never counted as yours, even if a colleague signed in with one — see A colleague on a personal address below.
<id>@sys.karmaflow.ai; keep it for the rules below. Opening this page also registers the receiving route — the Ingestion behavior card shows Mailgun route provisioned once it has.{"action":"drop"} for a message stops it before anything is stored — useful for a category you never want in the CRM, such as vendor invoices. Anything the agent cannot classify is allowed through.Google's Routing setting adds a recipient to messages that match, and the copy keeps the original From, To and Cc. You create two rules — one for mail coming in, one for mail going out — and leave internal mail alone. You need the Gmail Settings administrator privilege.
In the Google Admin console, go to Menu → Apps → Google Workspace → Gmail → Routing. To apply the rules to everyone, leave the top organizational unit selected; otherwise select a child organizational unit. On the Routing tab click Configure (or Add Another Rule if a rule already exists). In the Add setting box:
Rule 1 — a copy of mail from outside
Rule 2 — a copy of mail your team sends
Leaving mailboxes out. Two ways, from narrow to broad:
The Envelope filter does the opposite — Only affect specific envelope senders / recipients limits a rule to the addresses you list (a single address, a Pattern match regular expression, or Group membership) — and is the tool when only some mailboxes should be copied.
Timing. Google says rule changes can take up to 24 hours to apply; in practice it is usually much quicker. Routing also only recognises your own domain's outgoing mail if it passes SPF or DKIM, so keep those records healthy.
Exchange Online's mail flow rules can add a Bcc recipient to matching messages. Bcc keeps the copy invisible to everyone on the thread, and the original From, To and Cc are preserved. Again, two rules.
Before the rules: the recipient picker in a mail flow rule offers recipients from your directory, and a distribution group cannot be the added recipient. If the picker will not accept an outside address typed in, create a mail contact first — Exchange admin center → Recipients → Contacts → Add a mail contact, with the ingest address as its email — and pick that contact in the rules.
In the Exchange admin center (admin.exchange.microsoft.com), go to Mail flow → Rules and select Add a rule → Create a new rule. Then:
Rule 1 — a copy of mail from outside
Rule 2 — a copy of mail your team sends
Because each rule is scoped to mail crossing your organization's boundary, colleague-to-colleague mail is never copied.
Leaving mailboxes out. In either rule, under Except if…, select Add exception and choose The sender → is this person (or The sender → is a member of this group) for mail going out, and The recipient → is this person (or is a member of this group) for mail coming in. A group is the easier way to maintain the list; Exchange caches group membership for a few hours, so a change to the group is not instant.
Do not use journaling. Exchange's journaling feature also sends copies, but wraps each message inside a journal report whose sender is Microsoft's journaling address. Karmaflow.ai reads the report, not the message inside it, so every copy would be filed under the wrong sender. Use mail flow rules.
Timing. Microsoft says a new or changed rule can take 30 minutes or more to apply to mail.
Labels above follow Google's and Microsoft's own administrator help as of October 2026. Both consoles change their wording from time to time; if a label does not match what you see, look for the same idea — a rule that adds a recipient to messages crossing your organization's boundary, never one that redirects them.
If nothing arrives after five minutes, see Troubleshooting.
Attachments are not stored. Karmaflow.ai keeps each attachment's name, type and size, not the file. If attachments matter for an address, route that address to a group inbox as well.
One timeline per message. The thread row appears on the first external person's timeline — the sender for incoming mail, the first outside recipient for your team's. Other external people on the thread still get a contact record if they are new, but the message is not shown on their timeline.
A message is stored once. Copies are matched on the message's own ID. If one message reaches the ingest address twice — through the inbound rule and a Cc, say — it is stored once. If you also route an address to a group inbox, test deliberately: the two paths can de-duplicate against each other, so a message may appear in only one of them.
Automated mail creates nothing. Newsletters, out-of-office replies, bounces and anything from a no-reply address attach to an existing contact only. They appear under Messages that didn't reach anyone on the Email Sending page as Automated mail — no contact created, with the message linked, so if one turns out to be a person you can create the contact; their next message will attach by itself.
A team member who sends from a personal Gmail or Outlook.com address is not on one of your domains, so their messages are treated as a customer's and a contact may be created for them. Do not add gmail.com to Internal Email Domains — that would make every Gmail sender a colleague and stop their contacts being created. Exclude that mailbox from the provider rule instead, or let the record exist and merge it under CRM → Setup → Contact Cleanup.
Your provider's rule copies mail silently — nothing on a message says it was logged. Tell the people whose mailboxes are covered, and leave out the ones that handle personal or privileged matters.
Nothing arrives at all. On the Email Sending page, check Ingestion behavior reads Mailgun route provisioned. Then confirm the rule targets the right direction (Inbound messages / Outbound messages in Google; Outside the organization on the sender or recipient in Exchange), that it is Enabled (Exchange creates rules disabled), that enough time has passed (Google allows up to 24 hours, Exchange 30 minutes or more), and that the ingest address is spelled exactly as copied.
My team's replies are logged as received, not sent. The sender's domain is not in Internal Email Domains. Add it under Additional domains and send another test.
A message shows under "Messages that didn't reach anyone". Read the row — it says why. Matched no customer means every address was one of yours (a colleague-to-colleague message your rule let through); Automated mail means a newsletter, auto-reply or no-reply sender with no existing contact; Dropped by your pre-filter means your pre-filter agent refused it.
A customer's reply did not attach to the campaign thread. Copies arriving through a provider rule carry the original headers, so replies thread normally. A rule that rewrites the subject or strips headers breaks this — prefer a rule that only adds a recipient.
The message appears with the right time but was received hours later. That is correct: the stored date is the one the sender's mail client wrote, not the moment the copy arrived.