diff --git a/InvenTree/part/templates/part/tabs.html b/InvenTree/part/templates/part/tabs.html
index ff2cbbf4a0..855462c217 100644
--- a/InvenTree/part/templates/part/tabs.html
+++ b/InvenTree/part/templates/part/tabs.html
@@ -2,6 +2,11 @@
Details
+ {% if part.has_variants %}
+
+ Variants {{ part.variants.count }}
+
+ {% endif %}
Stock {{ part.total_stock }}
diff --git a/InvenTree/part/templates/part/variants.html b/InvenTree/part/templates/part/variants.html
new file mode 100644
index 0000000000..dd8effcc29
--- /dev/null
+++ b/InvenTree/part/templates/part/variants.html
@@ -0,0 +1,9 @@
+{% extends "part/part_base.html" %}
+{% load static %}
+
+{% block details %}
+{% include "part/tabs.html" with tab='variants' %}
+
+TODO
+
+{% endblock %}
\ No newline at end of file
diff --git a/InvenTree/part/urls.py b/InvenTree/part/urls.py
index 900ebe8127..c8582160bb 100644
--- a/InvenTree/part/urls.py
+++ b/InvenTree/part/urls.py
@@ -26,14 +26,15 @@ part_detail_urls = [
url(r'^duplicate/', views.PartDuplicate.as_view(), name='part-duplicate'),
url(r'^pricing/', views.PartPricing.as_view(), name='part-pricing'),
- url(r'^track/?', views.PartDetail.as_view(template_name='part/track.html'), name='part-track'),
- url(r'^attachments/?', views.PartDetail.as_view(template_name='part/attachments.html'), name='part-attachments'),
+ url(r'^variants/?', views.PartDetail.as_view(template_name='part/variants.html'), name='part-variants'),
+ url(r'^stock/?', views.PartDetail.as_view(template_name='part/stock.html'), name='part-stock'),
+ url(r'^allocation/?', views.PartDetail.as_view(template_name='part/allocation.html'), name='part-allocation'),
url(r'^bom/?', views.PartDetail.as_view(template_name='part/bom.html'), name='part-bom'),
url(r'^build/?', views.PartDetail.as_view(template_name='part/build.html'), name='part-build'),
- url(r'^stock/?', views.PartDetail.as_view(template_name='part/stock.html'), name='part-stock'),
url(r'^used/?', views.PartDetail.as_view(template_name='part/used_in.html'), name='part-used-in'),
- url(r'^allocation/?', views.PartDetail.as_view(template_name='part/allocation.html'), name='part-allocation'),
url(r'^suppliers/?', views.PartDetail.as_view(template_name='part/supplier.html'), name='part-suppliers'),
+ url(r'^track/?', views.PartDetail.as_view(template_name='part/track.html'), name='part-track'),
+ url(r'^attachments/?', views.PartDetail.as_view(template_name='part/attachments.html'), name='part-attachments'),
url(r'^qr_code/?', views.PartQRCode.as_view(), name='part-qr'),