首页 帮助中心 hubspot-salesforce-integration
14 de mayo de 2026 | 8 minutos

Integración de HubSpot y Salesforce: guía paso a paso (2026)

Deja de perder oportunidades por datos de CRM desalineados. Aquí te mostramos cómo crear una sincronización fiable y bidireccional entre HubSpot y Salesforce. ![How to Integrate HubSpot and Salesforce in Make-](__CODE_BLOCK_0__ Your CRM and marketing platform are only as useful as the data flowing between them. When a HubSpot Salesforce integration is poorly configured, sales reps follow up on leads marketing already disqualified, contacts get duplicated, and attribution data falls apart. According to[ ](__CODE_BLOCK_1__ over 27% of marketers cite sales-marketing alignment as a top challenge. This guide covers how to build a reliable, configurable integration using Make.

What is a HubSpot Salesforce integration?

A HubSpot Salesforce integration is a bidirectional sync between the two platforms that keeps contacts, companies, deals, and activity data consistent across both systems. When a contact is created or updated in either platform, those changes propagate to the other, so sales and marketing always work from the same records. There are two main approaches to building this HubSpot Salesforce sync. The first is HubSpot's[ ](__CODE_BLOCK_2__ which handles standard object syncing with a point-and-click setup. It works well for teams with straightforward field mappings and standard sync rules. The second is a custom automation-layer approach using a platform like Make, which gives you full control over sync conditions, field transformations, routing logic, and error handling. For ops leaders and RevOps teams at companies with 50 to 500 employees, the native connector frequently hits its limits. Make addresses this through its visual Scenario Builder, where each step in your CRM integration automation is a configurable module. ![native-vs-make-integration-comparison](__CODE_BLOCK_3__

How to connect HubSpot and Salesforce using Make

Before you build, confirm you have the following in place: * An active HubSpot account with API access enabled (Professional or Enterprise tier) * Una cuenta de Salesforce con credenciales de administrador o una app conectada ya configurada, con OAuth 2.0 habilitado * Una cuenta activa de Make

Vas a crear un escenario que detecte contactos nuevos o actualizados en HubSpot y luego cree o actualice el registro de lead correspondiente en Salesforce. Entre los dos módulos hay una comprobación de deduplicación para evitar que aparezcan registros duplicados en cualquiera de los dos sistemas. Si es la primera vez que construyes en Make, la ) guía cubre todo lo que necesitas antes de continuar. Para Salesforce, revisa la ) en help.salesforce.com antes de empezar el Paso 2, ya que necesitarás tener listos tu Consumer Key y Consumer Secret.

Paso 1: configura tu conexión de HubSpot en Make

Abre Make y crea un nuevo escenario. Añade un módulo de HubSpot como primer paso usando la ,) y luego selecciona el tipo de disparador según lo que vayas a sincronizar: * Usa Watch Contacts para activar el escenario cuando se cree o actualice un contacto en HubSpot * Usa Watch CRM Objects si necesitas hacer seguimiento de cambios en otros tipos de objeto, como empresas o deals

