> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.pipelaunch.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Passing Dynamic Data to Your Salesforce Flow

The PipeLaunch Browser extension lets you capture data from a LinkedIn profile and your current Salesforce record, then send those values straight into a Screen Flow (or any Flow that accepts input variables). Under the hood, you use **JSONPath** expressions to pick exactly which fields you want.

* **`record`** — the Salesforce record context (all fields available in the Record Details preview)
* **`pipelaunchData`** — the object containing both:
    * **`profileData`** (LinkedIn profile info)
    * **`companyData`** (LinkedIn company info)
You’ll write JSON that maps Flow input variable names to JSONPath expressions against these objects.

## 2. JSONPath Primer
JSONPath is a simple syntax for selecting nodes in a JSON document:
| Expression | Meaning |
| ---- |
| $ | the root object |
| $['field'] or $.field | child property named `field` |
| $..name | all `name` properties, at any depth |
| $.items[0] | first element in the array `items` |
| $.experiences[?(@.isCurrentJob)] | all experiences where `isCurrentJob` is `true` |

## 3. The Data Objects

### 3.1 - record

When you click the PipeLaunch button in Salesforce, the extension injects a `record` object containing every field you see in the record preview.

Example snippet (simplified):
```
{
  "record": {
    "attributes": {
        "type": "Contact",
        "url": "/services/data/v64.0/sobjects/Contact/0032o00003bE8FSAA0"
    },
    "Id": "0032o00003bE8FSAA0",
    "Name": "Ben Asfaha",
    "FirstName": "Ben",
    "LastName": "Asfaha",
    "LastModifiedDate": "2025-06-19T08:40:16.000+0000",
    "CreatedBy": {
        "attributes": {
            "type": "User",
            "url": "/services/data/v64.0/sobjects/User/0052o00000DKRfgAAH"
        },
        "Id": "0052o00000DKRfgAAH",
        "Name": "Admin",
    }


    // …and any other fields in your page layout
  }
}
```

You reference it like:
* `$.record.Id` → Salesforce Record Id
* `$.record.Name` → Record Name

### 3.2 - pipelaunchData.profileData

This object mirrors the LinkedIn profile you’re viewing. It contains name, title, experiences, etc. Example:

```
{
  "pipelaunchData": {
    "profileData": {
      "firstName": { "value": "Ben" },
      "lastName":  { "value": "Asfaha" },
      "title":     "CEO & Co‑Founder",
      "linkedinURL": "https://linkedin.com/in/benasfaha",
      // …more fields
    }
  }
}
```

Common JSONPaths:
* `$.pipelaunchData.profileData.title` → “CEO & Co‑Founder”
* `$.pipelaunchData.profileData.firstName.value` → “Ben”
* `$.pipelaunchData.profileData.experiences[0].companyName` → “PipeLaunch” (the name of the first experience)

### 3.3 - pipelaunchData.companyData

This object holds the company’s metadata:
```
{
  "pipelaunchData": {
    "companyData": {
      "name":    "PipeLaunch",
      "domain":  "pipelaunch.com",
      "website": "https://www.pipelaunch.com/",
      // …more fields
    }
  }
}
```

Common JSONPaths:
* `$.pipelaunchData.companyData.name` → “PipeLaunch”
* `$.pipelaunchData.companyData.domain` → “pipelaunch.com”

## 4. Configuring the Extension to Pass Variables

1. Open the **“Settings”** (gear icon) and scroll to **“Quick Actions”**.
2. Add a new** Launch a Salesforce Flow **action
3. Select the flow and add the variables

![](https://storage.crisp.chat/users/helpdesk/website/-/3/4/8/a/348acba567d60c00/image_3ntlw9.png)

![](https://storage.crisp.chat/users/helpdesk/website/-/3/4/8/a/348acba567d60c00/image_csa07c.png)

||| The flow variable names are case-sensitive. Only Text, Number and Boolean variable types are supported. Note that "recordId" cannot be used as flow variable
