diff --git a/app/jobs/pretalx/import_job.rb b/app/jobs/pretalx/import_job.rb
index 36d817bfde7b19c9a89dbd7c6b3da7c978407df1..835506198d6564a1378309de1c12f301bddec7b3 100644
--- a/app/jobs/pretalx/import_job.rb
+++ b/app/jobs/pretalx/import_job.rb
@@ -29,7 +29,8 @@ module Pretalx
       # This is where canceled sessions are moved to, so we can still easily access them
       canceled_stage = Stage.find_or_initialize_by(conference:, ref_id: 'c3lingo_canceled').tap do |stage_|
         stage_.name = 'Canceled talk'
-        stage_.description = 'A dummy stage where talks move to when the disappear from the Fahrplan'
+        stage_.description = 'A dummy stage where talks move to when they disappear from the Fahrplan'
+        stage_.weight = 1000 # Sort it all the way to the right
         stage_.save!
       end
 
diff --git a/app/views/conferences/show.html.erb b/app/views/conferences/show.html.erb
index 5daedf97b7eb217aecfd3cdfb6c5c6d462f4560a..6b1d44296650168ebf9b1d0ef80cf2897059d051 100644
--- a/app/views/conferences/show.html.erb
+++ b/app/views/conferences/show.html.erb
@@ -126,7 +126,10 @@ current_time = Time.zone.now.in_time_zone(@conference.time_zone)
 
       <div class="stages">
 
-        <% @sessions_by_date_and_stage[date].each do |stage, sessions| %>
+      <%
+        @sessions_by_date_and_stage[date].keys.sort_by(&:weight).each do |stage|
+        sessions = @sessions_by_date_and_stage[date][stage]
+      %>
           <div class="stage">
             <h4 class="sticky top-0 bg-white bg-opacity-70 w-full z-30"><%= stage.name %></h4>
             <div class="stage-sessions">
diff --git a/db/migrate/20241223202350_add_weight_to_stages.rb b/db/migrate/20241223202350_add_weight_to_stages.rb
new file mode 100644
index 0000000000000000000000000000000000000000..814d8aa9e0d290cf696f4daf859b27a7b009986b
--- /dev/null
+++ b/db/migrate/20241223202350_add_weight_to_stages.rb
@@ -0,0 +1,5 @@
+class AddWeightToStages < ActiveRecord::Migration[7.1]
+  def change
+    add_column :stages, :weight, :integer, null: false, default: 50
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 2347d52f1ab6a2bb47c65399ee8d2e5a1cca46f8..42fb0d5da3cedf20ee8269509d89510a4ed941e2 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema[7.1].define(version: 2024_12_23_004818) do
+ActiveRecord::Schema[7.1].define(version: 2024_12_23_202350) do
   create_table "assignments", force: :cascade do |t|
     t.integer "user_id", null: false
     t.integer "session_id", null: false
@@ -265,6 +265,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_12_23_004818) do
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
     t.string "ref_id"
+    t.integer "weight", default: 50, null: false
     t.index ["conference_id"], name: "index_stages_on_conference_id"
     t.index ["ref_id", "conference_id"], name: "index_stages_on_ref_id_and_conference_id", unique: true
   end