diff --git a/config/schema/paragraphs_collection.schema.yml b/config/schema/paragraphs_collection.schema.yml
index fa7a055..7ad5ab0 100644
--- a/config/schema/paragraphs_collection.schema.yml
+++ b/config/schema/paragraphs_collection.schema.yml
@@ -4,9 +4,22 @@ paragraphs.behavior.settings.style:
     group:
       type: string
       label: Style group
+    groups:
+      type: sequence
+      label: 'Messages'
+      sequence:
+        type: string
+        label: 'Message'
     default:
       type: string
       label: Default style
+    defaults:
+      type: sequence
+      label: 'Test'
+      sequence:
+        type: string
+        label: 'Test'
+
 paragraphs.behavior.settings.grid_layout:
   type: paragraphs.behavior.settings_base
   mapping:
diff --git a/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php b/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php
index f111814..5dc92d3 100644
--- a/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php
+++ b/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php
@@ -81,16 +81,39 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
         'id' => $wrapper_id,
       ],
     ];
-    $form['style_wrapper']['style'] = [
-      '#type' => 'select',
-      '#options' => $this->getStyleOptions($this->configuration['group'], $this->configuration['default']),
-      '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'style', $this->configuration['default']),
-      '#title' => !empty($this->configuration['group']) ? t('%group Style', ['%group' => $this->configuration['group']]) : t('Style'),
-      '#attributes' => ['class' => ['paragraphs-style']],
-    ];
-    // Allow empty option in case there is no default style configured.
-    if (!$this->configuration['default']) {
-      $form['style_wrapper']['style']['#empty_option'] = $this->t('- Default -');
+
+    if (count($this->configuration['groups']) != 0) {
+      foreach ($this->configuration['groups'] as $group) {
+        $group_id = strtolower(str_replace(' ', '_', $group));
+        $plugin_default = '';
+        if (isset($this->configuration['defaults'][$group_id])) {
+          $plugin_default = $this->configuration['defaults'][$group_id];
+        }
+        $form['style_wrapper'][$group_id] = [
+          '#type' => 'select',
+          '#title' => !empty($this->configuration['groups'][$group]) ? t('%group Style', ['%group' => $this->configuration['groups'][$group]]) : t('Style'),
+          '#options' => $this->getStyleOptions($group, $plugin_default),
+          '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), $group_id, $this->configuration['default']),
+          '#attributes' => ['class' => ['paragraphs-style']],
+        ];
+        // Allow empty option in case there is no default style configured.
+        if (!isset($this->configuration['defaults'][$group_id])) {
+          $form['style_wrapper'][$group_id]['#empty_option'] = $this->t('- Default -');
+        }
+      }
+    }
+    else {
+      $form['style_wrapper']['style'] = [
+        '#type' => 'select',
+        '#title' => !empty($this->configuration['group']) ? t('%group Style', ['%group' => $this->configuration['group']]) : t('Style'),
+        '#options' => $this->getStyleOptions($this->configuration['group'], $this->configuration['default']),
+        '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'style', $this->configuration['default']),
+        '#attributes' => ['class' => ['paragraphs-style']],
+      ];
+      // Allow empty option in case there is no default style configured.
+      if (!$this->configuration['default']) {
+        $form['style_wrapper']['style']['#empty_option'] = $this->t('- Default -');
+      }
     }
 
     return $form;
@@ -129,31 +152,57 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    * {@inheritdoc}
    */
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
-    $form['group'] = [
+    $form['groups'] = [
       '#type' => 'select',
+      '#title' => $this->t('Style groups'),
+      '#multiple' => TRUE,
       '#empty_option' => $this->t('- None -'),
       '#options' => $this->yamlStyleDiscovery->getStyleGroups(),
-      '#title' => $this->t('Style group'),
       '#description' => $this->t('Restrict available styles to a certain style group. Select "- None -" to allow all styles.'),
-      '#default_value' => $this->configuration['group'],
+      '#default_value' => $this->configuration['groups'],
       '#ajax' => [
         'callback' => [$this, 'updateDefaultStyle'],
         'wrapper' => 'style-wrapper',
       ],
     ];
     // @todo: Remove getCompleteFormState() after https://www.drupal.org/project/drupal/issues/2798261.
-    $group_key = ['behavior_plugins', $this->getPluginId(), 'settings', 'group'];
-    $group = $form_state->getCompleteFormState()->getValue($group_key, $this->configuration['group']);
-    $form['default'] = [
-      '#type' => 'select',
-      '#empty_option' => $this->t('- None -'),
-      '#options' => $this->yamlStyleDiscovery->getStyleOptions($group),
-      '#title' => $this->t('Default style'),
-      '#description' => $this->t('This style will be default option on a behavior form.'),
-      '#default_value' => $this->configuration['default'],
-      '#prefix' => '<div id="style-wrapper">',
-      '#suffix' => '</div>',
-    ];
+    $group_key = ['behavior_plugins', $this->getPluginId(), 'settings', 'groups'];
+    $groups = $form_state->getCompleteFormState()->getValue($group_key, $this->configuration['groups']);
+    if (count($groups) != 0) {
+      $form['defaults'] = [
+        '#type' => 'container',
+        '#prefix' => '<div id="style-wrapper">',
+        '#suffix' => '</div>',
+      ];
+      foreach($groups as $group) {
+        $default = '';
+        $group_name = strtolower(str_replace(' ', '_', $group));
+        if (isset($this->configuration['defaults'][$group_name])) {
+          $default = $this->configuration['defaults'][$group_name];
+        }
+        $form['defaults'][$group_name] = [
+          '#type' => 'select',
+          '#title' => $this->t($group . ' default style'),
+          '#empty_option' => $this->t('- None -'),
+          '#options' => $this->yamlStyleDiscovery->getStyleOptions($group),
+          '#description' => $this->t('This style will be default option on a behavior form.'),
+          '#default_value' => $default,
+        ];
+      }
+    }
+    else {
+      $form['default'] = [
+        '#type' => 'select',
+        '#empty_option' => $this->t('- None -'),
+        '#options' => $this->yamlStyleDiscovery->getStyleOptions(reset($groups)),
+        '#title' => $this->t('Default style'),
+        '#description' => $this->t('This style will be default option on a behavior form.'),
+        '#default_value' => $this->configuration['default'],
+        '#prefix' => '<div id="style-wrapper">',
+        '#suffix' => '</div>',
+      ];
+    }
+
     return $form;
   }
 
@@ -162,9 +211,15 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    */
   public static function updateDefaultStyle(array $form, FormStateInterface $form_state) {
     $group_select = $form_state->getTriggeringElement();
+    $groups = $form_state->getValue($group_select['#array_parents']);
     // Gets the behavior plugin settings form.
     $settings_form = NestedArray::getValue($form, array_slice($group_select['#array_parents'], 0, -1));
-    return $settings_form['default'];
+    if (count($groups) != 0) {
+      return $settings_form['defaults'];
+    }
+    else {
+      return $settings_form['default'];
+    }
   }
 
   /**
@@ -182,7 +237,9 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    */
   public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
     $this->configuration['group'] = $form_state->getValue('group');
+    $this->configuration['groups'] = $form_state->getValue('groups');
     $this->configuration['default'] = $form_state->getValue('default');
+    $this->configuration['defaults'] = $form_state->getValue('defaults') ?: [];
   }
 
   /**
@@ -191,7 +248,9 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
   public function defaultConfiguration() {
     return [
       'group' => '',
+      'groups' => [],
       'default' => '',
+      'defaults' => [],
     ];
   }
 
@@ -201,20 +260,44 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
   public function view(array &$build, Paragraph $paragraph, EntityViewDisplayInterface $display, $view_mode) {
     // In case the current style is not set, fallback to the default style.
     // If default style is set to none, no style will be applied.
-    $paragraph_style = $paragraph->getBehaviorSetting($this->getPluginId(), 'style', $this->configuration['default']);
-    $style = $this->yamlStyleDiscovery->getStyle($paragraph_style, $this->configuration['default']);
-    if ($style) {
-      $build['#attributes']['class'][] = 'paragraphs-behavior-' . $this->getPluginId() . '--' . $style['name'];
-      if (!isset($build['#attached']['library'])) {
-        $build['#attached']['library'] = [];
+    $paragraph_styles = [];
+    if ($this->configuration['defaults']) {
+      foreach ($this->configuration['defaults'] as $key => $value) {
+        $paragraph_styles[$key] = $paragraph->getBehaviorSetting($this->getPluginId(), $key, $this->configuration['defaults'][$key]);
+      }
+      foreach ($paragraph_styles as $key => $value) {
+        $style = $this->yamlStyleDiscovery->getStyle($value, $this->configuration['defaults'][$key]);
+        if ($style) {
+          $build['#attributes']['class'][] = 'paragraphs-behavior-' . $this->getPluginId() . '--' . $style['name'];
+          if (!isset($build['#attached']['library'])) {
+            $build['#attached']['library'] = [];
+          }
+          $build['#attached']['library'] = array_merge($style['libraries'], $build['#attached']['library']);
+
+          // Add CSS classes from style configuration if they are defined.
+          if (!empty($style['classes'])) {
+            $build['#attributes']['class'] = array_merge($style['classes'], $build['#attributes']['class']);
+          }
+        }
       }
-      $build['#attached']['library'] = array_merge($style['libraries'], $build['#attached']['library']);
+    }
+    else {
+      $paragraph_style = $paragraph->getBehaviorSetting($this->getPluginId(), 'style', $this->configuration['default']);
+      $style = $this->yamlStyleDiscovery->getStyle($paragraph_style, $this->configuration['default']);
+      if ($style) {
+        $build['#attributes']['class'][] = 'paragraphs-behavior-' . $this->getPluginId() . '--' . $style['name'];
+        if (!isset($build['#attached']['library'])) {
+          $build['#attached']['library'] = [];
+        }
+        $build['#attached']['library'] = array_merge($style['libraries'], $build['#attached']['library']);
 
-      // Add CSS classes from style configuration if they are defined.
-      if (!empty($style['classes'])) {
-        $build['#attributes']['class'] = array_merge($style['classes'], $build['#attributes']['class']);
+        // Add CSS classes from style configuration if they are defined.
+        if (!empty($style['classes'])) {
+          $build['#attributes']['class'] = array_merge($style['classes'], $build['#attributes']['class']);
+        }
       }
     }
+
   }
 
    /**
diff --git a/src/Tests/ParagraphsStylePluginTest.php b/src/Tests/ParagraphsStylePluginTest.php
index 92a7bc6..81d5c4e 100644
--- a/src/Tests/ParagraphsStylePluginTest.php
+++ b/src/Tests/ParagraphsStylePluginTest.php
@@ -48,11 +48,11 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     // Add a text field.
     $this->fieldUIAddExistingField('admin/structure/paragraphs_type/' . $paragraph_type, 'paragraphs_text', $paragraph_type);
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $this->assertFieldByName('behavior_plugins[style][settings][group]', '');
+    $this->assertFieldByName('behavior_plugins[style][settings][groups][]');
     $this->assertFieldByName('behavior_plugins[style][settings][default]', '');
     $edit = [
       'behavior_plugins[style][enabled]' => TRUE,
-      'behavior_plugins[style][settings][group]' => '',
+      'behavior_plugins[style][settings][groups][]' => [],
       'behavior_plugins[style][settings][default]' => '',
     ];
     $this->drupalPostForm(NULL, $edit, t('Save'));
@@ -83,20 +83,22 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
 
     // Restrict the paragraphs type to the "Italic Test Group" style group.
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $this->assertFieldByName('behavior_plugins[style][settings][group]', '');
+    $this->assertFieldByName('behavior_plugins[style][settings][groups][]');
     $edit = [
       'behavior_plugins[style][enabled]' => TRUE,
-      'behavior_plugins[style][settings][group]' => 'Italic Test Group',
+      'behavior_plugins[style][settings][groups][]' => ['Italic Test Group'],
     ];
     $this->drupalPostForm(NULL, $edit, t('Save'));
 
+    $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
+
     // Check that the style without a style group is no longer available.
     $this->drupalGet('node/add/paragraphed_test');
     $this->drupalPostAjaxForm(NULL, [], 'paragraphs_test_style_plugin_add_more');
     $this->assertText('Style');
-    $this->assertField('paragraphs[0][behavior_plugins][style][style_wrapper][style]');
+    $this->assertField('paragraphs[0][behavior_plugins][style][style_wrapper][italic_test_group]');
     $options = $this->xpath('//select[@name=:name]//option[normalize-space(text())=:text]', [
-      ':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][style]',
+      ':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][italic_test_group]',
       ':text' => 'Groupless',
     ]);
     $this->assertTrue(!isset($options[0]), 'Groupless style not available.');
@@ -110,14 +112,14 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
 
     // Configure Regular as a default style.
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $this->assertFieldByName('behavior_plugins[style][settings][default]', '');
+    $this->assertFieldByName('behavior_plugins[style][settings][defaults][italic_test_group]');
     $edit = [
-      'behavior_plugins[style][settings][group]' => 'Regular Test Group',
+      'behavior_plugins[style][settings][groups][]' => ['Regular Test Group'],
     ];
-    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][group]');
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
     $edit = [
-      'behavior_plugins[style][settings][group]' => 'Regular Test Group',
-      'behavior_plugins[style][settings][default]' => 'regular',
+      'behavior_plugins[style][settings][groups][]' => 'Regular Test Group',
+      'behavior_plugins[style][settings][defaults][regular_test_group]' => 'regular',
     ];
     $this->drupalPostForm(NULL, $edit, t('Save'));
 
@@ -145,7 +147,7 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     // Assert default value for the style selection.
     $node = $this->getNodeByTitle('style_plugin_node');
     $this->drupalGet('node/' . $node->id() . '/edit');
-    $this->assertFieldByName('paragraphs[0][behavior_plugins][style][style_wrapper][style]', 'regular');
+    $this->assertFieldByName('paragraphs[0][behavior_plugins][style][style_wrapper][regular_test_group]', 'regular');
   }
 
   /**
