Dynamic Flows
The Flows feature allows you to connect multiple QRCompose pages together to create guided, multi-step experiences - such as menu → order → payment → review or event → booking → payment → confirmation.
Each step in a Flow is represented by a page, and the connections between them define how users move through your experience.

What Are Flows?
A Flow is a logical sequence of pages that users navigate by interacting with QRCompose components.
Each page can pass data to the next one - such as orders, form submissions, or booking details - allowing you to build seamless transactional or interactive journeys.
Example Flow
Restaurant Ordering Flow
Menu (allow orders) → Payment (dynamic) → ReviewBooking Flow
Event → Form (with booking) → Payment (dynamic) → ConfirmationLead Capture Flow
Landing Page → Form → Thank You PageHow Flows Work
- Each node in the flow represents a published QRCompose page.
- Connections (edges) define which page the user visits next after completing an interaction.
- Data from one page (like a shopping cart or booking details) can be passed to the next, enabling contextual logic such as dynamic pricing or conditional redirects.
- You can mix and match components - e.g., a gallery before a form, or a link tree that branches into multiple destinations.
Flows are built visually inside the Flow Designer, where you can drag pages, connect them, and validate their compatibility automatically.
Flow Validation Rules
To ensure consistency and prevent data conflicts, QRCompose automatically validates each connection between pages.
❌ Disallowed Direct Connections
| Rule | Reason |
|---|---|
| Payment → Payment | You cannot connect two payment pages directly. Each payment step must be isolated. |
| Menu → Menu | You cannot chain two menus. Only one orderable menu per flow is supported. |
| Review → non-Payment | Reviews should follow a payment step, not precede other interactions. |
⚙️ Payment Page Restrictions
When a Payment Page is the target in a connection, QRCompose checks the configuration of the source page to ensure data flow integrity.
1. Contextual Payments
If a payment page’s type is set to “context”, it expects data (like total amount or booking price) from the previous page.
✅ Allowed Sources
- Menu pages with ordering enabled.
- Form pages with a booking field and a valid price per slot.
❌ Disallowed Sources
- Any non-context-producing page (Link Tree, Gallery, Business Card, etc.).
Reason: “Cannot connect this component to a dynamic pricing component.”
2. Menu → Payment
| Condition | Allowed? | Reason |
|---|---|---|
| Menu allows orders ✅ and Payment type = “context” ✅ | ✅ Allowed | |
| Menu allows orders ✅ but Payment type ≠ “context” ❌ | ❌ Payment must be dynamic to process menu orders | |
| Menu does not allow orders ❌ and Payment type = “context” ✅ | ❌ Menu must have ordering enabled for dynamic payments |
3. Form → Payment
| Form Configuration | Payment Type | Allowed? | Reason |
|---|---|---|---|
| Booking field ✅ and price per slot > 0 ✅ | “context” ✅ | ✅ Allowed | |
| Booking field ✅ and price per slot > 0 ✅ | Not “context” ❌ | ❌ Must use dynamic payment for paid bookings | |
| Booking field ❌ and price per slot = 0 | “context” ✅ | ❌ Non-priced forms can’t link to dynamic payments | |
| Booking field ✅ but price per slot = 0 | “context” ✅ | ❌ Price must be greater than zero for payment connection |
4. Review → Payment
Reviews can feed into payments only if they do not redirect externally.
If any review sentiment includes an external action (e.g., link to website), the connection will be blocked:
❌ “One of the review options redirects to an external website, causing the flow to stop.”
Supported Data Passing
| From | To | Data Passed |
|---|---|---|
| Menu | Payment (context) | Order total, items, quantities |
| Form (with booking) | Payment (context) | Slot, time, date, participants, total price |
| Payment | Review | Transaction metadata (amount, ID, status) |
Data is automatically handled by QRCompose’s backend - no coding required.
Example Valid Flows
Restaurant Ordering
Menu (with orders) → Payment (context) → ReviewEvent Booking
Event → Form (booking) → Payment (context) → ReviewLead Generation
Business Page → Form → Confirmation PageTips for Building Stable Flows
- Always publish each page before connecting it in a flow.
- Avoid circular references (page A → page B → page A).
- Use dynamic payments (
context) only when previous pages produce numeric values. - Keep one payment per flow.
- Test each flow end-to-end before deploying QR codes publicly.
- Avoid external links inside flows unless it’s the final step.
Publishing & Analytics
When you publish a flow:
- Each page maintains its own analytics.
- Flow-level analytics aggregate interactions across all pages.
- You can view drop-offs between steps to optimize conversions.
Tracked Metrics
- Page views and conversions
- Step completion rates
- Payment success ratio
- Average flow duration
- Funnel exit stages
Summary
Flows turn individual QR pages into powerful interactive journeys - guiding users through menus, forms, bookings, payments, and reviews seamlessly.
They include built-in validation, context-aware payments, and analytics tracking to ensure reliable and conversion-optimized experiences.
