diff --git a/.travis.yml b/.travis.yml
index f79d0adc6b39ab3678764465108c9624807edb04..a58b8a6b0eea91ce46b05278d8e86a7fd6ffe9cc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,4 @@
-# Created with package:mono_repo v2.0.0
+# Created with package:mono_repo v2.1.0
 language: dart
 
 # Custom configuration
@@ -7,6 +7,8 @@ addons:
   chrome: stable
 env:
   global: FORCE_TEST_EXIT=true
+after_failure:
+  - tool/report_failure.sh
 
 jobs:
   include:
@@ -20,6 +22,11 @@ jobs:
       dart: "2.2.0"
       env: PKGS="pkgs/test"
       script: ./tool/travis.sh dartanalyzer_1
+    - stage: analyze_and_format
+      name: "SDK: 2.1.0; PKGS: pkgs/test_api, pkgs/test_core; TASKS: `dartanalyzer --fatal-warnings .`"
+      dart: "2.1.0"
+      env: PKGS="pkgs/test_api pkgs/test_core"
+      script: ./tool/travis.sh dartanalyzer_1
     - stage: unit_test
       name: "SDK: dev; PKG: pkgs/test; TASKS: `xvfb-run -s \"-screen 0 1024x768x24\" pub run test --preset travis --total-shards 5 --shard-index 0`"
       dart: dev
@@ -45,11 +52,6 @@ jobs:
       dart: dev
       env: PKGS="pkgs/test"
       script: ./tool/travis.sh command_4
-    - stage: analyze_and_format
-      name: "SDK: 2.1.0; PKGS: pkgs/test_api, pkgs/test_core; TASKS: `dartanalyzer --fatal-warnings .`"
-      dart: "2.1.0"
-      env: PKGS="pkgs/test_api pkgs/test_core"
-      script: ./tool/travis.sh dartanalyzer_1
     - stage: unit_test
       name: "SDK: dev; PKG: pkgs/test_api; TASKS: `pub run test --preset travis`"
       dart: dev
diff --git a/mono_repo.yaml b/mono_repo.yaml
index 3d70b3ea946377ddf30633f2f653f7a4a172685c..77c90a37dafea849eb1f202c7f59eb4898fab17c 100644
--- a/mono_repo.yaml
+++ b/mono_repo.yaml
@@ -6,5 +6,8 @@ travis:
   env:
     global: FORCE_TEST_EXIT=true
 
+  after_failure:
+  - tool/report_failure.sh
+
 merge_stages:
 - analyze_and_format
diff --git a/tool/report_failure.sh b/tool/report_failure.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ed24cf260054d93f53c035e820510aa81730ea06
--- /dev/null
+++ b/tool/report_failure.sh
@@ -0,0 +1,6 @@
+TRAVIS_BUILDS_URI="https://travis-ci.org/dart-lang/build/builds"
+if [ "$TRAVIS_EVENT_TYPE" != "pull_request" -a "$TRAVIS_ALLOW_FAILURE" != "true" ]; then
+  curl -H "Content-Type: application/json" -X POST -d \
+    "{'text':'Build failed! ${TRAVIS_BUILDS_URI}/${TRAVIS_BUILD_ID}'}" \
+    "${CHAT_HOOK_URI}"
+fi
diff --git a/tool/travis.sh b/tool/travis.sh
index 34e74d7708b449361779cb9665e3e25d8d9a08a2..099601c25496171739419c2bed2c3e74a7067895 100755
--- a/tool/travis.sh
+++ b/tool/travis.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Created with package:mono_repo v2.0.0
+# Created with package:mono_repo v2.1.0
 
 if [[ -z ${PKGS} ]]; then
   echo -e '\033[31mPKGS environment variable must be set!\033[0m'
@@ -19,53 +19,47 @@ for PKG in ${PKGS}; do
   pub upgrade --no-precompile || exit $?
 
   for TASK in "$@"; do
+    echo
+    echo -e "\033[1mPKG: ${PKG}; TASK: ${TASK}\033[22m"
     case ${TASK} in
-    command_0) echo
-      echo -e '\033[1mTASK: command_0\033[22m'
-      echo -e 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 0'
+    command_0)
+      echo 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 0'
       xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 0 || EXIT_CODE=$?
       ;;
-    command_1) echo
-      echo -e '\033[1mTASK: command_1\033[22m'
-      echo -e 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 1'
+    command_1)
+      echo 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 1'
       xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 1 || EXIT_CODE=$?
       ;;
-    command_2) echo
-      echo -e '\033[1mTASK: command_2\033[22m'
-      echo -e 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 2'
+    command_2)
+      echo 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 2'
       xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 2 || EXIT_CODE=$?
       ;;
-    command_3) echo
-      echo -e '\033[1mTASK: command_3\033[22m'
-      echo -e 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 3'
+    command_3)
+      echo 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 3'
       xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 3 || EXIT_CODE=$?
       ;;
-    command_4) echo
-      echo -e '\033[1mTASK: command_4\033[22m'
-      echo -e 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 4'
+    command_4)
+      echo 'xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 4'
       xvfb-run -s "-screen 0 1024x768x24" pub run test --preset travis --total-shards 5 --shard-index 4 || EXIT_CODE=$?
       ;;
-    dartanalyzer_0) echo
-      echo -e '\033[1mTASK: dartanalyzer_0\033[22m'
-      echo -e 'dartanalyzer --fatal-infos --fatal-warnings .'
+    dartanalyzer_0)
+      echo 'dartanalyzer --fatal-infos --fatal-warnings .'
       dartanalyzer --fatal-infos --fatal-warnings . || EXIT_CODE=$?
       ;;
-    dartanalyzer_1) echo
-      echo -e '\033[1mTASK: dartanalyzer_1\033[22m'
-      echo -e 'dartanalyzer --fatal-warnings .'
+    dartanalyzer_1)
+      echo 'dartanalyzer --fatal-warnings .'
       dartanalyzer --fatal-warnings . || EXIT_CODE=$?
       ;;
-    dartfmt) echo
-      echo -e '\033[1mTASK: dartfmt\033[22m'
-      echo -e 'dartfmt -n --set-exit-if-changed .'
+    dartfmt)
+      echo 'dartfmt -n --set-exit-if-changed .'
       dartfmt -n --set-exit-if-changed . || EXIT_CODE=$?
       ;;
-    test) echo
-      echo -e '\033[1mTASK: test\033[22m'
-      echo -e 'pub run test --preset travis'
+    test)
+      echo 'pub run test --preset travis'
       pub run test --preset travis || EXIT_CODE=$?
       ;;
-    *) echo -e "\033[31mNot expecting TASK '${TASK}'. Error!\033[0m"
+    *)
+      echo -e "\033[31mNot expecting TASK '${TASK}'. Error!\033[0m"
       EXIT_CODE=1
       ;;
     esac