Product
A CRM built around one invariant.
Every message after the first is a reply to the one before it. Everything else in Keep Your Chain — the inbox, the pipeline, the monitor, the alerts — exists to protect that chain and to get out of the way the moment a prospect answers.
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 UUIDs, never time-derived, so a filter cannot learn a fingerprint across your sequence.
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 · Evelyn's · All — opens on yours, one tap to your partner's
- Internal notes, visible to both seats 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 | 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 | +6 | Proof from a peer in their category; one link, to your product domain directly | one |
| 4 | +10 | Two-line close: "closing the file unless you want it" | none |
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
Built-in scrapers read public storefronts and public app-store review pages. They capture the store's platform identifiers, country and currency, and match script tags and app embeds against a signature table to detect which competitor is installed. A person and a verified email come from an enrichment provider you connect; nothing enters a sequence unverified.
- Sources ranked by intent: competitor reviews first, your own data second, broad scraping last
- Detection coverage shown per product, so you know what a scraper can and cannot see
- Approve, skip, or suppress — by hand at first, by rule once your reply rate earns it

Domains
A postmaster that acts before you notice
One row per sending domain, one colour: healthy, throttled, or paused. Ramp is per sender and enforced — 10 a day in week one, then 20, then 30, advancing only while every signal stays healthy. Throttle halves the cap and rotates volume to healthy siblings. Pause stops the domain and tells both of you.

| Signal | Source | Healthy | Throttle | Pause |
|---|---|---|---|---|
| DMARC pass rate | Aggregate reports, parsed automatically | ≥ 98% | < 95% | < 90% |
| Domain reputation | Google Postmaster Tools | High | Medium | Low / Bad |
| Spam rate | Google Postmaster Tools | < 0.1% | ≥ 0.2% | ≥ 0.3% |
| Blocklists | Spamhaus, SpamCop, Barracuda — domain and relay IP | clear | — | any listing |
| 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.

Two seats
Two people, one system, honest From lines.
Every track 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 your partner 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.
Under the hood
Built for the inbox, not the dashboard.
Inbound without mailboxes
Each sending domain's MX points at an email-routing worker. Every reply arrives as an event with raw headers intact. No IMAP, no polling, nothing to add to Outlook. The CRM is the only inbox because there is no other inbox.
Outbound through a clean relay
Sends go through a reputable SMTP relay with your own 2048-bit DKIM key, per-domain daily caps, and a ramp schedule. Reverse DNS is verified — the detail that separates a real sender from a burner box.
Your real domain stays clean
Cold mail never leaves your product's domain. Lookalike sending domains redirect to it, so a curious prospect who types the domain lands somewhere real. The welcome flow, once they sign up, goes out from the real domain.