Quick navigation
How it works
Execution order, entry points, and the difference between server and browser nodes
Server-side nodes
Query parameters, Script Rules, Load Page, Set Merchant, Dynamic Container, and more
Browser (frontend) nodes
Triggers, conditions, and actions that run in the visitor’s browser
Patterns & troubleshooting
Example flows and how to fix common issues
How Page Events Work
Execution order
- Left to right — Nodes run in order along the connections.
- Top to bottom — When several nodes connect from one source, they run from top to bottom.
- Sequential — Each node finishes before the next one runs.
Entry points
Flows start from:- Page Load — When the page loads
- Form Submit — When a form is submitted
- Button Click — When specific buttons are clicked
- Exit Intent — When the visitor moves to leave (e.g. cursor to browser chrome)
Server vs browser
- Server-side nodes (e.g. Query Parameter, Script Rule, Load Page, Set Merchant, Dynamic Container) run before the page is sent. Use them for routing, whitelisting, and content selection.
- Browser (frontend) nodes (e.g. Video pause, When scrolled to, Exit popup, Show Video CTA) run in the visitor’s browser after the page loads. Use them for scroll, video, and popup behavior.
Server-side nodes
These run on the server before the page is rendered. They’re the main building blocks for who sees what and which content loads.Conditions
| Node | What it does |
|---|---|
| Query Parameter Condition | Branches based on URL parameters (e.g. vtID=k, source=facebook). Supports equals, not equals, contains, is empty, is not empty. |
| Script Rule | Custom JavaScript with access to visitor data, device, geo, referrer. Returns true/false to choose the path. Runs server-side. |
| Split Test Component | Randomly assigns visitors to variants. Set traffic % per variant and connect each to different content or actions. |
Query Parameter Conditions
Full guide to URL parameters and operators
Script Rule
Variables, examples, and debugging
Actions
| Node | What it does |
|---|---|
| Whitelist Visitor | Marks the visitor as whitelisted for the session. Gives access to Whitelisted containers. |
| Mark Visitor as Not Whitelisted | Removes whitelist so the visitor sees compliant content again. |
| Load Page | Loads a different page into the same URL. No redirect; good for compliance. |
| Redirect to URL | Sends the visitor to another URL (internal or external). |
| Dynamic Container | Swaps content inside a container (e.g. different pricing by affiliate or location). |
| Set Merchant | Overrides the payment processor for the page (e.g. Buygoods, Clickbank). Controls which Merchant Container shows. |
| Clear Merchant | Resets merchant to the domain default. Use after tests or when leaving a special flow. |
Dynamic Content
Set up containers and swap components by condition
Utility
| Node | What it does |
|---|---|
| Sequence | Runs connected nodes one by one in order. Use when execution order matters. |
| Router | Junction point for flows. Can generate unique URLs for testing. |
Sequence Nodes
When and how to use sequences
Browser (frontend) nodes
These run in the visitor’s browser after the page loads. They appear as triggers (e.g. in the funnel’s trigger list) or as steps inside a flow.Triggers
Triggers wait for an event, then run the next step.Exit intent
Exit intent
Fires when the cursor moves toward the browser chrome (e.g. closing the tab). Use to show an exit popup. No settings.
Mobile exit intent
Mobile exit intent
Same idea on touch devices (e.g. fast upward scroll). No settings.
When scrolled to
When scrolled to
Fires when the visitor scrolls to a position. Settings: Pixels from top, or % of page (0–100). Either can trigger.
Video pause
Video pause
Fires when the visitor pauses the video (Vidalytics, TrackPlay, SmartPlayer, or HTML5). No settings.
Video watched (seconds / %)
Video watched (seconds / %)
Fires when the video reaches a time or percentage. Settings: Seconds and/or Percent of video length.
On CTA shown
On CTA shown
Fires when the video CTA is shown. No settings.
On form success
On form success
Fires when a form is successfully submitted. Setting: Form ID (the form element’s
id).On add to cart
On add to cart
Fires when the visitor adds a product to cart. No settings.
Conditions
Conditions check current state and send the flow to Output 1 or Output 2.Element in view
Element in view
Is the element visible in the viewport? Settings: CSS selector; Min % of element visible (0–100). Outputs: 1 = in view, 2 = not yet.
Scroll check
Scroll check
Has the visitor already scrolled to a position? Uses separate desktop/mobile thresholds (mobile = viewport < 768px). Settings: Desktop and mobile — Pixels from top and/or % of page. Outputs: 1 = scrolled to position, 2 = not yet.
Video progress check
Video progress check
Has the video reached a time or percentage? Settings: Seconds and/or Percent. Outputs: 1 = reached, 2 = not reached.
Video is muted
Video is muted
Is the main video muted? Outputs: 1 = muted, 2 = not muted.
Showed CTA
Showed CTA
Has the video CTA already been shown this session? Outputs: 1 = shown, 2 = not shown.
Has tag
Has tag
Is a tag (cookie) set? Setting: Tag name. Outputs: 1 = set, 2 = not set.
Affiliate whitelisted
Affiliate whitelisted
Is the current affiliate (from
aff_id in URL) whitelisted? Outputs: 1 = whitelisted, 2 = not.Split test
Split test
Splits traffic between paths. Variants and weights are set in the editor. Outputs: One per variant.
Actions
Actions do something and then continue to the next step.Exit popup
Exit popup
Shows an exit popup by ID. Setting: Popup ID.
Show Video CTA
Show Video CTA
Shows the video CTA block. Setting: Scroll to CTA — if checked, the page scrolls to the CTA when shown.
Hide Video CTA
Hide Video CTA
Hides the video CTA and restores elements that are hidden when the CTA is shown. No settings.
Wait (seconds)
Wait (seconds)
Pauses the flow for a number of seconds. Setting: Seconds.
Show element / Hide element
Show element / Hide element
Shows or hides an element by CSS selector (
display: block or display: none). Setting: CSS selector.URL redirect
URL redirect
Sends the visitor to another URL. Flow stops after. Setting: URL.
Add tag
Add tag
Sets a tag (cookie) for use with Has tag later. Settings: Tag name; optional Expiration (minutes) — omit or 0 for session cookie (cleared when browser closes), or set a positive number (e.g. 60 for 1 hour, 10080 for 7 days).
Mark whitelisted / Mark not whitelisted
Mark whitelisted / Mark not whitelisted
Sets the whitelist cookie. Settings: Encrypted value (from backend), Expiration (minutes).
Client script
Client script
Runs a JavaScript snippet in the page, then continues. Setting: Script. Use for pixels or small custom logic.
Execute automation
Execute automation
Triggers an automation via the API. Setting: Token (from backend).
Common patterns
Whitelisting from URL
- Page Load → Query Parameter Condition (
vtIDis not empty) - Yes → Whitelist Visitor
- No → Continue with default content
Merchant by traffic source
- Page Load → Query Parameter Condition (
sourceequalspartner1) - Yes → Set Merchant (e.g. Buygoods)
- No → Query Parameter Condition (
sourceequalspartner2) - Yes → Set Merchant (e.g. Clickbank)
- No → Use domain default merchant
Use Clear Merchant when you need to reset back to the default (e.g. after a test or on the next page load when the condition is no longer met).
Video: pause at 30% then show CTA
- Video pause (trigger) → Video progress check (30%)
- Reached → Wait (2 seconds) → Show Video CTA (optionally with “Scroll to CTA”)
- Not reached → (do nothing or another path)
Dynamic content by affiliate
- Page Load → Script Rule (e.g. check affiliate ID)
- Affiliate 100 → Dynamic Container (show special pricing)
- Other → Dynamic Container (show default pricing)
Best practices
- Keep flows readable — Use sequences to group related steps and name nodes clearly.
- Test both branches — For every condition, verify the Yes and No paths.
- Prefer simple conditions first — Query parameters are faster than Script Rules when they’re enough.
- Avoid very long chains — Long flows are harder to debug and can affect load.
Troubleshooting
Events not firing
Events not firing
Check that triggers are connected from the correct entry point (e.g. trigger list for Video pause / When scrolled to) and that the next step is wired. For frontend nodes, save your flow and reload the page so the latest events are sent to the browser (you can’t so it’s included in
page_events.Conditions always Yes or always No
Conditions always Yes or always No
Verify parameter names and values (case-sensitive). For Script Rules, use the Debug Window to see the data the script receives.
Content or popup not updating
Content or popup not updating
Confirm container names and popup IDs. For Dynamic Container, ensure the target component is saved and the container is correctly set in the node.
Page not loading or redirecting wrong
Page not loading or redirecting wrong
Look for redirect or Load Page nodes in the path and for possible loops (e.g. condition always taking the same branch back into the flow).