Setup
Validate data and payload limits
Catch missing or incorrectly typed values before they reach your Shopify Flow workflow. FlowRelay supports a bounded set of validation rules, not the full JSON Schema standard.
Steps
Complete these in order.
-
Choose when to validate
In Endpoint setup, expand Validation rules. Before mapping checks the incoming JSON; After mapping checks the custom data object.
-
Declare rules
Each rule needs a path and type. Add required, nullable, enum, numeric bounds, string lengths, or list sizes where appropriate. A missing optional value is skipped; explicit null needs nullable: true.
-
Preview good and bad samples
Use synthetic data to verify each rule. A failed preview identifies the stage and rule without delivering an event. Review and confirm before saving.
Rule examples #
Use at most 25 rules before mapping and 25 after mapping. Numeric limits apply to number/integer, length limits to string, and item limits to array. Remote schemas, arbitrary validators, and regex constraints are unsupported.
[
{
"path": "customer.email",
"type": "string",
"required": true,
"minLength": 3,
"maxLength": 200
},
{
"path": "items",
"type": "array",
"required": true,
"minItems": 1,
"maxItems": 50
}
]
[
{
"path": "total",
"type": "number",
"required": true,
"minimum": 0
},
{
"path": "status",
"type": "string",
"enum": [
"paid",
"pending"
]
}
]
Payload budgets #
Sizes are measured on UTF-8 bytes. The final Flow budget includes field names, ordinary trigger fields, custom JSON, and escaping; it is not just the visible custom-data length.
| Item | Limit |
|---|---|
| Input to custom processing | 65,536 bytes |
| Custom data JSON | 20,000 bytes |
| Complete serialized Flow payload | 49,000 bytes |
| Declared top-level outputs | 20 |
| Array length / JSON depth | 1,000 items / 16 levels |
| Input/output inspection | 8,192 nodes; 100,000 cumulative inspections during evaluation |
| Expression execution | 10,000 evaluator steps; 100 stack frames; 100 ms evaluator timeout |
| Generated Run code output schema / code | 5,000 / 50,000 bytes |
Understand a rejected event #
FLR_VALIDATION_FAILED means the input or custom output did not meet the declared rules. FLR_TRANSFORMATION_FAILED means the expression could not produce valid data. FLR_TRANSFORMATION_LIMIT means processing exceeded a bound. FLR_FLOW_PAYLOAD_TOO_LARGE means the complete trigger payload exceeded its size budget. Reduce the data or correct the configuration; nothing is silently truncated.
Preview, usage, and privacy #
Sample previews do not consume live-event quota or run actions in Shopify. Saving configuration follows the existing action-intent and execution allowances. Per-installation abuse limits apply separately. Samples are ephemeral; exports include your mapping literals and defaults, so review them before sharing. Retained delivery data follows the existing plan retention policy.
FlowRelay