# Match ad spend with recorded intake stages

Canonical page: https://agents.paretoid.com/workflows/match-ad-spend-with-recorded-intake-stages/

Category: Google Ads

Practice relevance: cross-practice. A general operational method. Review the stated tool and jurisdiction limits before use.

Jurisdiction/provider scope: 

Compare spend with inquiries, consultations, and staff-confirmed retained matters, while keeping unmatched records visible.

Status: Proposed / not tested. The public source describes the problem. Documentation supports only the stated method components; no result from this recipe has been verified.

Verification: Source methods and reported problems have been reviewed. We have not run the adapted workflow. The sample below describes expected behavior on synthetic data, not a customer result.

## The problem

Compare spend with inquiries, consultations, and staff-confirmed retained matters, while keeping unmatched records visible.

Why it matters: Click and call totals do not show whether inquiries reached consultation or retention. Comparing recorded stages with spend makes attribution gaps visible without claiming that an ad caused a matter or a financial return.

## Sources and evidence

- pain: [Pain evidence: Public discussion](https://www.reddit.com/r/googleads/comments/1u77f7z/inhouse_marketer_at_a_law_firm_need_help_with/)
  original post 2026-06-16. A ten-attorney firm's marketing coordinator reports spending approximately $10,000/month without conversion tracking, unable to connect calls or clicks to clients; self-reported numbers, not ROI evidence.

- method: [Method: Google Ads lead measurement and imports](https://support.google.com/google-ads/answer/10029210?hl=en)
  Google documents qualified/converted lead stages and Data Manager imports. Current guidance flags the June2026 Data Manager API migration. This recipe only reconciles prepared exports; it uploads no data.

- method: [Method: Google Ads lead measurement and imports · supporting guide 2](https://support.google.com/google-ads/answer/15713840?hl=en)
  Additional official capability reference. The complete adapted recipe has not been tested.

Source checked: October 15, 2026. Pain accounts are self-reported. Documentation supports components; this adapted recipe and prompt have not been tested.

## Suggested approach

Start when: Weekly Ads export plus approved anonymized intake-stage export

1. join using existing firm-internal attribution IDs, preserve unmatched records and distinguish inquiry/consult/retained

2. Keep source references and report unknowns instead of filling gaps.

3. The responsible reviewer checks the report before any separately approved action.

## What you need

- Existing authorized access to the correct source account and records; no new login, credentials, installation or permission grant is included.

- Responsible lawyer/operations reviewer approves scope, definitions and any later action.

- AI optional; use only approved minimized data and retain originals separately.

- Use synthetic inputs first. Keep real data in firm-approved accounts and processing, with appropriate access, confidentiality and retention controls. Aliases alone do not anonymize records. Never paste credentials, API keys or unnecessary client details.

## How to use

Documentation-checked component path; proposed workflow, not tested

- Aggregate spend alone cannot establish individual attribution. Existing CRM IDs/source capture and historical stage events may be absent.

Access and setup:

- The live account, entitlement, exact headers, records and field coverage have not been observed.

### 1. Download scoped ad-spend data

Tool: Google Ads

Location: Correct customer account > Campaigns statistics table > date/columns/segments > Download > Excel CSV or XLSX

Display campaign identity, period, cost and selected measurement columns. Download the visible table after checking account, currency, timezone, dates and filters. Preserve native headers, totals and the source file.

Expected output: Native campaign-period statistics export.

Next step: Open locally; capture all report settings in Scope.

Check before continuing: The download is aggregate advertising data, not a click-to-client ledger. Do not multiply each campaign spend by its number of lead rows.

Execution status: Public official documentation checked 2026-10-15; no login, export, live query, import, installation, configuration, message or client workflow was executed.

Step documentation: https://support.google.com/google-ads/answer/2404176?hl=en

### 2. Ask the in-app assistant for the source report

Tool: Lawmatics Merlin Copilot, optional

Location: Left navigation > Merlin > Copilot

With an already approved seat and firm-wide reporting access, paste the prompt. Open the returned report/export or inspect its preview; if unavailable or incomplete, use the native report route below. Do not accept mutation previews, routines or feature-request sending.

Prompt:

```text
Return a read-only intake matter report for [COHORT] with existing Source, Campaign, Created At, Converted At, Status and Stage, plus [EXACT EXISTING ATTRIBUTION FIELD] if recorded. Include record references where supported. Do not backfill IDs, infer sources, estimate missing stages or value, upload conversions, edit records or send data to Google.
```

Expected output: A report/one-time export or explicit unsupported/missing-field result; exact custom query coverage is not promised.

Next step: Check actual fields and records, then use the native CSV path where a report is returned. Prose alone does not certify completeness.

Check before continuing: Existing firm-approved AI entitlement and data handling approval are prerequisites. Lawmatics Merlin reporting can operate at firm scope; do not use it across ethical walls or assume matter-level permissions protect aggregate/search output. The detailed Copilot article and September 2026 release notes describe availability; the suite overview still contains a stale Coming Soon heading. Verify actual account access, with no purchase or permission changes.

Execution status: Public official documentation checked 2026-10-15; no login, export, live query, import, installation, configuration, message or client workflow was executed.

Step documentation: https://help.lawmatics.com/en/articles/16139872-merlin-copilot https://help.lawmatics.com/en/articles/15890617-merlin-ai-suite-overview https://help.lawmatics.com/en/articles/15788585-recent-updates-q3-2026

### 3. Get the actual Lawmatics rows

Tool: Lawmatics

Location: Reports > Custom Reports > existing matter report > eye/view icon > Export

Use an existing authorized report, or have its owner prepare a targeted report with Source, Campaign, Created At, Converted At, Status, Stage and the exact existing attribution identifier if available. Record the agreed review period and matter scope, including which date field sets the range. Export the viewed report to CSV; large exports may arrive by email. Preserve headers and file unchanged. A report creation/save is a separate account write, not performed here. If no suitable report exists, use the documented Settings > Export > Export Matters route only in restricted storage, then minimize locally.

Expected output: Native matter/contact-field rows; no promise of task history, audit history, destination IDs or custom fields that the firm never recorded.

Next step: Open in restricted Excel; compare rows to matter records before preparing aliases.

Check before continuing: A matter report may contain contact and matter fields. A contacts-only export omits matter fields. Date-created and date-converted scopes differ; exported grouping is not preserved.

Execution status: Public official documentation checked 2026-10-15; no login, export, live query, import, installation, configuration, message or client workflow was executed.

Step documentation: https://help.lawmatics.com/en/articles/10699961-exporting-custom-reports https://help.lawmatics.com/en/articles/10699766-exporting-data https://help.lawmatics.com/en/articles/10699953-custom-reporting-using-filters https://help.lawmatics.com/en/articles/10699957-custom-reporting-columns-grouping

### 4. Make the checked, minimized handoff

Tool: Excel / source-record reviewer

Location: Restricted original workbook > separate analysis workbook > Scope worksheet

Staff verifies existing campaign/source identifiers and approved stage definitions. Aggregate distinct lead aliases by the approved attribution key and cohort first, then join to one Spend row per campaign/period/currency. Keep current-stage/as-of reporting separate from event-in-period counts; earlier stages require their real timestamped records. Never fuzzy-match names or reconstruct absent click IDs. Keep untouched original exports/screenshots and the identifying source map in restricted firm storage. Build a separate minimized analysis file; do not hide raw client data on another tab. Include the complete Scope/coverage note in the AI-visible workbook or prompt. Use aliases and administrative metadata only. Unknown is not zero, false, completed or absent.

Expected output: Spend(campaign_alias,period,currency,spend,source_ref); Intake(lead_alias,campaign_alias,created_at,recorded_stage,stage_at,as_of,source_ref); Scope(cohort,attribution_window,stage_dictionary,matching_coverage)

Next step: Format each approved range as a named table. Carry source-row references and coverage into the analysis workbook.

Check before continuing: Every field has an observed source or an explicit missing reason; staff assignments are marked editorial, not native.

Execution status: Public official documentation checked 2026-10-15; no login, export, live query, import, installation, configuration, message or client workflow was executed.

Step documentation: https://support.microsoft.com/en-us/excel/merge-queries-power-query https://help.lawmatics.com/en/articles/10699957-custom-reporting-columns-grouping https://help.lawmatics.com/en/articles/10699953-custom-reporting-using-filters

### 5. Ask AI to inspect the checked inputs

Tool: Excel Copilot, optional

Location: Analysis workbook > Copilot icon at lower right > Chat only

Open the minimized workbook containing the named tables and Scope. Paste the exact prompt; if unavailable, perform the same rule checks manually.

Prompt:

```text
Use Spend, Intake and Scope. Validate unique spend keys and lead aliases before joining. Aggregate intake counts under the supplied cohort and stage definitions, then join spend once per campaign/period/currency. Show recorded inquiries, consultations and staff-confirmed retained counts only when evidenced; keep unmatched/unknown stages and late conversions explicit. Return denominators and source cells. No causal ROI, fabricated attribution, client-level value, fuzzy matching or conversion uploads. If the existing cross-tool map or cohort definition is absent, output a blocked measurement checklist instead of results.
```

Expected output: A source-linked campaign/cohort table and missing-measurement list.

Next step: Copy checked results into a new Review sheet, retaining source references and unresolved blockers.

Check before continuing: Reconcile aggregate cost back to Ads once, check stage evidence and show unmapped proportion.

Execution status: Public official documentation checked 2026-10-15; no login, export, live query, import, installation, configuration, message or client workflow was executed.

Step documentation: https://support.microsoft.com/en-us/excel/copilot/get-started-with-copilot-in-excel

### 6. Human review and final action

Tool: Responsible firm reviewer

Location: Internal Review worksheet / review document

Marketing and intake owners approve mapping, cohort, stage meaning and arithmetic. Save a provisional report if capture is partial.

Expected output: Reviewed recorded-attribution report; no causal or profitability claim.

Next step: Any tracking implementation or conversion upload is a separate privacy-reviewed project.

Check before continuing: No personal data, legal circumstances or client outcomes are uploaded to any ad platform.

Execution status: Public official documentation checked 2026-10-15; no login, export, live query, import, installation, configuration, message or client workflow was executed.

Step documentation: https://support.google.com/google-ads/answer/2404176?hl=en https://help.lawmatics.com/en/articles/10699957-custom-reporting-columns-grouping

## What you will get

attribution-review.csv: source_id, spend, unique_inquiries, booked_consults, confirmed_retained, unmatched_count, denominator, coverage_warning

## Human review and limits

No client narratives or identities to ad platforms. Any conversion upload requires separate firm privacy/ethics approval and supported data-sharing permission; hashed identifiers remain personal data. Revenue may not be available or comparable across matters.

The assistant drafts or reports only. Check source records and review the output before a human performs any separately approved send or change. No automatic legal decision, money movement, account connection or publication is included.

What to measure: In a synthetic pilot, count correctly found exceptions, false alarms, and unresolved inputs. No time or cost saving is assumed.

## Original prepared-input schema

ads.csv: source_id, campaign_id, period, spend, currency, attribution_token

intake.csv: intake_alias, attribution_token, source_id, stage, stage_at; stage-dictionary.csv: stage, approved_definition; scope.txt: timezone, window, coverage

Synthetic example input:

```text
R1: exact attribution token and staff-confirmed retained stage
R2: inquiry has no matching token
R3: recorded consultation without retention confirmation
```

Expected synthetic output:

```text
R1: observed attributed retention, not causal ROI
R2: unmatched
R3: consultation only
```

Failure check: No client narratives or identities to ad platforms. Any conversion upload requires separate firm privacy/ethics approval and supported data-sharing permission; hashed identifiers remain personal data. Revenue may not be available or comparable across matters.

## Starter files

Native blank scaffolds and original synthetic examples may use different schemas. Follow NATIVE-INPUT-MAPPING where supplied. These files do not connect accounts or install automation.

- [Download starter kit](https://agents.paretoid.com/assets/starter-kits/g02-starter-kit.zip) — All inputs, synthetic examples and review notes in one ZIP. No automation is installed.

- [Start here: get the sources and prepare the review](https://agents.paretoid.com/assets/starter-kits/g02/START-HERE.txt) — Documentation-checked acquisition, explicit manual mapping, exact prompts and human review limits

- [Input template: ads.csv](https://agents.paretoid.com/assets/starter-kits/g02/ads.csv) — Header-only input template; preserve exact names and order

- [Synthetic input: ads.csv](https://agents.paretoid.com/assets/starter-kits/g02/ads-example.csv) — Fabricated sample rows for an offline manual trial

- [Input template: intake.csv](https://agents.paretoid.com/assets/starter-kits/g02/intake.csv) — Header-only input template; preserve exact names and order

- [Synthetic input: intake.csv](https://agents.paretoid.com/assets/starter-kits/g02/intake-example.csv) — Fabricated sample rows for an offline manual trial

- [Input template: stage-dictionary.csv](https://agents.paretoid.com/assets/starter-kits/g02/stage-dictionary.csv) — Header-only input template; preserve exact names and order

- [Synthetic input: stage-dictionary.csv](https://agents.paretoid.com/assets/starter-kits/g02/stage-dictionary-example.csv) — Fabricated sample rows for an offline manual trial

- [Output template: attribution-review.csv](https://agents.paretoid.com/assets/starter-kits/g02/attribution-review.csv) — Header-only output template; preserve exact names and order

- [Expected output: attribution-review.csv](https://agents.paretoid.com/assets/starter-kits/g02/attribution-review-example.csv) — Hand-authored synthetic expected result; not an executed workflow result

- [Policy/input template: scope.txt](https://agents.paretoid.com/assets/starter-kits/g02/scope.txt) — Required source/policy preparation scaffold; not populated with firm instructions

- [Synthetic policy/input: scope.txt](https://agents.paretoid.com/assets/starter-kits/g02/scope-example.txt) — Fixture-only context; not an approved production policy

- [Synthetic fixture expectations](https://agents.paretoid.com/assets/starter-kits/g02/fixture-expectations.txt) — Acceptance targets and failure checks; no claim of workflow execution

- [Review prompt](https://agents.paretoid.com/assets/starter-kits/g02/starter-prompt.txt) — Copyable offline review prompt; no executable automation

- [Setup and prerequisites](https://agents.paretoid.com/assets/starter-kits/g02/README.txt) — Recipe-specific setup, evidence sources and usage boundaries

- [Native input scaffold: Spend](https://agents.paretoid.com/assets/starter-kits/g02/native-spend-template.csv) — Empty editorial table for Spend; populate from verified source evidence after reviewed mapping; not a native export

- [Native input scaffold: Intake](https://agents.paretoid.com/assets/starter-kits/g02/native-intake-template.csv) — Empty editorial table for Intake; populate from verified source evidence after reviewed mapping; not a native export

- [Native input scaffold: Scope](https://agents.paretoid.com/assets/starter-kits/g02/native-scope-template.txt) — Approved text input for Scope; complete from verified evidence and include in the AI-visible packet

- [Native input mapping and scope guide](https://agents.paretoid.com/assets/starter-kits/g02/NATIVE-INPUT-MAPPING.txt) — Old-file-to-native-input compatibility map, acquisition requirements, privacy and blocking gates

## Optional original prepared-input prompt

Destination: Your firm-approved AI assistant · prepared files

This original prompt uses its own prepared-input schema. Do not mix it with native-step tables without the supplied mapping.

```text
Reconcile these anonymized ad and intake exports using only the supplied IDs and stage definitions. Show spend, unique inquiries, booked consults and staff-confirmed retained matters by source, plus unknown/unmatched records and denominators. Distinguish observed attribution from causal ROI. Draft a measurement implementation checklist; do not upload data or invent matches.

INPUTS
ads.csv: source_id, campaign_id, period, spend, currency, attribution_token
intake.csv: intake_alias, attribution_token, source_id, stage, stage_at; stage-dictionary.csv: stage, approved_definition; scope.txt: timezone, window, coverage

OUTPUT
attribution-review.csv: source_id, spend, unique_inquiries, booked_consults, confirmed_retained, unmatched_count, denominator, coverage_warning

Use only these synthetic or firm-approved inputs and preserve source row/page IDs. Keep missing or conflicting evidence unresolved. Return a draft for the named reviewer. Do not send messages, connect accounts, change records or permissions, move money, or make legal decisions. Keep source files unchanged. List missing prerequisites before continuing.
```

Proposed / not tested · editorial prompt

Published by Law Firm Agents. Proposed adaptation; not tested. Not legal advice.
