Must fill out form first | Community
Skip to main content
Naomi_Marr1
July 8, 2015
Question

Must fill out form first

  • July 8, 2015
  • 3 replies
  • 5041 views

I have a landing page with a form (registration page) and when someone hits submit they get sent to a thank you landing page with a video. I want to ensure that no one can send the URL of the landing page with the video out so people can get direct access; I need them to go through the registration page. What is the easiest way to do this with Marketo landing pages?

Thanks in advance for your help!

~Naomi Marr (Avid Technology)

3 replies

SanfordWhiteman
Level 10
July 8, 2015

Naomi, while there's some tech coming down the pike that will allow you to send expiring links, at the moment there's no way to stop someone from downloading a Marketo-hosted asset if they know the direct URL.

In the absence of true security -- and of course even an expiring link can be shared, albeit for a brief period of time -- you have to figure out whether it's really worth pursuing mere obscurity (as techies say) which a malicious/mischievous person could work around. For example, you could have your landing page check its referrer to see if someone came from the form page. Or check for tokens in the LP which wouldn't exist if the lead wasn't known. These tactics might be worth it for your case, or not.

Naomi_Marr1
July 9, 2015

Yes! It's the process of checking for the referrer and if the person hasn't come from the registration page then I want to redirect them back to the reg page that I'm looking to implement. Do you have any pointers on how to achieve that? I'm assuming javascript but didn't know if someone had already implemented a javascript like that they'd be willing to share?

@Elliott Lowe​

@Sanford Whiteman​

July 9, 2015

Hi @Naomi Marr

I've done the technique sanford mentions with tokens, CSS and some scripting. 

The goal was to only show a LiveStream broadcast to those that registered.  If someone did not register, the content is replaced with a 'you must register' message and a button to the reg page.

Here are some of the details:

Webform was created to register for the content

Upon form fill out, a 'change data value' flow step in MKTO sets a custom field to the source URL of the livestream iframe embed.

The landing page uses the token for the livestream iframe field like so:

     iframe id="liveStreamVid" src="{{lead.ICON14 Live Stream - Video:default=}}" width="640" height="360" frameborder="0" scrolling="no" style="width: 640px; margin: 0 auto;"> /iframe

Some Jquery adds the hidden class to a register message while removing the hidden class from the content iframe. 

   jQuery(function(){

    var liveStreamVid = jQuery("#liveStreamVid");

  if (liveStreamVid.attr("src")!=""){

    jQuery(".iframer").removeClass("hidden"); 

    jQuery(".register").addClass("hidden");

    }

CSS:

        .show {

        display: block;

      }

   

      .hidden {

      display: none;

      }

  

Register message HTML for reference:

<div class="register hidden">

<p>

  The broadcast will go live Wednesday 4/23/2014 at 8am MST.

</p>

<p>

If you haven't yet, be sure to register to gain access

</p>

<div>

<a class="button small gap-left" href="regpageURL">REGISTER NOW</a>

</div>

  <p>

  </p>

</div>

The Result:  If someone came through the webform than the custom field sets and on the thank you page the jquery shows the content.  If the person shares the link, than the new visitor will see a register message instead of content because they do not have a known munchkin id.

If you don't need to get fancy for your setup, you could use the 'email' token in a hidden div.  Then redirect to the register page or show the register message in the event the 'email' hidden div is blank.

Elliott_Lowe1
July 9, 2015

At my previous company , we had a video hosted on Vimeo and using dynamic content in Marketo, we were able to allow a lead to view a video one time.  If they wanted to view it again, they needed to submit a form again.  It's been a couple of years since I did this, so I don't recall all of the particulars, but at least this can be done.

SanfordWhiteman
Level 10
July 9, 2015

That's a good point about non-Marketo-hosted assets -- in fact the expiring links I'm talking are based on looping in technology outside Marketo. Maybe Naomi's videos are hosted somewhere that has a view-once policy (that does seem kind of punitive, though, if it's really one time ever) that could be enforced by specially crafting links using a webhook.

Elliott_Lowe1
July 9, 2015

As I recall the process was that Sales used Add to Marketo Campaign in Sales Insight to invoke a smart campaign that added the authorized lead to a static list and sent the lead an authorization email with a link to a LP.  Then when the lead visited the LP, it pulled in dynamic content with the video in the Vimeo player whose settings restricted viewing by the general public.  For leads that were not on the list, the LP pulled in a message stating that the lead should contact their account rep to get authorized.  After that, we removed the lead from the static list, so they could play the video multiple times, but could not play it again once the LP was closed and reloaded. You could change this to removing them from the static list after a certain period of time.

This technique does not prevent someone else from viewing the video if the original recipient forwards the tracked link without clicking it.  If whomever they forwarded the link to clicks the link first, they would be allowed to view the video and the original recipient would not be able to view the video after that.

Kenny_Elkington
Adobe Employee
Adobe Employee
July 9, 2015

Hi Naomi,

I'm curious what your intent is here?  Do you want to prevent the lead from viewing the video if the lead is unknown, or do you want to force the lead to fill out the form if that specific form hasn't been filled out before?

Naomi_Marr1
July 10, 2015

I want to force the person to fill out the form regardless of if they're known or not so it's truly gated to everyone.