Reporting cockpit validation, before the later outage
25/25
- Before
- Historical workbook validation
- After
- 25 of 25 checks OK
Lead generation with a call centreClient work
I built a lead-gen reporting cockpit, repaired a silent n8n failure, and separately built scheduled Google Ads imports from call-tracking data.
The brief
A US lead-generation business with a call centre needed to compare ad spend with calls, form leads and revenue. I built a Sheets cockpit with hourly, month-to-date and weekly views, plus account, campaign and keyword selectors.
I also worked on its offline conversion imports into Google Ads. That was a separate engagement. A successful ad-platform import does not prove that a reporting dashboard is fresh, and a working dashboard does not prove that Google accepted a conversion.
Sounds familiar?
The investigation
I traced the flow from the source API responses through the n8n merge and into the sheet writes. An empty conversions branch made the merge emit no items. The downstream writes never ran, but the workflow still ended in success.
There was a second problem inside Sheets. Static staging copies could go stale, and copying date values introduced a time component. Report formulas used exact-date equality, so a date with a time attached no longer matched the report’s clean date.
Handover
Delivery noteDelivered May 2026
I repaired the merge so an empty input would not discard the other branch. On the verified scheduled run, the hourly reporting source received 96 rows instead of none.
I then wrote the fault-tolerant redesign: live staging imports, canonical text join keys, labelled import errors, freshness checks and a pipeline heartbeat that counts rows written. That architecture makes an empty run visible instead of presenting it as a plausible business zero. The evidence for this case establishes the merge repair and the redesign documents; it does not establish that every part of the redesign was deployed.
The conversions branch still returned no rows on the repair run. Restoring the reporting flow did not create missing source data or close that separate investigation.
The brief
The other scope was to send qualified form leads and inbound calls from WhatConverts into Google Ads. I consolidated the upload paths around the WhatConverts API, with Apps Script rewriting the upload sheets and Google Ads reading them through scheduled imports.
These were scheduled imports from Sheets. They were not a direct Google Ads API upload implementation.
Handover
Delivery noteDelivered May 2026
I replaced the rejected phone-number matching route with click-based imports for inbound calls that carried a valid GCLID. I kept forms and calls in separate upload files, retained the lead-quality value tiers, and left the source API as the source of truth. The reporting sheet became a cache and audit copy.
The handover included the refresh schedule and the manual authorisation step needed to install its daily trigger. I documented which old upload routes should stay disabled.
Before → after
Client work Done for real clients. Client details are anonymised.
Reporting cockpit validation, before the later outage
25/25
Rows written to the hourly reporting source on the verified repair run
0 to 96
Separate form-lead import summary in Google Ads
| Scope | Observed result | Read on |
|---|---|---|
| Reporting cockpit, historical validation | 25 of 25 checks OK, before the later outage | May 2026 |
| Reporting cockpit, verified merge repair | 0 to 96 hourly-source rows written | 17 July 2026 |
| Separate Google Ads form-lead import | 58 successful rows, 0 errors | 8 May 2026 |
Notes on the numbers
The form-lead import summary is not a count of scheduled jobs. The separate inbound-call preview still had rows awaiting processing at handover. I do not roll those two results into an all-clear for every import.
A note from Daniilbefore you decide
A pipeline’s success flag is only one check. I also need to know whether it delivered rows, whether the source is fresh, and whether the receiving platform accepted the intended conversions. Those are separate questions, even when the same business uses all three numbers to make decisions.
— Daniil
I reconstructed a US education provider’s Meta lead collapse from campaigns, events and page checks, delivering a working hypothesis and remediation plan.
The first answer is free, within one working day. Or write directly: next@taskfordaniel.com