Install
openclaw skills install hubspot-crmGère contacts et deals dans HubSpot CRM pour USC SYNERGY : rechercher, créer, modifier, associer, et suivre le pipeline de ventes.
openclaw skills install hubspot-crmGestion complète du CRM HubSpot pour USC SYNERGY (centre de formation VAE). Permet de rechercher, créer, modifier des contacts et deals, gérer les associations, et suivre le pipeline commercial.
HUBSPOT_ACCESS_TOKEN| Pipeline | ID | Usage |
|---|---|---|
| Sales Pipeline | default | Pipeline principal |
| Traitement des leads | 859619884 | Qualification prospects |
| Stage | ID |
|---|---|
| Appointment Scheduled | appointmentscheduled |
| Qualified To Buy | qualifiedtobuy |
| Presentation Scheduled | presentationscheduled |
| Decision Maker Bought-In | decisionmakerboughtin |
| Contract Sent | contractsent |
| Closed Won | closedwon |
| Closed Lost | closedlost |
phone, mobilephone, hs_whatsapp_phone_number — Téléphonessource — Source du contactref — Référence interneobjet — Objet de la demandefonction — Fonction professionnellecurl -s "https://api.hubapi.com/crm/v3/objects/contacts/search" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filterGroups": [{
"filters": [{
"propertyName": "phone",
"operator": "EQ",
"value": "NUMERO_TEL"
}]
}],
"properties": ["firstname","lastname","email","phone","mobilephone","hs_whatsapp_phone_number","source","ref","objet","fonction"]
}'
Remplacer
NUMERO_TELpar le numéro au format international (+33...) Si aucun résultat, retenter avecmobilephoneouhs_whatsapp_phone_number
curl -s "https://api.hubapi.com/crm/v3/objects/contacts/search" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filterGroups": [{
"filters": [{
"propertyName": "email",
"operator": "EQ",
"value": "EMAIL_ADDRESS"
}]
}],
"properties": ["firstname","lastname","email","phone","mobilephone","source","ref","objet"]
}'
curl -s "https://api.hubapi.com/crm/v3/objects/contacts/search" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filterGroups": [{
"filters": [{
"propertyName": "lastname",
"operator": "EQ",
"value": "NOM_FAMILLE"
}]
}],
"properties": ["firstname","lastname","email","phone","mobilephone","source","ref","objet"]
}'
curl -s "https://api.hubapi.com/crm/v3/objects/contacts/CONTACT_ID?properties=firstname,lastname,email,phone,mobilephone,hs_whatsapp_phone_number,source,ref,objet,fonction" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN"
curl -s "https://api.hubapi.com/crm/v3/objects/contacts" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"firstname": "PRENOM",
"lastname": "NOM",
"email": "EMAIL",
"phone": "TELEPHONE",
"source": "SOURCE",
"hubspot_owner_id": "32587387"
}
}'
curl -s -X PATCH "https://api.hubapi.com/crm/v3/objects/contacts/CONTACT_ID" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"PROPRIETE": "VALEUR"
}
}'
curl -s "https://api.hubapi.com/crm/v4/objects/contacts/CONTACT_ID/associations/deals" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN"
Récupère les IDs des deals, puis utiliser commande 9 pour les détails
curl -s "https://api.hubapi.com/crm/v3/objects/deals" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"dealname": "VAE - NOM_CANDIDAT - DIPLOME",
"pipeline": "default",
"dealstage": "appointmentscheduled",
"amount": "MONTANT",
"hubspot_owner_id": "32587387"
}
}'
curl -s "https://api.hubapi.com/crm/v3/objects/deals/DEAL_ID?properties=dealname,pipeline,dealstage,amount,closedate,hubspot_owner_id" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN"
curl -s -X PATCH "https://api.hubapi.com/crm/v3/objects/deals/DEAL_ID" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"dealstage": "STAGE_ID"
}
}'
curl -s -X PUT "https://api.hubapi.com/crm/v4/objects/deals/DEAL_ID/associations/contacts/CONTACT_ID" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":3}]'
curl -s "https://api.hubapi.com/crm/v3/objects/notes" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"hs_note_body": "CONTENU_NOTE",
"hs_timestamp": "'$(date -u +%Y-%m-%dT%H:%M:%S.000Z)'"
}
}'
Après création, associer la note au contact avec commande 13
curl -s -X PUT "https://api.hubapi.com/crm/v4/objects/notes/NOTE_ID/associations/contacts/CONTACT_ID" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":202}]'
curl -s "https://api.hubapi.com/crm/v3/objects/tasks" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"hs_task_subject": "SUJET_TACHE",
"hs_task_body": "DESCRIPTION",
"hs_task_status": "NOT_STARTED",
"hs_task_priority": "MEDIUM",
"hs_timestamp": "'$(date -u +%Y-%m-%dT%H:%M:%S.000Z)'",
"hubspot_owner_id": "32587387"
}
}'
curl -s -X PUT "https://api.hubapi.com/crm/v4/objects/tasks/TASK_ID/associations/contacts/CONTACT_ID" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":204}]'
curl -s "https://api.hubapi.com/crm/v3/objects/contacts/search" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filterGroups": [{
"filters": [{
"propertyName": "createdate",
"operator": "GTE",
"value": "'$(date -d '24 hours ago' +%s)000'"
}]
}],
"sorts": [{"propertyName":"createdate","direction":"DESCENDING"}],
"properties": ["firstname","lastname","email","phone","source","createdate"],
"limit": 20
}'
curl -s "https://api.hubapi.com/crm/v3/objects/deals/search" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filterGroups": [{
"filters": [{
"propertyName": "dealstage",
"operator": "EQ",
"value": "STAGE_ID"
}]
}],
"properties": ["dealname","dealstage","amount","closedate","pipeline"],
"limit": 50
}'
curl -s "https://api.hubapi.com/crm/v3/objects/deals/search" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filterGroups": [{
"filters": [{
"propertyName": "pipeline",
"operator": "EQ",
"value": "PIPELINE_ID"
}]
}],
"limit": 0
}'
Le champ
totaldans la réponse donne le nombre
curl -s "https://api.hubapi.com/crm/v3/objects/contacts/search" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "TERME_RECHERCHE",
"properties": ["firstname","lastname","email","phone","source"],
"limit": 10
}'
curl -s -X DELETE "https://api.hubapi.com/crm/v3/objects/contacts/CONTACT_ID" \
-H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN"
Action irréversible — demander confirmation avant exécution
| Webhook | URL | Usage |
|---|---|---|
| Nouveau prospect | https://uscsynergy.app.n8n.cloud/webhook/hubspot-nouveau-prospect | Sync nouveau contact vers Digiforma |
| Sync Digiforma | https://uscsynergy.app.n8n.cloud/webhook/hubspot-sync-digiforma | Mise à jour bidirectionnelle |
| Enrichissement WhatsApp | https://uscsynergy.app.n8n.cloud/webhook/hubspot-enrichissement-whatsapp | Enrichir fiche depuis conversation WA |
Note : Ces webhooks sont des placeholders. Les activer dans n8n quand les workflows seront prêts.