A pretend single page app. Submitting the form does not reload anything — the router calls history.pushState() and swaps the view. The listener patches pushState, so it sees the route change and matches it against thankYouUrl: /step=thank-you/.

Current URL

Book a demo

dataLayer


            
        

Only pushState, replaceState and popstate are patched. A hash router that only ever writes location.hash will not trip this — pair thankYouUrl with a thankYouSelector in that case.