diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index 146888c98..db1302738 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -83,11 +83,11 @@ def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ tru
       "object" => id,
       "to" => [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"]
     }
-    with {:ok, activity} <- insert(data, local),
+    with Repo.delete(object),
+         Repo.delete_all(Activity.all_non_create_by_object_ap_id_q(id)),
+         Repo.delete_all(Activity.all_by_object_ap_id_q(id)),
+         {:ok, activity} <- insert(data, local),
          :ok <- maybe_federate(activity) do
-      Repo.delete(object)
-      Repo.delete_all(Activity.all_non_create_by_object_ap_id_q(id))
-      Repo.delete_all(Activity.all_by_object_ap_id_q(id))
       {:ok, activity}
     end
   end
diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs
index 4388215f8..a088e97be 100644
--- a/test/web/activity_pub/activity_pub_test.exs
+++ b/test/web/activity_pub/activity_pub_test.exs
@@ -256,6 +256,8 @@ test "it creates a delete activity and deletes the original object" do
       assert delete.data["actor"] == note.data["actor"]
       assert delete.data["object"] == note.data["object"]["id"]
 
+      assert Repo.get(Activity, delete.id) != nil
+
       assert Repo.get(Object, object.id) == nil
     end
   end