Your analytics is undercounting.
Tag scripts loaded from a third-party domain get blocked before they run. You're not looking at your traffic. You're looking at whatever got through.
Measurement
5 min read
Analytics used to be a script tag and a number. Then browsers started capping the lifetime of cookies set by third-party scripts, content blockers went mainstream, and privacy modes began refusing entire domains by name.

None of that produces an error. It produces a smaller number, and a smaller number looks exactly like a quieter week.
The scariest measurement failure is the one that still returns a plausible figure.
What can be done about it
The fix is to stop serving your measurement from a domain browsers have learned to block, and serve it from your own domain instead. Done properly the numbers move immediately, and what you were looking at before turns out to have been a sample of unknown size.
You can't manage what you're only partly counting, and nothing tells you which part is missing.
What it's worth
More than most things people spend money on next. Every decision downstream of your analytics, which ad to keep, which page to rewrite, whether last month was bad or just under-counted, is being made on the sample instead of the number. Fixing the measurement is usually cheaper than the campaign you were about to run on top of it.
Setting one up has a trap in it that looks exactly like total failure and is actually normal. We lost an afternoon to it twice. If you try it yourself and something looks broken the first week, it's probably the trap.
Not sure whether this is happening on your site?
We'll run the 5 checks on it and tell you, in plain English, whether or not you ever hire us.