<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>What broke this week · Remco Livain</title><link>https://www.livain.com/series/what-broke/</link><description>Post-mortems from real client and own-project work: what failed, how I found it, what I changed.</description><language>en</language><atom:link href="https://www.livain.com/series/what-broke/rss.xml" rel="self" type="application/rss+xml"/><item><title>A fix applied to the live page is not a fix: locking rebuilt pages against the generator that re-creates the error</title><link>https://www.livain.com/blog/fix-applied-to-live-page-not-a-fix-lock-rebuilt-pages-against-generator/</link><guid isPermaLink="true">https://www.livain.com/blog/fix-applied-to-live-page-not-a-fix-lock-rebuilt-pages-against-generator/</guid><pubDate>Mon, 26 Oct 2026 08:00:00 GMT</pubDate><description>Fix the generator, not the page, and lock rebuilt pages against it.</description></item><item><title>"The draft is ready" is not a status: what an agentic routine owes you when it reports on its own work</title><link>https://www.livain.com/blog/draft-is-ready-not-a-status-agentic-routine-verify-own-claims/</link><guid isPermaLink="true">https://www.livain.com/blog/draft-is-ready-not-a-status-agentic-routine-verify-own-claims/</guid><pubDate>Wed, 21 Oct 2026 07:00:00 GMT</pubDate><description>An agent must verify the claims it carries in its own state.</description></item><item><title>A shop platform upgrade took out the ad layer, not the shop: 60 disapproved Google Ads that don't come back when the pages do</title><link>https://www.livain.com/blog/shop-platform-upgrade-disapproved-google-ads-dont-come-back-by-themselves/</link><guid isPermaLink="true">https://www.livain.com/blog/shop-platform-upgrade-disapproved-google-ads-dont-come-back-by-themselves/</guid><pubDate>Wed, 14 Oct 2026 07:00:00 GMT</pubDate><description>Ad disapprovals are stored state. Somebody has to ask for the re-review.</description></item><item><title>A counted conversion with a made-up value is worse than no tracking: the flat €10 add-to-cart that flattered four markets' CPA</title><link>https://www.livain.com/blog/counted-conversion-made-up-value-flat-add-to-cart-placeholder/</link><guid isPermaLink="true">https://www.livain.com/blog/counted-conversion-made-up-value-flat-add-to-cart-placeholder/</guid><pubDate>Mon, 12 Oct 2026 07:00:00 GMT</pubDate><description>A conversion with a made-up value is worse than no tracking at all.</description></item><item><title>Price governance in ecommerce: how a promotion died silently on four country shops for a month</title><link>https://www.livain.com/blog/price-governance-ecommerce-promotion-died-silently-four-shops/</link><guid isPermaLink="true">https://www.livain.com/blog/price-governance-ecommerce-promotion-died-silently-four-shops/</guid><pubDate>Mon, 05 Oct 2026 07:00:00 GMT</pubDate><description>Declare a price once and audit the whole chain daily. The price guard itself can be the bug.</description></item><item><title>The LinkedIn account I deleted came back: why closing an account isn't closing it, and the four steps that are</title><link>https://www.livain.com/blog/closing-an-account-oauth-resurrection-gdpr-erasure-playbook/</link><guid isPermaLink="true">https://www.livain.com/blog/closing-an-account-oauth-resurrection-gdpr-erasure-playbook/</guid><pubDate>Fri, 02 Oct 2026 07:00:00 GMT</pubDate><description>Closing an account means revoking every sign-in grant behind it.</description></item><item><title>An expired promotion doesn't expire by itself: the ended sale still on the shop, the promotion asset still serving a 404</title><link>https://www.livain.com/blog/expired-promotions-price-mismatch-google-ads-promotion-assets/</link><guid isPermaLink="true">https://www.livain.com/blog/expired-promotions-price-mismatch-google-ads-promotion-assets/</guid><pubDate>Wed, 30 Sep 2026 07:00:00 GMT</pubDate><description>A promotion is a set of artefacts, not a date. End every one of them.</description></item><item><title>I called a keyword set off-product before I opened the client's shop: how to check product–query fit before cutting a Google Ads campaign</title><link>https://www.livain.com/blog/check-product-query-fit-before-cutting-google-ads-campaign/</link><guid isPermaLink="true">https://www.livain.com/blog/check-product-query-fit-before-cutting-google-ads-campaign/</guid><pubDate>Mon, 21 Sep 2026 07:00:00 GMT</pubDate><description>Open the client's shop before you call a keyword set off-product.</description></item><item><title>Nineteen days of ad spend with no measurement: the Google Tag Manager snippet was gone from the page, not broken in the console</title><link>https://www.livain.com/blog/gtm-snippet-removed-from-page-nineteen-days-no-measurement/</link><guid isPermaLink="true">https://www.livain.com/blog/gtm-snippet-removed-from-page-nineteen-days-no-measurement/</guid><pubDate>Wed, 16 Sep 2026 07:00:00 GMT</pubDate><description>When a conversion drops to zero, check the page source before the container, and tell Smart Bidding its data was wrong.</description></item><item><title>I replaced a monthly client report with a 90-day review — and found two broken comparisons in my own numbers</title><link>https://www.livain.com/blog/monthly-client-report-to-90-day-review/</link><guid isPermaLink="true">https://www.livain.com/blog/monthly-client-report-to-90-day-review/</guid><pubDate>Thu, 10 Sep 2026 07:00:00 GMT</pubDate><description>Compare equal windows, measured with the same ruler as the target.</description></item><item><title>My scheduled Claude Code routine failed three weeks running: what agentic workflows need that a written lesson doesn't give them</title><link>https://www.livain.com/blog/scheduled-claude-code-routine-failed-agentic-workflows-context/</link><guid isPermaLink="true">https://www.livain.com/blog/scheduled-claude-code-routine-failed-agentic-workflows-context/</guid><pubDate>Wed, 09 Sep 2026 07:00:00 GMT</pubDate><description>An agent has to know what its environment can do, and every lesson needs an owner.</description></item><item><title>The channel filter on my dashboard silently broke ROAS: how to attribute ad spend across sales channels</title><link>https://www.livain.com/blog/channel-filter-broke-roas-attributing-ad-spend/</link><guid isPermaLink="true">https://www.livain.com/blog/channel-filter-broke-roas-attributing-ad-spend/</guid><pubDate>Tue, 08 Sep 2026 07:00:00 GMT</pubDate><description>Ad spend lives per advertising channel, revenue per sales channel. Filter both or neither.</description></item><item><title>I named the cookie the obvious thing. So had the script that was already there.</title><link>https://www.livain.com/blog/i-named-the-cookie-the-obvious-thing/</link><guid isPermaLink="true">https://www.livain.com/blog/i-named-the-cookie-the-obvious-thing/</guid><pubDate>Tue, 01 Sep 2026 07:00:00 GMT</pubDate><description>Namespace what you add, and treat your own change as the first suspect.</description></item><item><title>The lead went out to a company. It had been struck off the register two years earlier.</title><link>https://www.livain.com/blog/the-lead-went-to-a-company-struck-off-two-years-earlier/</link><guid isPermaLink="true">https://www.livain.com/blog/the-lead-went-to-a-company-struck-off-two-years-earlier/</guid><pubDate>Mon, 31 Aug 2026 07:00:00 GMT</pubDate><description>Check a directory against the commercial register before it sends anyone a lead.</description></item><item><title>Forty-six live ads. Not one of them had a page to land on.</title><link>https://www.livain.com/blog/forty-six-live-ads-no-page-to-land-on/</link><guid isPermaLink="true">https://www.livain.com/blog/forty-six-live-ads-no-page-to-land-on/</guid><pubDate>Tue, 25 Aug 2026 07:00:00 GMT</pubDate><description>Somebody has to own the landing page of every ad.</description></item><item><title>Our ROAS doubled. We hadn't sold a thing more.</title><link>https://www.livain.com/blog/our-roas-doubled-we-hadnt-sold-more/</link><guid isPermaLink="true">https://www.livain.com/blog/our-roas-doubled-we-hadnt-sold-more/</guid><pubDate>Mon, 24 Aug 2026 07:00:00 GMT</pubDate><description>When a ratio jumps, check the denominator and the definition before you celebrate.</description></item><item><title>I scheduled a weekly check that could never run.</title><link>https://www.livain.com/blog/i-scheduled-a-weekly-check-that-could-never-run/</link><guid isPermaLink="true">https://www.livain.com/blog/i-scheduled-a-weekly-check-that-could-never-run/</guid><pubDate>Fri, 21 Aug 2026 07:00:00 GMT</pubDate><description>Schedule a check where its tools exist, and let it report "nothing" honestly.</description></item><item><title>We fixed checkout in production. The generator was still holding the bug.</title><link>https://www.livain.com/blog/we-fixed-checkout-in-production/</link><guid isPermaLink="true">https://www.livain.com/blog/we-fixed-checkout-in-production/</guid><pubDate>Thu, 20 Aug 2026 07:00:00 GMT</pubDate><description>A fix that never reaches the build engine gets rebuilt away.</description></item><item><title>Everything returned 200. Four leads still went nowhere.</title><link>https://www.livain.com/blog/everything-returned-200/</link><guid isPermaLink="true">https://www.livain.com/blog/everything-returned-200/</guid><pubDate>Wed, 12 Aug 2026 07:00:00 GMT</pubDate><description>Silent failures are the expensive ones. Make the systems shout.</description></item><item><title>My assistant created the same task three days running. The fix has a name: idempotency.</title><link>https://www.livain.com/blog/the-same-task-three-days-running-idempotency/</link><guid isPermaLink="true">https://www.livain.com/blog/the-same-task-three-days-running-idempotency/</guid><pubDate>Tue, 04 Aug 2026 07:00:00 GMT</pubDate><description>Ask what happens when it runs twice, and make the automation idempotent.</description></item><item><title>The form promised a copy by email. Nobody was sending it.</title><link>https://www.livain.com/blog/the-form-promised-a-copy-nobody-was-sending-it/</link><guid isPermaLink="true">https://www.livain.com/blog/the-form-promised-a-copy-nobody-was-sending-it/</guid><pubDate>Thu, 09 Jul 2026 06:45:00 GMT</pubDate><description>Every promise a form makes is a send you have to test end to end.</description></item><item><title>Yesterday's ad spend kept landing on today. Two bugs were wearing one costume.</title><link>https://www.livain.com/blog/yesterdays-spend-landing-on-today/</link><guid isPermaLink="true">https://www.livain.com/blog/yesterdays-spend-landing-on-today/</guid><pubDate>Tue, 30 Jun 2026 06:50:00 GMT</pubDate><description>Pin the day boundary to one timezone, and never show an estimate as a booked fact.</description></item><item><title>The AI handed me a number that was wrong in the most convincing way</title><link>https://www.livain.com/blog/the-ai-handed-me-a-number-wrong-in-the-most-convincing-way/</link><guid isPermaLink="true">https://www.livain.com/blog/the-ai-handed-me-a-number-wrong-in-the-most-convincing-way/</guid><pubDate>Wed, 10 Jun 2026 07:15:00 GMT</pubDate><description>Plausible wrong data survives longest. Check what a figure actually measures.</description></item></channel></rss>