Skip to main content
Page Events are a visual flow builder for your funnel: you connect triggers, conditions, and actions so the right thing happens at the right time—whitelisting, popups, video CTAs, merchant switching, and more.

Quick navigation


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

NodeWhat it does
Query Parameter ConditionBranches based on URL parameters (e.g. vtID=k, source=facebook). Supports equals, not equals, contains, is empty, is not empty.
Script RuleCustom JavaScript with access to visitor data, device, geo, referrer. Returns true/false to choose the path. Runs server-side.
Split Test ComponentRandomly assigns visitors to variants. Set traffic % per variant and connect each to different content or actions.

Actions

NodeWhat it does
Whitelist VisitorMarks the visitor as whitelisted for the session. Gives access to Whitelisted containers.
Mark Visitor as Not WhitelistedRemoves whitelist so the visitor sees compliant content again.
Load PageLoads a different page into the same URL. No redirect; good for compliance.
Redirect to URLSends the visitor to another URL (internal or external).
Dynamic ContainerSwaps content inside a container (e.g. different pricing by affiliate or location).
Set MerchantOverrides the payment processor for the page (e.g. Buygoods, Clickbank). Controls which Merchant Container shows.
Clear MerchantResets 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

NodeWhat it does
SequenceRuns connected nodes one by one in order. Use when execution order matters.
RouterJunction 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.
Fires when the cursor moves toward the browser chrome (e.g. closing the tab). Use to show an exit popup. No settings.
Same idea on touch devices (e.g. fast upward scroll). No settings.
Fires when the visitor scrolls to a position. Settings: Pixels from top, or % of page (0–100). Either can trigger.
Fires when the visitor pauses the video (Vidalytics, TrackPlay, SmartPlayer, or HTML5). No settings.
Fires when the video reaches a time or percentage. Settings: Seconds and/or Percent of video length.
Fires when the video CTA is shown. No settings.
Fires when a form is successfully submitted. Setting: Form ID (the form element’s id).
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.
Is the element visible in the viewport? Settings: CSS selector; Min % of element visible (0–100). Outputs: 1 = in view, 2 = not yet.
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.
Has the video reached a time or percentage? Settings: Seconds and/or Percent. Outputs: 1 = reached, 2 = not reached.
Is the main video muted? Outputs: 1 = muted, 2 = not muted.
Has the video CTA already been shown this session? Outputs: 1 = shown, 2 = not shown.
Is a tag (cookie) set? Setting: Tag name. Outputs: 1 = set, 2 = not set.
Is the current affiliate (from aff_id in URL) whitelisted? Outputs: 1 = whitelisted, 2 = not.
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.
Shows an exit popup by ID. Setting: Popup ID.
Shows the video CTA block. Setting: Scroll to CTA — if checked, the page scrolls to the CTA when shown.
Hides the video CTA and restores elements that are hidden when the CTA is shown. No settings.
Pauses the flow for a number of seconds. Setting: Seconds.
Shows or hides an element by CSS selector (display: block or display: none). Setting: CSS selector.
Sends the visitor to another URL. Flow stops after. Setting: URL.
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).
Sets the whitelist cookie. Settings: Encrypted value (from backend), Expiration (minutes).
Runs a JavaScript snippet in the page, then continues. Setting: Script. Use for pixels or small custom logic.
Triggers an automation via the API. Setting: Token (from backend).

Common patterns

Whitelisting from URL

  1. Page LoadQuery Parameter Condition (vtID is not empty)
  2. YesWhitelist Visitor
  3. No → Continue with default content

Merchant by traffic source

  1. Page LoadQuery Parameter Condition (source equals partner1)
  2. YesSet Merchant (e.g. Buygoods)
  3. NoQuery Parameter Condition (source equals partner2)
  4. YesSet Merchant (e.g. Clickbank)
  5. 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

  1. Video pause (trigger) → Video progress check (30%)
  2. ReachedWait (2 seconds) → Show Video CTA (optionally with “Scroll to CTA”)
  3. Not reached → (do nothing or another path)

Dynamic content by affiliate

  1. Page LoadScript Rule (e.g. check affiliate ID)
  2. Affiliate 100Dynamic Container (show special pricing)
  3. OtherDynamic 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.
Use the Rearrange control in the events builder to auto-layout the canvas. Save and reload to keep the layout.

Troubleshooting

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.
Verify parameter names and values (case-sensitive). For Script Rules, use the Debug Window to see the data the script receives.
Confirm container names and popup IDs. For Dynamic Container, ensure the target component is saved and the container is correctly set in the node.
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).