diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000000000000000000000000000000000000..9931e1eac74240b3a4166ede1456d5564fa14fcc
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,23 @@
+APPLICATION_ENV=
+
+BUGSNAG_JAVASCRIPT_KEY=
+BUGSNAG_RUBY_KEY=
+
+MAIL_FROM_MAIL=
+MAIL_FROM_NAME=
+
+OTP_SECRET_ENCRYPTION_KEY=
+
+OUTSCALE_OOS_ACCESS_KEY_ID=
+OUTSCALE_OOS_BUCKET=
+OUTSCALE_OOS_ENDPOINT=
+OUTSCALE_OOS_REGION=
+OUTSCALE_OOS_SECRET_ACCESS_KEY=
+
+SECRET_KEY_BASE=
+
+SEND_IN_BLUE_API_KEY=
+SEND_IN_BLUE_SENDER_NAME=
+
+SMTP_USER=
+SMTP_PASSWORD=
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 2293bb7ed8a3261012eacf07d4c3a19d3c932d08..c507b277b29b4e92f85188e7afe4209a025a026b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,8 +30,15 @@
 
 /public/packs
 /public/packs-test
+
+# Ignore some JS stuff
 /node_modules
 /yarn-error.log
 yarn-debug.log*
 .yarn-integrity
+
+# Ignore macOS stuff
 .DS_Store
+
+# Ignore environment variables
+.env
\ No newline at end of file
diff --git a/Gemfile b/Gemfile
index 686d08ea19e67c4883dfe42a244f7371242e57c5..6e88429ca14bd707e131d1ce5580f58ed97016f3 100644
--- a/Gemfile
+++ b/Gemfile
@@ -11,6 +11,7 @@ gem 'image_processing'
 gem 'delayed_job_active_record'
 gem 'delayed_job_web'
 gem 'bootsnap', '>= 1.4.4', require: false
+gem 'bugsnag'
 
 # Back
 gem 'rails'
@@ -37,6 +38,7 @@ gem 'bootstrap'
 
 group :development, :test do
   gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
+  gem 'dotenv-rails'
 end
 
 group :development do
diff --git a/Gemfile.lock b/Gemfile.lock
index 8148f3132c0e7b26dc374cf0ad8414d99ff3b5e4..b9273239433792e6254bea97c3c285650a0b0c69 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -93,6 +93,8 @@ GEM
       sassc-rails (>= 2.0.0)
     breadcrumbs_on_rails (4.1.0)
       railties (>= 5.0)
+    bugsnag (6.24.0)
+      concurrent-ruby (~> 1.0)
     builder (3.2.4)
     byebug (11.1.3)
     cancancan (3.3.0)
@@ -131,6 +133,10 @@ GEM
       warden (~> 1.2.3)
     devise-i18n (1.10.0)
       devise (>= 4.8.0)
+    dotenv (2.7.6)
+    dotenv-rails (2.7.6)
+      dotenv (= 2.7.6)
+      railties (>= 3.2)
     enum-i18n (0.1.1)
       activerecord (>= 4.1)
     enum_help (0.0.17)
@@ -335,6 +341,7 @@ DEPENDENCIES
   bootsnap (>= 1.4.4)
   bootstrap
   breadcrumbs_on_rails
+  bugsnag
   byebug
   cancancan
   capybara (>= 3.26)
@@ -343,6 +350,7 @@ DEPENDENCIES
   delayed_job_web
   devise
   devise-i18n
+  dotenv-rails
   enum-i18n
   enum_help
   front_matter_parser
@@ -371,4 +379,4 @@ RUBY VERSION
    ruby 2.7.4p191
 
 BUNDLED WITH
-   2.1.4
+   2.2.24
diff --git a/app/views/admin/layouts/application.html.erb b/app/views/admin/layouts/application.html.erb
index a1c8f6b5d4c1c966c94b9554f175c5fe23a01f32..59d9365337a0b6e1c0d48f8b768623d7b0e8dad2 100644
--- a/app/views/admin/layouts/application.html.erb
+++ b/app/views/admin/layouts/application.html.erb
@@ -29,5 +29,6 @@
       </div>
     </div>
     <%= javascript_include_tag 'admin' %>
+    <%= render 'bugsnag' %>
   </body>
 </html>
diff --git a/app/views/application/_bugsnag.html.erb b/app/views/application/_bugsnag.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..11eccb31e7e8a0420355c1208dec1efd7bdb81ef
--- /dev/null
+++ b/app/views/application/_bugsnag.html.erb
@@ -0,0 +1,12 @@
+<% unless Rails.env.development? %>
+  <script src="//d2wy8f7a9ursnm.cloudfront.net/v7/bugsnag.min.js"></script>
+  <script type="text/javascript">
+    Bugsnag.start({
+      apiKey: "<%= j ENV['BUGSNAG_JAVASCRIPT_KEY'] %>",
+      releaseStage: "<%= j ENV['APPLICATION_ENV'] %>"
+    });
+    <% if user_signed_in? %>
+    Bugsnag.setUser("<%= j current_user.id %>", "<%= j current_user.email %>", "<%= j current_user.to_s %>");
+    <% end %>
+  </script>
+<% end %>
\ No newline at end of file
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 7981d2b483dc340e98fd8fd98f8def4ba2cc9bed..72922a729f04bae88d24b549be0f0072a335c32a 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -16,5 +16,6 @@
       <%= yield %>
     </main>
     <%= render 'footer' %>
+    <%= render 'bugsnag' %>
   </body>
 </html>
diff --git a/app/views/layouts/devise.html.erb b/app/views/layouts/devise.html.erb
index f7b594e8c6eba126d1bbaaae640a3ce45bf58dc9..428f9850e22589cce4a059de2a43d938133b2a4e 100644
--- a/app/views/layouts/devise.html.erb
+++ b/app/views/layouts/devise.html.erb
@@ -29,5 +29,6 @@
           </div>
         </main>
       </div>
+      <%= render 'bugsnag' %>
     </body>
   </html>
diff --git a/config/initializers/bugsnag.rb b/config/initializers/bugsnag.rb
new file mode 100644
index 0000000000000000000000000000000000000000..2fd755ac05f28fa8a5a577a010a6b3169192284b
--- /dev/null
+++ b/config/initializers/bugsnag.rb
@@ -0,0 +1,5 @@
+Bugsnag.configure do |config|
+  config.api_key = ENV['BUGSNAG_RUBY_KEY']
+  config.release_stage = ENV['APPLICATION_ENV']
+  config.notify_release_stages = ['production', 'staging']
+end