Para autenticarte, selecciona 'Add a connection' y elige OAuth 2.0. Make abre la pantalla de autorización de HubSpot, donde concederás los permisos que requiere el escenario: como mínimo, lectura/escritura de contactos y objetos de CRM. OAuth 2.0 es la opción adecuada para uso en producción porque te da un control granular de los permisos y te permite revocar el acceso sin tener que rotar las claves API en cada integración. Una vez conectado, configura el intervalo de comprobación. El valor predeterminado comprueba HubSpot a intervalos fijos, lo que introduce una latencia proporcional a ese intervalo. Si tu caso de uso requiere sincronización en tiempo real, esta configuración del módulo no lo permitirá: la sincronización en tiempo real requiere un módulo disparador basado en Webhook y una configuración distinta del módulo de HubSpot por completo. ![make-hubspot-trigger-schedule-settings](__CODE_BLOCK_7__

Step 2: Configure the Salesforce connection

Add a Salesforce module to your Scenario using the[ ](__CODE_BLOCK_8__ For the action type, choose between two options: * Create a Record: creates a new Salesforce lead every time the module runs * Upsert a Record: checks for an existing record first using an external ID field, then creates or updates accordingly — this is the option that prevents duplicates at the write stage

To establish the connection, you'll need your Salesforce connected app credentials. In Salesforce, navigate to Setup, then App Manager, open your connected app, and copy the Consumer Key and Consumer Secret. Paste both into Make's Salesforce connection panel when prompted. One configuration error appears consistently at this stage: the environment selector. Make's Salesforce connection panel includes a toggle between sandbox and production. If you build and test against your sandbox but leave the toggle set to production, or vice versa, the connection will authenticate but write to the wrong org. Confirm the environment before running any test records. Your Salesforce API user account also needs the correct profile permissions: at minimum, API access enabled, and read/write permissions on the Lead or Contact object you're targeting. ![make-salesforce-connection-panel-upsert-record](__CODE_BLOCK_9__

Step 3: Map fields between HubSpot and Salesforce

Field mapping is where most HubSpot Salesforce data mapping problems originate. In the Salesforce module panel, use the bundle variable picker to select the HubSpot output property for each Salesforce destination field. The table below covers the most common mappings and where transformations are required: | HubSpot bundle variable | Salesforce lead field | Transformation needed | | --- | --- | --- | | {{1.firstname}} | FirstName | None | | {{1.lastname}} | LastName | None | | {{1.email}} | Email | None | | {{1.phone}} | Phone | toString({{1.phone}}) | | {{1.company}} | Company | None | | {{1.hs_lead_status}} | LeadSource | Los valores de los campos de selección deben coincidir exactamente con una opción válida de Salesforce | | {{1.createdate}} | CreatedDate | formatDate({{1.createdate}}; "YYYY-MM-DD") | | {{1.hubspot_owner_id}} | OwnerId | Requiere una búsqueda aparte del ID de usuario | Tres campos provocan errores de sincronización con más frecuencia: los campos de fecha, donde HubSpot devuelve una marca de tiempo Unix y Salesforce espera ISO 8601, por lo que se necesita formatDate; los campos de selección, cuyos valores deben coincidir exactamente con una opción válida de Salesforce. Los campos obligatorios de Salesforce sin equivalente en HubSpot deben tener un valor predeterminado configurado en el módulo, o el registro fallará en cada ejecución. ![Make scenario image for salesforce & Hubspot](__CODE_BLOCK_10__

Step 4: Add a deduplication filter

Before the Salesforce write module, add a Salesforce Search Records module to query by email address. If a matching record is found, the bundle returns a Salesforce lead ID. If not, it returns empty. Use that result to drive a[ ](__CODE_BLOCK_11__ with two branches: * New lead: search returns empty, route runs Salesforce Create a Record * Existing lead: search returns a matching ID, route runs Salesforce Upsert a Record

Without this logic, every HubSpot contact update triggers a new Salesforce lead record, polluting your CRM with duplicates that are difficult to reconcile after the fact. One tradeoff to account for: the Salesforce Search Records module consumes an Operation on every Scenario run. Mitigate it by tightening your trigger conditions in Step 1, so the Scenario only fires on contacts that are genuinely new or meaningfully updated, rather than on every minor property change.

Step 5: Handle errors and set up notifications

In a CRM sync context, silent failures are dangerous. A contact that fails to create in Salesforce simply disappears from the sales pipeline, with no visibility for anyone. Right-click the Salesforce Create a Record or Salesforce Upsert a Record module and select "Add error handler" to open the[ ](__CODE_BLOCK_12__ Choose the right directive for your use case: | Directive | When to use it | | --- | --- | | Break | Stores the failed bundle in Incomplete Executions for manual or automatic retry — the right default for a CRM write | | Resume | Continues the Scenario with a fallback value — use only if the failed record is non-critical | | Rollback | Stops execution and attempts to revert prior actions — use for multi-system writes where partial records cause bigger problems | After the error handler, add a notification module: a Slack message or email that fires on failure, with {{error.message}} and the contact ID mapped into the message body. This gives your team immediate visibility when a sync fails. Finally, enable email alerts for incomplete runs in your Scenario settings. This adds a second layer of monitoring that catches failures the error handler route itself may not surface.

Step 6: Test the Scenario and validate data

Click Run once in the Scenario Builder toolbar to trigger a single [test execution](__CODE_BLOCK_13__ Use a real HubSpot contact with a known email address so you can cross-reference the output directly in Salesforce. After the run, check each module's output bubble to confirm data passed through correctly. Then validate the resulting Salesforce record against the following checklist: * Record was created or updated, not duplicated * All mapped field values match the HubSpot source contact exactly * Data types are correct: dates in ISO 8601 format, phone numbers as strings * Record ownership transferred to the expected Salesforce user * The error handler route was not triggered

If any item fails, open the bundle output for the failing module in the Scenario Builder to identify where the data broke down. Fix the mapping or transformation, then rerun. Run five to ten test records before activating the Scenario for production use. A single passing test rarely surfaces edge cases around picklist values, missing required fields, or contacts with incomplete data.

What are common use cases for a HubSpot Salesforce integration?

Most ops and RevOps teams build a HubSpot Salesforce integration for one of two reasons: * Automating the marketing lead handoff to sales * Keeping deal stage data consistent across both platforms for revenue reporting

Both follow the same Scenario architecture covered in this guide, with different trigger conditions and field mappings. Start from Make's create a Salesforce lead from a HubSpot CRM [contact template](__CODE_BLOCK_14__ to accelerate either build. | Use case | Trigger | Outcome | | --- | --- | --- | | Marketing lead handoff | Contact reaches MQL status in HubSpot | Salesforce lead created and assigned to the correct rep within minutes | | Deal stage sync | Deal stage changes in Salesforce | HubSpot deal record updated to match, keeping attribution intact |

Marketing lead handoff to sales

When a contact reaches MQL status, the HubSpot Watch CRM Objects module triggers the Scenario and creates a Salesforce lead assigned to the correct sales rep based on territory mapping. The rep receives a fully populated lead record with HubSpot activity history attached, with no manual handoff required.

Deal stage synchronization for revenue reporting

When a deal stage changes in Salesforce, a Salesforce Watch Records module triggers a second Scenario that updates the corresponding HubSpot deal record. Attribution and forecasting data stays consistent across both platforms without manual reconciliation.

Best practices for a reliable HubSpot Salesforce integration

A HubSpot Salesforce integration handles live pipeline data. Configuration errors don't just create noise: they lose leads and corrupt revenue reporting. These three practices reduce that risk significantly. | Practice | What to do | What goes wrong if skipped | | --- | --- | --- | | Define your field mapping schema first | Document every HubSpot property, its Salesforce equivalent, data type, and transformation needed before opening Make. Flag required Salesforce fields with no HubSpot source: these need default values or the record hard-fails on every run. | Required fields with no source value cause failures on every run | | Use sandbox environments | Build and test in HubSpot's sandbox (Professional and Enterprise) y el entorno sandbox de Salesforce antes de conectar credenciales de producción. Prueba con 50 a 100 registros, no solo con uno. | Los errores corrompen los datos del CRM en producción sin una forma limpia de revertirlos | | Versiona y documenta tus escenarios | Usa las notas del escenario) de Make para anotar la lógica del enrutador y las decisiones de mapeo de campos. Al actualizar mapeos o añadir rutas, prueba de forma aislada antes de activar. | La lógica se vuelve imposible de depurar o transferir cuando se modifica |

Qué hacer a partir de aquí

Ya puedes crear una integración de HubSpot y Salesforce que gestione la deduplicación, la transformación de campos, las alertas de errores y la validación de la sincronización: todo lo que requiere una sincronización de CRM de nivel profesional. El resultado es que los equipos de ventas y marketing trabajan con los mismos datos de contactos y de pipeline, sin exportaciones manuales ni reconciliación entre plataformas. La forma más rápida de empezar es a partir de un escenario preconstruido en lugar de hacerlo desde cero. Explora las ) de Make para encontrar plantillas listas para usar que cubren los patrones de sincronización más comunes, y luego adapta los mapeos de campos y la lógica de enrutamiento a tu configuración específica. Crear una cuenta gratuita de Make) y construye hoy mismo tu primer escenario.

Preguntas frecuentes

1. ¿Cuál es la diferencia entre el conector nativo de Salesforce de HubSpot y crear la integración en Make? El conector nativo de HubSpot gestiona la sincronización estándar de objetos con una configuración de punto y clic y funciona bien para equipos con mapeos de campos sencillos. No admite lógica condicional, enrutamiento personalizado ni alertas de errores. Una integración creada en Make te da control total sobre las condiciones de sincronización, las transformaciones de campos, la lógica de deduplicación y el tratamiento de errores, lo que la convierte en una mejor opción para equipos de RevOps con requisitos de datos más complejos. 2. ¿Se puede integrar Salesforce con HubSpot? Sí. Puedes conectar ambas plataformas usando el conector nativo de Salesforce de HubSpot o creando una integración personalizada en Make. El conector nativo es adecuado para equipos con requisitos de sincronización estándar. Make es adecuado para equipos que necesitan lógica condicional, transformación de campos, deduplicación y tratamiento de errores en toda la capa de integración. 3. ¿Cómo evito registros duplicados al sincronizar contactos de HubSpot con Salesforce? Añade un módulo Salesforce Search Records antes del módulo de escritura para buscar por dirección de correo electrónico. Pasa el resultado a un enrutador: si la búsqueda devuelve vacío, enruta a Salesforce Create a Record ; si devuelve una coincidencia, enruta a Salesforce Upsert a Record. Sin esta lógica, cada actualización de un contacto de HubSpot crea un nuevo registro de lead en Salesforce, exista ya uno o no. 4. ¿Cuánto tiempo lleva configurar esta integración y cuántas operaciones usará? Un escenario básico de seis módulos siguiendo esta guía tarda entre dos y cuatro horas en construirse y probarse. Cada ejecución consume una operación por cada módulo que se ejecuta, así que una ejecución completa usa seis operaciones. Revisa las ) de Make para calcular tu uso mensual en función del volumen de contactos y la frecuencia de comprobación. 5. ¿Puedo hacerlo en Zapier en lugar de Make? Zapier admite sincronizaciones básicas de HubSpot a Salesforce, pero usa una estructura lineal de un solo camino. No admite enrutadores con varias ramas, lo que significa que no puedes tratar de forma diferente los registros nuevos y los existentes dentro de la misma automatización. El Scenario Builder de Make gestiona el enrutamiento condicional, las funciones de transformación de datos y los gestores de errores que la arquitectura de Zapier no admite de forma nativa. 6. ¿Cómo escalo esta integración a medida que crece el volumen de datos? Ajusta las condiciones del disparador para que el escenario solo se active ante cambios significativos en los contactos, en lugar de con cada actualización de propiedad. Usa disparadores basados en Webhook en lugar de sondeo para sincronización en tiempo real cuando el volumen sea alto. Divide los tipos de objeto con mucho tráfico en escenarios separados para aislar fallos y supervisar el rendimiento de forma independiente. Amplía tu plan de Make a medida que aumente el uso de operaciones, en lugar de dejar que se atasque la cola de ejecuciones del escenario.

学以致用,立即上手

读完文档后,不如亲自动手 — 免费注册 Make.com 账户,跟着教程搭建你的第一个工作流

✓ 永久免费版 ✓ 无需信用卡 ✓ 60 秒注册
🚀 免费注册 Make 账户