diff --git a/app/jobs/regular/push_notification.rb b/app/jobs/regular/push_notification.rb
index 2494927cfb3..029a3154356 100644
--- a/app/jobs/regular/push_notification.rb
+++ b/app/jobs/regular/push_notification.rb
@@ -31,7 +31,7 @@ module Jobs
           uri = URI.parse(push_url)
 
           http = FinalDestination::HTTP.new(uri.host, uri.port)
-          http.use_ssl = true
+          http.use_ssl = uri.scheme == "https"
 
           request =
             FinalDestination::HTTP::Post.new(
@@ -45,7 +45,7 @@ module Jobs
 
             if response.code.to_i != 200
               Rails.logger.warn(
-                "Failed to push a notification to #{push_url} Status: #{result.status}: #{result.status_line}",
+                "Failed to push a notification to #{push_url} Status: #{response.code}: #{response.body}",
               )
             end
           rescue => e
diff --git a/spec/jobs/push_notification_spec.rb b/spec/jobs/push_notification_spec.rb
index a1f1648c8b6..badb4133e26 100644
--- a/spec/jobs/push_notification_spec.rb
+++ b/spec/jobs/push_notification_spec.rb
@@ -4,6 +4,7 @@ require "excon"
 
 RSpec.describe Jobs::PushNotification do
   fab!(:user)
+  fab!(:user2) { Fabricate(:user) }
   fab!(:post)
   let(:data) do
     {
@@ -16,20 +17,31 @@ RSpec.describe Jobs::PushNotification do
       "clients" => [[user.id, "http://test.localhost"]],
     }
   end
+  let(:data_with_two_clients) do
+    {
+      "user_id" => user.id,
+      "payload" => {
+        "notification_type" => 1,
+        "post_url" => "/t/#{post.topic_id}/#{post.post_number}",
+        "excerpt" => "Hello you",
+      },
+      "clients" => [[user2.id, "https://test2.localhost"], [user.id, "http://test.localhost"]],
+    }
+  end
 
   let!(:request) do
-    stub_request(:post, "https://test.localhost:80/").with(
+    stub_request(:post, "http://test.localhost").with(
       body: {
-        "secret_key" => SiteSetting.push_api_secret_key,
-        "url" => "http://test.localhost",
-        "title" => "Discourse",
-        "description" => "",
-        "notifications" => [
+        secret_key: SiteSetting.push_api_secret_key,
+        url: "http://test.localhost",
+        title: "Discourse",
+        description: "",
+        notifications: [
           {
-            "notification_type" => 1,
-            "excerpt" => "Hello you",
-            "url" => "http://test.localhost/t/#{post.topic_id}/#{post.post_number}",
-            "client_id" => user.id,
+            notification_type: 1,
+            excerpt: "Hello you",
+            url: "http://test.localhost/t/#{post.topic_id}/#{post.post_number}",
+            client_id: user.id,
           },
         ],
       }.to_json,
@@ -39,6 +51,28 @@ RSpec.describe Jobs::PushNotification do
     ).to_return(status: 200, body: "", headers: {})
   end
 
+  let!(:bad_request) do
+    stub_request(:post, "https://test2.localhost/").with(
+      body: {
+        secret_key: SiteSetting.push_api_secret_key,
+        url: "http://test.localhost",
+        title: "Discourse",
+        description: "",
+        notifications: [
+          {
+            notification_type: 1,
+            excerpt: "Hello you",
+            url: "http://test.localhost/t/#{post.topic_id}/#{post.post_number}",
+            client_id: user2.id,
+          },
+        ],
+      }.to_json,
+      headers: {
+        "Content-Type" => "application/json",
+      },
+    ).to_return(status: 404, body: "", headers: {})
+  end
+
   before { SiteSetting.push_notification_time_window_mins = 5 }
 
   context "with valid user" do
@@ -68,4 +102,16 @@ RSpec.describe Jobs::PushNotification do
       expect(request).not_to have_been_requested
     end
   end
+
+  context "with two clients" do
+    it "sends push notifications to both clients" do
+      user.update!(last_seen_at: 10.minutes.ago)
+      user2.update!(last_seen_at: 10.minutes.ago)
+
+      Jobs::PushNotification.new.execute(data_with_two_clients)
+
+      expect(request).to have_been_requested
+      expect(bad_request).to have_been_requested
+    end
+  end
 end