Passer au contenu principal

Introduction

Synchronisez vos données de paiement directement dans HubSpot CRM. Créez des contacts à partir de paiements réussis, suivez le cycle de vie des abonnements et construisez des profils clients complets—le tout déclenché automatiquement par les événements de Dodo Payments.
Cette intégration nécessite un accès administrateur HubSpot pour configurer les portées OAuth et les autorisations API.

Commencer

1

Ouvrir la section Webhook

Dans votre tableau de bord Dodo Payments, allez à Webhooks → + Ajouter un point de terminaison et développez le menu déroulant des intégrations.
Ajouter un point de terminaison et menu déroulant des intégrations
2

Sélectionner HubSpot

Choisissez la carte d’intégration HubSpot.
3

Connecter HubSpot

Cliquez sur Connecter à HubSpot et autorisez les portées OAuth requises.
4

Configurer la transformation

Modifiez le code de transformation pour mapper les données de paiement aux objets CRM HubSpot.
5

Tester & Créer

Testez avec des charges utiles d’exemple et cliquez sur Créer pour activer la synchronisation.
6

Terminé !

🎉 Les événements de paiement créeront/ mettront à jour automatiquement des enregistrements dans votre CRM HubSpot.

Exemples de code de transformation

Créer un contact à partir d’un paiement

create_contact.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.url = "https://api.hubapi.com/crm/v3/objects/contacts";
    webhook.payload = {
      properties: {
        email: p.customer.email,
        firstname: p.customer.name.split(' ')[0] || '',
        lastname: p.customer.name.split(' ').slice(1).join(' ') || '',
        phone: p.customer.phone || '',
        company: p.customer.company || '',
        amount: (p.total_amount / 100).toString(),
        payment_method: p.payment_method || '',
        currency: p.currency || 'USD'
      }
    };
  }
  return webhook;
}

Mettre à jour un contact avec un abonnement

update_contact.js
function handler(webhook) {
  if (webhook.eventType === "subscription.active") {
    const s = webhook.payload.data;
    webhook.url = `https://api.hubapi.com/crm/v3/objects/contacts/${s.customer.customer_id}`;
    webhook.method = "PATCH";
    webhook.payload = {
      properties: {
        subscription_status: "active",
        subscription_amount: (s.recurring_pre_tax_amount / 100).toString(),
        subscription_frequency: s.payment_frequency_interval,
        next_billing_date: s.next_billing_date,
        product_id: s.product_id
      }
    };
  }
  return webhook;
}

Créer une affaire à partir d’un paiement

create_deal.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.url = "https://api.hubapi.com/crm/v3/objects/deals";
    webhook.payload = {
      properties: {
        dealname: `Payment - ${p.customer.email}`,
        amount: (p.total_amount / 100).toString(),
        dealstage: "closedwon",
        closedate: new Date().toISOString(),
        hs_currency: p.currency || "USD"
      },
      associations: [
        {
          to: {
            id: p.customer.customer_id
          },
          types: [
            {
              associationCategory: "HUBSPOT_DEFINED",
              associationTypeId: 3
            }
          ]
        }
      ]
    };
  }
  return webhook;
}

Conseils

  • Utilisez l’explorateur API de HubSpot pour tester la création d’objets
  • Mapper les montants de paiement aux champs de devise HubSpot
  • Inclure les identifiants clients pour des associations appropriées
  • Définir les étapes d’affaires appropriées en fonction du statut de paiement

Dépannage

  • Vérifiez que les portées OAuth incluent des autorisations d’écriture
  • Assurez-vous que les propriétés requises de HubSpot existent
  • Vérifiez que l’email du client est valide et unique
  • Consultez les limites de taux de l’API HubSpot
  • Validez que la structure JSON correspond au format de l’API HubSpot
  • Vérifiez que toutes les propriétés requises sont incluses
  • Assurez-vous que les noms des propriétés correspondent exactement aux noms des champs HubSpot