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

# Salesforce Output

export const ComponentMetadata = ({warehouses, unsupportedWarehouses = [], componentType, connectionInputs, connectionOutputs}) => {
  const allWarehouses = [...warehouses.map(w => ({
    name: w,
    supported: true
  })), ...unsupportedWarehouses.map(w => ({
    name: w,
    supported: false
  }))];
  return <div style={{
    background: 'var(--colors-background-light, #f9fafb)',
    border: '1px solid var(--colors-border-default, #e5e7eb)',
    borderRadius: '12px',
    padding: '20px 28px',
    marginBottom: '28px',
    boxShadow: '0 1px 4px rgba(0,0,0,0.10)'
  }}>
      <table style={{
    width: '100%',
    borderCollapse: 'collapse'
  }}>
        <tbody>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle',
    width: '180px'
  }}>Project Availability</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>
              <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '8px'
  }}>
                {allWarehouses.map((w, i) => <span key={i} style={{
    background: w.supported ? '#dcfce7' : '#fee2e2',
    color: w.supported ? '#15803d' : '#b91c1c',
    border: `1px solid ${w.supported ? '#bbf7d0' : '#fca5a5'}`,
    borderRadius: '9999px',
    padding: '3px 12px',
    fontSize: '0.85rem',
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
                    {w.name} {w.supported ? '✅' : '❌'}
                  </span>)}
              </div>
            </td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Component Type</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{componentType}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Inputs</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{connectionInputs}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Outputs</td>
            <td style={{
    verticalAlign: 'middle'
  }}>{connectionOutputs}</td>
          </tr>
        </tbody>
      </table>
    </div>;
};

<ComponentMetadata warehouses={["Snowflake", "Amazon Redshift"]} unsupportedWarehouses={["Databricks"]} componentType="Orchestration" connectionInputs="One" connectionOutputs="Unlimited" />

The Salesforce Output component uses the Salesforce API to write back the contents of a source table (or view) into a table in Salesforce.

## Properties

<ResponseField name="Name" type="string" required>
  A human-readable name for the component.
</ResponseField>

{/* <!-- param-start:[authenticationMethod] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Authentication Method" type="drop-down" required>
  Select the authentication method. Choose **OAuth** to use an OAuth connection, or **User/Password** to use a username and password.
</ResponseField>

{/* <!-- param-start:[authentication] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Authentication" type="drop-down" required>
  Available when `Authentication Method` is set to **OAuth**.

  Choose your OAuth connection from the drop-down menu.

  Click **Manage** to navigate to the **OAuth connections** list to review OAuth connections and to add new connections. Read [OAuth](/docs/guides/oauth) to learn how to create an OAuth connection.
</ResponseField>

{/* <!-- param-start:[useSandbox] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Use Sandbox" type="boolean" required>
  Available when `Authentication Method` is set to **User/Password**.

  * **No:** Connect to a live Salesforce account. This is the default setting.
  * **Yes:** Connect to a sandbox Salesforce account.
</ResponseField>

{/* <!-- param-start:[username] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Username" type="string" required>
  Available when `Authentication Method` is set to **User/Password**.

  Provide a valid Salesforce username.
</ResponseField>

{/* <!-- param-start:[password] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Password" type="drop-down" required>
  Available when `Authentication Method` is set to **User/Password**.

  Select the secret definition that represents the password for your Salesforce account.

  Choose the secret definition that represents your credentials for this connector.

  If you have not already saved your credentials for this connector as a secret definition, click **Add secret** to create a secret definition representing these credentials. Read [Secrets and secret definitions](/docs/guides/secrets-and-secret-definitions) for details about creating a secret definition.
</ResponseField>

{/* <!-- param-start:[securityToken] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Security Token" type="drop-down">
  Available when `Authentication Method` is set to **User/Password**.

  Select the secret definition that represents your Salesforce OAuth credentials.

  Choose the secret definition that represents your credentials for this connector.

  If you have not already saved your credentials for this connector as a secret definition, click **Add secret** to create a secret definition representing these credentials. Read [Secrets and secret definitions](/docs/guides/secrets-and-secret-definitions) for details about creating a secret definition.
</ResponseField>

{/* <!-- param-start:[useBulkApi] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Use Bulk API" type="drop-down" required>
  * **No:** Write up to 200 rows in real time. This is the default setting.
  * **Yes:** Write up to 10,000 rows asynchronously in the background. This can't be cancelled before completion.
</ResponseField>

{/* <!-- param-start:[contentType] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Content Type" type="drop-down" required>
  Available when `Use Bulk API` is set to **Yes**.

  Select the content type used to transfer data via the Bulk API.

  * **CSV**
  * **XML**
  * **ZIP\_CSV**
  * **ZIP\_XML:** This is the default setting.
</ResponseField>

{/* <!-- param-start:[connectionOptions] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Connection Options" type="column editor">
  * **Parameter:** A JDBC parameter supported by the database driver. The available parameters are explained in the [connection options](https://cdn.cdata.com/help/RFK/jdbc/Connection.htm) section of the data model. Manual setup is not usually required, since sensible defaults are assumed.
  * **Value:** A value for the given parameter.
</ResponseField>

{/* <!-- param-start:[database] | warehouses: [snowflake] --> */}

<ResponseField name="Database" type="drop-down" required>
  The Snowflake database. The special value `[Environment Default]` uses the database defined in the environment. Read [Databases, Tables and Views - Overview](https://docs.snowflake.com/en/guides-overview-db) to learn more.
</ResponseField>

{/* <!-- param-start:[schema] | warehouses: [snowflake] --> */}

<ResponseField name="Schema" type="drop-down" required>
  The Snowflake schema. The special value `[Environment Default]` uses the schema defined in the environment. Read [Database, Schema, and Share DDL](https://docs.snowflake.com/en/sql-reference/ddl-database.html) to learn more.
</ResponseField>

{/* <!-- param-start:[sourceSchema] | warehouses: [redshift] --> */}

<ResponseField name="Source Schema" type="drop-down" required>
  The Amazon Redshift schema. The special value `[Environment Default]` uses the schema defined in the environment. Read [Schemas](https://docs.aws.amazon.com/redshift/latest/dg/r_Schemas_and_tables.html) to learn more.

  For more information on using multiple schemas, read [Schemas](https://docs.aws.amazon.com/redshift/latest/dg/r_Schemas_and_tables.html).
</ResponseField>

{/* <!-- param-start:[sourceTable] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Source Table" type="drop-down" required>
  Select the source table from which data will be unloaded (output). The tables available in the dropdown selection depend on the source schema.
</ResponseField>

{/* <!-- param-start:[targetObject] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Target Object" type="drop-down" required>
  Select the Salesforce object (table) into which local data will be loaded (input).
</ResponseField>

{/* <!-- param-start:[outputOperation] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Output Operation" type="drop-down" required>
  Select the output operation to be performed into the target object. Available operations include Delete, Insert, Update, and Upsert.

  The `Salesforce ID` and `Column Mappings` properties available below depend on your selection:

  * **Insert:** `Column Mappings` is available. `Salesforce ID` is hidden.
  * **Delete:** `Salesforce ID` is available. `Column Mappings` is hidden.
  * **Update** or **Upsert:** Both `Salesforce ID` and `Column Mappings` are available.
</ResponseField>

{/* <!-- param-start:[salesforceId, salesforceId1] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Salesforce ID" type="drop-down" required>
  Available when `Output Operation` is **Delete**, **Update**, or **Upsert**.

  Select the unique ID of the row in the target object where the local data will be written.
</ResponseField>

{/* <!-- param-start:[columnMappings] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Column Mappings" type="column editor" required>
  Available when `Output Operation` is **Insert**, **Update**, or **Upsert**.

  Specify the columns in the source table that will be unloaded (output).
</ResponseField>

{/* <!-- param-start:[onWarnings] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="On Warnings" type="drop-down" required>
  * **Continue:** Continue with the load if an error is raised.
  * **Fail:** Fail the run if an error is raised.
</ResponseField>

{/* <!-- param-start:[batchSize, batchSize1] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Batch Size" type="integer" required>
  Specify the number of rows to load to the target between each commit. On a very large export, this may be desirable to keep the size of the log files from growing very large before the data is committed.

  The default value depends on `Use Bulk API`: `2000` when set to **No**, or `10000` when set to **Yes**.
</ResponseField>

{/* <!-- param-start:[recordsPerIngestJob] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Records Per Ingest Job" type="integer">
  Available when `Use Bulk API` is set to **Yes**.

  Specify the number of records to load per ingest job. The component loads up to this many rows (to a maximum of 10,000 per batch) into each Salesforce ingest job, and jobs run concurrently.

  If this property is empty, the component loads all records and batches into Salesforce using a single ingest job. This property is empty by default.

  If you specify a negative value, the run fails.
</ResponseField>

{/* <!-- param-start:[relationshipColumns] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Relationship Columns" type="column editor">
  Click **+** to add a relationship column. For each column, enter the following:

  * **Parent Object:** Drop-down list of available parent target objects. For example, if the "child" is `User`, the "parent" could be `Account`.
  * **Relationships:** The relationship to the parent relationship column. For example, `OwnerId` is a relationship column in `Account`, but the relationship is named `Owner`.
  * **Type:** Relationship columns refer to specific target objects. For example, `OwnerId` in `Account` refers to `User`. However, polymorphic objects like `OwnerId` in `Event` can refer to `Calendar` or `User`, but only one may be used.
  * **Index Column:** The name of the column that uniquely identifies the parent target object. The `User` of the parent target object is identified by the `Email` column in User.
</ResponseField>

{/* <!-- param-start:[captureRejectedEntries] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Capture Rejected Entries" type="drop-down" required>
  Available when `Use Bulk API` is set to **Yes**.

  Set to **On** to capture any rejected or errored records in an exception table, so you can flag them for further analysis. The default is **Off**.
</ResponseField>

{/* <!-- param-start:[truncateRejectedEntries] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Truncate Rejected Entries" type="drop-down" required>
  Available when `Capture Rejected Entries` is set to **On**.

  Whether to truncate the rejected entries table before writing to it.

  * **Off:** Append rejected entries to the existing table. This is the default setting.
  * **On:** Truncate the table before writing rejected entries to it.
</ResponseField>

{/* <!-- param-start:[rejectedEntriesDatabase] | warehouses: [snowflake] --> */}

<ResponseField name="Rejected Entries Database" type="drop-down" required>
  Available when `Capture Rejected Entries` is set to **On**.

  Select a database to hold the rejected entries table. The default is `[Environment Default]`.
</ResponseField>

{/* <!-- param-start:[rejectedEntriesSchema] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Rejected Entries Schema" type="drop-down" required>
  Available when `Capture Rejected Entries` is set to **On**.

  Select a schema to hold the rejected entries table. The default is `[Environment Default]`.
</ResponseField>

{/* <!-- param-start:[rejectedEntriesTable] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Rejected Entries Table" type="string" required>
  Available when `Capture Rejected Entries` is set to **On**.

  Specify a name for the table that rejected entries are written to. If the table doesn't already exist, it's created.
</ResponseField>

{/* <!-- param-start:[captureBatchResults] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Capture Batch Results" type="drop-down" required>
  Available when `Use Bulk API` is set to **Yes**.

  Set to **On** to capture the results of the Bulk API load in a table. The default is **Off**.
</ResponseField>

{/* <!-- param-start:[truncateBatchResults] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Truncate Batch Results" type="drop-down" required>
  Available when `Capture Batch Results` is set to **On**.

  Whether to truncate the batch results table before writing to it.

  * **Off:** Append batch results to the existing table. This is the default setting.
  * **On:** Truncate the table before writing batch results to it.
</ResponseField>

{/* <!-- param-start:[batchResultsDatabase] | warehouses: [snowflake] --> */}

<ResponseField name="Batch Results Database" type="drop-down" required>
  Available when `Capture Batch Results` is set to **On**.

  Select a database to hold the batch results table. The default is `[Environment Default]`.
</ResponseField>

{/* <!-- param-start:[batchResultsSchema] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Batch Results Schema" type="drop-down" required>
  Available when `Capture Batch Results` is set to **On**.

  Select a schema to hold the batch results table. The default is `[Environment Default]`.
</ResponseField>

{/* <!-- param-start:[batchResultsTable] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Batch Results Table" type="string" required>
  Available when `Capture Batch Results` is set to **On**.

  Specify a name for the table that batch results are written to. If the table doesn't already exist, it's created.
</ResponseField>

{/* <!-- param-start:[surrogateKey] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Surrogate Key" type="drop-down">
  This field only appears if `Use Bulk API` is set to **Yes** and `Capture Batch Results` is set to **On**.

  Select a column from the target Salesforce object. The value from this column in the batch request data will appear in the batch results table in a column named `surrogate_key`. This allows you to correlate each batch result row back to the record that was sent to Salesforce. The selected column must not contain all null values, because this will cause the creation of the batch results table to fail.
</ResponseField>

{/* <!-- param-start:[autoDebug] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Auto Debug" type="drop-down" required>
  Choose whether to automatically log debug information about your load. These logs can be found in the task history and should be included in support requests concerning the component. Turning this on will override any debugging connection options.
</ResponseField>

{/* <!-- param-start:[debugLevel] | warehouses: [snowflake, redshift] --> */}

<ResponseField name="Debug Level" type="drop-down" required>
  The level of verbosity with which your debug information is logged. Levels above 1 can log huge amounts of data and result in slower execution. Only used when **Auto Debug** is On.

  1. Will log the query, the number of rows returned by it, the start of execution and the time taken, and any errors.
  2. Will log everything included in Level 1, plus cache queries and additional information about the request, if applicable.
  3. Will additionally log the body of the request and the response.
  4. Will additionally log transport-level communication with the data source. This includes SSL negotiation.
  5. Will additionally log communication with the data source, as well as additional details that may be helpful in troubleshooting problems. This includes interface commands.
</ResponseField>
