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

# HubSpot/Flex CRM Sync via n8n

> Engineering reference for the n8n-orchestrated HubSpot lead and Flex event sync into Soundcheck.

This workflow keeps n8n as the orchestrator for all triggers, retries, provider credentials, and future sync-back jobs.

HubSpot and Flex intentionally feed different Soundcheck objects:

* HubSpot triggers create lead requests in Soundcheck.
* Flex triggers create events/gigs in Soundcheck, including associated customer, venue, and external IDs.

Soundcheck receives HubSpot lead payloads at:

```text theme={null}
POST /api/v1/lead-requests
```

Soundcheck receives Flex event sync payloads at:

```text theme={null}
POST /webhooks/n8n/crm-sync
```

## Soundcheck Configuration

Set this environment variable on the Soundcheck API:

```text theme={null}
N8N_CRM_SYNC_SECRET=<shared secret used by n8n>
N8N_CRM_SYNC_ORGANIZATION_ID=<owning Soundcheck organization id allowed for this secret>
```

The webhook secret is bound to `N8N_CRM_SYNC_ORGANIZATION_ID`. Soundcheck rejects signed payloads whose `soundcheck_organization_id` does not match that configured organization.

n8n must sign the exact Flex event sync request body with HMAC-SHA256 and send:

```text theme={null}
X-Soundcheck-N8N-Signature: sha256=<hex digest>
```

## n8n Configuration

Import `hubspot-flex-crm-sync.workflow.json`, then replace the placeholder credential references and environment values:

```text theme={null}
SOUNDCHECK_BASE_URL=https://api.soundchecklive.com
SOUNDCHECK_ORGANIZATION_ID=<owning Soundcheck organization id>
SOUNDCHECK_N8N_CRM_SYNC_SECRET=<same shared secret as Soundcheck>
FLEX_BASE_URL=https://mapache.flexrentalsolutions.com/f5
```

The workflow includes manual, scheduled, HubSpot webhook, and Flex webhook trigger stubs.

* Manual and scheduled backfills fetch both providers and run each provider through its own Soundcheck path.
* The HubSpot webhook path normalizes the HubSpot deal/prospect into a lead request and posts it to `/api/v1/lead-requests`.
* The Flex webhook path normalizes the Flex record into a CRM sync payload, signs it, and posts it to `/webhooks/n8n/crm-sync` to create/update the event.

Provider API details are intentionally placeholders because the final HubSpot properties and Flex endpoints may vary by account configuration.

## Related

* Pipeline & quote lifecycle design: [HubSpot ↔ Flex pipeline](./hubspot-flex-pipeline.md) — deal-stage → Flex quote triggers and the cross-system status mapping.
* User-facing companion: [n8n CRM Sync](https://docs.soundchecklive.io/crm/integrations/n8n-crm-sync.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.