Have you tried adding a wait step to give the system time to create the URL after you register?
Are you also running through this program as a live test and not just sending samples?
I have done most testing using the "send sample" since running my seed list through the whole campaign requires shortening the wait time from what I want in the production campaign and I would rather not edit it. If there is a way to quickly test the entire campaign with out changing the wait step I would do it but it sounds like I need at least some wait even for a quick test.
I discovered by trial and error that the problem was that the word"Webinar" needed to be capitalized in the token. I had copied this from a Marketo program file.