Metric

What is time to close the loop on customer feedback?

Definition

Time to close the loop measures how long it takes from a customer filing a feature request to the team shipping it and telling the requesters. It's the honesty metric of a feedback program: collecting requests is easy, and this number shows whether anything happens next.

Formula: Time to close the loop = median (shipped-and-announced date - request created date), over requests shipped in the period

What data do you need?

  • Request created timestamps
  • Status-change history with shipped/closed timestamps
  • Announcement or notification timestamps (changelog links) — required to measure the loop closing, not just the ship
  • Product area and segment fields for breakdowns
  • Only shipped-and-announced requests — open ones aren't in the population

SQL pattern

Median days from request to shipped and announced, by quarterPostgreSQL
-- The loop closes when requesters are told, so measure to announced_at.
-- No announcement tracking? Swap in shipped_at and call it time to ship.
SELECT
  date_trunc('quarter', announced_at) AS quarter,
  COUNT(*) AS closed_loop_requests,
  percentile_cont(0.5) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (announced_at - created_at)) / 86400
  ) AS median_days,
  percentile_cont(0.9) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (announced_at - created_at)) / 86400
  ) AS p90_days,
  percentile_cont(0.5) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (announced_at - shipped_at)) / 86400
  ) AS median_days_ship_to_announce
FROM feedback_items
WHERE shipped_at IS NOT NULL
  AND announced_at IS NOT NULL
GROUP BY 1
ORDER BY 1;

Common pitfalls

Using the mean.→ One two-year-old request destroys an average. Report the median with p90 for the tail.
Only measuring shipped requests and calling it program health.→ This metric is conditional on shipping — pair it with the share of requests that ever ship, or a fast team that ships 2% of requests looks great.
Counting shipped-but-silent as closed.→ The loop closes when requesters are told. Where the tool tracks notifications or changelog links, require them in the definition.

Where does this metric apply?

This metric commonly uses data from Canny, Featurebase, Aha!, Productboard, plus any warehouse models that provide the same grain.

Dashboards

Integrations

Metrics

Analytics

FAQ

What's a reasonable time to close the loop?
It depends on release cadence and request complexity — quarters, not days, for most B2B roadmaps. The trend and the tail matter more than the level: a rising p90 means requests are silently rotting.
How do I track the announcement half?
Feedback tools that link changelog entries to requests (Canny, Featurebase) give you a notified flag directly. Otherwise, approximate with the status change to shipped and audit occasionally whether announcements actually go out.