diff --git a/src/plainui/jinja2/plainui/assembly.html.j2 b/src/plainui/jinja2/plainui/assembly.html.j2
index ce87964970aa11f6698a2b4a904dea43635d0526..e1c8d5eeb62d1388d184b6c0e6706e3ef34d5451 100644
--- a/src/plainui/jinja2/plainui/assembly.html.j2
+++ b/src/plainui/jinja2/plainui/assembly.html.j2
@@ -10,11 +10,16 @@
 {% import "plainui/components/badge_elements.html.j2" as badge_elements with context %}
 {% import "plainui/components/nav.html.j2" as navMacro with context %}
 {% import "plainui/components/function_btns.html.j2" as fbtns with context %}
+{% import "plainui/components/open_graph.html.j2" as ogMacro %}
 
 {% block title %}
   {{ conf.name }} - Assembly {{ assembly.name }}
 {% endblock title %}
 
+{% block head %}
+  {{ ogMacro.headers(assembly.name, site_name=conf.name, description=assembly.description, image=assembly.banner_image) }}
+{% endblock head %}
+
 {% block content %}
   {{ navMacro.top_nav(_("Assembly") , has_breadcrumbs=True) }}
   <ol class="breadcrumb hub-breadcrumbs">
diff --git a/src/plainui/jinja2/plainui/components/open_graph.html.j2 b/src/plainui/jinja2/plainui/components/open_graph.html.j2
new file mode 100644
index 0000000000000000000000000000000000000000..6431b258dc162c1826f621360d905e04036e5710
--- /dev/null
+++ b/src/plainui/jinja2/plainui/components/open_graph.html.j2
@@ -0,0 +1,16 @@
+{% macro headers(title, type="website", site_name=None, image=None, description=None) -%}
+  {% if site_name %}<meta property="og:site_name" content="{{ site_name }}" />{% endif %}
+  <meta property="og:title"
+        content="{%- if site_name -%}{{ site_name }}: {%- endif -%}{{ title }}" />
+  <meta property="og:type" content="{{ type }}" />
+  {% if image %}
+    <meta property="og:image" content="{{ image.url }}" />
+    <meta property="og:image:width" content="{{ image.width }}" />
+    <meta property="og:image:height" content="{{ image.height }}" />
+    <meta property="og:image:alt" content="{{ image.name }}" />
+  {% endif %}
+  {% if description %}
+    <meta property="og:description"
+          content="{{ description | truncate(250, True) }}" />
+  {% endif %}
+{%- endmacro %}
diff --git a/src/plainui/jinja2/plainui/event.html.j2 b/src/plainui/jinja2/plainui/event.html.j2
index 3ab6d9958d29763acd5592a8ccbebbc4737f1dac..827594fc55bab991365aa0356eccb372702e49bf 100644
--- a/src/plainui/jinja2/plainui/event.html.j2
+++ b/src/plainui/jinja2/plainui/event.html.j2
@@ -10,6 +10,7 @@
 {% import "plainui/components/image.html.j2" as imageMacro %}
 {% import "plainui/components/map.html.j2" as mapMacro %}
 {% import "plainui/components/event.html.j2" as eventMacro %}
+{% import "plainui/components/open_graph.html.j2" as ogMacro %}
 
 {%- macro random_preview_image_url() -%}
   {%- set imgs = [1, 2, 3, 4, 5, 6, 7] -%}
@@ -23,6 +24,7 @@
 {% endblock title %}
 
 {% block head %}
+  {{ ogMacro.headers(event.name, site_name=conf.name, description=event.description, image=event.banner_image) }}
   <script src="{{ static('plainui/vendor/vocplayer/player.umd.js') }}"></script>
   <link href="{{ static('plainui/vendor/vocplayer/style.css') }}"
         rel="stylesheet">
diff --git a/src/plainui/jinja2/plainui/projects/detail.html.j2 b/src/plainui/jinja2/plainui/projects/detail.html.j2
index a3922d612730e0323a34856d698288bd431ec2b1..443124b453e2250cc8353a6ea889f18178726564 100644
--- a/src/plainui/jinja2/plainui/projects/detail.html.j2
+++ b/src/plainui/jinja2/plainui/projects/detail.html.j2
@@ -4,11 +4,17 @@
 {% import "plainui/components/image.html.j2" as imageMacro %}
 {% import "plainui/components/tagbox.html.j2" as tagMacros %}
 {% import "plainui/components/function_btns.html.j2" as fbtns with context %}
+{% import "plainui/components/open_graph.html.j2" as ogMacro %}
 
 {% extends "plainui/base.html.j2" %}
 {% block title %}
   Conference {{ conf.name }} - Project {{ project.name }}
 {% endblock title %}
+
+{% block head %}
+  {{ ogMacro.headers(project.name, site_name=conf.name, description=project.description, image=project.banner_image) }}
+{% endblock head %}
+
 {% block content %}
   {{ navMacro.top_nav(_("Project") , has_breadcrumbs=True) }}
   <nav aria-label="breadcrumb">