hook_field_formatter_view does not get called I have a custom field, that hooks into profile2 and saves it's value in user data blob. Everything works fine, except the hook_field_formatter_view, that does not get called for a reason. As a result, when the field is viewed, it returns always an empty array. I have all declaration hooks in place.

&lt;?php 
 /**
  * Implementation of hook_field_info().
  */
 function profile_cal_field_info() {
  return array(
    'profile_cal' =&gt; array(
      'label' =&gt; t('Availability calendar'),
      'description' =&gt; t('Sets weekly available time.'),
      'default_widget' =&gt; 'profile_cal_cal',
      'default_formatter' =&gt; 'profile_cal_formatter',
    ),
  );
 } 

 /**
 * Implements hook_field_formatter_info().
 */
 function profile_cal_field_formatter_info() {
  return array(
    'profile_cal_formatter' =&gt; array(
      'label' =&gt; t('Default'),
      'field types' =&gt; array('profile_cal'),
    ),
  );
 }

 /**
 * Implements hook_field_widget_info().
 */
 function profile_cal_field_widget_info() {
  return array(
    'profile_cal_cal' =&gt; array(
      'label' =&gt; t('Availability widget'),
      'field types' =&gt; array('profile_cal'),
      'multiple values' =&gt; FIELD_BEHAVIOR_DEFAULT,
      'default value' =&gt; FIELD_BEHAVIOR_NONE,
    ),
  );
}

 /**
 * Implements hook_field_formatter_view().
 */
 function profile_cal_field_formatter_view($entity_type, $entity, $field,     $instance, $langcode, $items, $display) {
  drupal_set_message('Called!');

  $element = array();

  return $element;
 }

 /**
 * Implements hook_field_is_empty().
 */
 function profile_cal_field_is_empty($item, $field) {
  return FALSE;
 }

 ?&gt;
Your code is correct, I just tested it and it works for me.
I created fresh Drupal instance, created profile_cal module with your code without any modifications then added 'Availability calendar' field to 'Basic page' content type, created a page and got "Called!" message on the screen.