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

# API del CRM | Importaciones

export const postmanIcon = <svg xmlns="http://www.w3.org/2000/svg" width={25} height={25} preserveAspectRatio="xMidYMid" viewBox="0 0 256 256">
    <path fill="#FF6C37" d="M254.953 144.253c8.959-70.131-40.569-134.248-110.572-143.206C74.378-7.912 10.005 41.616 1.047 111.619c-8.959 70.003 40.569 134.248 110.572 143.334 70.131 8.959 134.248-40.569 143.334-110.7Z" />
    <path fill="#FFF" d="m174.2 82.184-54.007 54.007-15.229-15.23c53.11-53.11 58.358-48.503 69.236-38.777Z" />
    <path fill="#FF6C37" d="M120.193 137.47c-.384 0-.64-.128-.895-.384l-15.358-15.229a1.237 1.237 0 0 1 0-1.792c54.007-54.006 59.638-48.887 71.028-38.649.255.256.383.512.383.896s-.128.64-.383.896l-54.007 53.878c-.128.256-.512.384-.768.384Zm-13.437-16.509 13.437 13.438 52.087-52.087c-9.47-8.446-15.87-11.006-65.524 38.65Z" />
    <path fill="#FFF" d="m135.679 151.676-14.718-14.718 54.007-54.006c14.46 14.59-7.167 38.265-39.29 68.724Z" />
    <path fill="#FF6C37" d="M135.679 152.956c-.384 0-.64-.128-.896-.384l-14.718-14.718c-.256-.256-.256-.512-.256-.896s.128-.64.384-.895L174.2 82.056a1.237 1.237 0 0 1 1.791 0 15.58 15.58 0 0 1 4.991 11.902c-.256 14.206-16.38 32.25-44.28 58.614-.383.256-.767.384-1.023.384Zm-12.926-15.998c8.19 8.319 11.646 11.646 12.926 12.926 21.5-20.476 42.36-41.464 42.488-55.926.128-3.327-1.152-6.655-3.327-9.214l-52.087 52.214Z" />
    <path fill="#FFF" d="m105.22 121.345 10.878 10.878c.256.256.256.512 0 .768-.128.128-.128.128-.256.128l-22.524 4.863c-1.152.128-2.175-.64-2.431-1.791-.128-.64.128-1.28.512-1.664l13.053-13.054c.256-.256.64-.384.768-.128Z" />
    <path fill="#FF6C37" d="M92.934 139.262c-1.92 0-3.327-1.536-3.327-3.455 0-.896.384-1.792 1.024-2.432l13.053-13.054c.768-.64 1.792-.64 2.56 0l10.878 10.878c.768.64.768 1.792 0 2.56-.256.256-.512.384-.896.512l-22.524 4.863c-.256 0-.512.128-.768.128Zm11.902-16.51-12.542 12.543c-.256.256-.383.64-.128 1.024.128.383.512.511.896.383l21.116-4.607-9.342-9.342Z" />
    <path fill="#FFF" d="M202.739 52.238c-8.191-7.935-21.373-7.679-29.307.64-7.935 8.318-7.679 21.372.64 29.306A20.678 20.678 0 0 0 199.155 85l-14.59-14.59 18.174-18.172Z" />
    <path fill="#FF6C37" d="M188.405 89.223c-12.158 0-22.012-9.854-22.012-22.012 0-12.158 9.854-22.012 22.012-22.012 5.631 0 11.134 2.176 15.23 6.143.255.256.383.512.383.896s-.128.64-.384.895L186.357 70.41l13.566 13.566c.512.512.512 1.28 0 1.792l-.256.256c-3.327 2.047-7.295 3.199-11.262 3.199Zm0-41.337c-10.75 0-19.452 8.703-19.324 19.453 0 10.75 8.702 19.452 19.452 19.324 2.944 0 5.887-.64 8.575-2.047l-13.438-13.31c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l17.149-17.15c-3.456-2.943-7.807-4.479-12.414-4.479Z" />
    <path fill="#FFF" d="m203.122 52.622-.255-.256-18.301 18.044 14.461 14.462c1.408-.896 2.816-1.92 3.967-3.072a20.51 20.51 0 0 0 .128-29.178Z" />
    <path fill="#FF6C37" d="M199.155 86.28c-.384 0-.64-.128-.896-.384l-14.589-14.59c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l18.173-18.173a1.237 1.237 0 0 1 1.791 0l.384.256c8.575 8.574 8.575 22.396.128 31.098-1.28 1.28-2.687 2.432-4.223 3.328-.384.128-.64.256-.768.256Zm-12.798-15.87 12.926 12.926c1.024-.64 2.048-1.536 2.816-2.304 7.294-7.294 7.678-19.196.64-26.875L186.357 70.41Z" />
    <path fill="#FFF" d="M176.375 84.488a7.879 7.879 0 0 0-11.134 0l-48.247 48.247 8.063 8.063 51.062-44.792c3.328-2.816 3.584-7.807.768-11.134-.256-.128-.384-.256-.512-.384Z" />
    <path fill="#FF6C37" d="M124.929 142.077c-.384 0-.64-.128-.896-.383l-8.063-8.063a1.237 1.237 0 0 1 0-1.792l48.247-48.247a9.115 9.115 0 0 1 12.926 0 9.115 9.115 0 0 1 0 12.926l-.384.384-51.063 44.792c-.128.255-.384.383-.767.383Zm-6.143-9.342 6.27 6.271 50.167-44.024c2.816-2.304 3.072-6.527.768-9.342-2.303-2.816-6.526-3.072-9.342-.768-.128.128-.256.256-.512.384l-47.351 47.48Z" />
    <path fill="#FFF" d="M80.009 187.637c-.512.256-.768.768-.64 1.28l2.175 9.214c.512 1.28-.256 2.816-1.663 3.2-1.024.384-2.176 0-2.816-.768l-14.077-13.95 45.943-45.943 15.87.256 10.75 10.75c-2.56 2.175-18.045 17.149-55.542 35.961Z" />
    <path fill="#FF6C37" d="M78.985 202.61c-1.024 0-2.048-.383-2.688-1.151l-13.95-13.95c-.255-.256-.383-.512-.383-.896 0-.383.128-.64.384-.895l45.944-45.944c.256-.256.64-.384.895-.384l15.87.256c.383 0 .64.128.895.384l10.75 10.75c.256.256.384.64.384 1.024s-.128.64-.512.896l-.895.767c-13.566 11.902-31.995 23.804-54.902 35.194l2.175 9.086c.384 1.664-.384 3.456-1.92 4.352-.767.384-1.407.512-2.047.512Zm-14.078-15.997 13.182 13.054c.384.64 1.152.896 1.792.512.64-.384.896-1.152.512-1.792l-2.176-9.214c-.256-1.152.256-2.176 1.28-2.688 22.652-11.39 40.952-23.163 54.39-34.81l-9.47-9.47-14.718-.256-44.792 44.664Z" />
    <path fill="#FFF" d="m52.11 197.62 11.006-11.007 16.38 16.381-26.107-1.791c-1.151-.128-1.92-1.152-1.791-2.304 0-.512.128-1.024.512-1.28Z" />
    <path fill="#FF6C37" d="m79.497 204.146-26.236-1.791c-1.92-.128-3.199-1.792-3.071-3.712.128-.768.384-1.535 1.024-2.047L62.22 185.59a1.237 1.237 0 0 1 1.792 0l16.38 16.38c.385.385.512.897.257 1.408-.256.512-.64.768-1.152.768Zm-16.381-15.74-10.11 10.11c-.384.255-.384.895 0 1.151.127.128.255.256.511.256l22.652 1.536-13.053-13.054ZM104.452 146.557c-.768 0-1.28-.64-1.28-1.28 0-.384.128-.64.384-.896l12.414-12.414a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-20.477 4.352h-.256Zm12.414-11.902-8.446 8.446 13.821-2.943-5.375-5.503Z" />
    <path fill="#FFF" d="m124.8 140.926-14.077 3.071c-1.024.256-2.048-.384-2.303-1.408-.128-.64 0-1.28.511-1.791l7.807-7.807 8.063 7.935Z" />
    <path fill="#FF6C37" d="M110.467 145.277a3.168 3.168 0 0 1-3.2-3.2c0-.895.385-1.663.897-2.303l7.806-7.807a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-14.078 3.072h-.64Zm6.399-10.622-6.91 6.91c-.257.257-.257.512-.129.768s.384.384.768.384l11.774-2.56-5.503-5.502ZM203.25 64.907c-.256-.767-1.151-1.151-1.92-.895-.767.255-1.151 1.151-.895 1.92 0 .127.128.255.128.383.768 1.536.512 3.455-.512 4.863-.512.64-.384 1.536.128 2.048.64.512 1.536.384 2.048-.256 1.92-2.432 2.303-5.503 1.023-8.063Z" />
  </svg>;

