diff --git a/src/transforms/aggregate.js b/src/transforms/aggregate.js
index e3f009c5767..02b7c1d7cf3 100644
--- a/src/transforms/aggregate.js
+++ b/src/transforms/aggregate.js
@@ -164,7 +164,7 @@ exports.supplyDefaults = function(transformIn, traceOut) {
     if(!Array.isArray(groups)) {
         if(!arrayAttrs[groups]) {
             transformOut.enabled = false;
-            return;
+            return transformOut;
         }
         arrayAttrs[groups] = 0;
     }
diff --git a/test/jasmine/tests/transform_aggregate_test.js b/test/jasmine/tests/transform_aggregate_test.js
index 2161e1475b7..d000f3d012f 100644
--- a/test/jasmine/tests/transform_aggregate_test.js
+++ b/test/jasmine/tests/transform_aggregate_test.js
@@ -2,6 +2,7 @@ var Plotly = require('@lib/index');
 
 var createGraphDiv = require('../assets/create_graph_div');
 var destroyGraphDiv = require('../assets/destroy_graph_div');
+var failTest = require('../assets/fail_test');
 
 describe('aggregate', function() {
     var gd;
@@ -341,4 +342,22 @@ describe('aggregate', function() {
         expect(enabledAggregations[2].target).toEqual('marker.color');
         expect(enabledAggregations[2]._index).toEqual(-1);
     });
+
+    it('does not error out on bad *group* value', function(done) {
+        Plotly.newPlot(gd, [{
+            y: [16.99, 10.34, 11.01, 23.68, 24.59],
+            transforms: [{
+                type: 'aggregate',
+                groups: null
+            }]
+        }])
+        .then(function() {
+            var tOut = gd._fullData[0].transforms[0];
+            expect(tOut.type).toBe('aggregate', 'transform type');
+            expect(tOut.groups).toBe('x', 'the *groups* default');
+            expect(tOut.enabled).toBe(false, 'should not be *enabled*');
+        })
+        .catch(failTest)
+        .then(done);
+    });
 });