Product
A CRM built around one rule.
Every message after the first is a reply to the one before it. Everything else — the inbox, the pipeline, the domain monitor, the alerts — exists to protect that chain and to get out of the way the moment a prospect answers. Built for founder-led outreach: real people, real domains, a few hundred conversations a day, not tens of thousands.
Threading
Reply in chain is not a feature. It is a rule.
Most tools offer "send follow-ups in the same thread" as a toggle. Keep Your Chain refuses to send a step greater than one without a parent Message-ID. The subject stays Re: the original, verbatim. The prior messages are quoted in both the plain-text and HTML parts. And References carries the whole chain, not just the last link — which is the detail most tools get wrong.
Message-ID: <{uuid}@trycustomerluv.com> — random, stored on the sent row
In-Reply-To: <{previous step's Message-ID}>
References: <{step 1}> <{step 2}> … <{previous}> — the full chain
Subject: Re: {original subject, verbatim}
Body: new text, then the quoted prior messages, in text/plain and text/html
Storing the outbound Message-ID on every sent row is what lets a reply from an address you never targeted still find its prospect. The forwarded-to-a-colleague case resolves through References, not the sender. Message-IDs are random, never time-derived, so your sequence doesn't carry an obvious shared prefix.
The one first email the system will ever start on its own initiative: a note to a person you were referred to ("talk to Raj"). It drafts it, you approve it.
The screens below show our own account. Halcyon Skin and the people in it are made up; the products and competitors are real.
Inbox
Every reply, every domain, one place
Replies to every sending domain arrive in one threaded inbox. Each thread carries the product, the competitor detected, the store, and a classification badge. Reply inline and the message goes out from the address the chain started on, with the right headers.
- Mine · theirs · All — opens on your threads, one tap to a teammate's
- Internal notes, visible to the whole account and never sent
- Hand off a thread honestly: a short reply from the new owner, in the same chain, with you on cc

What a reply can mean, and what happens
| Reply kind | State | What Keep Your Chain does |
|---|---|---|
| Human reply, any address in the chain | engaged | Stops the sequence, pauses sibling tracks at the same company, pushes to the owner's phone with a draft |
| "Talk to Raj instead" | referred | Stops, surfaces Raj's address, drafts step one to Raj for your approval |
| Out of office with a return date | deferred | Reschedules the next step to the return date plus one business day; nothing pushes |
| Bounce / NDR | bounced | Stops, flags the address, counts toward the domain's bounce rate |
| "No", "unsubscribe", "remove me" | suppressed | Global, every domain, every product, permanent |
| Install or signup from your app | installed | Stops the cold track, starts your welcome flow from your real domain |
Pipeline
Company × product, one state each
A company is a store or business keyed by its domain. Each product you sell is a separate track, but one company holds at most one active track at a time. Filter by product, competitor, or state. Bulk-approve prospects into a sequence. See installs this week and reply rate per sequence at the top.
Company-level lock. The same store never gets product A from one domain and product B from another in the same fortnight. Tracks queue behind each other, with a cooldown after a sequence exhausts.

Sequences
Four short steps, previewed against a real row
One template per product and competitor detected. Variables for the first name, store, competitor, the specific gap, the offer, and your hook. Every rendered step is previewed against a real prospect before the sequence goes live, and per-step reply rate tells you which line is doing the work.

| Step | Day (cumulative) | Job | Links |
|---|---|---|---|
| 1 | 0 | A specific observation about their business, one gap, a two-second ask | none |
| 2 | 4 | Your real differentiator; offer to send it in the reply | none |
| 3 | 10 | Proof from a peer in their category; one link, to your product domain directly | one |
| 4 | 14 | Two-line close: "closing the file unless you want it" | none |
Default cadence is days 0, 4, 10, 14; you can change the gaps, not the chain. Send windows follow the prospect's local business hours, weekdays, with jitter. A physical postal address sits in every signature and a plain-text opt-out line in every step — the CAN-SPAM requirements most cold senders skip.
Prospects
The first line of the email is already true
A built-in storefront scan reads each store's public site, captures its platform identifiers and country, and matches script tags and app embeds against a signature table to detect which competitor is installed. A person and their email come from a contact-finder you connect (Apollo) or from your own CSV; every address is verified before it can be emailed.
- Your own list first (CSV, with your suppression list), contact-finding second
- Detection coverage shown per product, so you know what the scan can and cannot see
- Approve, skip, or suppress — by hand, one screen, before anything sends

Domains
Domain health that acts before you notice
One row per sending domain, one colour: healthy, warming, degraded, or paused. The ramp is per mailbox and enforced — 10 a day in week one, then 20, then 30, and nothing raises it past that. A warmup partner runs alongside for the first month; we recommend one and note which you chose. When a domain slides, sends move to its healthier siblings and you get told. Pause stops the domain and tells everyone on the account.
The honest ceiling: about 30 cold sends a day per sender per domain at full ramp. Two people on three domains is roughly 180 new conversations a day. If you need 500+ a day from one seat, this is not your tool — and we'd rather say so here.

Google Postmaster Tools only reports once a domain sends real volume to Gmail, so those two rows fill in later. At launch volumes the decision is carried by the four signals you fully control: DMARC aggregate reports, blocklists, bounce rate and reply rate.
| Signal | Source | Healthy | Throttle | Pause |
|---|---|---|---|---|
| DMARC pass rate | Aggregate reports, parsed automatically | ≥ 98% | < 95% | < 90% |
| Domain reputation | Google Postmaster Tools · at higher volume | High | Medium | Low / Bad |
| Spam rate | Google Postmaster Tools · at higher volume | < 0.1% | ≥ 0.2% | ≥ 0.3% |
| Authentication | SPF, both DKIM keys, DMARC at p=quarantine, MX — checked on demand and nightly | all passing | — | any failing |
| Bounce rate | Your own send log, 7-day | < 2% | ≥ 3% | ≥ 5% |
| Reply rate | Your own send log, 7-day | ≥ 3% | falling 3 days | — |
Alerts
The reply on your phone, with the answer drafted
A cold reply answered in minutes converts at a different rate than one answered tomorrow. Keep Your Chain is a web app you add to your home screen; it pushes straight from the server. Only engaged and referred replies push. Before the alert fires, the thread is handed to an AI model with the prospect row and your own product guide, and a draft is stored on the thread. Tap the alert, edit or send. It never sends on its own.
When the rules meet a real deal: "not now, ping me in Q2" sets a deferral, not a dead file. A referral opens a fresh first email you approve. A cross-sell inside the cooldown waits, and the pipeline shows you exactly when it will go. The rules bend on timing; they never bend on the chain.

Seats
Every seat is a real person, with an honest From line.
A seat is a person with their own sender address on each domain. Every conversation has an owner — the sender the first email went out from — and the owner replies. Assignment is a rule: round-robin, or by product. If a teammate wants to take over a thread, they do not reply as you. They hit hand off: a short reply from their address, in the same chain, with you on cc. Same References, same conversation, real names. The audit log records who did what. Plans start at two seats and scale from there.
Under the hood
What you connect, and what we run.
Your mailboxes, not an email API
Email APIs ban cold outreach. So Keep Your Chain sends and reads through real mailboxes on your sending domains — Microsoft 365 today, Google Workspace next — through a single app connection you grant once. Replies land in the app and in Outlook, because they are the same mail.
Every send re-checked at the moment it goes
Window open in the prospect's time zone, mailbox under its daily cap, domain passing, nobody at the company replied or installed since the step was scheduled, address not suppressed. Then the message goes with the full References chain and the compliance footer, and the Message-ID Exchange actually used is read back and stored.
Your main domain stays clean
Cold mail never leaves your main domain. It goes from a second domain you own that points at the same site, so a curious prospect who types it lands somewhere real. The welcome flow, once they sign up, goes out from the main domain.
You bring a list, or we find one
Import a CSV with your existing suppression list, or connect a contact-finder and let the storefront scan tell you who runs a competitor. Everything you put in — contacts, threads, suppression — exports as CSV any time. Outbound webhooks on reply, install and state change for your CRM of record.
Want first access?
We're using it on our own outreach first. Waitlist members get first access when plans open, with founding pricing held for a year.