export const ScopesList = ({scopes = [], description = "Esta API requiere uno de los siguientes ámbitos:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

<Card title="Run in Postman" href="https://app.getpostman.com/run-collection/f30b00bcfdc29170b2e8" icon={postmanIcon} horizontal={true} />

<DndSection>
  <DndModule numCols={10}>
    <div>
      <Accordion title="Requisitos de ámbito">
        <ScopesList
          scopes={[
  'crm.import'
]}
        />
      </Accordion>

      # Importaciones

      <RelatedApiLink />
    </div>
  </DndModule>

  <DndModule numCols={2} />
</DndSection>

Utiliza la API de importaciones para importar registros y actividades del CRM, como los contactos, las empresas y las notas en tu cuenta de HubSpot. Una vez los datos hayan sido importados, puedes acceder y actualizar los registros y actividades con los diversos endpoints de la API del CRM, incluida la [API de contactos,](/guides/crm/understanding-the-crm) la [API de asociaciones](/api-reference/crm-associations-v4/guide) y las [API de interacciones](/api-reference/overview). También puedes [importar registros y actividades usando la herramienta de importación guiada en HubSpot](https://knowledge.hubspot.com/es/import-and-export/import-objects).

Antes de comenzar la importación encuentra más información sobre:

* [Requisitos para los archivos](https://knowledge.hubspot.com/es/import-and-export/set-up-your-import-file#file-requirements-and-technical-limits)
* [Las propiedades requeridas para importaciones de registros y actividades](https://knowledge.hubspot.com/es/import-and-export/set-up-your-import-file#required-properties)
* [Las propiedades requeridas para registrar la participación en un evento de marketing](https://knowledge.hubspot.com/es/integrations/import-marketing-event-participants#prepare-your-import-file)

<Warning>
  ### Nota:

  Para crear eventos personalizados o asociarlos a registros, usa la [API de eventos personalizados](https://developers.hubspot.es/docs/api-reference/events-send-event-completions-v3/guide) en lugar de importar.
</Warning>

## Iniciar una importación

Puedes iniciar una importación realizando una solicitud `POST` a `/crm/v3/imports` con un cuerpo que especifique cómo asignar las columnas del archivo de importación a las propiedades correspondientes en HubSpot.

Las importaciones a través de la API se envían como solicitudes con formato de tipo de datos de formulario, y el cuerpo de la solicitud incluye los siguientes campos:

* [importRequest](#format-the-importrequest-data): es un campo de texto que contiene la solicitud JSON.
* [files](#map-file-columns-to-hubspot-properties): es un campo de archivo que contiene el archivo de importación.

Para el encabezado de la solicitud, agrega un encabezado `Content-Type` con el valor `multipart/form-data`.

La siguiente captura de pantalla muestra cómo se vería la solicitud cuando usas una aplicación como Postman:

<Frame>
  <img src="https://www.hubspot.es/hubfs/Knowledge_Base_2021/Developer/postman-import-request-no-response0.png" alt="postman-import-request-no-response0" />
</Frame>

### Formato de los datos de importRequest

En la solicitud, define los detalles del archivo de importación, incluida la asignación de las columnas de la hoja de cálculo a los datos de HubSpot. La solicitud debe incluir los siguientes campos:

* **name**: el nombre de la importación. En HubSpot, este es el nombre que aparece en la [herramienta de importaciones](https://knowledge.hubspot.com/es/import-and-export/view-and-analyze-previous-imports), así como el nombre al que puedes hacer referencia en otras herramientas, como las listas.
* **importOperations**: es un campo opcional utilizado para indicar si la importación debe [crear y actualizar, <u>solo</u> crear o <u>solo</u> actualizar registros](https://knowledge.hubspot.com/es/import-and-export/import-objects#choose-how-to-import) para un determinado objeto o actividad. Incluye `objectTypeId` para el objeto o actividad y si quieres `UPSERT` (crear y actualizar), `CREATE` o `UPDATE` registros. Por ejemplo, el campo se vería así en la solicitud: `"importOperations": {"0-1": "CREATE"}`. Si no incluyes este campo, el valor predeterminado para la importación es `UPSERT`.
* **dateFormat**: es el formato para las fechas incluidas en el archivo. De forma predeterminada, esto se estructura por `MONTH_DAY_YEAR`, pero también puedes usar `DAY_MONTH_YEAR` o `YEAR_MONTH_DAY`.
* **marketableContactImport**: es un campo opcional para indicar el [estado de marketing](https://knowledge.hubspot.com/es/records/marketing-contacts) de los contactos en tu archivo de importación. Este campo solo se usa cuando se importan contactos a cuentas que tienen [acceso a los contactos de marketing](https://knowledge.hubspot.com/es/records/marketing-contacts#check-your-access-to-marketing-contacts). Para establecer los contactos como de marketing en el archivo, usa el valor `true`. Para establecer los contactos como no de marketing en el archivo, usa el valor `false`.
* **createContactListFromImport**: es un campo opcional para [crear una lista estática de los contactos](https://knowledge.hubspot.com/es/import-and-export/import-objects#create-list-from-import) en la importación. Para crear una lista a partir del archivo, usa el valor `true`.
* **files**: es una matriz que contiene la información del archivo de importación.
  * **fileName**: el nombre del archivo de importación.
  * **fileFormat:** el formato del archivo de importación. Para los archivos CSV, usa el valor `CSV`. Para los archivos de Excel, usa el valor `SPREADSHEET`.
  * **fileImportPage**: contiene la matriz `columnMappings` que es necesaria para asignar los datos de tu archivo de importación a los datos de HubSpot. Más información sobre la asignación de columnas a continuación.

### Asignar las columnas del archivo a las propiedades de HubSpot

Dentro de la matriz `columnMappings`, incluye una entrada para cada título en la columna del archivo de importación, que coincida con el orden en la hoja de cálculo.

Para cada columna, incluye los siguientes campos:

* **columnObjectTypeId:** el nombre o el valor `objectTypeId` del objeto o la actividad a la que pertenecen los datos. Consulta [este artículo](/guides/crm/understanding-the-crm#object-type-id) para obtener una lista completa de los valores `objectTypeId`.
* **columnName:** el nombre del título de la columna. Debe coincidir exactamente con el nombre del título de la columna en el archivo.
* **propertyName:** el nombre interno de la propiedad de HubSpot a la que se le asignarán los datos. Para la columna común en las [importaciones de varios archivos](#import-multiple-files), `propertyName` debe ser `null` cuando se utilice el campo `toColumnObjectTypeId`.
* **columnType:** se utiliza para especificar que una columna contiene una [propiedad de identificador única](https://knowledge.hubspot.com/es/import-and-export/understand-the-import-tool#unique-identifiers). Dependiendo de la propiedad y el propósito de la importación, puedes utilizar uno de los siguientes valores:
  * **HUBSPOT\_OBJECT\_ID:** el ID de un registro. Por ejemplo, el archivo de importación de contactos puede contener una columna *ID de registro* que tenga el ID de la empresa con la que deseas asociar los contactos.
  * **HUBSPOT\_ALTERNATE\_ID:** un identificador único distinto del ID de registro. Por ejemplo, el archivo de importación de contactos puede contener una columna de *Correo electrónico* que tenga las direcciones de correo electrónico de los contactos.
  * **FLEXIBLE\_ASSOCIATION\_LABEL**: incluye este tipo de columna para indicar que la columna contiene etiquetas de asociación.
  * **ASSOCIATION\_KEYS**: utiliza este tipo de columna únicamente para las importaciones que asocien el mismo objeto, e inclúyelo para especificar el identificador único de los registros de objeto que quieres asociar. Por ejemplo, en tu solicitud de importación de una asociación de contactos, la columna *Contacto asociado \[correo electrónico o ID de registro]* debe tener un `columnType` de `ASSOCIATION_KEYS`. Más información sobre cómo [configurar el archivo de importación para una misma importación de asociación de objetos](https://knowledge.hubspot.com/es/import-and-export/set-up-your-import-file#same-object-association-imports).
* **toColumnObjectTypeId**: se utiliza para importaciones que incluyan [varios archivos](#import-multiple-files) o varios objetos, este campo indica el nombre o `objectTypeId` del objeto al que pertenece la propiedad de la [columna común](https://knowledge.hubspot.com/es/import-and-export/set-up-your-import-file#import-associations-in-two-files) o la etiqueta de asociación. Debes incluir este campo para la propiedad de columna común en el archivo del objeto al que <u>no</u> pertenece la propiedad. Por ejemplo, si estás asociando contactos y empresas en dos archivos usando la propiedad de contacto *Correo electrónico* como columna común, incluye el `toColumnObjectTypeId` para la columna *Correo electrónico* en el archivo de <u>empresas</u>.
* **foreignKeyType**: se utiliza solo para [importaciones de varios archivos](#import-multiple-files), es el tipo de asociación que debe usar la columna común, especificado por `associationTypeId` y `associationCategory`. Debes incluir este campo para la propiedad de columna común en el archivo del objeto al que <u>no</u> pertenece la propiedad. Por ejemplo, si estás asociando contactos y empresas en dos archivos con la propiedad de contacto *Correo electrónico* como columna común, incluye el `foreignKeyType` para la columna *Correo electrónico* en el archivo de <u>empresas</u>.
* **associationIdentifierColumn**: se utiliza solo para [importaciones de varios archivos](#import-multiple-files), este campo indica la propiedad utilizada en la columna común para asociar a los registros. Incluye este campo para la propiedad de columna común en el archivo del objeto al que pertenece la propiedad. Por ejemplo, si estás asociando contactos y empresas en dos archivos con la propiedad de contacto *Correo electrónico* como columna común, establece la `associationIdentifierColumn` en `true` para la columna *Correo electrónico* en el archivo de <u>contactos</u>.

## Importar un archivo con un objeto

A continuación, incluimos un ejemplo del cuerpo de la solicitud para importar un archivo y crear contactos:

<CodeGroup>
  ```json example.json theme={null}
  // Example POST to https://api.hubspot.com/crm/v3/imports
  // Content-Type header set to multipart/form-data

  {
  "name": "November Marketing Event Leads",
  "importOperations": {
  "0-1": "CREATE"
  },
  "dateFormat": "DAY_MONTH_YEAR",
  "files": [
  {
  "fileName": "Nov-event-leads.csv",
  "fileFormat": "CSV",
  "fileImportPage": {
  "hasHeader": true,
  "columnMappings": [
  {
  "columnObjectTypeId": "0-1",
  "columnName": "First Name",
  "propertyName": "firstname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Last Name",
  "propertyName": "lastname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Email",
  "propertyName": "email",
  "columnType": "HUBSPOT_ALTERNATE_ID"
  }
  ]
  }
  }
  ]
  }
  ```

  ```python example.py theme={null}
  # This example a local file named 'test_import.csv'
  # This file contains a list of contact records to import.

  import requests
  import json
  import os

  url = "https://api.hubapi.com/crm/v3/imports"

  YOUR_ACCESS_TOKEN = 'xxxxxxx';

  # Content-Type header will be set automatically by the requests library
  headers = {
  'authorization': 'Bearer %s' % YOUR_ACCESS_TOKEN
  }

  data = {
  "name": "November Marketing Event Leads",
  "importOperations": {
  "0-1": "CREATE"
  },
  "dateFormat": "DAY_MONTH_YEAR",
  "files": [
  {
  "fileName": "Nov-event-leads.csv",
  "fileFormat": "CSV",
  "fileImportPage": {
  "hasHeader": True,
  "columnMappings": [
  {
  "columnObjectTypeId": "0-1",
  "columnName": "First Name",
  "propertyName": "firstname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Last Name",
  "propertyName": "lastname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Email",
  "propertyName": "email",
  "columnType": "HUBSPOT_ALTERNATE_ID"
  }
  ]
  }
  }
  ]
  }

  datastring = json.dumps(data)

  payload = {"importRequest": datastring}

  current_dir = os.path.dirname(__file__)
  relative_path = "./test_import.csv"

  absolute_file_path = os.path.join(current_dir, relative_path)

  files = [
  ('files', open(absolute_file_path, 'rb'))
  ]
  print(files)

  response = requests.request("POST", url, data=payload, files=files, headers=headers)

  print(response.text.encode('utf8'))
  print(response.status_code)
  ```

  ```bash example.sh theme={null}
  # Using this endpoint requires using sending multi-part form encoded data. Here is an example curl request:
  # importing a file named import_file.csv

  # create a variable for the importRequest JSON
  myJSON=$(cat <<EOF
  {
  "name": "November Marketing Event Leads",
  "importOperations": {
  "0-1": "CREATE"
  },
  "dateFormat": "DAY_MONTH_YEAR",
  "files": [
  {
  "fileName": "import_file.csv",
  "fileFormat": "CSV",
  "fileImportPage": {
  "hasHeader": true,
  "columnMappings": [
  {
  "columnObjectTypeId": "0-1",
  "columnName": "First Name",
  "propertyName": "firstname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Last Name",
  "propertyName": "lastname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Email",
  "propertyName": "email",
  "columnType": "HUBSPOT_ALTERNATE_ID"
  }
  ]
  }
  }
  ]
  }
  EOF
  )

  YOUR_ACCESS_TOKEN="xxx-xxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

  curl -v \
  -F "files=@import_file.csv;type=text/csv" \
  -F "importRequest=$myJSON;type=application/json" \
  -H "Authorization: Bearer $YOUR_ACCESS_TOKEN" \
  https://api.hubapi.com/crm/v3/imports
  ```
</CodeGroup>

A continuación, se muestra otro ejemplo de importación de un archivo para crear y actualizar participantes de los eventos de marketing:

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    // Example POST to https://api.hubspot.com/crm/v3/imports
    // Content-Type header set to multipart/form-data

    {
      "name": "Marketing Events Import Example",
      "marketingEventObjectId": 377224141223,
      "importOperations": { "0-1": "UPSERT", "0-54": "CREATE" },
      "dateFormat": "YEAR_MONTH_DAY",
      "timeZone": "America/New_York",
      "files": [
        {
          "fileName": "Marketing Events Import Example.csv",
          "fileFormat": "CSV",
          "fileImportPage": {
            "hasHeader": true,
            "columnMappings": [
              {
                "columnName": "First Name",
                "columnObjectTypeId": "0-1",
                "propertyName": "firstname",
                "columnType": "STANDARD"
              },
              {
                "columnName": "Last Name",
                "columnObjectTypeId": "0-1",
                "propertyName": "lastname",
                "columnType": "STANDARD"
              },
              {
                "columnName": "Email",
                "columnObjectTypeId": "0-1",
                "propertyName": "email",
                "columnType": "HUBSPOT_ALTERNATE_ID"
              },
              {
                "columnName": "Registered",
                "columnObjectTypeId": "0-54",
                "columnType": "EVENT_TIMESTAMP",
                "marketingEventSubmissionType": "REGISTERED"
              },
              {
                "columnName": "Attended",
                "columnObjectTypeId": "0-54",
                "columnType": "EVENT_TIMESTAMP",
                "marketingEventSubmissionType": "JOINED"
              },
              {
                "columnName": "Left",
                "columnObjectTypeId": "0-54",
                "columnType": "EVENT_TIMESTAMP",
                "marketingEventSubmissionType": "LEFT"
              },
              {
                "columnName": "Cancelled",
                "columnObjectTypeId": "0-54",
                "columnType": "EVENT_TIMESTAMP",
                "marketingEventSubmissionType": "CANCELLED"
              }
            ]
          }
        }
      ]
    }
    ```
  </Tab>
</Tabs>

## Importar un archivo con varios objetos

A continuación, incluimos un ejemplo del cuerpo de la solicitud de importación y la asociación de contactos y empresas en un archivo con etiquetas de asociación:

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    // Example POST to https://api.hubspot.com/crm/v3/imports
    // Content-Type header set to multipart/form-data

    {
      "name": "Association Label Import",
      "dateFormat": "DAY_MONTH_YEAR",
      "files": [
        {
          "fileName": "association label example.xlsx",
          "fileFormat": "SPREADSHEET",
          "fileImportPage": {
            "hasHeader": true,
            "columnMappings": [
              {
                "columnObjectTypeId": "0-1",
                "columnName": "Email",
                "propertyName": "email"
              },
              {
                "columnObjectTypeId": "0-2",
                "columnName": "Domain",
                "propertyName": "domain"
              },
              {
                "columnName": "Association Label",
                "columnType": "FLEXIBLE_ASSOCIATION_LABEL",
                "columnObjectTypeId": "0-1",
                "toColumnObjectTypeId": "0-2"
              }
            ]
          }
        }
      ]
    }
    ```
  </Tab>
</Tabs>

## Importar varios archivos

A continuación, incluimos un ejemplo del cuerpo de la solicitud de importación y la asociación de contactos y empresas en dos archivos, donde la propiedad de contacto *Correo electrónico* es la columna común en los archivos:

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    // Example POST to https://api.hubspot.com/crm/v3/imports
    // Content-Type header set to multipart/form-data

    {
      "name": "Contact Company import",
      "dateFormat": "YEAR_MONTH_DAY",
      "files": [
        {
          "fileName": "contact-import-file.csv",
          "fileFormat": "CSV",
          "fileImportPage": {
            "hasHeader": true,
            "columnMappings": [
              { "columnObjectTypeId": "0-1", "columnName": "First name", "propertyName": "firstname" },
              { "columnObjectTypeId": "0-1", "columnName": "Last name", "propertyName": "lastname" },
              {
                "columnObjectTypeId": "0-1",
                "columnName": "Email",
                "propertyName": "email",
                "associationIdentifierColumn": true
              }
            ]
          }
        },
        {
          "fileName": "company-import-file.csv",
          "fileFormat": "CSV",
          "fileImportPage": {
            "hasHeader": true,
            "columnMappings": [
              { "columnObjectTypeId": "0-2", "columnName": "Company name", "propertyName": "name" },
              {
                "columnObjectTypeId": "0-2",
                "columnName": "Company domain name",
                "propertyName": "domain",
                "columnType": "HUBSPOT_ALTERNATE_ID"
              },
              {
                "columnObjectTypeId": "0-2",
                "toColumnObjectTypeId": "0-1",
                "columnName": "Email",
                "propertyName": null,
                "foreignKeyType": { "associationTypeId": 280, "associationCategory": "HUBSPOT_DEFINED" }
              }
            ]
          }
        }
      ]
    }
    ```
  </Tab>
</Tabs>

Si la solicitud es exitosa, la respuesta incluirá un `importId` que puedes usar para recuperar o cancelar la importación. Una vez completada, podrás [ver la importación en HubSpot](https://knowledge.hubspot.com/es/import-and-export/view-and-analyze-previous-imports). Sin embargo, las importaciones que se completan a través de la API no estarán disponibles como opción al filtrar los registros por importación en las vistas, las listas, los informes o los workflows.

## Obtener importaciones anteriores

Para obtener todas las importaciones de tu cuenta de HubSpot, haz una solicitud `GET` a `/crm/v3/imports/`. Para obtener información sobre una importación en específico, haz una solicitud `GET` a `/crm/v3/imports/{importId}`.

Cuando obtengas las importaciones, estas incluirán información como el nombre de la importación, su origen, el formato de archivo, el idioma, el formato de fecha y las asignaciones de las columnas. También incluirá el `state` de la importación, que puede ser cualquiera de los siguientes:

* `STARTED`: HubSpot reconoce que la importación existe, pero aún no ha comenzado a procesarse.
* `PROCESSING`: La importación se está procesando.
* `DONE`: La importación está completa. Todos los objetos, las actividades o asociaciones han sido actualizadas o creadas.
* `FAILED`: Se produjo un error que no se detectó cuando se inició la importación. La importación no se completó.
* `CANCELED`: El usuario canceló la importación mientras estaba en cualquiera de los estados `STARTED`, `PROCESSING` o `DEFERRED`.
* `DEFERRED`: El número máximo de importaciones (tres) se están procesando al mismo tiempo. La importación comenzará una vez que una de las otras importaciones terminen de procesarse.

Obtén más información sobre la paginación y la limitación de resultados en la *[documentación de referencia](https://developers.hubspot.es/docs/api-reference/crm-imports-v3/guide).*

<Warning>
  ### Nota:

  Al recuperar importaciones, la respuesta solo incluirá las importaciones realizadas por la misma aplicación. Las importaciones que se completen en HubSpot o a través de otra aplicación no serán devueltas.
</Warning>

## Cancelar una importación

Para cancelar una importación activa, haz una solicitud `POST` a `/crm/v3/imports/{importId}/cancel`.

## Ver y solucionar los errores de importación

Para ver los errores de una importación en específico, haz una solicitud `GET` a `/crm/v3/imports/{importId}/errors`. Obtén más información sobre los [errores más comunes de importación y cómo resolverlos](https://knowledge.hubspot.com/es/import-and-export/troubleshoot-import-errors).

Para los errores como *Número incorrecto de columnas*, *No se puede analizar* JSON o *404 texto o html no aceptado*:

* Asegúrate de que cada columna del archivo tenga un título y de que el cuerpo de la solicitud incluya una entrada `columnMapping` para cada columna. Deben cumplir con los siguientes criterios:
  * El orden de las columnas en el cuerpo de la solicitud y en el archivo de importación debe coincidir. Si el orden de las columnas no coincide, el sistema intentará reordenarlas automáticamente, pero puede que no lo consiga, lo que provocará un error al iniciar la importación.
  * Cada columna debe estar asignada. Si una columna no está asignada, la solicitud de importación puede seguir siendo exitosa, pero se generará el error *Número incorrecto de columnas* al iniciar la importación.
* Asegúrate de que el nombre del archivo y el campo `fileName` del JSON de la solicitud coincidan, y de que has incluido la extensión del archivo en el campo `fileName`. Por ejemplo, *import\_name.csv.*
* Asegúrate de que el encabezado incluye `Content-Type` con un valor de `multipart/form-data`.

<CodeGroup>
  ```json example.json theme={null}
  Example POST URL:
  https://api.hubapi.com/crm/v3/imports?

  Example importRequest JSON data:
  This example contains 3 columns:
  - First name, mapped to the firstname contact property
  - Email, mapped to the email contact property
  - Company ID, which contains a list of company record IDs
  that the contact will be assocated with.
  {
  "name": "test_import",
  "files": [
  {
  "fileName": "final_emails.csv",
  "fileImportPage": {
  "hasHeader": true,
  "columnMappings": [
  {
  "ignored": false,
  "columnName": "First Name",
  "idColumnType": null,
  "propertyName": "firstname",
  "foreignKeyType": null,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  },
  {
  "ignored": false,
  "columnName": "Email",
  "idColumnType": "HUBSPOT_ALTERNATE_ID",
  "propertyName": "email",
  "foreignKeyType": null,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  },
  {
  "ignored": false,
  "columnName": "Company ID",
  "idColumnType": "HUBSPOT_OBJECT_ID",
  "propertyName": null,
  "foreignKeyType": {
  "associationCategory": "HUBSPOT_DEFINED",
  "associationTypeId": 1
  },
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  }
  ]
  }
  }
  ]
  }
  ```

  ```python example.py theme={null}
  # This example a local file named 'final_emails.csv'
  # This file contains a list of contact records to import.
  # Each row in the file contains a column named "Company ID" that contains the companyId
  # that the contact should be associated with.

  import requests
  import json

  post_url = 'http://api.hubapi.com/crm/v3/imports?hapikey=4324...5432'

  importRequest = {
  "name": "test_import",
  "files": [
  {
  "fileName": "final_emails.csv",
  "fileImportPage": {
  "hasHeader": True,
  "columnMappings": [
  {
  "ignored": False,
  "columnName": "First Name",
  "idColumnType": None,
  "propertyName": "firstname",
  "foreignKeyType": None,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": False
  },
  {
  "ignored": False,
  "columnName": "Email",
  "idColumnType": "HUBSPOT_ALTERNATE_ID",
  "propertyName": "email",
  "foreignKeyType": None,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": False
  },
  {
  "ignored": False,
  "columnName": "Company ID",
  "idColumnType": "HUBSPOT_OBJECT_ID",
  "propertyName": None,
  "foreignKeyType": {
  "associationCategory": "HUBSPOT_DEFINED",
  "associationTypeId": 1
  },
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": False
  }
  ]
  }
  }
  ]
  ```

  ```php example.php theme={null}
  <?php
  // This example imports a local file named 'import_file.csv'

  $post_url = "http://api.hubapi.com/crm/v3/imports?hapikey=1234...5342";

  $csv_file = new CURLFile('import_file.csv','text/csv');

  $config_json = '{"name":"test_import","files":[{"fileName":"final_emails.csv","fileImportPage":{"hasHeader":true,"columnMappings":[{"ignored":false,"columnName":"First Name","idColumnType":null,"propertyName":"firstname","foreignKeyType":null,"columnObjectType":"CONTACT","associationIdentifierColumn":false},{"ignored":false,"columnName":"Email","idColumnType":"HUBSPOT_ALTERNATE_ID","propertyName":"email","foreignKeyType":null,"columnObjectType":"CONTACT","associationIdentifierColumn":false},{"ignored":false,"columnName":"Company ID","idColumnType":"HUBSPOT_OBJECT_ID","propertyName":null,"foreignKeyType":{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":1},"columnObjectType":"CONTACT","associationIdentifierColumn":false}]}}]};type=application/json';

  $post_data = array(
  "files" => $csv_file,
  "importRequest" => $config_json
  );

  $ch = curl_init();
  @curl_setopt($ch, CURLOPT_POST, true);
  @curl_setopt($ch, CURLOPT_URL, $post_url);
  @curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

  $response    = @curl_exec($ch); //Log the response from HubSpot as needed.
  $status_code = @curl_getinfo($ch, CURLINFO_HTTP_CODE); //Log the response status code
  @curl_close($ch);
  echo $status_code . " " . $response;
  ?>
  ```

  ```bash example.sh theme={null}
  # Using this endpoint requires using sending multi-part form encoded data. Here is an example curl request:
  # importing a file named import_file.csv

  # create a variable for the importRequest JSON
  myJSON=$(cat <<EOF
  {
  "name": "test_import",
  "files": [
  {
  "fileName": "final_emails.csv",
  "fileImportPage": {
  "hasHeader": true,
  "columnMappings": [
  {
  "ignored": false,
  "columnName": "First Name",
  "idColumnType": null,
  "propertyName": "firstname",
  "foreignKeyType": null,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  },
  {
  "ignored": false,
  "columnName": "Email",
  "idColumnType": "HUBSPOT_ALTERNATE_ID",
  "propertyName": "email",
  "foreignKeyType": null,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  },
  {
  "ignored": false,
  "columnName": "Company ID",
  "idColumnType": "HUBSPOT_OBJECT_ID",
  "propertyName": null,
  "foreignKeyType": {
  "associationCategory": "HUBSPOT_DEFINED",
  "associationTypeId": 1
  },
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  }
  ]
  }
  }
  ]
  }
  EOF
  )

  curl -v \
  -F "files=@import_file.csv;type=text/csv" \
  -F "importRequest=$myJSON;type=application/json" \
  http://api.hubapi.com/crm/v3/imports?hapikey=4123...4321
  ```
</CodeGroup>

<Warning>
  ### Nota:

  Si recibes un error, valida si hay encabezados duplicados como `Content-Type`. Esto puede ocurrir si estás usando Postman o si está incluido en el encabezado de tu script de Python. Elimina los duplicados antes de completar la solicitud.
</Warning>

## Límites

Al usar la API de importaciones, puedes importar hasta 80.000.000 filas por día. Sin embargo, los archivos de importación individuales están limitados a 1.048.576 filas o 512 MB, lo que ocurra primero.

Si tu solicitud supera el límite de filas o tamaño, HubSpot responderá con un error HTTP 429. Cuando te acerques a estos límites, se recomienda dividir tu importación en varias solicitudes.
