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

# Salesforce

## Connecting to Salesforce

Refer to the following link for an overview of the connector.

* [Connecting to DB/SaaS](/docs/en/develop/guides/integration)

<Tabs>
  <Tab title="Dashboard">
    <Steps>
      <Step title="Create a Connector">
        Select the "Connectors" tab on the top page and press the "Create" button.

        <img src="https://mintcdn.com/queue-4c50ebb3/evgQaQjX53Vch8Y5/assets/images/docs/advanced/connectors/connect-data-platform-connection.png?fit=max&auto=format&n=evgQaQjX53Vch8Y5&q=85&s=19c6e7afc70da565c2a8ab4f75469549" alt="Connection" width="1907" height="711" data-path="assets/images/docs/advanced/connectors/connect-data-platform-connection.png" />
      </Step>

      <Step title="Enter Salesforce Credentials">
        Select Salesforce and press the sign-in button.

        If you are using a custom domain, enter your login URL. If you are not using a custom domain, log in with the pre-entered URL.

        <img src="https://mintcdn.com/queue-4c50ebb3/evgQaQjX53Vch8Y5/assets/images/docs/advanced/connectors/connect-data-platform-salesforce-create.png?fit=max&auto=format&n=evgQaQjX53Vch8Y5&q=85&s=f0a6b599df42118e1834dcc0bce75dca" alt="Salesforce Connection Create" width="1672" height="785" data-path="assets/images/docs/advanced/connectors/connect-data-platform-salesforce-create.png" />

        After entering, press the Create button to complete the creation. If there are any errors in the parameters, an error will be displayed, so please check the connection details again.
      </Step>

      <Step title="Obtain access_token from the created connector">
        Once created successfully, you can obtain the connector name from the list display.

        Use the dedicated function to enter the connector name in the Python code and obtain the access\_token.

        <CodeGroup>
          ```python Python theme={"dark"}
          import morph
          from morph import MorphGlobalContext
          from morph_lib.api import get_auth_token


          @morph.func
          def main(context: MorphGlobalContext):
              access_token = get_auth_token("connection_name")
              # ↓↓↓ Process using access_token ↓↓↓
          ```
        </CodeGroup>
      </Step>
    </Steps>
  </Tab>

  <Tab title="Local Version">
    <Info>In the local version, you currently need to directly write the credentials in `~/.morph/connections.yml`. For other methods, please create them in the dashboard.</Info>

    <Steps>
      <Step title="Edit connections.yml">
        If the file does not exist in `~/.morph/connections.yml`, create it beforehand and then edit it.

        ```bash shell theme={"dark"}
        mkdir ~/.morph
        touch ~/.morph/connections.yml
        ```

        ```yaml theme={"dark"}
        connections:
          salesforce-connection: # Any unique name
            type: salesforce # Fixed
            method: salesforce_oauth # Fixed
            refresh_token: str
            client_id: str
            client_secret: str
            redirect_uri: str
            access_token: str # Optional
            custom_domain_url: str # Optional
        ```
      </Step>

      <Step title="Use the connector in code to retrieve data">
        Use the dedicated function to enter the connector name in the Python code and obtain the access\_token.

        <CodeGroup>
          ```python Python theme={"dark"}
          import morph
          from morph import MorphGlobalContext
          from morph_lib.api import get_auth_token


          @morph.func
          def main(context: MorphGlobalContext):
              access_token = get_auth_token("connection_name")
              # ↓↓↓ Process using access_token ↓↓↓
          ```
        </CodeGroup>
      </Step>
    </Steps>

    Refreshing the access\_token is a dashboard feature, so the one described will always be used in the local environment.

    <Warning>
      The priority when actually specifying and executing the file with a connector is as follows.
      Also, note that only connectors created in the dashboard can be used in the environment where `morph deploy` is performed.

      1. Connectors described in `~/.morph/connections.yml` on the local machine
      2. Connectors registered in the cloud
    </Warning>
  </Tab>
</Tabs>
