# FlowMate Options

This page provides an overview of all FlowMate Options and provides instructions for:

* **Array Splitting Key**
* **Snapshot Key**
* **Sync Param**
* **Passthrough**

<table><thead><tr><th width="173.9683837890625">Option</th><th>Description</th></tr></thead><tbody><tr><td>Array Splitting Key</td><td>Defines which array in the API response should be split into individual objects.</td></tr><tr><td>Snapshot Key</td><td>A timestamp field (e.g. <code>lastUpdated</code>) used to fetch only newly created or updated records.</td></tr><tr><td>Sync Param</td><td>Similar to Snapshot Key, but used when the API supports delta queries (returns only changed data).</td></tr><tr><td>Other Server</td><td>Allows using a server URL not listed in the API spec, useful when APIs have client-specific or external base URLs.</td></tr><tr><td>ID Linking</td><td>ID linking is used when it is important to work with IDs in further steps in the flows. In this way, IDs can be saved and accessed in further steps.</td></tr><tr><td>Skip Import</td><td>Depending on the use case, it is important to import existing data or prevent the initial import. For example, it makes sense to prevent the initial import if you want to offer a Slack or Teams integration. By default, the integration always performs an initial import.</td></tr><tr><td>Continue on Error</td><td>If an error occurs in the execution of a flow in a step, the next steps for this data set are not carried out. Sometimes, however, it is necessary to continue with the steps despite the error. This may be the case, for example, if you are looking for an ID in the second step of the flow. If the ID already exists, a certain step is executed. If the ID does not exist, an error is issued, but the flow can continue and execute another step. A very common use case is, for example, the creation or updating of contacts or calendar entries.</td></tr><tr><td>Passthrough</td><td>Passthrough ensures that you can access the data for all steps in flows with multiple actions. Passthrough is deactivated by default.</td></tr></tbody></table>

To illustrate the concepts, we use a Contacts API response:

```json
{
  "data": [
    {
      "id": "123",
      "createdAt": "2023-11-07T05:31:56Z",
      "updatedAt": "2023-11-07T05:31:56Z",
      "firstname": "Jane",
      "lastname": "Doe",
      "email": "jane.doe@example.com"
    }
  ]
}
```

### **Array Splitting Key**

Some APIs return multiple objects wrapped inside an array. FlowMate needs to know **which array should be split into individual items**, so each record is processed one by one.

In the contact example above, the array key is:

```
data
```

Once you define the **Array Splitting Key**, FlowMate processes each object individually.

{% hint style="info" %}
API responses often contain more than just the list of records. They may include paging information, metadata, or other objects. FlowMate must know **which array actually contains your meaningful items**.
{% endhint %}

For example, HubSpot returns contacts inside a `results` array:

```json
{
  "paging": {
    "next": {
      "after": "NTI1Cg%3D%3D",
      "link": "?after=NTI1Cg%3D%3D"
    }
  },
  "results": [
    {
      "id": "string",
      "createdAt": "2023-11-07T05:31:56Z",
      "updatedAt": "2023-11-07T05:31:56Z"
    }
  ]
}
```

In this case, the Array Splitting Key is:

```
results
```

FlowMate ignores metadata and processes each item from `results` individually.

### **Snapshot Key**

The **Snapshot Key** tells FlowMate which timestamp field should be used to **fetch only new or updated records** in the next run.

Using our contact example:

```json
{
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2023-11-07T05:31:56Z"
}
```

You can use either field:

| Use Case                                        | Recommended Snapshot Key |
| ----------------------------------------------- | ------------------------ |
| Only new records should be processed            | `createdAt`              |
| New **and updated** records should be processed | `updatedAt`              |

Your choice affects how your **template logic** should be built:

* If using `updatedAt`:\
  You likely need logic to **create or update** records in the target system.
* If using `createdAt`:\
  The flow only needs to **create** new records.

### **Sync Param**

Some APIs support delta queries themselves — for example:

* `?updatedSince=2024-01-01T00:00:00Z`
* `?since=...`
* `?modified_after=...`

When an endpoint offers these parameters, you can enter the parameter name in **Sync Param**.

FlowMate then automatically injects the correct value (based on the snapshot timestamp) into the API call.

Endpoint:

```
GET /contacts?updatedSince=<timestamp>
```

In this case, the Sync Param is:

```
updatedSince
```

FlowMate will send the correct timestamp on every run.

### **Passthrough**

Flows often have multiple steps, and later steps may need access to data from earlier ones.\
**Passthrough** makes this possible.

When Passthrough is enabled, you can reference data from previous steps using JSONata:

```
passthrough.step_number.data.fieldname
```

For example, you want to access the firstname from **Step 1**:

```
passthrough.step_1.data.firstname
```

Passthrough is **disabled by default** to avoid unnecessary payload bloat — enable it when your flow has multiple dependent steps.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://flowmate.gitbook.io/flowmate-documentation/templates/how-to-create-a-template/flowmate-options.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
