diff --git a/__tests__/src/components/WindowCanvasNavigationControls.test.js b/__tests__/src/components/WindowCanvasNavigationControls.test.js
index a5c1267f3a995de2d271097070254e60a8698adf..d58e44f86409ee8512237e89964693dc5e7d4872 100644
--- a/__tests__/src/components/WindowCanvasNavigationControls.test.js
+++ b/__tests__/src/components/WindowCanvasNavigationControls.test.js
@@ -5,6 +5,7 @@ import { WindowCanvasNavigationControls } from '../../../src/components/WindowCa
 import ViewerInfo from '../../../src/containers/ViewerInfo';
 import ViewerNavigation from '../../../src/containers/ViewerNavigation';
 import ZoomControls from '../../../src/containers/ZoomControls';
+import { PluginHook } from '../../../src/components/PluginHook';
 
 /** create wrapper */
 function createWrapper(props) {
@@ -31,6 +32,7 @@ describe('WindowCanvasNavigationControls', () => {
         <ZoomControls zoomToWorld={zoomToWorld} />
         <ViewerNavigation />
         <ViewerInfo />
+        <PluginHook />
       </Paper>,
     )).toBe(true);
   });
diff --git a/src/components/AttributionPanel.js b/src/components/AttributionPanel.js
index 87690bcaae52a32e3265df6b1ba745a9b3ae5981..358798f5438917e984d6c3a1c75279c64ab94818 100644
--- a/src/components/AttributionPanel.js
+++ b/src/components/AttributionPanel.js
@@ -7,7 +7,7 @@ import Img from 'react-image';
 import CompanionWindow from '../containers/CompanionWindow';
 import { LabelValueMetadata } from './LabelValueMetadata';
 import ns from '../config/css-ns';
