Funnels
Visualize and optimize your marketing funnels from click to conversion
Overview
GrowQR Funnels lets you map out the journey your visitors take from the first click on a short link to a final conversion event. Instead of looking at clicks and conversions as isolated metrics, funnels connect them into a step-by-step flow that reveals exactly where visitors drop off and where your marketing is most effective.
A funnel can be as simple as two stages (click → purchase) or as detailed as you need (click → landing page view → sign-up → checkout → purchase). Each stage captures a count of visitors who reached it, giving you conversion rates between every step and an overall funnel completion rate.
What Problem It Solves
Marketers often know their click count and their final conversion count, but the journey in between is a black box. Did visitors leave after the landing page loaded? Did they start the sign-up form but abandon it halfway? Without funnel analysis, you're optimizing blindly — throwing more traffic at a funnel that might be leaking at stage two instead of fixing the leak.
GrowQR Funnels bring this visibility directly into your link management platform. Because the funnel starts at the GrowQR click (where you already have rich metadata), you don't need to configure separate tracking in Google Analytics or a dedicated funnel tool. The data flows naturally from click to conversion through the same system.
How It Works
Funnels are built by chaining together stages. Each stage is defined by an event type:
| Stage Type | Data Source | How It's Captured |
|---|---|---|
| CLICK | Touchpoints table | Automatically created when a visitor clicks a GrowQR link. The redirect flow creates a touchpoint with the visitor's identity (IP+UA hash), UTM params, device, and geo data. |
| PAGE_VIEW | Touchpoints table | Matched by referrer URL pattern. For better tracking, fire trackPageView() from the pixel. |
| CONVERSION | Conversions table | Recorded when trackConversion() fires or a webhook/API call is made. Matched by conversion goal ID. |
| CUSTOM_EVENT | Conversions table | Conversions filtered by metadata.eventName. Lets you define arbitrary events like signup, checkout, add_to_cart. |
GrowQR stitches together events from the same visitor using the visitorId. On the redirect side, this is an IP+User-Agent hash. On the pixel side, this is the persistent _us_vid cookie value. When both are available, the system matches them within the funnel's configured time window.
Visitors who don't trigger the next stage within the time window are counted as drop-offs.
Step-by-Step Usage
Creating a Funnel
- Navigate to Dashboard → Funnels and click New Funnel.
- Give the funnel a name (e.g., "E-Commerce Purchase Funnel") and optional description.
- Optionally scope it to a specific campaign.
- Set the Window (hours) — the maximum time from first step to last step for a visitor to be counted (default: 720 hours / 30 days).
- Add stages in order. For each stage, configure:
| Field | Description |
|---|---|
| Stage Name | A label for this step (e.g., "Clicked Link", "Viewed Landing Page") |
| Event Type | CLICK, PAGE_VIEW, CONVERSION, or CUSTOM_EVENT |
| Event Filter | The specific link IDs, URL pattern, goal ID, or event name that defines this stage |
- Click Save Funnel.
Example: Landing Page → Signup → Checkout → Purchase
This is the most common e-commerce funnel. Here's how to set it up end-to-end:
Step 1: Create Conversion Goals
Create four goals in Dashboard → Conversions:
| Goal Name | Type | Notes |
|---|---|---|
| Landing Page View | PAGE_VIEW | Tracks landing page visits |
| Signup | SIGNUP | Tracks user registrations |
| Checkout Started | CUSTOM | Tracks checkout initiation |
| Purchase | PURCHASE | Tracks completed orders with revenue |
Step 2: Install the Pixel
Go to each goal's detail page and click Get Pixel Snippet. Install the snippet on your website (or install a single pixel and call trackConversion with the appropriate pixelId for each event).
Step 3: Add Tracking Calls
// On your landing page (fires on load)
trackPageView();
// After the user completes signup
trackConversion({
metadata: { eventType: 'signup' }
});
// When the user reaches the checkout page
trackConversion({
metadata: { eventType: 'checkout' }
});
// After a successful purchase
trackConversion({
value: 79.99,
currency: 'USD',
metadata: {
eventType: 'purchase',
orderId: 'ORD-001'
}
});Step 4: Create the Funnel
In Dashboard → Funnels, create a funnel with these stages:
Stage 1: Clicked Link → Type: CLICK (any link in the campaign)
Stage 2: Viewed Landing Page → Type: CONVERSION (goal: "Landing Page View")
Stage 3: Signed Up → Type: CUSTOM_EVENT (eventName: "signup")
Stage 4: Started Checkout → Type: CUSTOM_EVENT (eventName: "checkout")
Stage 5: Completed Purchase → Type: CONVERSION (goal: "Purchase")
Step 5: Share Your Links
Create short links for your landing pages and distribute them across email, social, and ads. Every click creates a touchpoint, and the funnel tracks each visitor's progress through the stages.
Understanding the Funnel Visualization
Once a funnel has data, the visualization shows:
- A horizontal bar chart where each bar represents a stage. The bar width is proportional to the number of visitors who reached that stage.
- Absolute counts at each stage (e.g., 10,000 → 6,200 → 3,100 → 1,400 → 980).
- Stage-to-stage conversion rates shown between bars (e.g., 62% → 50% → 45% → 70%).
- Overall completion rate — the percentage of visitors who entered at stage one and completed the final stage (e.g., 9.8%).
- Median time between stages — how long visitors typically take to advance.
Drop-Off Analysis
The most actionable part of funnel analytics is understanding where and why visitors leave.
Click any stage transition to open the Drop-Off Detail panel. This shows:
- Drop-off count — How many visitors reached this stage but not the next.
- Drop-off rate — Percentage of visitors lost at this transition.
- Visitor segments — Break down drop-offs by device, country, referrer, and UTM parameters to find patterns.
- Time distribution — A histogram showing how long visitors spent at this stage before leaving. A spike at very short durations suggests the page failed to load or didn't match expectations.
Use this data to form hypotheses. For example, if mobile visitors drop off at the signup stage at twice the rate of desktop users, the sign-up form likely has a mobile usability issue.
Comparing Funnels
You can create multiple funnels to compare different audience segments or time periods:
- Segment comparison: Create two identical funnels but filter one by
utm_source=emailand the other byutm_source=social. Compare completion rates to see which channel produces higher-quality traffic. - Temporal comparison: Use the date range picker to compare funnel performance this month versus last month.
- A/B test comparison: If you're running an A/B test on a landing page, create funnels for each variant to see how the change affects downstream conversion stages.
How Visitor Stitching Works in Funnels
A key requirement for funnel accuracy is linking the initial link click to the subsequent page views and conversion events. GrowQR does this through visitor identity:
- Click → Touchpoint: When a visitor clicks a GrowQR link, the redirect server creates a touchpoint with
visitorId = hash(IP + User-Agent). - Page load → Cookie: When the visitor lands on your site, the pixel sets a
_us_vidcookie and uses it asvisitorIdin alltrackConversion()calls. - Funnel matching: The funnel engine queries touchpoints and conversions for the same
visitorIdvalues, ordered by timestamp.
For best accuracy, install the pixel on all pages so the cookie-based visitorId is used consistently. The IP+UA hash serves as a fallback when cookies are unavailable.
Best Practices
- Start with your highest-value conversion and work backward. Define the final stage first (e.g., purchase), then add the steps leading up to it. This keeps the funnel focused on what matters.
- Keep funnels to 3–6 stages. Too many stages make the visualization noisy and harder to act on. If your journey has 10+ steps, group related actions into a single stage.
- Set realistic time windows. A B2B SaaS trial funnel might allow 336 hours (14 days) between sign-up and first login, while an e-commerce checkout funnel should allow only a few hours.
- Fire
trackPageView()on key pages. This feeds the PAGE_VIEW stage type with reliable data instead of relying solely on referrer matching. - Use filters to segment funnel data. A single funnel viewed through different filters (device, geography, campaign) often reveals more than creating many separate funnels.
- Review funnels weekly during active campaigns. Drop-off patterns can shift quickly when you change ad creative, landing page copy, or targeting.
- Pair funnels with A/B testing. When you identify a weak transition, run an A/B test on that stage and create comparison funnels to measure the impact.
Example Workflows
E-Commerce Purchase Funnel
- Create a funnel with stages: Link Click → Landing Page View → Signup → Checkout → Purchase.
- Install the pixel on all pages. Add
trackPageView()on the landing page. AddtrackConversion()on signup, checkout, and purchase confirmation pages. - Filter by campaign to see which promotional campaign has the highest purchase completion rate.
- Notice that 40% of visitors drop off between "Signup" and "Checkout."
- Investigate the drop-off segment — discover that mobile visitors on iOS are disproportionately affected.
- Fix a mobile checkout bug, then compare the funnel's completion rate before and after the fix.
SaaS Onboarding Funnel
- Create a funnel: Clicked Trial CTA → Viewed Pricing → Started Sign-Up → Completed Sign-Up → First Login → Activated.
- Track each step with
trackPageView()andtrackConversion()calls. - Run the funnel for 30 days to collect baseline data.
- Identify that the biggest drop-off is between "Completed Sign-Up" and "First Login" — users sign up but never return.
- Implement a post-sign-up email sequence and re-measure the funnel.
- Compare the 30-day funnel before and after the email sequence to quantify the improvement.
Content Marketing Funnel
- Create a funnel: Blog Link Click → Article Page View → CTA Click → Lead Form Submitted.
- Add
trackPageView()on blog articles. FiretrackConversion({ metadata: { eventType: 'lead_form' } })on form submission. - Segment by
utm_sourceto compare traffic from Twitter, LinkedIn, and organic search. - Discover that LinkedIn traffic has the highest lead form completion rate despite lower click volume.
- Shift content distribution effort toward LinkedIn and measure the impact on overall funnel completions over the next quarter.