Explore your CAC using different rules
Use the explorer to calculate your CAC across channels, as shown in the example below.
npx skills add AidanLeather/cac-calculator
The explorer, on sample data
This is exactly what the skill hands you. Drag the slider, switch channels, edit any cost—every figure recomputes live. The one difference from the explorer in the article: that one follows a single channel to make the argument, whereas here you get a CAC for every channel you run, and you pick which to look at. Share your exported CRM data as you run the skill, or enter it manually once you've created your explorer.
Sample data, names stripped. Yours is built the same way, from your own deals.
One idea: there is no single true CAC
What a customer costs isn't a fact to look up, per se. It's the product of a few choices you make. So the honest answer is a range, with one figure inside it you can actually defend.
Three choices sit behind every figure the explorer shows, and each moves it on its own:
| The choice | What it decides |
|---|---|
| Attribution rule | Who gets credit for a deal—first touch, last touch, an even split, or every touch. Settles how many customers a channel counts as. |
| Cost boundary | Media only, plus agency & tooling, or fully loaded with the people behind the channel. Every cost is editable, live, per channel. |
| Timing | This period's spend against this period's closes, or lag-adjusted for a sales cycle that takes months to land. |
Getting your data ready
The explorer runs on one thing: an export of your closed-won deals. The more each row carries, the more it can do—but it works from very little.
- An amount and a close date per deal—the backbone.
- Some signal of where each deal came from: a source or channel field, or your CRM's original and latest source columns. That unlocks first, last, any and sole-touch.
- Optionally, a full touch path per deal (repeated rows with dates). That unlocks the credit-splitting rules too—but it's rare, and first/last is perfectly defensible without it.
Most people export this straight from their CRM's Deals view—HubSpot, Salesforce, Pipedrive—or keep it in a spreadsheet. It doesn't need to be tidy.
And because this is a skill, you don't have to wrangle it yourself. Hand your agent a
messy export and it'll work out which column is which, map your sources onto clean
channels, convert an .xlsx if that's what you've got, and tell you plainly
what the data can and can't support—before it builds anything.
No closed-won deals to export yet? You can ask for a blank explorer instead, and type your own channels and costs straight in.
Want a hand getting it together? Reach out on LinkedIn.
Get it
One command, into whichever coding agent you use—Claude Code, Cursor, Codex, OpenCode and more. Add -g to install it globally.
npx skills add AidanLeather/cac-calculator
The tool version of the article. Built by Aidan Leather.