diff --git a/src/Field/BasicField.php b/src/Field/BasicField.php
index 67aa662baf08eab438f519c72eb98833d663b053..3e34ff9508edc1367947ebd479c7aad8e93e5a99 100644
--- a/src/Field/BasicField.php
+++ b/src/Field/BasicField.php
@@ -29,6 +29,7 @@ abstract class BasicField implements Field {
 		'description'     => '',
 		'description_tip' => '',
 		'data'            => [],
+		'type'            => 'text',
 	];
 
 	public function should_override_form_template(): bool {
@@ -36,7 +37,13 @@ abstract class BasicField implements Field {
 	}
 
 	public function get_type(): string {
-		return 'text';
+		return $this->meta['type'];
+	}
+
+	public function set_type( string $type ): Field {
+		$this->meta['type'] = $type;
+
+		return $this;
 	}
 
 	public function get_validator(): Validator {
diff --git a/src/Field/SelectField.php b/src/Field/SelectField.php
index 2162753879b5bfee5a62be28f4e5ccafa3d9b46c..04d290cfe922ab32cc7979f51ebf9c3138e3b730 100644
--- a/src/Field/SelectField.php
+++ b/src/Field/SelectField.php
@@ -6,6 +6,10 @@ use WPDesk\Forms\Field;
 
 class SelectField extends BasicField {
 
+	public function get_type(): string {
+		return 'select';
+	}
+
 	public function get_template_name(): string {
 		return 'select';
 	}
diff --git a/src/Field/TextAreaField.php b/src/Field/TextAreaField.php
index f22b2bb28a58b06d2c4545b86507a182b013df61..81ed137d0afa1149a69a88a17075a7ddc020a90e 100644
--- a/src/Field/TextAreaField.php
+++ b/src/Field/TextAreaField.php
@@ -4,6 +4,10 @@ namespace WPDesk\Forms\Field;
 
 class TextAreaField extends BasicField {
 
+	public function get_type(): string {
+		return 'textarea';
+	}
+
 	public function get_template_name(): string {
 		return 'textarea';
 	}
diff --git a/src/Field/TimepickerField.php b/src/Field/TimepickerField.php
index 0d5f0e3191e5f43fbdd49e98415b8f5f49bdf489..f1bf91aae3dde56c7a855370acc2ba6517746854 100644
--- a/src/Field/TimepickerField.php
+++ b/src/Field/TimepickerField.php
@@ -7,6 +7,10 @@ use WPDesk\Forms\Serializer\JsonSerializer;
 
 class TimepickerField extends BasicField {
 
+	public function get_type(): string {
+		return 'time';
+	}
+
 	public function has_serializer(): bool {
 		return true;
 	}