[Google Pixel 6 Pro] Morgrain:
Alright, well let's check the other basics first.

You have

a) allowed push notifications for Facebook and set Battery usage for Facebook as unrestricted

how about

b) check Background Process Limit (Developer options)

c) check Standby Apps (Developer Options again, scroll down to Apps) and tell me which state your app is in regularly (a messenger app should be at WORKING_SET/ACTIVE even when you "close" it in app drawer/home screen)

d) check your power saver & DnD settings (Do not Disturb can delay notifications)

e) triple check your internet connection - are you using a VPN, are all other apps working as intended with immediate notifications? Is it maybe a "not phone problem"?

f) do you have adaptive battery activated? Try deactivating it, AB can put apps to sleep in order to preserve battery life. Restart phone after making these changes.

e) did you download Pikmin Bloom? (not kidding here, I've seen people report Android 12 notification problems, and after deleting that app it began to work again)

E1) Since it has been reported that a single app can cause havoc, it might be possible that some third-party app is causing these issues. It might be hard to narrow down, but if it truly bothers you, I'd suggest to manually place ALL other non-Google apps to battery -> restricted, to find out if that is the problem. If it fixes your issues, you can slowly narrow it down, by gradually allowing battery usage for other apps again.

Since you did not use the word root once, I assume you are not rooted? Since with root access we could force the Heartbeat Intervals to a ridiculously low number (couple seconds), to see if it's truly a Pixel/software problem.

It might be possible that your problem is caused by Androids DOZE function. It doesn't always work "properly" - there is an internal priority list, and according to that list apps get dozed or are allowed to "call home".

A non-root solution to this (IF it's a doze problem) would be to manually deactivate Doze with ADB (and then check your app - if your problem is fixed then, it's a DOZE/whitelist problem)

There is a thread about this here

Android: completely disabling deviceidle ("Doze") in Android M?

In a rooted Android M device, I want to completely disable deviceidle mode ("Doze"), all the time. Yes, I know this affects my battery life, and that's fine with me. I know that I can invoke the

stackoverflow.com

You "just" need to issue this ADB command

It's also possible that for some odd reason, Whitelist doesn't work as intended (battery not restricted should lead to the app NOT getting dozed)

That can - in theory - be forced with

(see the ADB command list for more information).

ADB

Android Debug Bridge (adb) | Android Studio | Android Developers

Find out about the Android Debug Bridge, a versatile command-line tool that lets you communicate with a device.

developer.android.com

ADB installation

How to install ADB on Windows, macOS, and Linux

A step-by-step guide to get you started with the Android Debug Bridge tool.

www.xda-developers.com

Mind though, that it will not stick after a reboot. It's only a temporary solution.

If that solution should work, you could try out

Say hello to LADB, a local ADB shell without needing root or a computer!

Hey there XDA! I'm here to show off a new Android app I've published that I think a certain audience may find useful. Ever heard of ADB? If not, you likely won't need this app. But for those of you who have used or encountered ADB in the past...

xdaforums.com

in order to get a more permanent DOZE disabling solution. Even though this will cause your phone to burn faster through battery. If it's a general Android / Android 12 issue, I can't see any other non-root solutions though.

With root, you could easily execute the script/ADB commands after each reboot. But then again, there should be at least one alternative non-root solution out there.