Une automatisation, ou «workflow», est une séquence automatisée d'actions déclenchées par des critères ou des événements spécifiques dans HubSpot. Il peut aider les entreprises à rationaliser des tâches et des processus répétitifs tels que la génération de leads, le marketing par courriel et le suivi des clients. Les «workflows» dans HubSpot sont personnalisables pour répondre aux besoins spécifiques de chaque entreprise et peuvent inclure diverses actions telles que l'envoi de courriel, l'attribution de tâches, la mise à jour des propriétés de contact et la création de transactions ou de tickets. Avec les «workflows HubSpot», les entreprises peuvent gagner du temps tout en offrant une expérience plus personnalisée et efficace à leurs clients. Elles peuvent également augmenter leur productivité, accroître leur chiffre d'affaires et améliorer la satisfaction de leur clientèle. Les «workflows» sont un outil puissant aux fonctionnalités multiples et certaines sont encore méconnues. En effet, il est possible d’encore mieux les exploiter grâce à l’utilisation du «Custom code» pour effectuer des actions personnalisées. (Disponible aux utilisateurs de Operations Hub Pro)
Dans cet article, vous apprendrez comment créer un contact à partir d’une propriété texte contenant un courriel et l’associer à un «deal». Il s’agit d’une manœuvre plutôt technique qui n’est pas accessible à tout le monde, car ça nécessite de jouer un peu dans le code, mais même sans être un développeur, il vous sera possible de simplement copier le code que vous trouverez dans cet article.
Naviguez dans «Settings/Account Setup/Integrations/Private Apps/Create a private app», et assignez-lui les permissions «Read/Write» pour «crm.objects.contacts» et «crm.objects.deals». Une fois que vous aurez créé votre «App», n’oubliez pas de noter votre Token. Pour plus d'information sur la création de «Private App», consultez la documentation HubSpot.
Maintenant, créez un «workflow» qui vérifiera les «deals» qui n’ont pas de contact associé, en plus d’avoir un courriel dans la propriété requise.
Comme action, utilisez «Custom code». Dans le panneau de code, placez bien votre «token API» collecté plus tôt.
Pour la partie code, commencez par retrouver le «deal». Il sera utile pour utiliser les propriétés dans les prochaines requêtes:
const ApiResponse = await hubspotClient.crm.deals.basicApi.getById(event.object.objectId, ["customer_email","num_associated_contacts"]);
dealId = ApiResponse.id;
Maintenant, faites une recherche dans l’API de contact pour voir si le contact existe déjà. S’il existe, simplement prendre son ID, sinon, créez comme suit:
if(ApiContactResponse.total == 1){
currentContact = ApiContactResponse.results[0];
toObjectId = currentContact.id;
}else{
const properties = {
"email": ApiResponse.properties.customer_email,
};
const SimplePublicObjectInput = { properties };
const ApiCreateContactResponse = await hubspotClient.crm.contacts.basicApi.create(SimplePublicObjectInput);
toObjectId = ApiCreateContactResponse.id;
}
Il ne reste qu’à faire l'association entre le contact et le «deal». Et voilà!
const toObjectType = "contact";
const AssociationSpec = [
{
"associationCategory": "HUBSPOT_DEFINED",
"associationTypeId": 3
}
];
const ApiAssociationResponse = await
hubspotClient.crm.deals.associationsApi.create(dealId, toObjectType, toObjectId, AssociationSpec);
Voici le code complet que vous pouvez tout simplement ajouter à votre «workflow». Dans le panneau de code, vous pouvez choisir un «deal» pour tester le code avant d’activer le «workflow» pour être certain que tout fonctionne correctement.
const hubspot = require('@hubspot/api-client');
exports.main = async (event, callback) => {
const hubspotClient = new hubspot.Client({
accessToken: process.env.apikey
});
let currentContact;
let toObjectId;
let dealId;
try {
const ApiResponse = await hubspotClient.crm.deals.basicApi.getById(event.object.objectId, ["customer_email","num_associated_contacts"]);
if(ApiResponse.properties.customer_email &&
ApiResponse.properties.num_associated_contacts == 0){
dealId = ApiResponse.id;
const PublicObjectSearchRequest = { filterGroups: [{"filters
[{"value":ApiResponse.properties.customer_email,"propertyName":"email","o
erator":"EQ"}]}], properties: ["email"], limit: 1 };
const ApiContactResponse = await
hubspotClient.crm.contacts.searchApi.doSearch(PublicObjectSearchRequest);
if(ApiContactResponse.total == 1){
currentContact = ApiContactResponse.results[0];
toObjectId = currentContact.id;
}else{
const properties = {
"email": ApiResponse.properties.customer_email,
};
const SimplePublicObjectInput = { properties };
const ApiCreateContactResponse = await
hubspotClient.crm.contacts.basicApi.create(SimplePublicObjectInput);
toObjectId = ApiCreateContactResponse.id;
}
const toObjectType = "contact";
const AssociationSpec = [
{
"associationCategory": "HUBSPOT_DEFINED",
"associationTypeId": 3
}
];
const ApiAssociationResponse = await hubspotClient.crm.deals.associationsApi.create(dealId, toObjectType, toObjectId, AssociationSpec);
}
} catch (err) {
console.error(err);
throw err;
}
}
En conclusion, les «Custom Coded Workflows» peuvent vous aider à faire des actions que vous auriez crues impossible dans HubSpot avec un «workflow» traditionnel. Les possibilités sont infinies: renouvellement d’un abonnement, ajout d’un numéro séquentiel de facture à un «deal», lien entre différents objets, propriétés calculées complexes, liste de recommandations pour une infolettre selon l’historique de visite d’un contact, et plus encore.
Si vous souhaitez aller de l'avant dans l'optimisation de vos «workflows», mais n'avez pas les connaissances ou les ressources à disposition, n’hésitez pas à entrer en contact gratuitement avec un de nos experts Globalia pour ajouter des opérations personnalisées dans votre compte HubSpot.