Part 1
The number nobody will give you
Google removed the hundred link guidance from its own documentation and replaced it with "a reasonable number". In practice a long article carrying twenty contextual links is normal, and a page carrying two hundred is a navigation page pretending to be an article. The count is not the problem. The ratio is.
Do this: Count the links inside your main text, ignoring header, footer and sidebar. If that number is under three on an important page, that is your problem.
Part 2
Template links are not the same as body links
A link in your footer appears on every page, so it says nothing about this page. A link inside a paragraph says this page thinks that page is relevant here. Search engines have been able to tell the difference for a long time.
Do this: Stop counting footer links as internal linking. They are navigation and they are already doing their job.
Part 3
The first link wins
When one page links twice to the same target, only the first one is normally counted, and its anchor text is the one that carries. So the link in your navigation, which usually says "Services", beats the good link in your paragraph that says "checkout optimisation".
Do this: Check whether the important target is already linked higher up the page with a useless anchor.
Part 4
Orphans are the real cost
A page nothing links to is a page the crawler reaches only through the sitemap, and it will be crawled last and judged least important. Most sites have more orphans than they think, usually old landing pages and anything created outside the normal template.
Do this: Crawl your own site and list every page with zero internal links pointing at it. Fix those before you touch anything else.
This is teaching material and our own reading of standard practice, not advice for your specific site. Check anything important with your own specialist.