diff --git a/app/views/layouts/_bugsnag.html.haml b/app/views/layouts/_bugsnag.html.haml
new file mode 100644
index 0000000000..20c4304c84
--- /dev/null
+++ b/app/views/layouts/_bugsnag.html.haml
@@ -0,0 +1,3 @@
+%script{src: "//d2wy8f7a9ursnm.cloudfront.net/v6/bugsnag.min.js"}
+:javascript
+ window.bugsnagClient = bugsnag('#{ENV["BUGSNAG_JS_KEY"]}');
diff --git a/app/views/layouts/darkswarm.html.haml b/app/views/layouts/darkswarm.html.haml
index 317f40907d..210c89b0f9 100644
--- a/app/views/layouts/darkswarm.html.haml
+++ b/app/views/layouts/darkswarm.html.haml
@@ -37,6 +37,7 @@
#footer
%loading
+ = render "layouts/bugsnag" if ENV["BUGSNAG_JS_KEY"].present?
%script{:src => "https://js.stripe.com/v3/", :type => "text/javascript"}
%script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry#{ ENV['GOOGLE_MAPS_API_KEY'] ? '&key=' + ENV['GOOGLE_MAPS_API_KEY'] : ''} "}
= javascript_include_tag "darkswarm/all"
diff --git a/config/application.yml.example b/config/application.yml.example
index 28d271e111..0cbb866279 100644
--- a/config/application.yml.example
+++ b/config/application.yml.example
@@ -37,6 +37,9 @@ SMTP_PASSWORD: 'f00d'
# MAILS_FROM: hello@example.com
# MAIL_BCC: manager@example.com
+# Javascript error reporting via Bugsnag.
+#BUGSNAG_JS_KEY: ""
+
# SingleSignOn login for Discourse
#
# DISCOURSE_SSO_SECRET should be a random string. It must be the same as provided to your Discourse instance.