# Act on many records at once

> Tick row checkboxes and a bulk bar appears: run a quick action or a background agent across the selection, or re-answer a prompt column. Action columns give every row its own call, text or email button.

- Source: https://spiich.ai/help/your-data/bulk-actions
- Section: Your data in Spiich
- Who can do this: Everyone
- Time: 2 minutes
- Last updated: 2026-08-24

## Before you start

- A table with rows in it.

Everything you can do to one record from its [record page](/help/your-data/record-pages) you can do to a batch of them here. Anything you repeat one row at a time is worth turning into an action column.

## Select rows

Each row has a checkbox, and the header checkbox takes everything loaded. Once anything is selected, a floating bar appears at the bottom.

- **Select all rows** takes the rows currently loaded in your browser.
- **Select all matching filter** extends the selection to everything the filter returns, and the bar tells you which of the two you have.
- **Clear selection** empties it.
- A row that shows **No available action for this row** cannot be selected, because there is nothing the table can do with it.

The bar counts what is selected, and says when your selection is larger than a run covers: `N selected · actions run on first 50`.

## What the bulk bar can do

| Action | What happens |
| --- | --- |
| Quick action | Fires a saved one-click prompt at each selected record |
| Run agent | Fans one of your on-demand background agents out over the selection |
| Run workflow | Runs a saved [workflow](/help/workflows/build-a-workflow) against exactly the rows you selected, ignoring the workflow's own saved filter |
| Regenerate | Re-answers a prompt column for the selected rows |
| Push to Campaign | Sends the selected rows into a [Lemlist campaign](/help/connect-your-tools/connect-lemlist) as leads |

Every one shows live progress in the bar, for example `Running 12/50…`, and every one can be cancelled mid-run.

1. **Select the rows**
   Tick the checkboxes, or use the header checkbox and then **Select all matching filter** if you want the whole filtered set.

2. **Pick the action**
   Choose a quick action, **Run agent**, the **Run workflow** menu, **Regenerate**, or **Push to Campaign** from the floating bar.

3. **Read the confirmation**
   Agent and workflow runs state how many records will be touched. Regenerate and Push to Campaign state what the selection will cost or where it is headed before you commit.

4. **Watch it run**
   Progress ticks in the bar. **Cancel** stops it. When it finishes the bar reports what succeeded, what failed and, for Regenerate, how many credits were charged.

> **Careful:** Bulk quick actions and Regenerate only ever cover rows already loaded in your browser, even with "all matching" chosen. Rows further down keep their current values, and the menu says so before you commit. Scroll down first if you need them included.

## Re-answer a prompt column

**Regenerate** is the only way to refresh a [prompt column](/help/your-data/ai-and-prompt-columns) after you change its question. Editing the question alone never re-answers or re-charges rows that already hold a value.

Select the rows, click **Regenerate**, pick the column, read the price line, and confirm. If credits run out partway through, rows already answered were charged and the rest were never sent. **Retry** re-sends only what did not land, so nothing is paid for twice.

## Action columns: a button on every row

An action column turns a repeated manual step into one click per row, built from a template with `{{field}}` placeholders that resolve against each row. There are two kinds:

- **Link / CTA button** opens a URL built per row.
- **Copy button** copies text built per row to the clipboard.

Four quick-start presets aim themselves at the right field automatically:

| Preset | What the button does | Field it uses |
| --- | --- | --- |
| Call | Opens a `tel:` link | The row's phone field |
| Text | Opens an `sms:` link | The row's phone field |
| Email | Opens a `mailto:` link with its own subject and body fields | The row's email field |
| Copy text | Copies text built from the row to the clipboard | Whatever fields you reference |

1. **Open the table editor**
   **Edit**, then **Add column** in the Columns section.

2. **Choose the Actions group**
   Pick **Link / CTA button** or **Copy button**.

3. **Start from a preset**
   **Start from** offers Call, Text, Email and Copy text. Pick the closest one, or choose to use a custom URL instead.

4. **Set the header, label and template**
   Fill in the **Column header**, the **Button label** and the **Link URL** or **Text to copy**. Reference row values with `{{field}}` placeholders. Only `tel:`, `sms:`, `mailto:` and `https:` links are supported.

5. **Check the preview and pick a style**
   A live preview shows the resolved button for a real row. **Style** offers Subtle, Outline and Accent.

6. **Save the table**
   The column appears with a working button on every row.

> **Tip:** Dialers usually want digits and nothing else. Add the `digits` modifier to a phone variable so formatting characters are stripped out of the `tel:` link.

## Limits

- Bulk quick actions and bulk agent runs cover at most 50 records per run. Larger selections are truncated, and the bar tells you.
- Bulk actions only reach the rows loaded in your browser, even with "all matching" selected.
- Run workflow always runs against exactly the rows you selected. It ignores the workflow's own saved filter rather than combining the two.
- Push to Campaign covers at most 500 leads per run, whether you select rows by hand or take everything matching the filter.
- Regenerate charges credits again for each row it re-answers. The price is stated before you commit.
- Only one background agent can run on a given record at a time.
- Action columns can only produce `tel:`, `sms:`, `mailto:` and `https:` links, or clipboard text. Anything else is refused.
- An action column resolves against fields your CRM syncs. It cannot invent a field that is not there.

## If something goes wrong

**"N selected · actions run on first 50".** Your selection is larger than one run covers. Run the first batch, clear the selection, then select the next set.

**A row cannot be ticked.** It reads **No available action for this row**, meaning the table has nothing it can do with that record.

**Regenerate ends with "Out of credits after N rows".** Rows already re-answered were charged; the rest kept their previous values. Top up in [`Settings > Billing`](https://app.spiich.ai/settings/billing) and click **Retry**; it only re-sends what did not land.

**An action button is greyed out and reads "Unsupported link".** The template resolves to something other than a supported scheme, or the field it points at is empty on that row. Open **Edit** and check the template against the live preview.

**An agent run says the agent is already running on this record.** A second run on the same record is blocked until the first one finishes. Wait for it, then try again.

## Frequently asked questions

### Can I run a background agent across a whole filtered table?

You can select everything matching the filter, but a single run covers at most 50 records and only rows loaded in your browser. For anything larger, run it in batches, or give the agent a schedule or a trigger so it works through records on its own.

### Does selecting "all matching filter" load every row?

No. It extends what is counted as selected, but bulk quick actions and Regenerate still only reach the rows already loaded in your browser. Scroll further down the table first if you need rows below the ones on screen.

### Where do quick actions come from?

A workspace configures them in [`Settings > Quick Actions`](https://app.spiich.ai/settings/quick-actions). They are saved one-click prompts, and the same ones appear as pills on a record page and as options in the bulk bar.

### Can I use an action column to open a record in my CRM?

You do not need to. Every record card already carries an **Open in CRM** link. Action columns are for the things a CRM link does not cover, such as dialling a number, starting a text, opening a pre-filled email or copying a value.

## Related

- [Tables and views](https://spiich.ai/help/your-data/tables-and-views)
- [AI Summary and prompt columns](https://spiich.ai/help/your-data/ai-and-prompt-columns)
- [What background agents are](https://spiich.ai/help/background-agents/background-agents-overview)
- [Skills, the Prompt Library and Quick Actions](https://spiich.ai/help/chat-and-voice/skills-and-saved-prompts)
- [Background Agents](https://spiich.ai/product/background-agents)
