Preview

What it is.
You bring the numbers that disagree, the ad platform figure and the analytics figure and the CRM figure for one period, and it reconciles them and names the bias in the model you are using.
It quantifies the gap and leaves it open, since channel-reported conversions almost always exceed the conversions you had. A second track covers building first-party attribution when you own the page, including bookings that complete on a domain you do not.
What you get.
- A model choice with the bias of each option stated, from first touch through multi-touch
- A reconciliation method for platform numbers that disagree with analytics
- A stated boundary list, so tracking setup goes to analytics and pixels go to ads
- A first-party tracking route for bookings on third-party domains
- Language for telling a stakeholder why one true number is not available
How to set it up.
Install with npx skills add coreyhaines31/marketingskills --skill attribution -a claude-code.
Decide which track you need before you start. Interpretation applies to everyone, and building applies only if you control the site or app.
Bring the numbers that disagree: the ad platform figure, the analytics figure and the CRM figure for the same period.
Ask it to name the bias in your current model instead of to pick a better one. The bias is what explains the disagreement.
Get the attribution gap quantified as a percentage, then use it as a standing correction instead of re-litigating each report.
Send tracking plan and UTM work to the analytics skill, and pixel and server-side conversion work to ads. This skill states those boundaries so you do not rebuild them here.
Pricing Plans
Free. MIT license.
Checked against the repo in July 2026.
Use cases
Reconciling the meeting numbers
The ad platform and the analytics tool report different conversion counts for the same period. Bring both figures and it names the bias in the model behind each, then quantifies the gap instead of pretending it closes.
A standing correction
Every monthly report reopens the same argument. Get the attribution gap quantified once and apply it as a standing correction, so the number stops being re-litigated.
Bookings on another domain
Your demos book through a calendar tool on a domain you don't own. The building track returns a first-party route for stitching that conversion back to the visit that produced it.
The stakeholder sentence
An executive wants one true channel number. The skill hands you the language for explaining why that number doesn't exist, along with the reconciliation that gets closest.
Best for
Two dashboards, two answers
This is the case the skill leads with, and it gives you a method plus the sentence to say in the meeting.
Choosing a model without a data team
Track A needs no engineering, and it states the bias each model carries so the choice is deliberate.
Bookings that finish somewhere else
Track B covers stitching a conversion that completes on a domain you do not own, which is where most calendar tools leave you.