Automation / Workflows
Code-based automations that run ProcScript when Podio items are created, updated, deleted, or on a schedule.
Setup
- Go to
/flows/or select “Flows” from the main menu
- Add a Podio app - click “Add App” and select your app from Podio. ProcFu automatically registers webhooks (item.create, item.update, item.delete) on the app.
- Create a flow - name it, pick a trigger, write ProcScript code.
- Flows run automatically when the trigger event occurs.
Deleting an app removes all its flows and cleans up webhooks.
Triggers
| Code | Type | Event | Payload type |
|---|---|---|---|
| C | On Create | Item created in Podio | item.create |
| U | On Update | Item updated in Podio | item.update |
| D | On Delete | Item deleted in Podio | item.delete |
| T | On Schedule | Time-based (cron) | flow.schedule |
Schedule Configuration
For scheduled flows you can select the day and time the flow should queue, or every day and/or every hour. Note that flows are queued at this time. Execution would depend on system load at the time, so they may only trigger minutes after your selected scheduled time.
Payload
Every flow receives a $payload variable with context about the triggering event.
Always Present
| Key | Type | Description |
|---|---|---|
type | string | item.create, item.update, item.delete, or flow.schedule |
flow_id | int | Flow primary key |
app_id | int | Podio app ID |
item_id | int | Podio item ID (0 for scheduled flows) |
On Create / On Update
| Key | Type | Description |
|---|---|---|
item_fields | object | Simplified field values from flow_item_get |
On Update Only
| Key | Type | Description |
|---|---|---|
item_changes | object | {field_external_id: {from: old, to: new}} |
item_revision_id | int | Podio revision number |
Accessing Payload in ProcScript
// Get the event type
$type = $payload["type"];
// Get item fields
$title = $payload["item_fields"]["title"];
// Check what changed (update only)
$status_change = $payload["item_changes"]["status"];
$old = $status_change["from"];
$new = $status_change["to"];Flow Helper Functions
Additional ProcScript functions for fetching Podio data within flows. All return items in a simplified format (field values resolved to human-readable strings).
| Function | Description | Key Parameters |
|---|---|---|
flow_item_get($item_id) | Get simplified item fields | item_id |
flow_item_comments_fetch($item_id, $limit) | Get item comments | item_id, limit (default 100, max 1000) |
flow_related_fetch($item_id, $limit, $app_id, $field_id) | Get related items | item_id, optional app_id/field_id filter |
flow_view_fetch($app_id, $view_id, $limit) | Get items from a Podio view | app_id, view_id |
flow_app_filter($app_id, $filter, $limit) | Filter items by field values | app_id, JSON filter e.g. {"status":"Active"} |
flow_app_search($app_id, $field_id, $val, $cond, $limit) | Search items by field | condition: E=equals, C=contains |
All other ProcScript functions, including standard Podio API functions (podio_item_get, podio_item_fields_update, podio_comment_create, etc.) are also available.
Testing & Debugging
Run on Item
The editor lets you test a flow against a real Podio item without waiting for a webhook. Select an item from the app, click Run — the flow executes with a full payload as if the trigger fired.
Syntax Check
Built-in linter validates ProcScript syntax without executing (parse-only lint mode).
Last Payload
Each flow stores the payload from its most recent execution. View it from the editor to inspect what data the flow received.
Logs
Flow executions are logged with start/complete messages and execution time. View logs per flow from the editor. Errors (exceptions, usage limits) are also captured.
AI Assistant
The flow editor includes an AI code generator. Describe what you want in natural language — AI returns ProcScript code with a diff view. The AI has access to:
- ProcScript documentation
- The flow's Podio app structure (fields, types)
- Podio tools for inspecting items and tasks
Usage & Billing
Each flow execution counts as 1 action against account usage limits. Usage is checked before execution — if limits are exceeded, the flow throws "Account Usage Limits Exceeded" and logs the error.
If a user's account becomes inactive, their flows are automatically paused.