Audit acquisition channel by channel
SEO, ads, outbound and social, with CAC and payback for each channel.

Start with one table: what each channel costs per customer and how long that customer takes to pay it back. The page-level work comes after, and only on the channels that deserve it.
Say a B2B SaaS at 2M ARR sells annual contracts worth 6,000, at 80% gross margin. Each customer brings 400 of margin a month. All the numbers here are invented.
Compute CAC and payback for each channel
Collect spend by channel over a full quarter: media, tools and the share of salaries that really goes to it. Then take new customers by channel from a source you trust, and read the data reliability chapter first, because a last-click model flatters brand and hides where customers really came from.
CAC is the fully loaded spend divided by new customers. Payback in months is CAC divided by monthly margin per customer.
| Channel | Quarterly spend | New customers | CAC | Payback |
|---|---|---|---|---|
| SEO and content | 45,000 | 10 | 4,500 | 11.3 months |
| Google Ads | 60,000 | 6 | 10,000 | 25 months |
| Outbound | 39,000 | 6 | 6,500 | 16.3 months |
| Social and video | 12,000 | 2 | 6,000 | 15 months |
Judge these against your own business: a payback longer than the average customer lifetime loses money, and a payback longer than your cash can carry is a problem even if it is profitable on paper. Look at marginal CAC too, the cost of the last customers bought. In this example, Ads is the finding: the next step is to split brand from non-brand and see whether non-brand pays back at all. Content spend lands months before its customers, so compare it with spend from two or three quarters earlier.
What to check on each channel
| Channel | Collect | Analyze | A typical finding |
|---|---|---|---|
| SEO | Search Console by query and page, 16 months | Brand against non-brand, CTR by position, traffic per page | Growth comes from brand only |
| Ads | Search terms, campaigns, landing pages, CRM outcomes | Spend per qualified lead by campaign | Optimized on signups, so it buys the wrong accounts |
| Outbound | Lists, sequences, replies, meetings | Reply and meeting rate by signal and persona | One segment produces nearly all the meetings |
| Social and video | Post-level data, audience, formats, rhythm, thumbnails | What performs, and whether the audience matches the buyer | Reach is strong among peers who will never buy |
Two results of mine show what to look for. On Derrick, 19.2M impressions gave 42.4K clicks over twelve months, a 0.2% CTR: the site is seen far more often than it is chosen, and that gap is the next lever. On Grosbill, one set of Black Friday pages published months ahead served SEO and paid at once, with ad revenue multiplied by 7 and SEO revenue by 4 over the period. Always ask whether a channel’s asset could work for a second one.
The rest of this chapter goes deep on inbound, which is where an audit finds the most work per euro. It comes from an audit I ran for a B2B SaaS, and it goes well beyond a SEO checklist.
Inbound: the technical list
Write each item as problem, consequence, action, and attach a resource sheet with the exact URLs so whoever fixes it does not have to redo the crawl.
| Item | Problem to look for | Consequence | Action |
|---|---|---|---|
| 404 and 301 | Broken links, redirect chains | Lost authority, wasted crawl | Fix internal links at the source |
| Titles | Missing, duplicated, too long | Weak CTR, cannibalization | Rewrite by template |
| H1 | Missing or several per page | Confused page topic | One H1 per template |
| Thin pages | Little content, no purpose | Dilutes the site’s quality | Enrich, merge or delete |
| Image weight | Oversized files | Slow pages | Compress, serve WebP or AVIF |
| Schema | Absent or invalid | Fewer rich results | Add by template, validate |
| hreflang and x-default | Missing returns, no default | Wrong language shown | Follow Google’s localized versions guide |
| Sitemaps | Redirected or noindex URLs inside | Blurred crawl signal | Generate indexable URLs only |
| Robots | Useful sections blocked | Pages never crawled | Review each rule |
| CTR against position | Good position, few clicks | Traffic left on the table | Rewrite title and description |
| Canonicals | Pointing to the wrong page | Page drops out of the index | Fix by template |
| Placeholder text | Lorem ipsum or template leftovers | Credibility, thin content | Search the crawl, then fix |
| Hubs in noindex | Hub pages left out of the index | Children lose their parent | Reindex, or remove the hub |
| Crawl depth | Key pages too many clicks away | Crawled less, ranks less | Link them from higher up |
Be careful with llms.txt. It is emerging and nothing proves an effect yet, so if you add one, treat it as a cheap bet and keep it out of your priorities.
Inbound: review the site template by template
For each template, read the HTML first, then the ergonomics and the CRO, and start by asking what the page is for. Be blunt: a useless page goes in the trash, and a category goes live only with at least five items inside.
| Template | HTML | Ergonomics and CRO | Verdict |
|---|---|---|---|
| Home | H1, schema, links to key hubs | Promise, proof, one main action | Keep, rewrite the hero |
| Feature | Unique title, intent matched | Demo, related use case, pricing link | Keep |
| Alternative or versus | Comparison in real HTML | Honest table, migration path | Create |
| Resource category | Indexable, has at least five items | Filters that match intent | Merge the thin ones |
| Empty tag page | Duplicate listing | No use to anyone | Delete |
Each page has three visitors to serve: the existing customer, someone looking for ideas, and someone convinced who wants to see how it works. A page built for only one of them loses the other two. Plan secondary conversions for those who are not ready: a contextual email capture, the community, a product tour. Menus and CTAs should change with the context and the funnel stage, and a hub should answer every intent: learn, be convinced, compare, find a quick solution.
Inbound: score the resource types
List every type of resource, score each one out of 10 on what it does for awareness, signup and conversion, then tick who has it. The competitor names come from your positioning work. These scores are an illustration of the format, so use your own data and judgment.
| Type | Awareness | Signup | Conversion | You | Comp. A | Comp. B | Comp. C |
|---|---|---|---|---|---|---|---|
| Alternatives and versus | 4 | 7 | 9 | ✓ | ✓ | ||
| Use cases | 5 | 7 | 8 | ✓ | ✓ | ✓ | |
| Personas | 4 | 6 | 7 | ✓ | |||
| Templates | 7 | 8 | 4 | ✓ | ✓ | ||
| Free tools | 8 | 8 | 4 | ✓ | |||
| Benchmarks | 8 | 6 | 5 | ✓ | |||
| Success stories | 2 | 4 | 9 | ✓ | ✓ | ✓ | ✓ |
| Webinars | 4 | 6 | 7 | ✓ | ✓ | ||
| Blog | 8 | 4 | 2 | ✓ | ✓ | ✓ | ✓ |
| Academy | 6 | 6 | 5 | ✓ | |||
| Ebooks | 4 | 6 | 3 | ✓ | ✓ | ||
| Newsletter | 3 | 5 | 4 | ✓ | ✓ |
High scores on an empty “You” line show what is underused. Then organize the resources by what the visitor wants to do.
| The visitor wants to | Give them |
|---|---|
| Learn | Blog, academy, ebooks |
| Join | Community, newsletter, webinars with their own page and transcript |
| Act | Templates, tool stacks, free tools |
| Challenge themselves | Calculators, benchmarks from your own data |
| Discover | Use cases, product tour |
| Build trust | One success story a month, logos and testimonials segmented by country |
Free tools serve traffic and email capture at once, and a tool with no search volume can still create a wow effect worth sharing.
Finish with distribution, written as a workflow per content type: for each success story or webinar, which channels get it, in what format, who does it and how many days after publication.
What to deliver
The channel table, the technical list with its resource sheets, the template review and the resource matrix, merged into one action sheet ranked with the method from the prioritization chapter.
Your next step: fill the CAC and payback table for last quarter, even roughly, and circle the one channel where you would stop spending tomorrow.