How It Works
Elements have triggers → Triggers fire actions → Actions do things Every interactive element (buttons, options, inputs) has triggers that detect user interactions. When triggered, they execute actions you’ve configured.Most common example: Button element → “On click” trigger → Navigate
action → User moves to next screen. That’s 90% of funnel interactions.
Quick Reference
Here’s every action available in FunnelFox:Action | What it does | Common trigger |
---|---|---|
Navigate | Move to another screen | Button click |
External Link | Open website/app store | Button click |
Show/Hide | Toggle element visibility | Option selected |
Purchase | Upsell with stored card | Button click |
Scroll To | Jump to page section | Link click |
Cancel Subscription | End user’s subscription | Cancel button |
Pause Subscription | Temporarily suspend | Pause option |
Gift Free Period | Extend without charge | Retention offer |
Swap Subscription | Change to different plan | Downgrade option |
Do Nothing | No operation | Custom JavaScript |
Common Patterns
Before diving into all the details, here are the patterns you’ll use most:Button → Navigate to next screenThe bread and butter of funnels. Each screen has a “Continue” button
that moves users forward through your sequence.
Essential 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
Pro tip: Use “Next screen” for linear flows. It’s easier to maintain
because reordering screens automatically updates the flow.
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. Settings:- Element: Which element to control
- Action: Show, Hide, or Toggle
- Delay (optional): Smooth transitions with timing
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
Analytics tip: Always enable “Track as CTA” for important external
actions like app store visits. This helps measure true conversion rates.
Payment 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
Example flow:
- Success → Navigate to welcome screen
- Declined → Show payment error → Offer payment plan
- Cancelled → Navigate to discount offer
Advanced Features
Dynamic Actions
Make actions adapt based on user data. Instead of everyone getting the same experience, personalize the journey. How it works:1
Collect user input
User selects options or fills forms (their choice becomes a “state”)
2
Enable dynamic mode
Toggle “Dynamic” on any action that supports it
3
Select the state
Choose which user input to base decisions on
4
Map outcomes
Define what happens for each possible value
- User selects “18-24” → Show student discount
- User selects “25-34” → Show professional plans
- User selects “35+” → Show family packages
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
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.Paused subscriptions lose access immediately. Consider offering a free
period instead if you want to maintain access.
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:
- State name matches exactly (case-sensitive)
- All possible values are mapped
- Default/fallback is configured
- User actually provided that input earlier
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