-
+import { PluginHook } from './PluginHook';
 
 /**
  * WindowSideBarInfoPanel
@@ -68,6 +68,8 @@ export class AttributionPanel extends Component {
             />
           </div>
         )}
+
+        <PluginHook {...this.props} />
       </CompanionWindow>
     );
   }
diff --git a/src/components/CanvasInfo.js b/src/components/CanvasInfo.js
index cb3f05d11742ea957fc6abe295c2403234a66a6c..ee94fab346c18b272b165437ff907ddf5834b011 100644
--- a/src/components/CanvasInfo.js
+++ b/src/components/CanvasInfo.js
@@ -4,7 +4,7 @@ import Typography from '@material-ui/core/Typography';
 import CollapsibleSection from '../containers/CollapsibleSection';
 import SanitizedHtml from '../containers/SanitizedHtml';
 import { LabelValueMetadata } from './LabelValueMetadata';
-
+import { PluginHook } from './PluginHook';
 
 /**
  * CanvasInfo
@@ -30,30 +30,29 @@ export class CanvasInfo extends Component {
         id={`${id}-currentItem-${index}`}
         label={t('currentItem', { context: `${index + 1}/${totalSize}` })}
       >
-        <>
-          {canvasLabel && (
-            <Typography
-              aria-labelledby={
-                `${id}-currentItem-${index} ${id}-currentItem-${index}-heading`
-              }
-              id={`${id}-currentItem-${index}-heading`}
-              variant="h4"
-              component="h5"
-            >
-              {canvasLabel}
-            </Typography>
-          )}
+        {canvasLabel && (
+          <Typography
+            aria-labelledby={
+              `${id}-currentItem-${index} ${id}-currentItem-${index}-heading`
+            }
+            id={`${id}-currentItem-${index}-heading`}
+            variant="h4"
+            component="h5"
+          >
+            {canvasLabel}
+          </Typography>
+        )}
 
-          {canvasDescription && (
-            <Typography variant="body1">
-              <SanitizedHtml htmlString={canvasDescription} ruleSet="iiif" />
-            </Typography>
-          )}
+        {canvasDescription && (
+          <Typography variant="body1">
+            <SanitizedHtml htmlString={canvasDescription} ruleSet="iiif" />
+          </Typography>
+        )}
 
-          {canvasMetadata.length > 0 && (
-            <LabelValueMetadata labelValuePairs={canvasMetadata} />
-          )}
-        </>
+        {canvasMetadata.length > 0 && (
+          <LabelValueMetadata labelValuePairs={canvasMetadata} />
+        )}
+        <PluginHook {...this.props} />
       </CollapsibleSection>
     );
   }
diff --git a/src/components/ManifestInfo.js b/src/components/ManifestInfo.js
index 4fc1b749b784024cea081b0b4ec40b50d0239b0d..d597983c14d7761f51b677196d5a1a3aa8e69156 100644
--- a/src/components/ManifestInfo.js
+++ b/src/components/ManifestInfo.js
@@ -4,7 +4,7 @@ import Typography from '@material-ui/core/Typography';
 import CollapsibleSection from '../containers/CollapsibleSection';
 import SanitizedHtml from '../containers/SanitizedHtml';
 import { LabelValueMetadata } from './LabelValueMetadata';
-
+import { PluginHook } from './PluginHook';
 
 /**
  * ManifestInfo
@@ -48,6 +48,8 @@ export class ManifestInfo extends Component {
         {manifestMetadata.length > 0 && (
           <LabelValueMetadata labelValuePairs={manifestMetadata} />
         )}
+
+        <PluginHook {...this.props} />
       </CollapsibleSection>
     );
   }
diff --git a/src/components/ManifestRelatedLinks.js b/src/components/ManifestRelatedLinks.js
index e837e1a3c00153cd3267c0990a5eb5cbc6ff938c..50d034e7b385700db1ec7e6038c102b315dc993f 100644
--- a/src/components/ManifestRelatedLinks.js
+++ b/src/components/ManifestRelatedLinks.js
@@ -5,7 +5,7 @@ import Link from '@material-ui/core/Link';
 import classNames from 'classnames';
 import CollapsibleSection from '../containers/CollapsibleSection';
 import ns from '../config/css-ns';
-
+import { PluginHook } from './PluginHook';
 
 /**
  * ManifestRelatedLinks
@@ -96,6 +96,7 @@ export class ManifestRelatedLinks extends Component {
             </>
           )}
         </dl>
+        <PluginHook {...this.props} />
       </CollapsibleSection>
     );
   }
diff --git a/src/components/WindowCanvasNavigationControls.js b/src/components/WindowCanvasNavigationControls.js
index 5008e7d19f02c58818de8fb769df4c9b3ac3db12..f7f7752e1d4c7d6be750e4fbef9c093b1eeff073 100644
--- a/src/components/WindowCanvasNavigationControls.js
+++ b/src/components/WindowCanvasNavigationControls.js
@@ -6,6 +6,7 @@ import ZoomControls from '../containers/ZoomControls';
 import ViewerInfo from '../containers/ViewerInfo';
 import ViewerNavigation from '../containers/ViewerNavigation';
 import ns from '../config/css-ns';
+import { PluginHook } from './PluginHook';
 
 /**
  * Represents the viewer controls in the mirador workspace.
@@ -48,6 +49,8 @@ export class WindowCanvasNavigationControls extends Component {
         />
         <ViewerNavigation windowId={windowId} />
         <ViewerInfo windowId={windowId} />
+
+        <PluginHook {...this.props} />
       </Paper>
     );
   }
diff --git a/src/components/WorkspaceAdd.js b/src/components/WorkspaceAdd.js
index 4174baf391d20d566b967aac37caa2c9d89e0eeb..05cff823015266af99076bd8b9cd526eba4cff85 100644
--- a/src/components/WorkspaceAdd.js
+++ b/src/components/WorkspaceAdd.js
@@ -16,6 +16,7 @@ import ManifestForm from '../containers/ManifestForm';
 import ManifestListItem from '../containers/ManifestListItem';
 import MiradorMenuButton from '../containers/MiradorMenuButton';
 import { IIIFDropTarget } from './IIIFDropTarget';
+import { PluginHook } from './PluginHook';
 
 /**
  * An area for managing manifests and adding them to workspace
@@ -96,6 +97,7 @@ export class WorkspaceAdd extends React.Component {
           ) : (
             <Paper className={classes.list}>
               <Typography variant="srOnly" component="h1">{t('miradorResources')}</Typography>
+              <PluginHook {...this.props} />
               <List>
                 {manifestList}
               </List>