SOLVED

Re: How to Restrict Free Email Domains on Form Fill Out in 2021

Go to solution
Chris_Goelkel
Level 2

Is there a new way to do this since this old Blog Article in 2014. This doesn't seem to work for me. 

If you reference this old post (https://developers.marketo.com/blog/restrict-free-email-domains-on-form-fill-out/) it says you can block whatever domain you want on the front side of the form. But I believe some calls have changed, and the script is not working.  Has anyone else run across this issue?

 

This seems like a out of date method, is there a better way?

2 ACCEPTED SOLUTIONS
SanfordWhiteman
Level 10 - Community Moderator

Use the new FormsPlus::EmailPattern JS.

 

You can see a demo here:

 

MktoForms2 :: FormsPlus-EmailPattern [simple demo]

 

Download the JS library from the CodePen HTML pane (direct download link here) and re-host it in your Design Studio.


Then add the code from the CodePen JS pane anywhere after your form embed. Add blockable domains to the invalidDomains array. It accepts 3 different formats:

 

mailbox@example.com  - matches one specific email address

example.com - matches all mailboxes @ that domain

mailbox@ - blocks that mailbox @ any domain

 

(actually it does even more cool stuff but I haven't had time to document it yet!)

View solution in original post

SanfordWhiteman
Level 10 - Community Moderator

Because they failed to account for onValidate chain in their code, setting submittable(true) no matter what else was running.

View solution in original post

36 REPLIES 36
laberge
Level 1

Hey Sandy,

 

I've just been testing this script here and our forms use a different button (for some other webhooks) - I see the script triggers correctly but the button we use seems to ignore the ability to block the form submission. I can see it says "must be a valid email" but it doesn't seem to stop the submission. Any chance you could glance at it quickly

 

It's been a while (and a few companies) since I've asked you a question 🙂 hope all is well.

 

-Justin

SanfordWhiteman
Level 10 - Community Moderator

Hi Justin,

 

1st: Even though you're loading the FormsPlus::EmailPattern JS library, I don't see that you're using it. It's just available for use.

 

2nd: The call to the external enforcement service (wouldn't call it a webhook, as it's an API called from the browser) needs to be interlocked with the FormsPlus.EmailPattern.match method. It doesn't make sense to call enforcement if the form isn't ready to be posted at all because the email is from an unwanted domain. So the match should run first; then if there's no match, you call enforcement; then when the enforcement API returns, you submit the form.

albert2982001
Level 2

Where would I add this code to a Marketo landing page template where the form is hidden or enabled?

SanfordWhiteman
Level 10 - Community Moderator

On a Marketo LP, custom form behaviors JS should go just before the closing </body> tag. This is because you don't know exactly where in the body the Forms 2.0 lib will be injected, so you have to make sure you're after that.

albert2982001
Level 2

Thanks for the quick reply. Here's a link to my marketo landing page in question, https://info.leandata.com/G2_L2AReport.html

 

I entered <!-- FormsPlus libraries -->
<script id="teknklFormsPlus-EmailPattern-1.0.3" src="https://info.leandata.com/rs/554-VZA-399/images/formsplus-emailpattern-1.0.3.js"></script>
<!-- /FormsPlus libraries --> right before the /body however it still doesn't appear to be working. 

 

Page Source: view-source:https://info.leandata.com/G2_L2AReport.html

SanfordWhiteman
Level 10 - Community Moderator

You seem to have miscopied the FormsPlus::EmailPattern JS file before reuploading it to your server. Maybe you pasted it into Word or something? You need to download the actual file in its original form.

SanfordWhiteman_0-1638244854524.png

 

albert2982001
Level 2

Here's the test website I setup with I believe is the correct js code this time around. However, the script now blocks any form submission and does not display the error message. 

https://info.leandata.com/Testing---Email-Validation_test.html

SanfordWhiteman
Level 10 - Community Moderator
You still have the wrong script. Looks like you saved the contents of the JS pane as a .JS file. You need the stuff in the JS pane, but that’s not the same as the FormsPlus::EmailPattern file, which is a separate file (and also directly linked above).
laberge
Level 1

Thanks for the clarity here Sandy, I'll make some changes to where the code is stored and how it's getting loaded.

Chris_Goelkel
Level 2

Thanks @SanfordWhiteman 

I am trying to make this work, but first try was unsuccessful. 

You Said I should upload a copy of that JS to my Marketo Library correct, then call that version. It's acting like it's not calling it.

SanfordWhiteman
Level 10 - Community Moderator

You'd need to provide a link to your page. Can't tell what's going on without that.

Chris_Goelkel
Level 2

@SanfordWhiteman I don't have it on a public server you can get to unfortunately but can you confirm I am calling the correct code:

This would be what I would call under my form code correct. 

 

 

<!-- FormsPlus libraries -->
<script id="teknklFormsPlus-EmailPattern-1.0.3" src="https://your-marketo-domain/rs/765-HCI-927/images/formsplus-emailpattern-1.0.3.js"></script>
<!-- /FormsPlus libraries -->

 

 

 

SanfordWhiteman
Level 10 - Community Moderator
Yes, that plus the code from the CodePen JS pane of course.
Chris_Goelkel
Level 2

Thank You Very Much @SanfordWhiteman , This is a Powerful little script! Nicely done. 

SanfordWhiteman
Level 10 - Community Moderator
Glad you like it. When I reveal the other thing it can do, you might like it more!
Chris_Goelkel
Level 2

I look forward to it, by the way the reason it didn't work for me originally was the order it was firing in, incase anyone else runs into that.