> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alumio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Storage: Get item

> Gets an item from a storage based on an identifier.

export const FormField = ({property, label, required = false, diType, uiPatterns, children}) => {
  const patterns = Array.isArray(uiPatterns) ? uiPatterns : uiPatterns ? [uiPatterns] : [];
  return <div style={{
    margin: '1.5rem 0'
  }}>
      <div style={{
    display: 'flex',
    alignItems: 'baseline',
    flexWrap: 'wrap',
    gap: '0.5rem',
    marginBottom: '0.25rem'
  }}>
        <strong>{label}</strong>
        <span style={{
    fontSize: '0.7rem',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.04em',
    color: required ? '#6241f5' : '#6b7280'
  }}>
          {required ? 'Required' : 'Optional'}
        </span>
      </div>

      <div>{children}</div>

      {diType || patterns.length > 0 ? <p style={{
    fontSize: '0.85rem',
    color: '#6b7280',
    marginBottom: 0
  }}>
          {diType ? <>
              See the <a href={`/references/${diType}`}>{diType}</a> reference.{' '}
            </> : null}
          {patterns.length > 0 ? <>
              Accepts a <a href={`/documentation/placeholders-and-patterns/patterns#${patterns[0]}`}>pattern</a>.
            </> : null}
        </p> : null}
    </div>;
};

Reads a single item from a storage by its identifier and places it into your data at a location you choose. Use this to pull back something saved on an earlier step or run, for example a cached lookup value or a mapping you stored before. The identifier can be built from the data flowing through your transformation, so you can look up the right item per record. If no item is found for the identifier, your data simply passes through unchanged, with nothing added at the destination.

This documentation describes: [Schema](/schemas/transformer/storage-get-entity-from-storage)

## Fields

<FormField property="storage" label="Storage" required diType="storage">
  The storage to read the item from. You select a storage that was set up beforehand.
</FormField>

<FormField property="storageKey" label="Storage item identifier" required>
  The identifier of the item to read. You can build it from your data with [placeholders](/references/placeholders), for example `&{sku}`. The value must be present and cannot be empty, otherwise the run stops with an error.
</FormField>

<FormField property="destination" label="Destination" required>
  The location in your data where the found item is placed. [Placeholders](/references/placeholders) are supported, so the destination can be built from the data.
</FormField>

## Sample data

This transformer reads from a configured storage backend, so there is no fixed before and after to show. The example below reads the item whose identifier matches the `sku` field in your data and places it at `price_info`. If no item exists for that identifier, your data is returned as it was.

| Field                   | Value                       |
| ----------------------- | --------------------------- |
| Storage                 | A storage set up beforehand |
| Storage item identifier | `&{sku}`                    |
| Destination             | `price_info`                |

```json Configuration theme={null}
{
  "prototype": "storage-get-entity-from-storage",
  "parameters": {
    "storage": { "prototype": "storage", "parameters": {} },
    "storageKey": "&{sku}",
    "destination": "price_info"
  }
}
```
