Would be nice to have an option available to turn on "Funnel Tracking via URL" (for Usability Testing purposes). Right now the URL in the Multi-Page forms is the same for each step. I would like it to change depending on which page of the form person is located.
For example:
Page 1 URL: /my-form?page-1
Page 2 URL: /my-form?page-2
Page 3 URL: /my-form?page-3

This would be very handy to figure out on which step people exiting or bouncing. I think this could be easily added since each step is recorded in the form's array. And it can be optional as a checkbox on the form configuration page (so people can turn it on only when testing). This should work great with GoogleAnalytics as well.

#28 indexing-webform.patch3.01 KBkanani
Members fund testing for the Drupal project. Drupal Association Learn more


quicksketch’s picture

Version: 5.x-2.3 »

The only way I can think of doing this is with JavaScript. The problem here is that the URL of the page is determined by the form's #action property. Since the action would be the same for both the previous and next buttons, we couldn't reliably know which page will be next. So in order to accomplish this, we'd need to update the action just before the form is submitted.

quicksketch’s picture

Title: Funnel Tracking via URL for Multi-Page Forms » Set separate URL for each page of Multi-Page Forms (Funnel Tracking)
mileZ’s picture

Will this feature be added in webform... It would be fantastic!

quicksketch’s picture

I'd like to add it but make it work without JavaScript. However this is EXTREMELY difficult to do, especially with the conditional handling in 3.x. Considering it has absolutely no effect on functionality, it's a low priority issue for me.

mileZ’s picture

I know this not a functionality issue, and the priority is low, but I think that a lot of web-marketers would be extremely happy with this function.

I'm not a programmer but maybe it can help: if each created field has a unique field key. Is it not possible to append "the pagebreak key" a the end of the url. However, a user can use the field key he prefers ex: node/1?pagebreak_1

Is there some documenation where I can find information how to do that? With JS?

Thank you,

quicksketch’s picture

Knowing which pagebreak is the same as knowing which page you're going to. The problem is that the "action" property of a form can only contain one value. We need the form to use a different "action" depending on which button the user clicks, though unfortunately you don't know which page you'll be going to (since it depends on the user choices), you only know which page you're on.

Redirecting the user from within PHP is not possible (I do not think) because browsers generally won't forward their POST information along to a different URL for security reasons.

An example of how to set different actions through JavaScript is http://www.javascript-coder.com/html-form/html-form-action.phtml, though we'd probably use jQuery instead of manual JavaScript like that.

mileZ’s picture

Version: » 6.x-3.x-dev

Hi quicksketch,

thank you (as always) for the quick replay :-)

I know what you mean. I've experimented with the multiforms module. And there is the possiblity to make "sections".

This is something like page break but the difference is that the "sections" values are stored in a table in the db. In this case the there is not need to "Redirecting the user from within PHP".

So, the page break is not simple next button anymore.

I'm really guessing, please forgive me if this stuff doesn't make sense :-)


Scott M. Sanders’s picture


winstonford’s picture

This feature is actually extremely functional. It is the only way to link directly to, for instance, page 3 of a multistep form.. eg:
"Edit your email here" --> /node/17#page3

Or am I wrong and there is an existing way to link directly to a specific page of a form?

quicksketch’s picture

You can't link to specific pages of a form because "Page 3" may be different depending on conditional responses. Additionally Webform does not allow you continue through a form if you have not filled out all the required fields, so if you started on page 3 then clicked next, you'd get kicked back to page 1 if there was a required field on it.

Now I'm not saying that these aren't valid requests, I'm just saying that this is a difficult problem to solve. It will likely require a complete rewrite of the page handling within Webform, shifting from Drupal's built-in page handling mechanisms to a custom one. Drupal's built-in mechanism requires POST variables in order to operate, if a user reloads a page in the middle of a multi-step form and discards POST, then they get kicked out and have start over. This also means that it is impossible to link to a specific page entirely, because links by the very nature of HTML always are executed as GET requests, meaning that the user's form values would immediately be lost.

winstonford’s picture

Thanks for a thoughtful, prompt response quicksketch. I am still digesting it.

micmuir’s picture


alvinet’s picture


Jim Ruby’s picture


marco88’s picture

Anybody tried using Google trackpageview to simulate the pages?

