A closed loop report follows each inquiry past the first call and brings the outcome back into your marketing review: qualified, booked, won, cancelled or lost. When Trojan Digital Marketing, based in Indianapolis, helps with this, we start from a clean CRM export before any integration.
A dashboard built on messy stages only repeats the mess faster. If your ad numbers and sales numbers never agree, talk with us: the first strategy call is free, and during business hours we aim to reply within five minutes.
Decide which record represents the opportunity
A person, a property, and a project are not always the same unit. One customer can request several projects. Several people can contact you about one property. A single project can generate multiple calls and form submissions.
Give each project one ID that stays with it from the first call to the final invoice. Keep contact details associated with the appropriate person, but do not rely on an email address alone as the definition of a unique job. Shared household addresses, changed phone numbers, and repeat customers can complicate that shortcut.
Write a duplicate rule before you build any report. We do this first, because a customer who calls and then fills out the form is one lead counted twice. The second contact should update the existing opportunity. If the customer requests separate work, preserve that distinction.
Keep source observations separate from attribution decisions
A CRM source field usually describes an observation: a tagged campaign visit, a referral named by the customer, or a staff-entered explanation. Attribution describes a rule for allocating credit. Preserve the observation before applying a reporting rule. We never let the last ad click overwrite the original referral, because that erases how the customer first found you.
Use separate fields for original recorded source, latest recorded interaction where relevant, and customer-reported discovery. Allow unknown values. If a customer says a neighbor recommended the company and later clicks an advertisement, both events may be true. The business can report the accepted opportunity once while retaining several observations about its path.
Google Analytics campaign parameters help identify referring campaigns through tagged URLs. Maintain consistent names and preserve suitable source information through the inquiry route. Test the actual journey: redirects, embedded forms, or a handoff to another booking system may affect what reaches the business record.
Google Ads attribution models allocate conversion credit across eligible interactions. A platform's attributed result and a CRM's original source report therefore need not be identical. When the two disagree, we compare the counting rules before we call it broken tracking. Different definitions explain many gaps.
Define the joins the systems can actually support
An internal opportunity ID can connect the business's records, but an advertising platform may require its own supported matching fields. Name the identifier captured at intake, where it is stored, and which export uses it. Avoid collecting extra customer information simply because it might be useful later. If a record lacks a permitted matching field, retain the CRM outcome and mark the platform connection as unavailable.
Keep contact, opportunity, activity, and job records distinct where the process needs them. A single opportunity may involve several conversations and one accepted job. A repeat customer may create a new opportunity. Choose which relationship is counted in each metric, and document when a project expansion becomes a new job rather than a revision to the existing one.
Create a small data dictionary
| Field | Purpose | Owner |
|---|---|---|
| Opportunity ID | Connect events without counting the same project repeatedly. | CRM/system owner |
| Created date | Place the opportunity in its acquisition cohort. | System, with review |
| Original recorded source | Preserve the first known acquisition observation. | Marketing/system owner |
| Qualification status | Show whether the project matches agreed business criteria. | Intake or sales owner |
| Current stage and stage date | Show progression and time spent waiting. | Person responsible for the action |
| Outcome and reason | Explain wins, losses, cancellations, or unresolved work. | Sales/operations owner |
| Value definition | Distinguish quoted, accepted, completed, or collected value. | Business/finance owner |
Adapt this list to how your office really works. We'd rather keep a short list people fill in, because a required field nobody understands fills up with guesses. Explain why each item matters and who is responsible for correcting it.
Map business stages before mapping software events
- Business
- Start from the real business.
- Coverage
- Identify the places it actually serves.
- Office
- Do not turn a service area into an invented office.
Agree on the lead qualification rule and the point at which a booking becomes accepted work. State what happens when an opportunity reopens, a customer changes scope, or a project cancels after initially being marked won.
Keep stage history where the system allows it. A single current stage label cannot tell you whether a lead waited untouched for a week or moved through several meaningful conversations. Dates help distinguish slow sales cycles from process delays.
Google Analytics offers separate recommended lead events, including a later customer conversion event, in its event reference. Use platform events to represent your agreed business states, rather than redesigning the business around whatever event names happen to be available.
Preserve different kinds of value
An estimate is not collected revenue. An accepted contract is not necessarily completed work. A deposit is not the full project value. The report should say which value it uses and retain later changes when those matter to the decision.
Consider a hypothetical project quoted at $5,000, accepted at $4,800, and later reduced to $4,300 after a scope change. A report that permanently exports the first quote as revenue overstates the outcome. The correct treatment depends on the measure, but the data dictionary should make it explicit.
We won't put a made-up revenue value on every inquiry just to fill a dashboard. Estimated lead values can support a planning model when assumptions are disclosed. They should remain distinct from actual accepted or collected amounts.
Build a cohort report beside the activity report
An activity report asks what happened during a period: inquiries received, estimates sent, jobs accepted, or payments collected. A cohort report follows opportunities created during a particular period and shows their later outcomes as of a stated date. Both are useful, but dividing this month's spend by every job accepted this month can mix different acquisition periods. Our own Indiana microsite reporting keeps a fixed window too. For commercial roofing, we report four inquiries from 209 sites from June 29 through August 31, 2026. A TPO roofing inquiry on September 2 falls outside that window, so it isn't in the count, and missed calls aren't included.
Imagine a hypothetical April inquiry cohort with 40 unique opportunities. By the May review, 24 have qualified and eight have become accepted jobs. The figures below are invented to demonstrate reconciliation. They are not Trojan campaign results, expected performance, or a claim about any local market.
| Original recorded source | Unique April inquiries | Qualified by review | Accepted jobs by review |
|---|---|---|---|
| Paid search | 14 | 9 | 3 |
| Organic search | 12 | 8 | 3 |
| Referral | 6 | 4 | 2 |
| Unknown | 8 | 3 | 0 |
| Total | 40 | 24 | 8 |
Qualification rate is 24 divided by 40, or 60%. Booking rate among qualified opportunities is eight divided by 24, or about 33.3%. The cohort's inquiry-to-booking rate is eight divided by 40, or 20%. These denominators answer different questions. The table must also show or link to the open, lost, and disqualified records so the unbooked opportunities do not disappear.
Suppose the paid search acquisition cost assigned to this cohort is an invented $1,500, including the cost categories the business chose to include. Dividing by three accepted jobs gives $500 per accepted job as of the review date. If a paid job later cancels, retain the initial acceptance event and record the cancellation. A report of two currently retained jobs gives $750 per retained job. Label both definitions rather than silently replacing one with the other.
Now suppose May's activity report contains six accepted jobs from April inquiries and two from May inquiries. Its total of eight describes May sales activity. It does not establish that May's campaign spending acquired eight jobs. The cohort view is what prevents an improving or worsening sales backlog from being mistaken for immediate campaign performance.
Record maturity without inventing a final result
Include an observation date and the number of open opportunities. Compare cohorts at similar ages where practical, especially when the service requires a long estimate and approval process. A new cohort with many open proposals should not be compared as though every opportunity has already had the same chance to book.
A forecast can apply disclosed probabilities to open stages, but keep it separate from accepted work. An estimated pipeline value does not become collected revenue because it appears in the same dashboard. Review the forecast against later outcomes before using its assumptions to justify a larger acquisition budget.
Choose the first integration carefully
Start with one acquisition source and one downstream outcome. For example, connect a paid campaign's opportunities with confirmed customer outcomes after the office has validated the stages. A narrow implementation is easier to reconcile than simultaneous changes across every channel.
For suitable Google Ads setups, enhanced conversions for leads can combine imported offline outcomes with supported identifiers and hashed customer information to improve matching. Google's official documentation explains the setup and diagnostics. Implement the platform's requirements rather than assuming any CRM export can be uploaded safely or usefully.
Keep unnecessary personal details out of general reporting views. The marketing team often needs source, stage, timing, service type, and outcome, not the customer's entire conversation history. Access should match the role and purpose.
Check the current import route and the permitted data use
For implementations reviewed in September 2026, Google's enhanced-conversions documentation notes a migration of offline outcome uploads toward the Data Manager API beginning June 15, 2026. Verify the currently supported connection with the implementer before commissioning an integration from an older tutorial. The business brief should name the destination, supported method, owner, and diagnostic check without depending on outdated menu instructions.
Google's customer data policies apply requirements to data shared for enhanced conversions, including appropriate disclosure and consent where required. Decide which records are eligible before preparing an export. Hashing supported identifiers is part of a measurement implementation; it does not remove the need to review purpose, permissions, and platform requirements.
Keep general analytics collection separate from supported customer-data measurement features. Google's guidance on personally identifiable information warns against sending that information in Analytics data. Raw customer messages and contact details should not be placed into ordinary event fields, page URLs, or campaign labels to make a reporting join easier.
Specify retries, corrections, and missing outcomes
For each exportable event, record a stable business event ID, opportunity ID, stage, event time with its time zone, value definition, currency where applicable, and export status. The integration must map these records to the destination's supported fields and deduplication behavior. Reusing a stable identifier in the business system helps the team investigate; it is not a substitute for understanding the platform's rules.
Distinguish queued, sent, accepted, rejected, and reconciled states. An upload request being sent does not prove the destination accepted every record, and acceptance does not necessarily mean every record matched an advertising interaction. Keep rejected and unmatched cases visible with reasons where available. Give the responsible person a queue they can resolve rather than a dashboard that quietly excludes them.
If a connection fails after some records have been received, retry only through a process that respects the destination's duplicate handling. If a value changes, use a supported correction or adjustment procedure where available and retain the original business history. When a destination cannot accept a correction under its current limits, annotate the reporting difference and preserve the correct CRM record.
Define cancellation handling with the business before automation begins. A canceled accepted job may still be an historically accurate acceptance event, but it should not remain an active booking or count as completed revenue. The report can show gross acceptances, cancellations, and retained jobs together. This lets the owner see both acquisition and later operational loss.
Use a reconciliation worksheet the business can own
For each sampled opportunity, list the source record, expected stage event, expected value, destination record, and discrepancy. Separate missing data from mismatched meaning. A missing accepted date requires a record correction; an export using quoted value instead of accepted value requires a mapping change. These problems need different owners and should not be closed with the same generic “tracking fixed” note.
After correcting the sample, check the aggregate totals by stage and source for the same scope and dates. Follow unexplained differences back to records. Some discrepancies may be expected because of consent choices, matching limits, reporting windows, or attribution settings. Document those limits instead of forcing two systems to agree by deleting valid business outcomes or adding invented ones.
Make launch conditional on a readable reconciliation result, a documented exception queue, and a person who can stop a faulty export. Include recovery instructions in the handover. A small process that reliably explains its discrepancies is more useful for budget decisions than a polished report whose owner cannot trace a single accepted job.
Reconcile a sample before trusting the dashboard
Select a small set of known opportunities: one new inquiry, one qualified opportunity, one win, one loss, one duplicate, and one canceled job. Follow each from the original contact through the CRM and into the reporting output.
- Confirm that the opportunity exists only as many times as your counting rule permits.
- Check the source and created date.
- Verify that stage changes use the correct business definition.
- Compare exported outcomes and values with the source record.
- Confirm that a retry does not create another conversion.
- Record how corrections and late updates will be handled.
A successful API connection proves that systems can exchange data. It does not prove that they exchange the right meaning. Reconciliation is the step that establishes whether the integration represents the business accurately.
Make the loop part of a recurring review
Review missing sources, overdue stages, unexplained losses, duplicate opportunities, and unusually large values. Assign each issue to the person who can fix the underlying process. A dashboard owner cannot resolve an undefined sales stage alone.
When considering automation support, focus on reducing repetitive data handling while preserving review. Automated summaries and reminders can help; an unreviewed model should not silently decide that a customer was won or lost based on ambiguous notes.
Use the validated outcomes in your campaign planning, and include the dictionary, connections, exports, and access roles in a marketing ownership handover. A closed loop is durable when the business understands it well enough to maintain it after a staff or agency change.
Questions about closed loop reporting
Do we need a complex CRM to close the measurement loop?
No. Start with stable opportunity IDs, consistent stages, dates, source observations, and clear ownership. A controlled export can be sufficient for an initial report. Automate after the records and their meaning can be reconciled.
Why do Google Ads and CRM totals differ?
They may use different source rules, attribution, dates, matching requirements, or counting definitions. They may also contain errors. Document expected differences, then trace unexplained discrepancies through a sample of real opportunity records.
Should an estimate be reported as revenue?
Keep quoted value, accepted value, completed work, and collected amounts separate. Use the value definition appropriate to the decision and preserve later changes. A forecast or estimate should remain explicitly labeled rather than appearing as realized revenue.



