diff --git a/changelog.d/12721.bugfix b/changelog.d/12721.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..6987f7ab15e1263108eaddea7d623aa6d90a6553
--- /dev/null
+++ b/changelog.d/12721.bugfix
@@ -0,0 +1 @@
+Fix push to dismiss notifications when read on another client. Contributed by @SpiritCroc @ Beeper.
diff --git a/synapse/push/httppusher.py b/synapse/push/httppusher.py
index 5818344520f52cb9a4e34762f5062c936fa01208..d5603596c0041d47ef1c8fc8fe411c4aa12bd471 100644
--- a/synapse/push/httppusher.py
+++ b/synapse/push/httppusher.py
@@ -405,7 +405,7 @@ class HttpPusher(Pusher):
         rejected = []
         if "rejected" in resp:
             rejected = resp["rejected"]
-        else:
+        if not rejected:
             self.badge_count_last_call = badge
         return rejected