# The Moment, Measured

*Published 2026-08-26* | Author: brad-webb

<blockquote><p><strong class="lede-label">tl;dr</strong> <span class="lede-lead">Open rates lie to you about all six stages at once.</span> They measure the channel, not the moment. This is part 3 of 3 on personalization, the measurement: four numbers that survive contact (moments seen, moments cleared, touches landed in-window, accounts that moved), why time-to-touch is the master metric, and how a per-run record turns measurement from a quarterly project into a query.</p></blockquote>

<p>The moment from part 2 is back on the bench.</p>

<p><code>pricing → comparison → repeat (7d)</code>. Three visits, one account, seven days. In <a href="/field-notes/anatomy-of-a-moment">part 2</a> I walked through the six stages between that signal firing and a relevant touch landing: signal, identity, score, Play, bounds, record. I ended on a promise: part 3 would be the proof. What to count, what to ignore, and why open rates will lie to you about all six stages at once.</p>

<p>This is that note. It is shorter than you would expect, because the honest version of measurement usually is.</p>

<h2>The open-rate lie</h2>

<p>Here is what took me too long to admit. For about a year, the best-looking number in our funnel review was a 61 percent open rate on one nurture sequence (illustrative of the shape, not a benchmark). It went up almost every month. I kept reporting it, partly because it was the only number that reliably went up.</p>

<p>That sequence sourced nothing. Not one meeting I could trace. The open rate was measuring our subject lines, our sender reputation, and the aggressiveness of Apple's mail privacy proxy. It was not measuring whether we had found a real moment, resolved the right account, scored it honestly, or landed a touch while the case inside that account was still open.</p>

<p>Run an open rate against the six stages and watch what it can actually see. Whether the signal was real: no. Whether the identity was right: no. Whether the score was honest: no. Whether the Play was the right response: no. Whether the bounds held: no. Whether the touch landed in the window: also no. An open tells you a rendering event probably happened on a device that may belong to a person. That is the entire claim.</p>


METRIC AUTOPSY (interactive: choose a metric and see which of the six stages it can actually see)
What each metric can see across the six stages (qualitative, not a benchmark):
Open rate: sees none of the six stages. Verdict: a rendering event on a device. That is the entire claim.
Reply rate: sees fragments of identity and Play. Verdict: a human decided something. Not which moment, not whether the window was open.
MQL count: sees a fraction of stage one. Verdict: form fills against a definition nobody audits.
Time-to-touch: sees signal, Play, record; the rest by implication. Verdict: every unbuilt stage shows up as elapsed time.
Moments cleared: sees stages one through five. Verdict: every stage had to pass for this number to increment.
14-day movement: sees the outcome, via the record. Verdict: the only outcome here; uninterpretable without fired, cleared, landed.


<p>Every channel metric has this problem to some degree. Reply rate at least involves a human decision, which is why it survives longer under an autopsy than opens do. But it still cannot tell you whether the reply came from the account whose moment you were answering, or three weeks after the moment expired.</p>

<p>Channel metrics measure the channel. If the last two parts of this series argued anything, it is that the channel was never the scarce thing. The moment is.</p>

<h2>What the vendor counts is not what you count</h2>

<p>Chris wrote yesterday about <a href="/field-notes/ai-pricing-broke-this-year">what your vendors started counting</a>, and his test for a pricing meter is the right test for your own metrics too: does the number move when the value moves?</p>

<p>A vendor's meter answers "what am I paid for." Your funnel metrics answer "what is working." Different questions, same discipline. Most teams apply real rigor to the first (usually at renewal, under duress) and none to the second. Then they optimize the numbers that were cheapest to collect, which is how a 61 percent open rate ends up in a board deck.</p>

<h2>The four numbers that survive</h2>

<p>Measure the stages, not the channel. Four counts, in order, each one exposing a specific part of the chain from part 2.</p>

<p><strong>Moments seen.</strong> How many times did a pattern you named actually fire inside its window? <code>pricing → comparison → repeat (7d)</code> either fired eleven times last week or it did not. This number exposes stage one: if it is zero, you do not have a signal problem, you have a definition problem. Nobody wrote down what counts as a moment.</p>

<p><strong>Moments cleared.</strong> Of those, how many made it through all six stages: identity resolved above your confidence bar, score over your threshold, an approved Play matched, bounds checked. Cleared-to-seen is the health of your machinery. This is the number I would put on the wall instead of the MQL count.</p>

<p><strong>Touches landed in-window.</strong> Of the cleared moments, how many produced a touch while the moment was still a moment. Not sent. Landed, inside the window the pattern defines. This exposes the gap between having an execution layer and having a queue.</p>

<p><strong>Accounts that moved.</strong> Within 14 days of the touch: a reply, a meeting, a return visit, a second person from the account showing up. Movement, not opens. This is the only one of the four that resembles an outcome, and it is deliberately last, because it is uninterpretable without the three above it.</p>

<p>Fired, cleared, landed, moved. Four integers. If you can produce them for one Play, you understand your motion better than most teams with a forty-tile dashboard.</p>

<h2>The master metric</h2>

<p>If I could keep only one number, it would be time-to-touch: the elapsed time between the signal firing and the touch landing.</p>

<p>Part 1 made the argument for why: the value of a response decays with the case that prompted it. Somebody inside that account is building a case or losing an argument, and the window is measured in hours. A perfect touch that lands on day four is a different, worse product than a decent touch that lands in twenty minutes.</p>


