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

# n8n CRM sync

> Sync external CRM data into Soundcheck through a signed n8n webhook

n8n CRM sync lets an automation workflow push external CRM data into Soundcheck. It is designed for organization-specific imports from tools such as HubSpot, Flex, or custom booking systems.

<Note>
  For a bidirectional setup that keeps HubSpot deal stages, Flex quotes, and Soundcheck gig status in lockstep, see the [HubSpot ↔ Flex pipeline](/crm/integrations/hubspot-flex-pipeline), which builds on the same signed-webhook foundation.
</Note>

## Endpoint

Send sync requests to:

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

The webhook can ingest customers, contacts, venues, events, and external ID mappings in one signed payload.

## Required configuration

Configure these environment variables before enabling the workflow:

| Variable                       | Purpose                                                  |
| ------------------------------ | -------------------------------------------------------- |
| `N8N_CRM_SYNC_SECRET`          | Shared secret used to sign webhook requests              |
| `N8N_CRM_SYNC_ORGANIZATION_ID` | The Soundcheck organization allowed to receive this feed |

The payload must include `soundcheck_organization_id`, and it must match the configured organization ID.

## Request signing

Every request must include an HMAC-SHA256 signature:

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

Generate the digest from the raw request body using `N8N_CRM_SYNC_SECRET`.

<Warning>
  Unsigned requests, incorrectly signed requests, or requests for the wrong organization are rejected.
</Warning>

## Payload contents

The sync payload can include:

* Customer identity and contact details
* Additional contacts
* Venue records
* Event records
* External IDs for deduping and future updates

Use stable external IDs from the source CRM whenever possible. They make future syncs idempotent and prevent duplicate records.

## Recommended n8n flow

<Steps>
  <Step title="Trigger from source CRM">
    Start when a customer, booking, contact, or event changes in the external system.
  </Step>

  <Step title="Normalize data">
    Map the source fields into Soundcheck's sync payload shape.
  </Step>

  <Step title="Sign the request">
    Compute the HMAC signature from the raw JSON body.
  </Step>

  <Step title="POST to Soundcheck">
    Send the payload to `/webhooks/n8n/crm-sync` with the signature header.
  </Step>
</Steps>

## Related CRM pages

<CardGroup cols={3}>
  <Card title="Customers" icon="users" href="/crm/customers">
    Synced customer records appear in the customer directory.
  </Card>

  <Card title="Venues" icon="location-dot" href="/crm/venues">
    Synced venues can be saved and reused on gigs.
  </Card>

  <Card title="Leads" icon="bullseye" href="/crm/leads/overview">
    Use public lead intake for inquiries that should start as pipeline records.
  </Card>
</CardGroup>
