Back to notes

October 2, 2026 · 5 min read

Cloud Run Cold Starts Ruined Our Server-Side Tagging Launch Day

We launched server-side tagging on a major campaign day, and the first wave of traffic hit a cold container before anyone realized the min-instance setting was still at zero.

PostmortemServer-Side GTM

We timed a server-side GTM launch to coincide with a client's biggest campaign day of the quarter, which, in retrospect, is exactly the kind of decision that sounds fine in a planning meeting and terrible in a postmortem. Minimum instance count on the Cloud Run container had been left at zero during staging, and nobody had explicitly changed it before the production push, because it wasn't on the launch checklist as its own line item.

The first wave of campaign traffic hit a genuinely cold container. Cloud Run's cold start latency for that container, which included a moderately heavy enrichment step on each request, stacked up past several seconds on the very first requests of the surge. A chunk of early purchase events during the campaign's opening minutes either timed out client-side before the server round-trip completed, or landed late enough that downstream deduplication logic on the ad platform side treated them inconsistently.

A cold start that costs a few hundred milliseconds on a quiet afternoon costs real conversion events on a campaign's opening minute, when every request matters and nothing is actually warm yet.

The specific damage and the fix

  • Lost a measurable slice of purchase and conversion events in the campaign's first fifteen minutes, concentrated exactly in the highest-value traffic window.
  • Set minimum instance count to a non-zero value ahead of any known high-traffic event, now a standing pre-launch checklist item with an explicit owner.
  • Added a synthetic warm-up ping on a schedule leading into any known campaign start time, rather than relying on real traffic to keep instances warm.
  • Built a dashboard tracking server container response latency percentiles in real time during launches, so a latency spike is visible within minutes instead of discovered after the fact in a reconciliation.

What stung wasn't the technical miss — cold starts are a known, well-documented behavior. It was that we knew about them in the abstract and still didn't put 'verify minimum instance count' on the actual pre-launch checklist as its own explicit, checked item. Known risks that aren't on a checklist get skipped exactly as easily as unknown ones.