TIME-TO-TOUCH VS THE MOMENT (interactive: a slider over hours between the signal firing and your touch landing)
Three worked rows (all values illustrative, not a benchmark):
Touch lands +20 minutes: the case is still open on their screen. You joined the conversation.
Touch lands +26 hours: same week, cooling. You are re-opening the case, not joining it.
Touch lands +3 days: the relay-race number. Somebody else's touch got there first, or nobody's did.
The window itself is whatever your pattern defines.


<p>Time-to-touch is also the most honest summary statistic of the whole chain, because every stage you have not built shows up in it. No signal definitions: infinite. Manual identity resolution: add a day. Scoring by standup: add another. Improvised responses: add two more. Our old chain, the <code>signal → Slack ping → spreadsheet row → standup → touch</code> relay I confessed to in part 2, had a time-to-touch of about three days on a good week. The number was embarrassing, which is exactly why we never measured it.</p>

<h2>The ledger</h2>

<p>Here is the part that makes all of this cheap instead of heroic.</p>

<p>If every run writes a record (what was seen, why it qualified, what ran, what happened) then the four numbers are not a measurement project. They are a query. <code>I ran pricing-follow-up-v2 against acct_4471</code> plus the signal, the window, the score against the threshold, the channel, and the outcome: sum those lines by week and the ledger falls out. Fired is a count of signal lines. Cleared is a count of run lines. Landed is a timestamp subtraction. Moved is a join against what the account did next.</p>


THE LEDGER IS A QUERY, NOT A PROJECT (static figure: one week of record lines summed into the four survival numbers)
Five sample record lines, first person (accounts invented; all values illustrative, not a benchmark):
I ran pricing-follow-up-v2 against acct_4471 · score 0.78/0.70 · email · landed +22m · reply
I ran docs-deep-dive-v1 against acct_2210 · score 0.74/0.70 · email · landed +41m · no movement yet
I saw pricing → comparison at acct_3094 · score 0.61/0.70 · did not clear, no run
I ran pricing-follow-up-v2 against acct_5117 · score 0.81/0.70 · slack-connect · landed +18m · meeting
I saw repeat-visit (7d) at acct_1866 · identity confidence 0.44 · below bar, treated as anonymous
... 6 more lines this week
The summary row: 11 moments fired → 7 cleared all six stages → 6 landed in-window → 3 moved within 14 days.
Record grammar per the Bryn audit log: what was seen, why it qualified, what happened.


<p>We rebuilt our own funnel review this way, <a href="/field-notes/we-are-customer-zero">on our own funnel</a>, and the first honest version took an afternoon, because the log already had everything. The dashboards we retired took longer to cancel than the ledger took to build. I made the general form of this argument in <a href="/field-notes/proof-of-claims">Proof of Claims</a>: the record is not overhead on the work, the record is how you know the work happened.</p>

<p>This is the job <a href="/bryn">Bryn</a> does with the numbers. Bryn is not another dashboard to watch. It is the governed execution layer that runs Plays through your stack, and every run it executes writes the line the ledger needs: what was seen, why it qualified, what happened. The measurement is not a feature bolted onto the agent. It is the exhaust of doing the work correctly.</p>

<h2>Run the count</h2>

<p>The gift, this time, is a week of honesty. Pick one Play if you have one, or one manual motion if you do not. For one week, count four things: how many times your named pattern fired, how many of those cleared every stage, how many touches landed inside the window, and how many accounts did anything at all within 14 days. Ignore opens entirely. You are not allowed to look at them.</p>

<p>Then compare cleared to fired before you touch a single line of copy. In my experience the copy was never the problem. The chain was, and the four numbers point at the broken stage with a specificity no channel metric will ever give you.</p>

<h2>Part 3 of 3</h2>

<p>That closes the series. Part 1 was the why: tokens are free, moments are scarce, and <code>{FirstName}</code> was never personalization. Part 2 was the how: six stages between the signal and the touch, each one a place teams silently fail. This was the proof: four numbers that survive contact, one master metric, and a ledger that makes the counting free.</p>

<p>The moment is still not exotic. Some version of <code>pricing → comparison → repeat (7d)</code> fired against your funnel this week, and now you know what it has to clear and how to check whether it did.</p>

<p><strong>Stop watching signals. Start running them.</strong></p>

<hr>

<h3>Further reading</h3>

<ul>
<li><a href="/field-notes/the-firstname-fallacy">The {FirstName} Fallacy (Civic Field Notes)</a>: part 1, the why.</li>
<li><a href="/field-notes/anatomy-of-a-moment">Anatomy of a Moment (Civic Field Notes)</a>: part 2, the mechanics.</li>
<li><a href="/field-notes/ai-pricing-broke-this-year">AI Pricing Broke This Year (Civic Field Notes)</a>: Chris on what vendors count, and the meter test this note borrows.</li>
<li><a href="/field-notes/proof-of-claims">Proof of Claims (Civic Field Notes)</a>: the longer argument for receipts over claims.</li>
<li><a href="/field-notes/we-are-customer-zero">We Are Customer Zero (Civic Field Notes)</a>: how we run Bryn on our own funnel.</li>
</ul>

Source: https://www.civic.com/field-notes/the-moment-measured
