MailChimp provides sign-up form as pop-up dialog, but has limited options for when to trigger it. Available triggers are like “immediately after the page is open”, “when the user scrolls to the bottom of the page”, etc. I want to trigger the dialog when a reader clicks the sign-up link on my blog. Instead of navigating to the sign-up page, I want to open the dialog and speed up the experience. I hope this can improve subscription rate.
MailChimp provides an HTML snippet for the pop-up dialog. It contains two
<script> tags. I left the first one untouched and modified the second one. Read the code below for reference:
In the first
<script> tag, I did nothing. In the second
displayDialog, which will be called in the sign-up link’s click event. I added a third
<script> tag to search for sign-up links in the page and add the click event handler.
displayDialog function, I not only call the original code in the second
<script> tag but also delete two cookies before that. That’s because MailChimp set one of these cookies when a user dismisses the dialog or subscribes through the dialog. The presence of one of the cookies will prevent the dialog from opening again. This behavior makes sense when using MailChimp’s automatic triggers – a user shouldn’t see a dialog again after either dismissing or subscribing. It doesn’t make sense when the trigger is user clicking a link because it’s a clear intention to open the dialog. (If you want to reuse my code, remember to replace
window.dojoRequire(...) with the code from your own MailChimp campaign.)
<script> tag is customized for my own blog. It looks for any link that points to the sign-up page and add the click event handler. The event handler calls
displayDialog to trigger the dialog and then cancels the browser’s navigation to the sign-up page.
If you want to test this feature, make sure you open this post from my blog and click this link to subscribe. It should open the sign-up dialog instead of the sign-up page. If you like this post, remember to put in your email and subscribe!