in core/AAMFieldsExtractor.php [26:83]
public static function getNormalizedUserData($user_data_array) {
$aam_setttings = FacebookWordpressOptions::getAAMSettings();
if(!$user_data_array || !$aam_setttings ||
!$aam_setttings->getEnableAutomaticMatching()){
return array();
}
//Removing fields not enabled in AAM settings
foreach ($user_data_array as $key => $value) {
if(!in_array($key, $aam_setttings->getEnabledAutomaticMatchingFields())){
unset($user_data_array[$key]);
}
}
// Normalizing gender and date of birth
// According to https://developers.facebook.com/docs/facebook-pixel/advanced/advanced-matching
if(
array_key_exists(AAMSettingsFields::GENDER, $user_data_array)
&& !empty($user_data_array[AAMSettingsFields::GENDER])
){
$user_data_array[AAMSettingsFields::GENDER] =
$user_data_array[AAMSettingsFields::GENDER][0];
}
if(
array_key_exists(AAMSettingsFields::DATE_OF_BIRTH, $user_data_array)
){
// strtotime() and date() return false for invalid parameters
$unix_timestamp =
strtotime($user_data_array[AAMSettingsFields::DATE_OF_BIRTH]);
if(!$unix_timestamp){
unset($user_data_array[AAMSettingsFields::DATE_OF_BIRTH]);
} else {
$formatted_date = date("Ymd", $unix_timestamp);
if(!$formatted_date){
unset($user_data_array[AAMSettingsFields::DATE_OF_BIRTH]);
} else {
$user_data_array[AAMSettingsFields::DATE_OF_BIRTH] = $formatted_date;
}
}
}
// Given that the format of advanced matching fields is the same in
// the Pixel and the Conversions API,
// we can use the business sdk for normalization
// Compare the documentation:
// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters
// https://developers.facebook.com/docs/facebook-pixel/advanced/advanced-matching
foreach($user_data_array as $field => $data){
try{
$normalized_value = Normalizer::normalize($field, $data);
$user_data_array[$field] = $normalized_value;
}
catch(\Exception $e){
unset($user_data_array[$field]);
}
}
return $user_data_array;
}