Setup — once, deliberately
- Write down the attribution model and the window, and put both on the reports.
- Fix the lead source list at six to ten mutually exclusive channels; lock it against ad-hoc additions.
- Publish the UTM convention on one page and generate all campaign links from a single builder.
- Confirm forms and bots capture and persist parameters and click identifiers through to submission.
- Assign a tracked phone number per channel and record which channel each belongs to.
- Verify that conversion carries the identity thread from lead to customer to job.
Weekly — fifteen minutes
- Scan new leads for missing or malformed source values and fix the cause, not the row.
- Check the unattributed share against last week; investigate any sharp move.
- Confirm the tracked numbers still ring through and still map to the right channel.
- Look at submissions-per-appointment by campaign for early quality drift.
Monthly — one hour
- Produce the cost ladder by campaign: lead, qualified lead, appointment, customer, sold job.
- Deduplicate before computing any per-lead figure, and note that you did.
- Merge near-duplicate values in the source and campaign fields.
- Compare platform-reported conversions to CRM lifecycle outcomes and explain the gap in one sentence.
- Make one budget decision from the ladder, and write down why.
Quarterly — half a day
- Trace five sold jobs by hand from revenue back to the captured origin.
- Re-measure the real sales cycle and adjust the attribution window if it has moved.
- Review untracked channels and decide whether any deserve a tracked number or link.
- Review consent and privacy handling for anything sent back to an ad platform.
- Re-read the written model and confirm the reports still match it.
After any change to the site or forms
- Click a live campaign link on a phone and a desktop, submit a test lead, and confirm the parameters arrived on the record.
- Confirm the test lead's source, campaign and click identifier are all populated.
- Delete the test lead and note the check in the change log.