Many people have websites and offer free downloadable materials to their visitors. You could be a CPA with a PDF brochure or a custom window installer with an excel file for cost estimates. You want to provide materials, but you also want to gather the visitor’s email address and contact info before letting them download the files. This tutorial will cover how to do that with some helpful free WordPress plugins.

Want to get your contact forms setup with downloads all done for you with a walk-through step-by-step? Check out our WordPress help!

What we’ll cover

  • Step 1: store your downloads on your website
  • Step 2: gather the visitor’s information
  • Step 3: give the visitor the download
  • Step 4: optionally send the visitor’s info to a mailing list

Note: If you are looking for a non-plugin option which works both with and without WordPress, scroll to the end of the article.

Store your downloads on your website

The step is storing your downloadable material (for example, a PDF) with a download plugin. This allows you to replace your downloadable file without actually having to change any of your URLs.

There are three popular download monitor plugins and they all work pretty well.

For this tutorial, I’m going to use Simple Download Monitor.

Add your download

Once you have Simple Download Manager installed, you will see a “Downloads” option in your admin sidebar. If you click on it, you will see your list if current downloads (blank at the moment) and some additional options. For this tutorial, we will only be using “All Downloads” and “Add New”. We will leave all of the other settings alone.


Click on “Add New” and give your Download a title. Then go down to the Downloadable Files and click on Select File.

You can either upload a new file or add a file from your existing Media Library. It’s also possible to add a file by just inputing the URL selection (this is great if your file exists somewhere besides your media library — such as if you are using another server to store your item).

Once you have uploaded your file, click on the usual Publish button.

Now go back to the All Downloads page and you will see your download.


Gather the visitor’s information

The next step is creating a form with a thank you that goes to download. This really depends on what your goal for interaction is. Here are three I recommend:

  • Forminator is a fully-featured free plugin. With it you can create powerful contact forms that collect data from the website visitor. It includes integrations for Google recaptcha and has payment options for Stripe & PayPal. It also integrates with several popular mailing list providers.
  • Hustle is fully-featured free plugin which allows for forms to be created and placed in a number of locations, including popups. It has integrations for a larger number of mailing list providers than Forminator does. You can pop-up, slide-in, or embed your form.
  • Gravity Forms is fully-featured premium plugin (paid yearly) that allows you to create powerful contact forms with advanced logic. These forms once filled out can redirect conditionally, display different messages depending on fields selected, send multiple emails, store data to your email mailing list provider, and logs all forms to the database.

For this tutorial, I’ll be using Forminator.

Create your contact form

Now that you have your download ready, it’s time to create the contact form. Forminator has already put together a set of instructions, so rather than take my own screen shots, I’ll just use theirs!

Also, you can visit their full plugin documentation for extra help getting setup.

Offer Free Downloads with Contact Form Email Submission 1

You’ll want to setup your form with only the fields you really need. Studies have shown that the more fields you require, the less likely people are to complete the form. Also, with the GDPR, you are not supposed to gather more data than you actually need.

Give the visitor the download

Once you have created your form with the fields you would like, you can now set up your thank you redirect. For this, we’ll adjust the submission behavior of the form.

You’ll need to set the “After submission” to “Redirect URL” and enter the URL of the landing page for your download. The download plugin automatically creates a download page for you, but you can also create your own custom one. I always recommend setting a download page to “no-index” to make sure that search engines don’t index it.

Offer Free Downloads with Contact Form Email Submission 2

You can also send your download to visitors by using the Email notification feature. Although if you want to use this, I’d recommend sending them to no-index page where you have embedded the download shortcode.

Optionally send the visitors info to a mailing list

For a lot of website owners the goal of offering downloads is to populate your mailing list. Forminator has integrations with several mailing list providers and other locations you can data (like Zapier which connects almost anything to almost anything else). Their current list of integrations is available on their documentation.

Once you configure your integration settings you can select which form(s) send data to what location. That configure link goes to a how to section for setting up popular mailing list providers with Forminator with images included!

Alternative non-Plugin Option

There is, of course, another commonly used method. That is a mailing list signup form. With popular mailing list providers, such as MailChimp, you can choose to have new subscribers to your email list receive a welcome email which can include links to your downloads.

You can create different lists and have different sign-up forms for each list, this allows you to send different welcome emails.

MailChimp has also made automation free, so if you want to setup an entire sequence of follow-up emails to your subscribers you can do that easily.

Most mailing providers offer a “Welcome email” type of functionality, although what it is called will vary between mailing list providers. Consult your mailing list provider documentation for how to set it up.


This tutorial has explained how to let people download materials in exchange for providing an email address and contact info. Like most things in life, there is no “best” for everyone, but the option of using Simple Download Manager with Forminator is a free option that will work for a number of people.

