diff --git a/Extensions/Editor Extensions/Template/config.json b/Extensions/Editor Extensions/Template/config.json
new file mode 100644
index 0000000..40f9caa
--- /dev/null
+++ b/Extensions/Editor Extensions/Template/config.json
@@ -0,0 +1,61 @@
+{
+ "plugin_type": "widget",
+ "name": "Extension Template",
+ "edit_page_url": "www.optimizely.com",
+ "form_schema": [
+ {
+ "default_value": "append",
+ "field_type": "dropdown",
+ "name": "position",
+ "label": "Position",
+ "options": {
+ "choices": [
+ {
+ "value": "beforebegin",
+ "label": "Before"
+ },
+ {
+ "value": "afterend",
+ "label": "After"
+ },
+ {
+ "value": "afterbegin",
+ "label": "At Beginning"
+ },
+ {
+ "value": "beforeend",
+ "label": "At End Of"
+ }
+ ]
+ }
+ },
+ {
+ "default_value": "",
+ "field_type": "selector",
+ "name": "selector",
+ "label": "Selector",
+ "options": null
+ },
+ {
+ "default_value": "Title Text",
+ "field_type": "text",
+ "name": "title",
+ "label": "title",
+ "options": null
+ },
+ {
+ "default_value": "Text",
+ "field_type": "text",
+ "name": "text",
+ "label": "text",
+ "options": null
+ }
+ ],
+ "description": "",
+ "options": {
+ "html": "
\n",
+ "css": "",
+ "apply_js": "document.querySelector(extension.selector).insertAdjacentHTML(extension.position, extension.$html);\n",
+ "undo_js": "document.getElementById(\"optimizely-extension-\" + extension.$instance).remove();"
+ }
+}
\ No newline at end of file
diff --git a/Extensions/Editor Extensions/Template/extension.css b/Extensions/Editor Extensions/Template/extension.css
new file mode 100644
index 0000000..e69de29
diff --git a/Extensions/Editor Extensions/Template/extension.html b/Extensions/Editor Extensions/Template/extension.html
new file mode 100644
index 0000000..9df1f35
--- /dev/null
+++ b/Extensions/Editor Extensions/Template/extension.html
@@ -0,0 +1 @@
+
diff --git a/Extensions/Editor Extensions/Template/extension_apply.js b/Extensions/Editor Extensions/Template/extension_apply.js
new file mode 100644
index 0000000..dc484c1
--- /dev/null
+++ b/Extensions/Editor Extensions/Template/extension_apply.js
@@ -0,0 +1 @@
+document.querySelector(extension.selector).insertAdjacentHTML(extension.position, extension.$html);
diff --git a/Extensions/Editor Extensions/Template/extension_properties.json b/Extensions/Editor Extensions/Template/extension_properties.json
new file mode 100644
index 0000000..f0b02b8
--- /dev/null
+++ b/Extensions/Editor Extensions/Template/extension_properties.json
@@ -0,0 +1,55 @@
+{
+ "plugin_type": "widget",
+ "name": "Extension Template",
+ "edit_page_url": "www.optimizely.com",
+ "form_schema": [
+ {
+ "default_value": "append",
+ "field_type": "dropdown",
+ "name": "position",
+ "label": "Position",
+ "options": {
+ "choices": [
+ {
+ "value": "beforebegin",
+ "label": "Before"
+ },
+ {
+ "value": "afterend",
+ "label": "After"
+ },
+ {
+ "value": "afterbegin",
+ "label": "At Beginning"
+ },
+ {
+ "value": "beforeend",
+ "label": "At End Of"
+ }
+ ]
+ }
+ },
+ {
+ "default_value": "",
+ "field_type": "selector",
+ "name": "selector",
+ "label": "Selector",
+ "options": null
+ },
+ {
+ "default_value": "Title Text",
+ "field_type": "text",
+ "name": "title",
+ "label": "title",
+ "options": null
+ },
+ {
+ "default_value": "Text",
+ "field_type": "text",
+ "name": "text",
+ "label": "text",
+ "options": null
+ }
+ ],
+ "description": ""
+}
diff --git a/Extensions/Editor Extensions/Template/extension_undo.js b/Extensions/Editor Extensions/Template/extension_undo.js
new file mode 100644
index 0000000..7e43cae
--- /dev/null
+++ b/Extensions/Editor Extensions/Template/extension_undo.js
@@ -0,0 +1 @@
+document.getElementById("optimizely-extension-" + extension.$instance).remove();
\ No newline at end of file