diff --git a/linkit.field.inc b/linkit.field.inc
index 910d9d7..54d28de 100644
--- a/linkit.field.inc
+++ b/linkit.field.inc
@@ -170,9 +170,17 @@ function linkit_field_profile_validate($element, &$form_state, $form) {
 }
 
 /**
- * Process callback.
+ * After build callback.
+ *
+ * @param array $element
+ *   Form API element.
+ * @param array $form_state
+ *   State of form the element belongs to.
+ *
+ * @return array
+ *   Form API element with attached Linkit functionality.
  */
-function linkit_process_field_element($element, &$form_state, &$complete_form) {
+function linkit_field_element_after_build(array $element, array &$form_state) {
   // Only proceed if the field is attached to an entity.
   if (!isset($element['#entity_type'])) {
     return $element;
@@ -199,7 +207,7 @@ function linkit_process_field_element($element, &$form_state, &$complete_form) {
 
     // Special treatment for link fields.
     if ($element['#type'] == 'link_field') {
-      $field_id = $element['#id'] . '-url';
+      $field_id = $element['url']['#id'];
     }
 
     $field_js = array(
@@ -238,4 +246,4 @@ function linkit_process_field_element($element, &$form_state, &$complete_form) {
   }
 
   return $element;
-}
\ No newline at end of file
+}
diff --git a/linkit.module b/linkit.module
index 0184f76..853c74c 100644
--- a/linkit.module
+++ b/linkit.module
@@ -329,7 +329,7 @@ function linkit_element_info_alter(&$types) {
   // Append a process function for the field integration.
   foreach (linkit_get_allowed_field_elements() as $element) {
     if (isset($types[$element])) {
-      $types[$element]['#process'][] = 'linkit_process_field_element';
+      $types[$element]['#after_build'][] = 'linkit_field_element_after_build';
     }
   }
 
