Attribution Dashboard
The falcon god himself, avenger of his father and protector of the pharaoh.
A template that shows which channel pays, so the budget follows the money.
One page that settles the budget argument
Every ad platform claims credit for the same sale. Your bank account only counts it once. This dashboard puts every channel on one page, measured the same way, with revenue from your own records rather than from the platforms. Fill it in weekly; decide budgets monthly.
It works best once your tracking captures the source of each lead and links each sale to that lead. If it does not yet, start with self-reported source from your booking or checkout form and fill the rest as tracking improves.
The numbers and how each is worked out
| Metric | Formula | Tells you |
|---|---|---|
| Spend | Ad spend + tools + people cost for the channel | What the channel really costs |
| Leads | New contacts with this source | Volume |
| Cost per lead | Spend ÷ leads | Efficiency at the top |
| Calls / trials | Booked calls or trials from those leads | Intent |
| Customers | New buyers with this source | What actually matters |
| Cost per customer | Spend ÷ customers | The number to manage |
| Revenue, 30 days | Cash collected from those customers in 30 days | Short-term return |
| Return on spend | Revenue ÷ spend | Money back per dollar in |
| Value, 90 days | Revenue per customer after 90 days | Includes repeat purchases |
| Payback | Days until a customer's gross profit covers what they cost | How fast you can reinvest |
The dashboard: volume
Period: [start date] to [end date]
| Channel | Spend | Leads | Cost per lead | Calls / trials | Customers |
|---|---|---|---|---|---|
| Meta ads | |||||
| Google ads | |||||
| YouTube | |||||
| Organic social | |||||
| Referral / partners | |||||
| Direct / unknown | |||||
| Total |
The dashboard: money
| Channel | Cost per customer | Revenue, 30 days | Return on spend | Value, 90 days | Decision |
|---|---|---|---|---|---|
| Meta ads | |||||
| Google ads | |||||
| YouTube | |||||
| Organic social | |||||
| Referral / partners | |||||
| Direct / unknown |
Choose how you give credit
No model is the truth. Each answers a different question. Pick one as your main view and look at a second to check it.
| Model | Credit goes to | Good for | Blind to |
|---|---|---|---|
| First touch | Where the buyer first came from | Judging channels that start demand | What closed the sale |
| Last touch | The final click before buying | Judging channels that close | What created the interest |
| Split (linear) | Every touch equally | Seeing the whole journey | Which touch mattered most |
| Self-reported | What the buyer says | Word of mouth, podcasts, content | Anything they forgot |
A practical default: first touch for deciding where to find new buyers, last touch for deciding what to fix in the funnel, self-reported to catch what the pixels miss.
Let the budget follow the money
| If the channel shows | Then |
|---|---|
| Cost per customer below target, steady for 2+ weeks | Scale: raise budget in steps of 20 to 30% |
| Cost per customer between target and break-even | Hold budget, improve creative or the funnel |
| Cost per customer above break-even after a fair test | Cut budget, or rebuild before spending again |
| Low 30-day return but high 90-day value | Keep it if you can carry the cash gap; judge it on the 90-day number |
| Cheap leads, few customers | Check lead quality and the sales step before blaming the channel |
Your thresholds
Target cost per customer: [ ] · Break-even cost per customer: [ ] · Fair test spend: [ ]Keep the data honest
- Revenue comes from your payment processor or CRM, never from ad platform reports.
- "Direct / unknown" is a to-do list. If it grows, a link or form is losing its source.
- Refunds are subtracted in the week they happen.
- Spend includes tools and people, not just ad spend, or organic channels look free.
- Compare the same period length every time.
- Write the budget decision in the last column, and check next month whether it was right.
Want this built for you instead of by you?
Return to the vault