> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# HubSpot

> Tự động tạo và cập nhật liên hệ, công ty và giao dịch trong HubSpot từ các sự kiện Dodo Payments.

## Giới thiệu

Đồng bộ dữ liệu thanh toán của bạn trực tiếp đến HubSpot CRM. Tạo liên hệ từ các khoản thanh toán thành công, theo dõi vòng đời đăng ký và xây dựng hồ sơ khách hàng toàn diện—tất cả đều được kích hoạt tự động bởi các sự kiện Dodo Payments.

<Info>
  Tích hợp này yêu cầu quyền truy cập quản trị HubSpot để cấu hình phạm vi OAuth và quyền API.
</Info>

## Bắt đầu

<Steps>
  <Step title="Open the Webhook Section">
    Trong bảng điều khiển Dodo Payments của bạn, đi đến <b>Webhooks → + Thêm Điểm cuối</b> và mở rộng danh sách tích hợp.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/slbAEdrLLwKHfaRf/images/integrations/hubspot.png?fit=max&auto=format&n=slbAEdrLLwKHfaRf&q=85&s=73c4881df63edfb05bd24d804f01caab" alt="Add Endpoint and integrations dropdown" style={{ maxHeight: '500px', width: 'auto' }} width="1724" height="942" data-path="images/integrations/hubspot.png" />
    </Frame>
  </Step>

  <Step title="Select HubSpot">
    Chọn thẻ tích hợp <b>HubSpot</b>.
  </Step>

  <Step title="Connect HubSpot">
    Nhấp vào <b>Connect to HubSpot</b> và ủy quyền các phạm vi OAuth cần thiết.
  </Step>

  <Step title="Configure Transformation">
    Chỉnh sửa mã chuyển đổi để ánh xạ dữ liệu thanh toán đến các đối tượng CRM của HubSpot.
  </Step>

  <Step title="Test & Create">
    Kiểm tra với các payload mẫu và nhấp vào <b>Create</b> để kích hoạt đồng bộ.
  </Step>

  <Step title="Done!">
    🎉 Các sự kiện thanh toán sẽ tự động tạo/cập nhật các bản ghi trong CRM HubSpot của bạn.
  </Step>
</Steps>

## Ví dụ Mã Biến đổi

### Tạo Liên hệ từ Thanh toán

```javascript create_contact.js icon="js" expandable theme={null}
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;
}
```

### Cập nhật Liên hệ với Đăng ký

```javascript update_contact.js icon="js" expandable theme={null}
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;
}
```

### Tạo Giao dịch từ Thanh toán

```javascript create_deal.js icon="js" expandable theme={null}
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;
}
```

## Mẹo

* Sử dụng trình khám phá API của HubSpot để kiểm tra việc tạo đối tượng
* Ánh xạ số tiền thanh toán đến các trường tiền tệ của HubSpot
* Bao gồm ID khách hàng để đảm bảo liên kết chính xác
* Đặt các giai đoạn giao dịch phù hợp dựa trên trạng thái thanh toán

## Khắc phục sự cố

<AccordionGroup>
  <Accordion title="Records not created in HubSpot">
    * Xác minh rằng phạm vi OAuth bao gồm quyền ghi
    * Kiểm tra rằng các thuộc tính HubSpot bắt buộc tồn tại
    * Đảm bảo email khách hàng hợp lệ và duy nhất
    * Xem lại giới hạn tốc độ API của HubSpot
  </Accordion>

  <Accordion title="Transformation errors">
    * Xác minh cấu trúc JSON khớp định dạng API của HubSpot
    * Kiểm tra rằng tất cả các thuộc tính bắt buộc được bao gồm
    * Đảm bảo tên thuộc tính khớp chính xác với tên trường của HubSpot
  </Accordion>
</AccordionGroup>
