> For the complete documentation index, see [llms.txt](https://docs.flowstem.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flowstem.app/commands/apps.md).

# Apps

App commands connect a workflow to an external service. Connect the service in **Settings > Apps** before testing its commands.

## Google Sheets

Adds a row, finds a row, or updates a row in a connected Google spreadsheet.

### Select the spreadsheet

Choose an accessible spreadsheet or paste a Google Sheets link or spreadsheet ID. Then select the sheet tab. Flowstem reads the header row to make its columns available in the command editor.

Flowstem stores the spreadsheet ID, numeric sheet ID, sheet name, and column metadata in the workflow. The numeric ID means renaming a sheet tab does not normally break the command.

### Add Row

Appends a new row to the end of the selected sheet.

* **Configure:** Map spreadsheet columns to literal values or Flowstem variables.
* **Value mode:** Raw preserves text exactly. User-entered lets Google interpret values such as dates, numbers, and formulas.
* **Example:** Add `$name`, `$email`, and `$status` to a tracking sheet.

Columns without a mapped value are left blank.

### Find Row

Finds a row whose columns match one or more conditions.

* **Configure:** Conditions joined with AND or OR, search direction, row-number output, and optional column outputs.
* **Operators:** Equals, does not equal, contains, does not contain, starts with, ends with, is empty, and is not empty.
* **Outputs:** Save the matching row number and selected column values to variables.
* **Example:** Find the row whose **Email** equals `$email`, then save its **Status** to `$status`.

Enable search from the bottom when the most recently added matching row should be returned.

### Update Row

Changes mapped columns in a specific row.

* **Configure:** Row number, column mappings, and raw or user-entered value mode.
* **Variables:** The row number can be a literal value or a variable produced by Find Row.
* **Example:** Update the **Status** column in `$row_number` to `Completed`.

Only mapped columns are changed.

{% hint style="warning" %}
Removing a sheet tab or a referenced column requires the command to be configured again. Access errors, expired Google authorization, and API limits use the normal Flowstem timeout, retry, and Continue on failure behavior.
{% endhint %}
