> ## 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.

# Close CRM

> Sincroniza los datos de Dodo Payments con Close CRM para rastrear leads y gestionar el pipeline de ventas.

## Introducción

Conecta tus datos de pago directamente a Close CRM para una gestión de leads y un seguimiento de ventas sin problemas. Crea automáticamente contactos y oportunidades a partir de pagos exitosos, manteniendo a tu equipo de ventas informado sobre las actividades generadoras de ingresos.

<Info>
  Esta integración requiere una clave API de Close CRM con los permisos adecuados.
</Info>

## Comenzando

<Steps>
  <Step title="Open the Webhook Section">
    En tu panel de control de Dodo Payments, navega a <b>Webhooks → + Añadir Endpoint</b> y expande el menú desplegable de integraciones.

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

  <Step title="Select Close CRM">
    Elige la tarjeta de integración de <b>Close CRM</b>.
  </Step>

  <Step title="Enter API Key">
    Ingresa tu clave API de Close CRM en la configuración.
  </Step>

  <Step title="Configure Transformation">
    Edita el código de transformación para mapear los datos de pago a los objetos de Close CRM.
  </Step>

  <Step title="Test & Create">
    Prueba con cargas útiles de muestra y haz clic en <b>Crear</b> para activar la sincronización.
  </Step>

  <Step title="Done!">
    🎉 Los eventos de pago ahora crearán/actualizarán automáticamente los registros en Close CRM.
  </Step>
</Steps>

## Ejemplos de código de transformación

### Crear contacto a partir de un pago

```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.close.com/api/v1/contact/";
    webhook.payload = {
      name: p.customer.name,
      emails: [p.customer.email],
      phones: [p.customer.phone || ''],
      custom: {
        payment_amount: (p.total_amount / 100).toFixed(2),
        payment_method: p.payment_method || '',
        dodo_customer_id: p.customer.customer_id
      }
    };
  }
  return webhook;
}
```

### Crear oportunidad a partir de una suscripción

```javascript create_opportunity.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "subscription.active") {
    const s = webhook.payload.data;
    webhook.url = "https://api.close.com/api/v1/opportunity/";
    webhook.payload = {
      lead_id: s.customer.customer_id,
      value: (s.recurring_pre_tax_amount / 100).toFixed(2),
      value_period: s.payment_frequency_interval,
      title: `Subscription - ${s.product_id}`,
      custom: {
        subscription_id: s.subscription_id,
        billing_frequency: s.payment_frequency_interval,
        next_billing: s.next_billing_date
      }
    };
  }
  return webhook;
}
```

## Consejos

* Utiliza la documentación de la API de Close CRM para entender los mapeos de campos
* Incluye campos personalizados para datos específicos de pagos
* Mapea los montos de suscripción a los valores de oportunidad
* Usa IDs de clientes para asociaciones adecuadas de leads

## Solución de problemas

<AccordionGroup>
  <Accordion title="Records not created in Close CRM">
    * Verifica que la clave API tenga permisos de escritura
    * Comprueba que se incluyan los campos necesarios
    * Asegúrate de que el formato del correo electrónico sea válido
    * Revisa los límites de velocidad de la API de Close CRM
  </Accordion>

  <Accordion title="Transformation errors">
    * Valida que la estructura JSON coincida con el formato de la API de Close CRM
    * Verifica que todos los campos obligatorios estén presentes
    * Asegúrate de que los nombres de campo coincidan exactamente con el esquema de Close CRM
  </Accordion>
</AccordionGroup>