43 thoughts on “Offer Free Downloads with Contact Form Email Submission

  1. Hi, when I insert the short code to the “Thank You” message it just shows up as text and not something that could be downloaded.

  2. I found this post as very useful , you have tried to explain things very beautifully . Keep up the good job..


    1. The tracking number of downloads is still done through Download Monitor (or a similar plugin). You can configure Hubspot to send you an email when forms are completed. In this email, it will have some info on the person and which page they filled out the form on. This helps with tracking the number of downloads.

  3. Thank you for this article. However, I have an urgent query. How can I display a link to download file with the success message in contact form 7. Thanks.

  4. Hi Gen! thank you so much for this tutorial.

    We had taken it for one site but with the last update wordpress Email Before Download have a several issues and it disappears from wordpress directory plugins.

    Have you the same problem?

    Best regards!

    1. Natalia,
      The “Email Before Download” plugin was removed from the repository, the author abandoned it. I updated the article to remove using it. You should remove the plugin from your site.

  5. Hey Gen,

    thanks for the awsome Tutorial, but I still have a question.
    I use CF7 and WP Download Manager and I am sending th URL of the Downloadpage in an Email to the Client. The problem is, that I dont want the client to be able to send this link to others. So I kind of need a personalized Link or one which is expiring after some time.
    Do you have any ideas which plugin I could use for that ?

    Best regards


    1. Antonia,

      For a more complex setup with expiring links, you’ll want a full featured plugin like Easy Digital Downloads. That plugin actually works like a shopping cart (and you can just make your “products” free). But it comes with expirations on downloads and limits on how many times they can be downloaded. Remember also that an assistant may be filling out forms and then forwarding things to a decision maker.

  6. Hi there – great tutorial. However, I’m still having issues. I want to use contact form 7 to send an email to the user with a link to download a pdf. The download manager shortcode to the file doesn’t work in the contact form and the URL link to the file remains as the URL address in the email the user receives, which looks ugly. Can anyone help on this?


    1. You can use the URL, just mark “use HTML content type” and write the HTML code to make the email look better.

  7. Hi,

    Great tutorial. Was wondering if there is a way to force automatic download of the selected files(checboxes) after the form is validated and submitted, instead of presenting the inline links and/or email delivery.

    Also, is there a possibility of inserting multiple preconfigured /ebd packages…or a way to insert divs and titles inside the /ebd so I can have a Downloads Section and a Related Files Section underneath, with just one contact form(the same). Right now it permits only a bulk section with all downloads from download Monitor, when I opt for the multiple downloads option.

    Finally, can this combine the output in an archive instead of multiple downloads?


    1. Chris, the plugin Email Before Download is specifically listed as working with Contact Form 7, so I don’t know if it would integrate with any other plugins out of the box. Visual Form Builder and Contact Form 7 have a bit different backend architectures so you probably won’t have much luck getting Visual Form Builder and Email Before Download to work together.

  8. hello,

    I am newbie and I have a problem with the “Email before download”, although plugin works Pdf link is in vertical format. How can I fix it?


    1. Hi,
      Could you be more specific about CSS? can I use the style.css and how? My theme is customizr.

      Thank you

    2. Hi,
      I have created a child theme and the style.css file contains some changes. When I used this file to change the vertical text of link it did not work. (I took ready html code from the web) can I use child theme and simple custom css plugin at the same time?

      Also at the settings of “Email before download” plugin there is “Inline Link Custom CSS” is that useful to make changes at the link format?
      In my opinion the letters of text link look to be greater than there are and the word is split.

      Thank you

    3. Yes, you can use a child theme and the Simple Custom CSS plugin at the same, however, if the CSS code isn’t working in your child theme then it probably won’t work in the plugin either. Most likely the real issue is the code you copied from the web doesn’t correctly apply to your form. You need to either pay a developer to solve your CSS problem or you need to go through a full CSS tutorial to learn CSS to fix your issue. Copying little bits of code when you don’t understand CSS very rarely solves anything.

  9. Thank you for this useful tutorial, Gen. Do you know if it’s possible at all to have the link sent by email point to a download page rather than a straight download file? It would be nice to direct the customer back to the website 🙂

    1. This setup is for a direct download link.

      If you are looking for a download page on your site to be sent to people, then you drop the fancy setup and just have a simple contact form 7 with an email to the visitor telling them the URL of the download page. Then you add your download on that page.

  10. Hi, great tutorial but unfortunately i can not get it to work. I am offering multiple downloads to be selected by user. I am testing with 2 and when email is input, the download file names appear side by side as one link and open in a blank page with nothing on. Here is the code

    [email-download download_id=”556,559″ contact_form_id=”562″]

    the file names appear under the send button as


    instead of

    d/load1 []
    d/load2 []

    I have put this code into a widget into the footer and contact form works fine apart from that little glitch. I just want the .pdf files to auto download on link click or view.
    I have checked file name/paths and all ok.
    Contact form is all ok.
    What am i doing wrong ?

    best regards

    1. Everything you entered looks fine. My guess is that you have a theme or plugin conflict going on.

    2. Hi Gen,

      I saw on a previous forum that the problem is with contact form 7. It was the input fields that was the problem. You can not change the alias for the field i.e

      Your Email (required)
      [email* your-email]

      Can not be changed to

      Your Email (required)
      [email* email]

      The ‘your-email’ can’t be changed which is what i was doing and i also forgot to put a space in between the ebd and the / . works fine now, thanks again for the tutorial 😉

      best regards

    3. Thanks Steve,

      i did everything correct except
      “i also forgot to put a space in between the ebd and the / .”
      Thanks a lot , you save my time.


    1. You need to put a file path in. You made a download but you never gave it a file to be downloaded.

  11. i want to change the email the client receives that contains the link to down load file from WordPress to my own

  12. TY for the great tutorial.
    Everything works perfect here but… is there any way to list the titles of the downloads instead of its id’s in the field “edb_downloads” in the table with database info ?

    1. IDs are guaranteed to be unique, while titles are not. So you must used the IDs.

  13. Very good and useful tutorial! Thank you. I have a question though. In your screenshot ‘Viewing Database Info’, I can see the fields ‘your-name’ and ‘your-email’. However I don’t see it in my WordPress backend. That is I see all fields except for those two…Possible, there were some changes to the plugin?

Leave a Reply

Your email address will not be published. Required fields are marked *