How It Works
Elements have triggers → Triggers fire actions → Actions do things Every interactive element (buttons, options, inputs, plan pickers) has triggers that detect user interactions. When triggered, they execute actions you’ve configured.
Quick Reference
Here’s every action available in FunnelFox:Common Navigation Patterns
Before diving into all the details, here are the patterns you’ll use most:- Linear Flow
- Show More Info
- Traffic-Based Routing
Button → Navigate to next screenThe bread and butter of funnels. Each screen has a “Continue” button
that moves users forward through your sequence.
Dynamic Actions
A dynamic action resolves its value at click time from the visitor’s state, so different visitors get different outcomes from the same button. Switch the action’s Data field from Static to Dynamic, then pick a State to branch on. You can branch on any of these:- Options: The choice a visitor made in an Options element.
- Subscription plans: The plan a visitor selected in a Plan picker.
- Trial prices: The price a visitor selected in a Price picker.
- Traffic type: Whether the visitor arrived from paid ads or organic
traffic.
- Paid: The entry URL carries a known ad-network click ID (such as
gclid,fbclid, orttclid) with a non-empty value. Matching is case-insensitive. - Organic: Everyone else.
utm_*parameters and empty click IDs do not count as paid.
- Paid: The entry URL carries a known ad-network click ID (such as

Navigation Actions
These are the actions you’ll use in almost every funnel:Navigate
Move users between screens in your funnel. When to use: Moving forward in your funnel, jumping to specific sections, or creating branching paths based on user choices. Settings:- Destination: Where to go
- “Next screen” - continues the sequence
- Specific screen - jump anywhere in your funnel
- Delay (optional): Pause before navigating - useful for showing a quick message first
Show/Hide Element
Control what’s visible on the screen. When to use: Progressive disclosure, showing error messages, revealing additional options, or creating interactive experiences based on the selected plan. Settings:- Element: Which element to control
- Action: Show, Hide, or Toggle
- Delay (optional): Smooth transitions with timing
- Show
- Hide
- Toggle
Makes hidden elements appear. Perfect for:
- Success messages after form submission
- Additional product details on request
- Progressive form fields
External Link
Send users to websites, app stores, or set up deep links. When to use: App downloads, terms of service, partner sites, or any external destination. Settings:- URL: Where to send them
- New tab: Keep your funnel open in background
- Track as CTA: Count in conversion metrics
- Delay (optional): Show message before redirecting
Scroll To
Smoothly scroll to a specific element on the same screen. When to use: Most commonly for paywall screens which tend to be longer with multiple pricing tiers, testimonials, and FAQs. Also useful for jumping to specific sections on any longer screen. Settings:- Target element: Where to scroll
- Delay (optional): Wait before scrolling
Purchase Actions
Purchase
Process payments for upsells and one-click purchases using stored card details. When to use: Upsells after initial purchase, one-click upgrades, or additional offers. NOT for initial checkout - the Checkout element handles that with its own richer built-in payment flow. Core settings:- Provider: Stripe or Paddle (only these are supported for now)
- Product: What they’re buying (from your PSP catalog)
- Type:
- One-time payment
- Subscription
- Free trial (no charge, then subscription)
- Paid trial (reduced price, then full subscription)
- Allow promocodes: Let users enter discount codes
- Can pre-fill from URL using
{{query.promo_code}} - See Variables for details
- Can pre-fill from URL using
- Stripe Tax: Automatic tax calculation (Stripe only)
- Custom value: Override price for analytics
Handling Purchase Outcomes
Every purchase action needs three outcome handlers:On Success
Usually navigate to thank you screen
On Declined
Show error and retry options
On Cancelled
Offer discount or alternative
Cancellation Actions
Special actions only available in cancellation funnels. These help retain customers who want to leave. See Cancellation Funnels for setup details.Pause Subscription
Temporarily suspend billing and access. When to use: Seasonal products, temporary financial issues, or giving users a break without losing them completely.Gift Free Period
Extend their subscription without charging. When to use: Retention offer for unhappy customers, or buying time to demonstrate value. Settings:- Duration: How long (days, weeks, months)
- Amount: How many periods
Swap Subscription
Change to a different plan (usually cheaper). When to use: Downsell to retain price-sensitive customers who would otherwise cancel completely. Settings:- New plan: Target subscription from your catalog
- Provider: Must match current subscription
Cancel Subscription
Process the cancellation if retention fails. When to use: Final option after exhausting retention offers. Always gather feedback about why they’re leaving.Utility Actions
Do Nothing
A special action that performs no operation. When to use:- Placeholder while building
- Custom JavaScript handles the interaction
- Testing trigger configurations
Custom code: If you’ve added JavaScript to handle an interaction,
use “Do Nothing” to satisfy the action requirement without interference.
Troubleshooting
Action not firing
Action not firing
Check that:
- Element has a trigger configured
- No JavaScript errors in browser console
- Delays aren’t too long (users might leave)
- For dynamic actions: state exists and matches
Dynamic action going to wrong place
Dynamic action going to wrong place
Verify:
- Every branch has a value set (empty branches fall back)
- An unmapped Navigate branch sends the visitor to the next screen
- The visitor actually provided that input earlier in the funnel
- For traffic type: the entry URL carried a valid ad-network click ID
Purchase not working
Purchase not working
Common issues:
- Using test keys vs live keys
- Product not properly configured in PSP
- For upsells: no stored card from previous purchase
- Promocode settings misconfigured
Next Steps
- Variables & Dynamic Content - Use URL parameters and user data
- Element Reference - See which elements support which actions
- Publishing Guide - Test actions in preview mode
- Localization - Translate dynamic content
