diff --git a/profile/modules/patternbuilder/includes/DrupalPatternBuilder.php b/profile/modules/patternbuilder/includes/DrupalPatternBuilder.php
index e413596..a1645fa 100644
--- a/profile/modules/patternbuilder/includes/DrupalPatternBuilder.php
+++ b/profile/modules/patternbuilder/includes/DrupalPatternBuilder.php
@@ -385,6 +385,14 @@ class DrupalPatternBuilder {
     $ref_entity_types = static::allowedReferenceEntityTypes();
 
     if (isset($field_name)) {
+      $field_info = field_info_field($field_name);
+      $context = array(
+        'component' => $component,
+        'entity_type' => $entity_type,
+        'field_info' => $field_info,
+      );
+      drupal_alter('patternbuilder_entity_prepare', $entity, $context);
+
       // Process fields.
       $field_instance = field_info_instance($entity_type, $field_name, $entity_bundle);
       $display = static::createDisplayHandler($entity, $field_instance, $view_mode);
diff --git a/profile/modules/patternbuilder/patternbuilder.api.php b/profile/modules/patternbuilder/patternbuilder.api.php
index 57e8fe5..8f24989 100644
--- a/profile/modules/patternbuilder/patternbuilder.api.php
+++ b/profile/modules/patternbuilder/patternbuilder.api.php
@@ -139,3 +139,17 @@ function hook_patternbuilder_pattern_status_info() {
 function hook_patternbuilder_pattern_status_info_alter(&$statuses) {
   $statuses['active']['label'] = t('Public');
 }
+
+/**
+ * Allows other modules to hook into entity prepare and change field values.
+ * @param object $entity
+ *   Entity object
+ * @param array $context
+ *   Array of component, entity_type and field_info.
+ */
+function hook_patternbuilder_entity_prepare($entity, $context) {
+  if ($context['field_info']['type'] == 'link_field') {
+    // Do your logic to manipulate entity's field data.
+  }
+}
+
