Hey @Haxx when troubleshooting a list membership, the best first step is to take a specific contact record you expect to see on a list and see what might be stopping them becoming a member of the list.
If you take an example contact, are you seeing both form submissions on the contact timeline?
Do you have an email field in the second form? I would be surprised if this auto-populates through email alone or in enough time after the first form redirect.
When a personalization token is used (such as {{contact.email}}) in forms, it pulls the data from the cookie on the visitors browser, when this cookie is associated with a contact record it will then use that cookie to pull the data from the contact record and personalize it.
Just due to the speed of things, it’s impossible to submit a form - create a contact record - populate the data - associate the data - pull the data - update the page with personalization all in the time of the form redirect, so if you have form 1, then immediate redirect that to form 2 url with a personalized query string, the query string will have no value by the time the page loads.
Within an email, if you a link like “form2.com?email={{contact.email}}” the browser cookie may not be associated (if it’s a different browser, device or the email even opens it in-app) which means there’s nothing on the browser to pull the contact data from.
When checking a contacts timeline, do you see both form submissions from form 1 and 2?
If so, what list filters are you using?
If not, do you see a lot of “no contact record” in the submissions of form 2?