/

/

Agency operations

Agency operations

/

/

Why does client reporting still take days every month?

Why does client reporting still take days every month?

Agency operations

Agency operations

Why does client reporting still take days every month?

Why does client reporting still take days every month?

Rhobin

Rhobin

July 31, 2026

July 31, 2026

7 min read

7 min read

Client reporting takes days because the report is assembled at report time out of tools that date, delay, sample and expire the numbers differently, so most of the work is reconciliation rather than writing. It gets faster when the event data is stored once in a warehouse you control, because the monthly report becomes a query instead of a rebuild.

Client reporting takes days because the report is assembled at report time out of tools that date, delay, sample and expire the numbers differently, so most of the work is reconciliation rather than writing. It gets faster when the event data is stored once in a warehouse you control, because the monthly report becomes a query instead of a rebuild.

The symptom

It is the last week of the month. Someone on your team opens Google Ads, GA4, the Looker Studio dashboard and the client's CRM export, and starts moving numbers into a deck. It is not difficult work. It is just slow, and it happens again next month, for every client on the list.

The slow part is not the copying. It is the checking. Google Ads reports one conversion count, GA4 reports another, the CRM reports a third, and before the deck can go out somebody has to decide which number the client is going to see and be ready to explain the other two. Then the same person notices that last month's figure, in the report you already sent, no longer matches what the platform shows today. That needs explaining as well.

Two or three days per client disappear into this, every month, and the part that gets squeezed is always the same part: the paragraph where you tell the client what to do differently.

Why does it take days?

Because the report is assembled at report time. Nothing is stored in a form you control, so every month the numbers are gathered again from tools that each date, delay, sample and expire them differently. That assembly is the actual job, and it is the part a connector does not touch.

Your two main sources date conversions differently

Google Ads reports a conversion against the date of the click, not the date of the conversion. Google Ads Help is explicit about it: if the ad was clicked last week and that traffic converted this week, both the click and the conversion are reported back to last week. Analytics dates the event when it happened. So on a monthly boundary the two will not agree, by design, and no amount of re-checking changes that. Google Ads does offer "by conv. time" columns that report on the date the conversion occurred, which is the column that lets you compare like with like.

The numbers are still moving while you build the report

GA4 processing can take 24 to 48 hours, and Google's Analytics documentation states plainly that data in your reports may change during that window. Intraday data on a standard property arrives in roughly two to six hours, daily data in twelve or more depending on property size. Build the report on the first working day of the month and part of it is provisional. That is one reason a figure you already sent does not match the platform a week later.

The same question can return a different answer

On standard properties, GA4 samples once a query crosses 10 million events, per Google's documentation on data sampling, and sampling applies to reports, explorations and API requests alike. Results are scaled up to be directionally accurate, which is fine for a trend line and awkward in a deck where the client reads the number as a count. Thresholding works from the other side: Google withholds rows when demographic or Google signals data is involved and user volume is low, and those thresholds cannot be switched off. What that does to a monthly deck is the subject of GA4 sampling in client reports.

History quietly expires

Event-level data on a standard GA4 property can be retained for 2 or 14 months, and Google deletes data past the retention period automatically, on a monthly basis, permanently. Any year-on-year comparison that reaches past that window cannot come out of the interface, so it comes out of a spreadsheet somebody maintains by hand. That is more hours, and a single point of failure when that person is on holiday.

Automating the pull does not automate the agreement

This is why buying a reporting tool did not fix it. A connector removes the copying, which was the fast part. It does not decide which conversion definition wins, and it inherits the client's property limits: the Analytics Data API allows 200,000 core tokens per property per day on a standard property against 2,000,000 on 360, per Google's Data API quotas. Dashboards that query live spend those tokens every time somebody opens them. The reconciliation stays yours, which is the whole reason every tool shows a different number.

What good looks like

Two things move the timeline, and only one of them is technical.

The first is a written definition per client: what counts as a conversion, which source is the number of record, and which date logic the report uses. One page. It ends the monthly negotiation, and it turns the difference between platforms into a footnote you wrote once instead of a discussion you have twelve times a year.

The second is storing the event data once, in a warehouse you control, instead of fetching it again from each interface. GA4 can export raw, unsampled events to BigQuery daily or as a stream, per Google's BigQuery Export documentation. Once the events sit in a table, the monthly report is a query against a dataset that does not resample per question, does not threshold rows and does not delete last year. Reporting stops being assembly and becomes retrieval.

That is what Archon Pixel is for: a first-party measurement layer that captures around 25% more than a standard GA4 setup and lands the events in your own BigQuery, so the reporting layer reads from data you own rather than from four interfaces you rent. In the performance agency case we document, 14 hours per project came off the reporting work.

Be honest about the edges. A standard GA4 property caps the daily export at 1 million events per day, with filtering to stay under it, and the streaming export has no volume limit but costs an extra $0.05 per gigabyte, so a high-traffic client makes a choice with a price attached. Whether the setup repays itself depends on how many clients share a reporting cadence, how many sources each one needs, and whether anyone ever reads data older than the retention window. And stable, comparable numbers are not the same thing as complete ones: consent refusals, blockers and plain network failure keep a share of events out of any setup, with roughly 95% as a ceiling rather than a promise.

FAQ

Can a reporting tool not just do this for us?

It can do the pulling, and that is worth having. What it cannot do is decide which number is right when two sources disagree, or query data the client's property no longer holds. Connectors also read live APIs under that property's own quota, so the tool speeds up assembly and leaves the two slowest parts, reconciliation and history, exactly where they were.

Why will Google Ads and GA4 never agree?

Mostly because they date conversions differently, and because Google advises allowing 24 to 48 hours of processing before you compare final results. You can narrow the gap by comparing conversion-time columns against conversion-time data and by waiting out processing. You cannot close it, and a report that pretends otherwise creates a question on every call.

Does this mean we stop using GA4?

No. GA4 stays the interface the team uses day to day, and for most questions it answers them fine. The warehouse becomes the record: the place the monthly report reads from, because it holds event-level data that does not resample per query and does not expire on the retention schedule.

How much of the reporting time actually disappears?

The assembly and the reconciliation, which is the bulk of it. The analysis does not, and should not, because somebody still has to read the result and write what the client should change. The 14 hours per project in the performance agency case came out of the mechanical half.

Is it worth doing for a small client?

Sometimes not. One client, one source, one monthly PDF and modest traffic is a case where the current process is cheaper than changing it. It starts paying when the same reporting shape repeats across a portfolio, because you build it once and reuse it per client.

If you want to know where your reporting hours are actually going, a free tracking audit maps the sources, the definitions and the gaps on one client account, and tells you which part of the monthly job is fixable.

ArchonLabs

Marketing intelligence agencies run for their clients.

© 2026 Archon LabsPrivacyTermsBehind your agency, not in front of it.