diff --git managed/adsense_managed.module managed/adsense_managed.module
index 2285b78..0437217 100644
--- managed/adsense_managed.module
+++ managed/adsense_managed.module
@@ -126,6 +126,16 @@ function adsense_managed_block_view($delta = '') {
 }
 
 /**
+ * Implements hook_ctools_plugin_directory().
+ */
+function adsense_managed_ctools_plugin_directory($module, $plugin) {
+  if ($module == 'ctools') {
+    return 'plugins/' . $plugin;
+  }
+}
+
+
+/**
  * Configuration of the provided block
  *
  * @param $delta
diff --git managed/plugins/content_types/adsense_slot/adsense_slot.inc managed/plugins/content_types/adsense_slot/adsense_slot.inc
new file mode 100644
index 0000000..5db40bb
--- /dev/null
+++ managed/plugins/content_types/adsense_slot/adsense_slot.inc
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * Plugin definition.
+ */
+$plugin = array(
+  'title' => t('Google Adsense slot'),
+  'description' => t('Show a google adsense by slot ID.'),
+  'category' => t('Google AdSense'),
+  'defaults' => array('ad_format' => '250x250', 'ad_slot' => '', 'ad_align' => 'center'),
+);
+
+/**
+ * Render callback.
+ */
+function adsense_managed_adsense_slot_content_type_render($subtype, $conf, $args, $context) {
+  if (!_adsense_page_match()) {
+    return;
+  }
+
+  $block = new stdClass();
+  $block->module = 'adsense_managed';
+  $block->title = t('Google AdSense');
+  $block->delta = drupal_clean_css_identifier($conf['ad_slot']);
+
+  $output = adsense_display(array('format' => $conf['ad_format'], 'slot' => $conf['ad_slot']));
+  if (!empty($conf['ad_align'])) {
+    $output = "<div style='text-align:" . $conf['ad_align'] . " display: block;'>" . $output . "</div>";
+  }
+
+  $block->content = $output;
+  return $block;
+}
+
+/**
+ * Form callback.
+ */
+function adsense_managed_adsense_slot_content_type_edit_form($form, &$form_state) {
+  $conf = $form_state['conf'];
+
+  foreach (adsense_ad_formats() as $format => $data) {
+    $ad_list[$format] = $format . ' : ' . $data['desc'];
+  }
+
+  $form['ad_format'] = array(
+    '#type' => 'select',
+    '#title' => t('Ad format'),
+    '#default_value' => $conf['ad_format'],
+    '#options' => $ad_list,
+    '#description' => t('Select the ad dimensions you want for this block.'),
+    '#required' => TRUE,
+  );
+  $form['ad_slot'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Ad Slot ID'),
+    '#default_value' => $conf['ad_slot'],
+    '#description' => t('This is the Ad Slot ID from your Google Adsense account, such as 0123456789.'),
+    '#required' => TRUE,
+  );
+  $form['ad_align'] = array(
+    '#type' => 'select',
+    '#title' => t('Ad alignment'),
+    '#default_value' => $conf['align'],
+    '#options' => array(
+      '' => t('None'),
+      'left' => t('Left'),
+      'center' => t('Centered'),
+      'right' => t('Right')
+    ),
+    '#description' => t('Select the horizontal alignment of the ad within the block.'),
+  );
+
+  return $form;
+}
+
+/**
+ * Form submit.
+ */
+function adsense_managed_adsense_slot_content_type_edit_form_submit($form, &$form_state) {
+  // Copy everything from our defaults.
+  foreach (array_keys($form_state['plugin']['defaults']) as $key) {
+    $form_state['conf'][$key] = $form_state['values'][$key];
+  }
+}
+
+