My JavaScript and theming is close to nill but reading on it I reckon it would be possible to add a onclick action in javascript that would trigger a call trackerpageview.

any thoughts?


alexpetrov’s picture


FreeFox’s picture

Just another example where a solution could be hidden.

I have a request form with 10 pages. People have to go through the pages to make the request. Presume there are no conditional pages so all pages are valid pages.

Imagine a user is on page 9 and want to make a change on page 2 ... They have to click 7 times back and than 7 times continue ...

Ideal solution: have tabs on top of the page so you can jump to whatever page and change something. As long as the validation is ok on all previous pages you can jump forward. A valid page will be a green tab, the last invalid page will be a red tab, the rest grey.

You are on page nine so tabs 1 to 8 are green and nine has to be filled yet so 9 is red and 10 is gray.
So, jump back to any green page shouldn't be a problem (I guess)
Imagine that on page 5 there is a validation error because of the change on page 2 so you can max jump forward to page 5, not 9 anymore (page 1 to 4 are green, 5 is red, 7 and up are gray)

Hope ... maybe ... solution ... Thanks in advance

Alex72RM’s picture


Not only would be a nice feature, but for the webform rendered as blocks, is essential. Otherwise, the steps following the first appear in the same starting block. :(

mountdrupal’s picture

I have been trying to do this for a long time and cannot figure it out.
Has anyone figured out any way of doing this?

Thank you for your help!

quicksketch’s picture

This currently is not possible as it would require fundamental changes to the way Webform operates. So currently the answer is "no", this isn't a feasible problem at this point.

lsolesen’s picture

Wouldn't it be a possibility to have a setting on the pagebreak page with some code you could add to to the submit handler or to the action for the form if there is a pagebreak on the current page. Which function handles the submit button on multipage forms?

Just thinking if it is just a parameter ?some_paramter - then it should not be necessary to alter too much of the code? Or?

quicksketch’s picture

@lsolesen, If you believe it to be simple, you might try to give it a shot. I've outlined the difficulties in #6 and #10.

lsolesen’s picture

@quicksketch There is no doubt you know the module much better than me, so you are probably right.

doublejosh’s picture


By using Form Block upon and error, or multi-step forms, the /action keeps the user on the same page the form was on. Can imagine this *might* be the intended behavior sometimes, but in all my cases I'd want the user to proceed to the webform node to finish things up. Hence thinking this might be the right thread on this topic.

Perhaps there should be an admin setting for what /action to take when the form is begun anywhere other than the webform full node page? This would cover both teaser situations and Form Block uses.

joecanti’s picture

If this can't be solved by adjusting a multistep form, is it worth thinking about how to solve it by chaining together some separate forms?

Does anyone know of a reliable way to copy the field values from the first form into hidden fields in the second form? This way, you have all your data from all forms together, and you also have the advantages of separate forms and separate URLs.

This would help me as well because my first form is on the home page.

The form flow module for D7 might link these all together nicely, but it might not do drafts??

Could you store data in the URL of the new page? EG, fill out the first form, and have the values in the second form URL - step-2/?name=tom-smith.

Or perhaps you could use rules to populate the fields, adding a n IP address condition to make sure you had the same person?

Any thoughts??


joecanti’s picture

Just a note here...http://drupal.org/node/164836 describes passing data from one webform to another via args in the URL - you could pass a submission ID and use it to group together forms, and also pass an email address so you could send a thank you email to your user.

This way, it might be possible to create a view showing all results, grouped by linked forms. this would include people who exited after the first form. it would also define different URLs for each form, and yet have them linked together in a useable way.

blauerberg’s picture


kanani’s picture

Version: 6.x-3.x-dev » 7.x-3.17
Status: Active » Patch (to be ported)
3.01 KB

Attached patch provides indexing to the webform, so long as none of the conditions outlined in #10 are present.

quicksketch’s picture

Status: Patch (to be ported) » Needs work

New features are only being added to the 4.x branch. In any case we probably need a solution that *does* address #10.

quicksketch’s picture

Version: 7.x-3.17 » 7.x-4.x-dev
RKS’s picture

Is there a reason we have to address #10? That seems one person's use-case and no one else has mentioned a similar need. The OP wants (or wanted by now) to track page views, another person wants to be able to jump back and form between pages, but no one else has mentioned linking to an individual page besides #9.

So if #28 works and covers the majority of the use-cases, I wouldn't think #10 needs to be addressed at all. It appears anything else would fundamentally change your module, which you've already stated you aren't going to implement. So if this is the best we can do...

quicksketch’s picture

@RKS: Well which is your need? In Google Analytics at least, you'd be better served by setting up custom events/goals than using funnel tracking IMO. I think jumping to individual pages is clearly needed feature, and may be desired functionality of #258696: Multipage form - Page n of n (progress or percentage complete).

In any case, the patch in #28 addresses skipping to individual pages but NOT individual URLs for tracking. It doesn't provide any noticeable change to end-users or administrators, as it's nothing but an API enhancement.

RKS’s picture

Well I actually came here thinking of different solutions to the issue I posted yesterday and thought if there was a separate URL I could redirect a specific URL when the user got there. So I actually don't need any tracking or linking to specific pages within the form. I just thought having a separate URL would make it easy to end the form and redirect elsewhere.

Example using the OP pages:

Page 1 URL: /my-form?page-1
Page 2 URL: /my-form?page-2
Page 3 URL: /my-form?page-3

Page one has two radios, select Radio A and the next button takes you to page-2. Select Radio B and you go to page-3. If I use the Redirect module, I can redirect /my-form?page-2 elsewhere and end the form if the user selects that option. So a separate URL could do that. I didn't bring any of that up here since that is a completely separate issue and I didn't want to hijack the issue here. My previous post was just saying I didn't see anyone else mentions linking but you are the module maintainer and know better what people have been asking for and the proper direction for this module.

quicksketch’s picture

@RKS, let's followup in your other issue: #1798240: Is there a way to redirect via conditionals?

RKS’s picture

Yeah. Like I said, I really didn't want to bring that over here but thanks.

bbdata’s picture

I wanted to provide my feedback when testing #28. It does allow you to jump to a specific page of the webform, but that only serves a very specific use case. Hardly covers "majority of the use-cases" in my opinion.

For example, if I fill out a form and reach the last page and realize I want to go back and change some of my answers. Using this method to go back to page 3 will not return any of my answers.

Further, the answers I filled in on the previous page will be lost because they were never submitted.

Nor did it offer any extra output that would be a benefit to Google Analytics.

kyuubi’s picture

Hey every one,

Is there any news on this subject?

I need this functionality for 2 important use cases.

1- The user gets through a very long form and in a confirmation steps needs to go back to step X to correct some data and obviously going through all the steps manually is a very bad option.

2- We need to be able to resume the form where the user dropped off, since the form is very long and going back to step one is loosing a customer.

I am going to need to need to solve this problems anyway, and we are already depending a bit on webform, so I could help and contribute in this feature, but I don't really know webform's code well. Does anyone have a sensible approach to this, some pointers on where to begin? If you point me in the right direction I could try and write a patch for this.


hellogeli’s picture

Issue summary: View changes

That's what I need as well. I need users to be able to resume the form form where they dropped off.
I am just a designer and have no idea about coding. Help please.

markusa’s picture

I am looking for a solution that would seem to be along the line of what the people above are looking for, but a different use case.

I'm using Webform 4, and have created a multipage form. I am using Display Suite and Fieldgroup modules to display the title and body under on tab of the page, and the webform component of the node on a second tab of the page.

When click the next step button, the page refreshes, but the first tab is selected again. How can tack on an anchor tag used by the tab buttons so that when the user clicks the next button to go to the next page, tab with the webform component is selected by default?

DanChadwick’s picture

Status: Needs work » Closed (won't fix)

Closing as untenably difficult and/or complicated. If a patch come forward, I would be happy to review it. Conditionals and validation make this MUCH more complicated.

upperholme’s picture

This issue seems to have run out steam somewhat, but my guess is that, like me, there are plenty of people that could use a solution in terms of being able totrack progress through a multi-page webform.

I'm not a code, but was wondering whether Google's Single Page Application Tracking might be part of a solution here?(https://developers.google.com/analytics/devguides/collection/analyticsjs...)

If someone has this working with a multi-page webform I'd love to hear about it.