Adds the people who engaged with your posts to HubSpot, only once a verified work email is found for them, and never twice.
Uses
Dropcontact
HubSpotPhantomBuster
Turn people who engage with your posts into CRM contacts
Once a day, the latest export from the PhantomBuster Phantom that collects the people who liked or commented on your posts is read, each person is checked for a verified work email, and the ones it can stand behind are filed as HubSpot contacts.
You get a HubSpot contact with the name, company and profile link exactly as they appear in your export, plus an email that comes only from Dropcontact and only when reported as that person's own work address. Nobody is added without one. HubSpot is asked first whether the address is already on a contact: anyone already there is left exactly as they are, and if HubSpot cannot answer the person is skipped rather than risk a duplicate. Nothing is scored or inferred about anyone, and re-running over the same export adds nobody twice.
Keep the Phantom scheduled inside PhantomBuster: the workflow reads its most recent output rather than launching it, and each run looks up a bounded number of people.
engagementPhantomId to blank.Set engagementPhantomId to blank.maxPeoplePerRun to 25.Set maxPeoplePerRun to 25.engagementPhantomId. Save it as export.Get results for Phantom engagementPhantomId. Save it as export.engagers to export.rows.Set engagers to export.rows.considered to 0.Set considered to 0.addedCount to 0.Set addedCount to 0.engager in engagers:For each engager in engagers:considered multiplied by 1 is greater than or equal to maxPeoplePerRun…If considered multiplied by 1 is greater than or equal to maxPeoplePerRun…considered.Add 1 to considered.engager.firstName and save it as firstName.Trim engager.firstName and save it as firstName.firstName is nullIf firstName is nullfirstName to blank.Change firstName to blank.engager.lastName and save it as lastName.Trim engager.lastName and save it as lastName.lastName is nullIf lastName is nulllastName to blank.Change lastName to blank.engager.companyName and save it as companyName.Trim engager.companyName and save it as companyName.companyName is nullIf companyName is nullcompanyName to blank.Change companyName to blank.engager.profileUrl and save it as profileUrl.Trim engager.profileUrl and save it as profileUrl.profileUrl is nullIf profileUrl is nullprofileUrl to blank.Change profileUrl to blank.firstName lastName and save it as personLabel.Trim firstName lastName and save it as personLabel.personLabel is emptyIf personLabel is emptySkipped an exported row that carried no name, so there was nobody to look up..Show in the output: Skipped an exported row that carried no name, so there was nobody to look up..verifiedEmails to an empty list.Set verifiedEmails to an empty list.enrichErrorIf a step below fails, save the error as enrichErrorfirstName. Save it as enrichment.Enrich contact firstName. Save it as enrichment.verifiedEmails to enrichment.contact.email.Change verifiedEmails to enrichment.contact.email.personLabel plus : enrichError.message.Show in the output: Could not check for a verified work email for personLabel plus : enrichError.message.workEmail to blank.Set workEmail to blank.emailQuality to blank.Set emailQuality to blank.candidate in verifiedEmails:For each candidate in verifiedEmails:candidate.email and save it as workEmail.Trim candidate.email and save it as workEmail.candidate.qualification and save it as emailQuality.Trim candidate.qualification and save it as emailQuality.workEmail is nullIf workEmail is nullworkEmail to blank.Change workEmail to blank.emailQuality is not nominative@pro or workEmail is empty or workEmail…If emailQuality is not nominative@pro or workEmail is empty or workEmail…personLabel - nothing was added to HubSpot. An address is only used when the enrichment tool reports it as that person's own work address.Show in the output: No verified work address came back for personLabel - nothing was added to HubSpot. An address is only used when the enrichment tool reports it as that person's own work address.existingContactId to blank.Set existingContactId to blank.crmDecision to skip.Set crmDecision to skip.lookupErrorIf a step below fails, save the error as lookupErrorworkEmail. Save it as existingContact.Find the contact workEmail. Save it as existingContact.existingContact.id and save it as existingContactId.Trim existingContact.id and save it as existingContactId.lookupError.message contains No contact found (ignoring case)If lookupError.message contains No contact found (ignoring case)crmDecision to create.Change crmDecision to create.workEmail plus - leaving them alone rather than risking a duplicate: lookupError.message.Show in the output: Could not check HubSpot for workEmail plus - leaving them alone rather than risking a duplicate: lookupError.message.existingContactId is nullIf existingContactId is nullexistingContactId to blank.Change existingContactId to blank.existingContactId isn't emptyIf existingContactId isn't emptyworkEmail is already in HubSpot as contact existingContactId - the existing record was left untouched.Show in the output: workEmail is already in HubSpot as contact existingContactId - the existing record was left untouched.crmDecision is not createIf crmDecision is not createworkEmail alone: HubSpot did not confirm they are absent from the CRM, so adding them could have created a duplicate.Show in the output: Left workEmail alone: HubSpot did not confirm they are absent from the CRM, so adding them could have created a duplicate.newContactId to blank.Set newContactId to blank.createFailure to blank.Set createFailure to blank.createErrorIf a step below fails, save the error as createErrorworkEmail. Save it as createdContact.Create the contact workEmail. Save it as createdContact.createdContact.id and save it as newContactId.Trim createdContact.id and save it as newContactId.createError.message and save it as createFailure.Trim createError.message and save it as createFailure.newContactId is nullIf newContactId is nullnewContactId to blank.Change newContactId to blank.createFailure isn't emptyIf createFailure isn't emptyworkEmail to HubSpot: createFailure.Show in the output: Could not add workEmail to HubSpot: createFailure.addedCount.Add 1 to addedCount.personLabel (workEmail) to HubSpot as contact newContactId.Show in the output: Added personLabel (workEmail) to HubSpot as contact newContactId.workEmail but returned no contact id, so this run cannot confirm the record was created. Check HubSpot before running it again.Show in the output: HubSpot accepted workEmail but returned no contact id, so this run cannot confirm the record was created. Check HubSpot before running it again.considered as text plus people who engaged with your posts and added addedCount as text new HubSpot contacts.Show in the output: Looked at considered as text plus people who engaged with your posts and added addedCount as text new HubSpot contacts.