> ## Documentation Index
> Fetch the complete documentation index at: https://nango-scrips-ref.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Use custom field mappings

> Step-by-step guide on how to support custom fields using field mappings.

Field mappings are necessary when a [sync](/understand/concepts/syncs) needs to access information stored in external custom fields. Nango provides dedicated tools to support complex field mappings.

# Prompt your customers for field mappings

In your app:

* fetch the list of custom fields available from the external API using an action ([step-by-step guide](/integrate/guides/perform-workflows-with-an-api))
* display the full list of external custom fields to the user
* prompt the user to associate the data you need to collect to the relevant external custom fields

The output of this step should be a field mapping object such as:

```json
 {
    "internal_field_1": "custom_field_1",
    ...
 }
```

# Store field mappings in the connection metadata

Update the relevant connection's metadata with the obtained field mapping object with the SDK ([reference](/reference/sdks/node#set-connection-metadata)) or API ([reference](/reference/api/connection/set-metadata)):

<Tabs>
  <Tab title="Node">
    ```typescript
    await nango.setMetadata('<INTEGRATION-ID>', '<CONNECTION-ID>', { internal_field_1: 'custom_field_1' });
    ```
  </Tab>

  <Tab title="REST API">
    ```bash
    curl --request PATCH \
      --url https://api.nango.dev/connection/<CONNECTION-ID>/metadata \
      --header 'Authorization: Bearer <TOKEN>' \
      --header 'Content-Type: application/json' \
      --header 'Provider-Config-Key: <INTEGRATION-ID>' \
      --data '{ "internal_field_1": "custom_field_1" }'
    ```
  </Tab>
</Tabs>

# Start the sync for each connection

Start the *sync* schedule programmatically for this connection with the SDK ([reference](/reference/sdks/node#start-schedule-for-syncs)) or API ([reference](/reference/api/sync/start)):

<Tabs>
  <Tab title="Node">
    ```typescript
    await nango.startSync('<INTEGRATION-ID>', ['hubspot-sync'], '<CONNECTION-ID>');
    ```
  </Tab>

  <Tab title="REST API">
    ```bash
    curl --request POST \
      --url https://api.nango.dev/sync/start \
      --header 'Authorization: Bearer <TOKEN>' \
      --header 'Content-Type: application/json' \
      --data '{
      "connection_id": "<CONNECTION-ID>",
      "provider_config_key": "<INTEGRATION-ID>",
      "syncs": [ "hubspot-sync" ]
    }'
    ```
  </Tab>
</Tabs>

The sync's internal logic will use the field mappings to fetch the relevant data from custom fields ([step-by-step guide](/customize/guides/advanced/support-custom-field-mappings)).

<Tip>
  **Questions, problems, feedback?** Please reach out in the [Slack community](https://nango.dev/slack).
</Tip>
