diff --git a/config/config.sample.yaml b/config/config.sample.yaml
index e4ffdef3b260de13f60eeab096806f8e55dae676..7640f796bb6feba037b70ad5ffc1e49ef9a4e6a2 100644
--- a/config/config.sample.yaml
+++ b/config/config.sample.yaml
@@ -1,17 +1,45 @@
+# This is a sample of the config file showing all avaliable options.
+# Where possible we have documented what they do, and all values are the
+# default values.
+
 bridge:
+  # Domain part of the bridge, e.g. matrix.org
   domain: "localhost"
+  # This should be your publically facing URL because Discord may use it to
+  # fetch media from the media store.
   homeserverUrl: "http://localhost:8008"
+  # Interval at which to process users in the 'presence queue'. If you have
+  # 5 users, one user will be processed every 500 milliseconds according to the
+  # value below. This has a minimum value of 250.
+  # WARNING: This has a high chance of spamming the homeserver with presence
+  # updates since it will send one each time somebody changes state or is online.
   presenceInterval: 500
+  # Disable setting presence for 'ghost users' which means Discord users on Matrix
+  # will not be shown as away or online.
   disablePresence: false
+  # Disable sending typing notifications when somebody on Discord types.
   disableTypingNotifications: false
+  # Disable parsing discord usernames out of matrix messages so
+  # that it highlights discord users.
+  # WARNING: Not always 100% accurate, but close enough usually.
   disableDiscordMentions: false
+  # Disable deleting messages on Discord if a message is redacted on Matrix.
   disableDeletionForwarding: false
+  # Enable users to bridge rooms using !discord commands. See
+  # https://t2bot.io/discord for instructions.
   enableSelfServiceBridging: false
+  # For both below, a space is inserted after @ to stop the mentions working.
+  # Disable relaying @everyone to Discord. Non-puppeted users can abuse this.
+  disableEveryoneMention: false
+  # Disable relaying @here to Discord. Non-puppeted users can abuse this.
+  disableHereMention: false
+# Authentication configuration for the discord bot.
 auth:
-  clientID: "12345" # Get from discord
+  clientID: "12345"
   secret: "blah"
   botToken: "foobar"
 logging:
+  # What level should the logger output to the console at.
   console: "warn" #silly, verbose, info, http, warn, error, silent
   lineDateFormat: "MMM-D HH:mm:ss.SSS" # This is in moment.js format
   files:
@@ -22,11 +50,43 @@ logging:
       level: "warn"
     - file: "botlogs.log" # Will capture logs from DiscordBot
       level: "info"
-      enable: 
-        - "DiscordBot" 
+      enable:
+        - "DiscordBot"
 database:
-  filename: "discord.db"
   userStorePath: "user-store.db"
   roomStorePath: "room-store.db"
+  # You may either use SQLite or Postgresql for the bridge database, which contains
+  # important mappings for events and user puppeting configurations.
+  # Use the filename option for SQLite, or connString for Postgresql.
+  # If you are migrating, see https://github.com/Half-Shot/matrix-appservice-discord/blob/master/docs/howto.md#migrate-to-postgres-from-sqlite
+  # WARNING: You will almost certainly be fine with sqlite unless your bridge
+  # is in heavy demand and you suffer from IO slowness.
+  filename: "discord.db"
+  # connString: "postgresql://user:password@localhost/database_name"
 room:
+  # Set the default visibility of alias rooms, defaults to "public".
+  # One of: "public", "private"
   defaultVisibility: "public"
+channel:
+    # Pattern of the name given to bridged rooms.
+    # Can use :guild for the guild name and :name for the channel name.
+    namePattern: "[Discord] :guild :name"
+    # Changes made to rooms when a channel is deleted.
+    deleteOptions:
+       # Prefix the room name with a string.
+       #namePrefix: "[Deleted]"
+       # Prefix the room topic with a string.
+       #topicPrefix: "This room has been deleted"
+       # Disable people from talking in the room by raising the event PL to 50
+       disableMessaging: false
+       # Remove the discord alias from the room.
+       unsetRoomAlias: true
+       # Remove the room from the directory.
+       unlistFromDirectory: true
+       # Set the room to be unavaliable for joining without an invite.
+       setInviteOnly: true
+       # Make all the discord users leave the room.
+       ghostsLeave: true
+limits:
+    # Delay between discord users joining a room.
+    roomGhostJoinDelay: 6000