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.

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

Plugin Options

There are actually a number of ways to do this now. The first part 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.

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:

  • Contact Form 7 allows you to create simple contact forms which collect as much or as little information as you’d like. These forms can then email the person a link once filled out, redirect to a new page with the download, or display a short message with your download. If you want to save your form fills to your database you need an additional plugin such as Contact Form DB.
  • Gravity Forms 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.
  • Leadin (now Hubspot) allows for simple forms (name & email in the free version), with slide-ins, pop-ups and more. It also tracks where users were on your site on their path to filling out a form and keeps track of those leads in a database. It will also sync with MailChimp.

There are of course many other contact form plugins out there, but after years of trying different things, these are the ones that I come back to time and time again.

Set Up Download Monitor

If you aren’t sure which download plugin to use, I would suggest Download Monitor.

Once you have it 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/Versions and click on Add file.


Here you can fill in the version number (helpful if you update your brochure quarterly) and click on Upload file to add a file. You can either upload a new file or add a file from your existing Media Library.


You will notice the blue bar where it says #1319 — Version n/a (2 May, 2014) — Downloaded 0 times

Take a note of the number after the #. In this case, 1319. This number is needed later. It is the unique ID for this particular download. The nice thing about Download Monitor is that when you upload new versions of your files the ID will not change.

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. Notice that there is an ID field here and the ID is the same 1319.


Create Your Contact Form

Now that you have your download ready, it’s time to create the contact form. I’ll show the steps to go with Contact Form 7 plugin, but of course, you can use a different form option.

Go Contact in your admin Sidebar and click on Add New.


Configure your new contact form with the fields that you would like to capture from the visitor on your site.


Once you have the form set up click on Save.

Note: If you are getting a number of downloads you may want to set up a separate email address just for these form submissions to go to.


Tieing Together Form & Download

Now that you have a download and a form, you want to put together a flow with them. Again, I’ll use Contact Form 7 as my example.

With CF7 you have a couple of options of how you can display the download.

  • Use a thank you page – CF7 documentation details how you can redirect visitors to a thank you page after submitting the form. If you have multiple forms, this can get a little tricky with targeting for the javascript.
  • Display a message – by default after you submit a form, a short success message appears. You can display a link to your download with this success message.
  • Send an email – with the Mail (2) option you can send visitors who fill out your form an email with a download link in it.

Gravity Forms allows for similar options, except that their thank you pages, messages, and emails are easier to setup and allow for more options without any programming skills.

Leadin (now Hubspot) allows for a message to be immediately displayed with a link to download.

Viewing Database Info

If you are using Contact Form 7, then to save your form submissions to the database you’ll need a separate plugin. I generally use Contact Form DB which is available on github.

Now that you’ve set up your page with your contact form, run a couple of submissions on it to generate some data.

When you have some data, go to Contact Form DB in the admin sidebar and you will see your database entries. Here you can see when the person submitted the form, the fields from Contact Form 7 that you setup and the downloads that they selected. This data can also be exported as a CSV file for offline processing (or importing into a mailing list).


Alternative non-Plugin Option

There is, of course, another commonly used method, a mailing list signup form. With popular mailing list providers, such as MailChimp, you can 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.


This tutorial has explained how to let people download materials in exchange for providing an email address and contact info. There are multiple options available to you, and frequently plugins that you already have installed on your site or tools already in your workflow will determine what’s the best choice for you.

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

    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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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,
      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

    2. 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.

  7. 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.

  8. 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. 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

    2. 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.

  9. 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 ?

  10. 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 *