A paid-search click can happen in one reporting period, create a lead in the next, become qualified later, and produce revenue later still. The resulting records may also reach the CRM and Google Ads at different times. When a monthly review treats all of those moments as one “conversion date,” the reports can disagree without any tracking failure.
The remedy is not to force the totals to match. It is to identify which clock each report uses, preserve the relevant timestamps, and state which period is supposed to own each outcome. This is a temporal reconciliation problem—not a general conversion-tracking audit or a source-to-CRM implementation guide.
One outcome can have several legitimate dates
Google Ads conversion time reporting becomes easier to interpret when a single paid-search record is separated into six moments or rules:
| Clock | What it answers | Example field or rule | |—|—|—| | Ad-interaction time | When did the attributable click or other eligible ad interaction happen? | ad_interaction_at | | Lead-creation time | When did the business first create the lead record? | lead_created_at | | Commercial-event time | When did qualification, opportunity creation, or revenue actually occur? | qualified_at, opportunity_created_at, revenue_event_at | | Processing time | When was the event written, submitted, accepted, or made visible in another system? | crm_written_at, upload_submitted_at, platform_visible_at | | Attribution and reporting anchor | Which eligible interaction receives credit, and does the report place the result on the interaction date or event date? | interaction-aligned or conversion-time view | | Maturity and as-of time | At what cutoff was the report frozen, and which outcomes had enough time to arrive? | report_as_of_at, maturity_state |
These fields are not interchangeable. Conversion lag is the elapsed time between an ad interaction and a later conversion event. Processing latency is the interval between an event and its availability in a destination system. Sales-cycle maturity describes whether enough time has passed for a cohort to reach the chosen commercial outcome. Period assignment is the reporting rule that decides where the outcome appears.
Google Ads documents this distinction directly. Attributed conversions are generally organized by the impression or click time in standard reporting, while the relevant “by conv. time” columns organize them by the conversion date. Google also warns against comparing its reports by upload date because upload date is not a supported conversion-reporting date. Those rules are summarized in the current offline conversion discrepancy guidance.
Treat attribution as a rule, not a timestamp
“Attribution time” can be a misleading label. An attribution system does not necessarily create a new business-event timestamp. It applies eligibility and credit rules to connect an outcome with an earlier interaction, then exposes that relationship through a reporting view.
That is why two Google Ads columns can assign the same conversion to different periods without disagreeing about whether the conversion exists. The interaction-aligned view supports questions about the eventual outcomes generated by a click cohort. The conversion-time view supports questions about when the attributed events occurred.
The Google Ads offline conversion FAQ recommends using “All conv. (by conv. time)” and segmenting by conversion action when checking whether imported conversions are reported accurately. The Google Ads API reference also treats conversion_date_time as the time the conversion occurred and requires a time-zone offset. Neither statement makes upload time a substitute for event time.
Build the Conversion Clock Ledger
Use one row per conversion event, not one row per contact. A lead may qualify, become an opportunity, and produce revenue as separate events with separate timestamps and conversion actions.
The minimum ledger is:
| Field | Purpose | |—|—| | event_key | Stable identifier for one business event; also supports deduplication review | | business_record_key | Joins the event to the lead, account, deal, or order without exposing unnecessary personal data | | ad_interaction_at_raw | Original timestamp and offset for the eligible Google Ads interaction, when available | | event_name and event_version | Defines whether this row is lead creation, qualification, opportunity, or revenue | | business_event_at_raw | Timestamp recorded by the system that owns the event | | crm_stage_at | Time the record entered the relevant commercial stage, if that evidence exists | | upload_submitted_at | When the outbound job sent the event | | upload_result_at and upload_status | When the destination accepted, rejected, or returned the record | | platform_visible_at | First observed appearance in reporting, if monitored | | reporting_anchor | Interaction time, conversion time, CRM event time, or another explicitly named rule | | report_timezone | Time zone used to create day, week, or month buckets | | report_as_of_at | Exact extraction or refresh cutoff | | maturity_state | Open, immature, mature, reversed, or another governed state |
Preserve raw timestamps and offsets, then add normalized UTC values for joins. Do not overwrite the source values in the name of consistency. A time-zone correction should be reproducible and should not erase the evidence needed to explain why a record crossed a period boundary.
CRM stage timestamps also need explicit ownership. HubSpot, for example, currently documents stage-calculated properties such as date entered, date exited, and time in stage. Other CRMs expose different history and retention behavior. Confirm the fields available in the actual account before relying on them; the durable requirement is to preserve when the commercial milestone occurred, not to assume that the current stage value contains its history.
Assign the same record to the right periods
Consider an illustrative sequence:
- an ad click occurs late in Period A;
- the lead is created and qualified in Period B;
- revenue is recorded in Period C;
- the revenue conversion is uploaded and becomes visible during Period C.
The record can legitimately appear in several reports:
| Reporting question | Appropriate period assignment | |—|—| | Which click cohort eventually produced the qualified lead or revenue? | Period A, using interaction-aligned attribution | | How many attributed qualifications or revenue events occurred in the period? | Period B or C, using the timestamp of the selected conversion action | | When did sales accept or qualify the lead? | Period B, using the governed CRM milestone timestamp | | When did the business recognize the chosen revenue event? | Period C, under the company’s documented revenue-event rule | | Was the data pipeline current when the report was reviewed? | Use submission, result, and visibility timestamps as freshness evidence—not as performance periods |
This sequence is not a benchmark or client result. It shows why a single monthly “Google Ads versus CRM” comparison can mix acquisition, operations, and realized outcomes.
Reconcile a period without forcing equality
Use a period-assignment bridge in this order.
1. Name the question
“How did paid search perform last month?” is too vague. Decide whether the report evaluates an interaction cohort, business events that occurred during the month, events processed during the month, or a mature revenue cohort.
2. Fix the boundary
Record the period start and end, time zone, included conversion actions, attribution view, CRM event definition, and as_of timestamp. Re-run both systems with that contract before interpreting a difference.
3. Separate cross-period movement
For an interaction-aligned period, identify conversions attached to clicks inside the period even when the business event happened later. For a conversion-time period, identify events that occurred inside the period even when their attributed clicks happened earlier. These are displaced records, not automatically missing records.
4. Isolate freshness
Compare business-event time with upload, result, and visibility time. A record that exists in the CRM but has not yet reached or appeared in Google Ads is pending at the chosen as_of cutoff. The current Google Ads guidance notes that processing delays can occur, so a recent report can change after extraction. The team should preserve the cutoff rather than silently replacing an earlier result.
5. Test maturity
Review the company’s own distribution from click to the selected event. Google Ads provides conversion-lag reporting and documents a “Days to conversion” segment for understanding delay in eligible campaigns. Use that evidence to label recent cohorts as incomplete; do not invent a universal waiting period.
6. Escalate only the residual
After clock alignment, classify the remaining records as rejected, unattributed, duplicated, reversed, outside the conversion window, missing a required timestamp, or genuinely unexplained. That residual belongs in a tracking or integration investigation. The period shifts do not.
Use three diagnostic outcomes
The temporal diagnostic should end with one of three findings:
- Period-assignment difference: the same accepted events exist, but interaction-time, conversion-time, or CRM-event views place them in different buckets.
- Freshness difference: event-time totals converge when the
as_ofcutoff moves and processing completes. - Residual data difference: matched boundaries and mature cutoffs still leave missing, rejected, duplicated, or differently defined events.
Only the third finding, by itself, establishes an unexplained data reason to enter a broader tracking QA. A material freshness delay may still require an operational repair, but it should not be confused with a missing event. This prevents teams from rebuilding tags or integrations to solve a difference created by reporting definitions.
Put a time contract on every recurring report
Every paid-search performance table should disclose:
- the cohort anchor;
- the business event and version;
- the attribution or reporting view;
- the reporting time zone;
- the
as_ofcutoff; - the maturity rule;
- whether recent periods can be revised;
- the owner of the event timestamp and the owner of the report.
Do not combine click-cohort efficiency and in-period revenue realization into one unlabeled total. Both views can be useful, but they answer different questions.
What to check first
Take one conversion that crossed a reporting-period boundary and reconstruct its complete clock: ad interaction, lead creation, commercial milestone, upload, platform visibility, reporting anchor, and as_of cutoff.
If the record moves to the expected period when the reporting anchor changes, the issue is definitional. If it appears after the cutoff advances, the issue is freshness. If it remains absent after both tests, preserve the ledger row and escalate the residual to the appropriate tracking, CRM, or paid-search owner.
How did this article land?
Choose one reaction. You can change it anytime.