I recently used this code and had to remove the body node from contactResult.body.properties and searchResults.body.results as mentioned in this issue. So they become contactResult.properties and searchResults.results.
Hope that helps.
Matthew Shepherd
Freelance HubSpot Consultant CRM Consultant | SEO Specialist
I recently used this code and had to remove the body node from contactResult.body.properties and searchResults.body.results as mentioned in this issue. So they become contactResult.properties and searchResults.results.
Hope that helps.
Matthew Shepherd
Freelance HubSpot Consultant CRM Consultant | SEO Specialist
Error when using custom code workflow action to merge contacts based on matching phone number
SOLVE
Hey, @tcxen👋 Thanks for your question! Did you get this worked out?
Can you share your code example here, please? Minus your Private App details 😊
The code block tool can help with formatting as needed.
Seeing how your code looks, helps our community members to give targeted advice. (You didn't do anything wrong, I want to increase our surface area for getting an answer for you if possible)
/** * Searches for another contact with the same value of DEDUPE_PROPERTY. * - If no matches are found, nothing happens * - If one match is found, the enrolled contact is merged into the matching contact * - If more than one match is found, the action fails */
const DEDUPE_PROPERTY = 'phone';
const hubspot = require('@hubspot/api-client');
exports.main = (event, callback) => { // Make sure to add your API key under "Secrets" above. const hubspotClient = new hubspot.Client({ accessToken: process.env.DedupePrivateApp });
hubspotClient.crm.contacts.basicApi .getById(event.object.objectId, [DEDUPE_PROPERTY]) .then(contactResult => { let dedupePropValue = contactResult.body.properties[DEDUPE_PROPERTY];
console.log(`Looking for duplicates based on ${DEDUPE_PROPERTY} = ${dedupePropValue}`); hubspotClient.crm.contacts.searchApi .doSearch({ filterGroups: [{ filters: [{ propertyName: DEDUPE_PROPERTY, operator: 'EQ', value: dedupePropValue }] }] }) .then(searchResults => { let idsToMerge = searchResults.body.results .map(object => object.id) .filter(vid => Number(vid) !== Number(event.object.objectId));
if (idsToMerge.length == 0) { console.log('No matching contact, nothing to merge'); return; } else if (idsToMerge.length > 1) { console.log(`Found multiple potential contact IDs ${idsToMerge.join(', ')} to merge`); throw new Error("Ambiguous merge; more than one matching contact"); }