# Create User — Salesforce

> Create a Salesforce user (a login for a person in your org). Requires an available user license and a unique Username in email form; the Username must be globally unique across all Salesforce orgs. Use Get User or Find Records on User to…

- Key: `salesforce_rest_api-create-user`
- Type: Action (Write)
- Version: 0.1.9
- App: Salesforce (`salesforce_rest_api`) — https://pipedream.com/apps/salesforce-rest-api.md
- This page (HTML): https://pipedream.com/apps/salesforce-rest-api/actions/create-user
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/salesforce_rest_api/actions/create-user/create-user.mjs

## Description

Create a Salesforce user (a login for a person in your org). Requires an available user license and a unique `Username` in email form; the `Username` must be globally unique across all Salesforce orgs. Use **Get User** or **Find Records** on `User` to check whether the person already has an account. [See the documentation](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_user.htm)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `Alias` | `string` | Yes | The user's alias (max 8 characters). |
| `CommunityNickname` | `string` | Yes | Name used to identify this user in the Experience Cloud site. |
| `DigestFrequency` | `string` | Yes | The send frequency of the user's Chatter personal email digest. |
| `Email` | `string` | Yes | The user's email address. |
| `EmailEncodingKey` | `string` | Yes | The email encoding for the user. |
| `LanguageLocaleKey` | `string` | Yes | The user's language. |
| `LastName` | `string` | Yes | The user's last name. |
| `LocaleSidKey` | `string` | Yes | The locale affects formatting and parsing of values, especially numeric values, in the user interface. |
| `ProfileId` | `string` | Yes | ID of the user's Profile (Salesforce's 15- or 18-character record ID, e.g. 00eXX000001SvR2). Use SOQL Query to find the Profile ID. |
| `TimeZoneSidKey` | `string` | Yes | A User time zone affects the offset used when displaying or entering times in the user interface. |
| `Username` | `string` | Yes | Contains the name that a user enters to log in to the API or the user interface. The value for this field must be in the form of an email address, using all lowercase characters. It must also be unique across all organizations. |
| `UserPermissionsMarketingUser` | `boolean` | Yes | Indicates whether the user is enabled to manage campaigns in the user interface (true) or not (false). |
| `UserPermissionsOfflineUser` | `boolean` | Yes | Indicates whether the user is enabled to use Offline Edition (true) or not (false). |
| `additionalFields` | `object` | No | Other fields to set for this record as name -> value pairs. Values are parsed as JSON where applicable. Example: {"Industry": "Technology", "AnnualRevenue": 1000000}. Use Describe Object to discover valid field names. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "salesforce_rest_api",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "salesforce_rest_api-create-user",
  arguments: {
    Alias: "Alias",
    CommunityNickname: "Nickname",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "salesforce_rest_api-create-user",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    salesforce_rest_api: { authProvisionId: "apn_xxxxxxx" },
    Alias: "Alias",
    CommunityNickname: "Nickname",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "salesforce_rest_api-create-user",
    "configured_props": {
      "salesforce_rest_api": { "authProvisionId": "apn_xxxxxxx" },
      "Alias": "Alias",
      "CommunityNickname": "Nickname"
    }
  }'
```

---

- App: https://pipedream.com/apps/salesforce-rest-api.md · All apps: https://pipedream.com/apps
