# Page Snapshot

<!-- meta: type=page-snapshot; location=Media; category=Step (action); platforms=Joomla and WordPress -->

## Overview

Page Snapshot reads a page on the Joomla or WordPress server and returns its text and images. Images come back as data URIs a later Media step can use.

When the flow reaches this step, JOrchestrator executes **Page Snapshot** against your linked site or an external integration, using the field values you set on **General** and **Design**. Downstream steps can read the output payload fields defined for this node.

## Why use this node

Page Snapshot is a **action step** in the **Media** group. Action steps run in the middle or end of a flow. They perform work on your CMS, call external services, or transform data for the next step.

Typical reasons teams add **Page Snapshot** to a flow:

- Page Snapshot on your linked Joomla site when the flow reaches this step
- Capture a page based on webhook, schedule, or CMS event data
- Integrate Media operations with messaging, AI, or database steps in one canvas

## When it runs

This step runs when the flow reaches it. It fetches the page on the CMS server, keeps the visible text, and downloads up to the image limit you set.

## Example workflows

Common patterns on the canvas:

1. **MCP Trigger** → **Page Snapshot** → **Set JSON** / **Set Response**
2. **Webhook** → **Page Snapshot** → **Upload Media** (while testing) → production action

## How to set it up

Set Page URL to a full address or a path on this site, such as / or an article address. Max images limits how many pictures are downloaded, from 0 to 20. Max text limits how much visible text is kept.

## Good to know

Nothing extra is installed on the site. Use data for the first image, or images for the full list. This reads the files in the page. It does not draw the page the way a browser does.

## Properties panel

The designer shows these tabs for this node:

| Tab | Purpose |
|-----|---------|
| **Info** | Plain-language description and output payload fields for downstream steps |
| **General** | Canvas label and read-only node ID |
| **Design** | Page address and limits for text and images |

### System (automatic — not edited by the user)

These fields are managed by the designer or runtime — you do not type into them directly:

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `_nodeId` | Node ID | `node-id` | No | — | — |
| `_payloadFields` | Available Fields | `payload-panel` | No | — | — |

### User-configured — General tab

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `label` | Label | `text` | No | — | Node label |

### User-configured — Design tab

| Property key | Label | Type | Required | Visible when | Notes |
|--------------|-------|------|----------|--------------|-------|
| `pageUrl` | Page URL | `payload-text` | **Yes** | — | Full http or https address, or a path on this site such as / or /index.php. Example: {{node_1.url}} when an earlier step provides a page address. |
| `maxImages` | Max images | `payload-text` (default: `8`) | **Yes** | — | How many images to download, from 0 to 20. 0 returns the text only. JPEG, PNG, GIF, and WebP. A large picture is reduced to a JPEG so the flow can carry it. |
| `maxText` | Max text | `payload-text` (default: `12000`) | **Yes** | — | Maximum characters of visible page text to keep, from 200 to 50000. |

### CMS site configuration (not on this node's properties panel)

Credentials, API keys, mailers, SMTP, and integration defaults are configured in the CMS plugin under **Node Configuration**, not per step on this node. Link the flow to a domain before testing CMS-backed fields.

## Output payload fields

After this step runs, later nodes can reference these fields using placeholders such as
`{{page_snapshot.data}}`.

| Field key | Type | Description |
|-----------|------|-------------|
| `success` | boolean | Whether the page was read. |
| `pageUrl` | string | Address that was read. |
| `title` | string | Page title. |
| `description` | string | Meta description. |
| `text` | string | Visible text from the page, with scripts and styles removed. |
| `headings` | array | Heading texts from the page. |
| `links` | array | Links on the page, each with text and url. |
| `images` | array | Downloaded images. Each item has url, alt, data (data URI), base64, mimeType, and bytes. |
| `imageUrls` | array | Addresses of the downloaded images. |
| `imageCount` | number | How many images were downloaded. |
| `data` | string | First image as a data URI. Use this when the next step needs one picture. |
| `base64` | string | First image as raw base64, without the data: prefix. |
| `mimeType` | string | MIME type of the first image. |
| `bytes` | number | Size of the first image in bytes. |
| `message` | string | Status or error text. |
