---
updatedAt: 2026-10-15T13:49:00.000Z
agentTools:
  projectIndex: https://docs.pebblestream.com/llms.txt
---

# block-id

Marks a column that records **which stacked block (table) inside the template worksheet each extracted row came from**.

`pebblestream:block-id`

When a template worksheet contains several stacked tables that share the same<br />headers, the extractor splits the template into *blocks*. A `block-id` column receives an identifier for the block each record was extracted from, so downstream logic can tell the tables apart.

## Syntax

```
pebblestream:block-id
```

* No arguments.
* Placed on the **header cell of the column** that should hold the block
  identifier.
* Requires [`template-name`](template-name.md) on the same worksheet.

## Example

| column | header         | comment                                 |
| ------ | -------------- | --------------------------------------- |
| A      | `Region block` | `pebblestream:block-id`                 |
| B      | `Item`         | `pebblestream:template-name:"Partners"` |
| C      | `Qty`          |                                         |

If the template has two stacked tables, rows from the first block get one block ID<br />and rows from the second get another.

## Errors

| Error                                 | Cause                             |
| ------------------------------------- | --------------------------------- |
| `dir-too-many-args`                   | Arguments were supplied.          |
| `missing-the-template-name-directive` | The sheet has no `template-name`. |

## Related

* [Template directives](template-directives.md) — how extraction works
* [template-row](template-row.md), [template-column](template-column.md) — position of the record inside the block
* [leftmost-column](leftmost-column.md), [rightmost-column](rightmost-column.md), [top-row](top-row.md), [bottom-row](bottom-row.md), [block-row-count](block-row-count.md) — block bounds