Free Email Marketing How to set up Email Marketing Campaigns For Free Email Marketing Setup Guide
Email marketing is a must have for any business with an active customer base. Most email marketing services like MailChimp or Active campaign charge $70/mo – $100/mo plus for basic services and don’t always maintain great deliverability standards.
This combined with the effort needed to create the actual email content, segment audiences, and monitor responses / bounces can make the process less advantages compared to setting up Google Ads Campaigns.
This guide is going to walk you through how to set up email marketing with a free to use system (Mautic) and only requires that you have a web hosting account (setup detailed in this article), a domain, and control of your DNS.
Setting up a VPS is important. A standard web hosting account will not be enough to handle the workload needed for managing multiple marketing automation campaigns. We recommend at least 2GB of Ram, and 20-40GB of storage.
If you’ve never used a virtual private server before, it can be a little intimidating, but we are going to cover it all the way though.
First, you need to decide your hosting provider, AKWMS, offer VPS hosting and we can even pre install the needed services. Click here to start the process.
If you would rather do all the work yourself and go for the lowest dollar option, we recommend digital ocean. Once you’ve signed up for a digital ocean account, create a new droplet by clicking the green button at the top of the page.
Select “Droplets”
Ubuntu (18.04)
For the plan, select Basic and choose the option with a minimum of 2GB/ 1 CPU.
Once the droplet is done setting up, we need to login to the console to begin configuring the server for our automation platform (Mautic)
From the droplet menu, select “Access” >>> “Launch Droplet Console”
This will load a Black console window, which is the main terminal for the server you just created.
For the next 10-15 minutes, you will be copying and pasting a series of commands from below.
dpkg-reconfigure tzdata sudo apt -y install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update apt install apache2 libapache2-mod-php7.4 php7.4 unzip php7.4-xml php7.4-mysql php7.4-imap php7.4-zip php7.4-intl php7.4-curl php7.4-gd php7.4-mbstring php7.4-bcmath ntp -y
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.5/ubuntu bionic main' sudo apt update sudo apt install mariadb-server
This next command is going to open a file on that is created on your server and allow us to edit the contents of the file.
sudo nano /etc/apache2/sites-available/mautic.conf
Once the file is open, paste the following:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html/mautic ServerName ENTER THE DOMAIN You WANT TO USE FOR MAUTIC <Directory /var/www/html/mautic/> Options +FollowSymlinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Exit the edit screen by holding the CTRL and X
The next prompt will ask you to confirm by typing Y
Then just hit enter to return to our previous screen.
apt update && apt upgrade -y sudo apt-get install python-certbot-apache certbot --apache -d enter the domain you are using sudo a2ensite mautic.conf sudo a2enmod rewrite sudo nano /etc/php/7.4/apache2/php.ini
This is going to open up the edit screen like we did before, but this is a much larger file. You can use CTRL + W to search similar to using CTRL + F
Edit the following values to match:
file_uploads = On allow_url_fopen = On short_open_tag = On memory_limit = 256M upload_max_filesize = 100M max_execution_time = 300 post_max_size = 200M
Then CTRL + X >>> Y >>> Enter
sudo systemctl restart apache2.service
sudo mysql_secure_installation
The next prompt is going to ask you questions one at a time. Here are your answers
Enter current password for root (enter for none): Just press the Enter Set root password? [Y/n]: Y New password: Enter password Re-enter new password: Repeat password Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y sudo systemctl stop mariadb.service sudo systemctl start mariadb.service
Now we need to create a database to store…well pretty much everything. This part does cause people some headache if you run into any issues just manually close the window and re open (this has solved like 90% of the support tickets we get)
CREATE DATABASE DBNAME; CREATE USER 'DBUSER'@'localhost' IDENTIFIED BY 'Make A Password'; GRANT ALL ON DBNAME.* TO 'DBUSER'@'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;
If you get denied permission on any of these just retry with the sudo command right before
mkdir /var/www/html/mautic cd /var/www/html/mautic sudo wget https://github.com/mautic/mautic/releases/download/4.0.0/4.0.0.zip unzip 4.0.0.zip rm 4.0.0.zip sudo chown -R www-data:www-data /var/www/html/mautic/ sudo chmod -R 755 /var/www/html/mautic/ sudo systemctl reload apache2
Congrats, you just configured a server. You’re kind of big deal! Done Close out the console window just yet, we will need to come back here after we finish the Mautic install to set up cron jobs.
Now that you have the server configured and Mautic installed, you need to point a domain or subdomain to the server. If you are using digital ocean for your VPS, head on back to the droplet page and select the “Networking” option from the left menu.
Copy the “Public IPV4 Address” and use this for the DNS Entry (These can be made on the platform where you registered / purchased your domain)
The steps for adding a DNS record are different for each registrar, but the record you will need to add is called an “A Record”. To use a subdomain just enter the first part of the subdomain in the name field, for example, if your domain is “stuff.com” and you want a subdomain that looks like “mautic.stuff.com” you would only enter “mautic” into the name field and the IP address for the server.
Adding DNS Records For Godaddy
Adding DNS Records For Google Domains
Now that you have the domain pointing to your new Mautic installation (it might take time to propagate, be patient) navigate to the domain and follow the installation steps.
Go to the subdomain you just setup for Mautic. The page should look like this:
If domain is showing the standard apache page enter:
rm /var/www/html/index.html
To delete the page and try again.
Assign the Database and Users we created
Create a user for the system ( The email entered will be the same email used for outbound emails)
Configure Your Email provider.
There are tons of options here, and some are a little easier to use and set up. If you only plan on sending a few emails (less than 100 per month) you can use a Gmail or Microsoft account, anything over 100 emails would require the use of a bulk email service like SendGrid or amazon SES. For the purposes of keeping cost as close to $0 as possible we recommend using Simple Email Service provided by amazon. Amazon SES plans allow up to 60k outbound emails per month for less than $1. To use SES just sign up for an amazon web services account.
https://aws.amazon.com/free/ login and search for SES in the search bar.
In order to send emails from your businesses domain you need to set up a verified identity by selecting the “Create Identity” option
The next screen is going to ask you to choose between a domain and an email, our recommendation is going to be to choose the domain option as it provides you the ability to make more changes to improve your emails deliverability. Enter the domain that you will use for outbound emails.
Next you will need to add some additional DNS records to complete the verification process. Just copy and paste the records given and wait 10-15mins for the verification process to complete.
Once the configuration shows successful, you can create your mailing credentials
Navigate back to the account dashboard
And look for the option “Create SMTP credentials”
Create a descriptive name for your SMTP credentials just in case you create more down the road and need to identify who is sending what.
The next screen will display the credentials needed to set up your mail service within Mautic. Download a copy just in case.
Now head back to the Mautic installer page and enter the credentials that you just made
Now that Mautic is set up, and your email service is configured you can login and test the email.
Create a contact in Mautic that you can send a test email to using the quick add option from the top left-hand corner of the screen.
Send the email and confirm that everything works as needed.
If the email is not received and is also not in the spam folder, there may be an issue with the mailer configuration that was set up.
To get more details on the exact issue, navigate to the configuration settings of Mautic by clicking the gear icon in the top right of the screen, and selecting “Configuration” from the right-hand menu
From the configuration screen choose “Email Setting” from the left hand menu and click the “Test Connection” button in the middle of the screen. This should provide more information about any errors your system is encountering.
The test email worked, and you can add as many contacts as you like but you will not be able to schedule your automations without first configuring cron jobs. Cron jobs are used to set timed intervals between computing actions such as checking to see how many emails need to be sent out, or how many contacts need to be added to a campaign, etc.
To set up these cron jobs, we need to head back to our server console and start copying and pasting
nano /usr/local/bin/mauticcrons.sh
#!/bin/bash MAUTICCONSOLE="/var/www/html/mautic/bin/console" if [ -z "$(ls -A /var/www/html/mautic/var/spool)" ]; then php $MAUTICCONSOLE mautic:broadcasts:send --limit=50 php $MAUTICCONSOLE mautic:campaigns:rebuild --batch-limit=300 php $MAUTICCONSOLE mautic:segment:update --batch-limit=900 php $MAUTICCONSOLE mautic:campaigns:trigger php $MAUTICCONSOLE mautic:import --limit=500 php $MAUTICCONSOLE mautic:webhooks:process php $MAUTICCONSOLE mautic:reports:scheduler php $MAUTICCONSOLE mautic:maintenance:cleanup --days-old=365 else php $MAUTICCONSOLE mautic:broadcasts:send --limit=200 php $MAUTICCONSOLE mautic:emails:send --message-limit=200 Fi
Remember we are editing the contents of the file we just created, once you’ve pasted the above lines CTRL + X >>> Y >>> Enter
crontab -e
* * * * * /bin/bash /usr/local/bin/mauticcrons.sh
This is going to set the script to run every minute, if you notice a slow down in your Mautic interface that causes problems you can head back here and mess with the * * * * * values as needed.
You can import as many contacts as your server has space for, there is no limit. To make things easier, Mautic even has integration plugins with popular CRMS and other marketing automation platforms to help import contacts. To view these integrations, add /s/plugins to your Mautic URL and click “Install/Upgrade Plugins” to view them all (they are free)
Manually add contacts in bulk by importing a CSV with all of your contact data. IF you have formatting errors with uploading a CSV try copying the contents of your file into a google sheet and exporting a CSV from the google sheet (this is pro tip)
If you have certain data for fields that might not exist in Mautic you can create custom fields from the settings menu of your Mautic installation
Make sure to do this before you start a bulk upload.
Email templates can take a long time when you are focusing on design. As a marketing agency that sends out over 100,000 emails per day on behalf of our clients we strongly recommend that you just choose a basic “blank” design. The main reason for this is that most of the visuals you include in marketing emails are never seen by the reader because of security precautions put in place by mail service providers like yahoo, gmail, etc.
If you still choose to add some visual flair to your email templates, there is an almost zero limit on what you can design within Mautics template designer.
To get started select “Channels” >> “Emails” from the left-hand menu and the “New” button from the upper right-hand side of the screen.
Then select the option for “New Template Email”
The next page will allow you to choose from all the templates installed with Mautic.
Choose your desired template, add a subject line and an internal name for easy reference, then start building the content and design by entering the “Builder”
Once you are in the template builder, you can change text and swap design elements effortlessly. Once you have completed the perfect template, click the small “x” in upper right-hand side of the screen.
Now double check that the subject line and all the other email settings are correct and then “Save and Close”
Repeat this step to create all the emails you want to send and schedule within a single campaign.
Now that we have the emails setup we need to put our contacts into groups that we can send specific content to. For example, you might have a segment for “Past Clients” and another segment specific to the products they bought. A Single contact can exist in multiple segments and you can use segments to both include and exclude contacts from a campaign. A good example would be: include “Past Clients” exclude “Clients Not Satisfied” for an ecommerce brand offering discounts in the emails.
To build your segment, navigate to “Segments” from the left panel and click “New” from the upper right-hand side.
Add a descriptive name for your segment and then select “filters” to help Mautic add contacts as members.
Segment filters can be complicated but a good stating rule is to only add members to the segment if we have their email, and they have not chosen to unsubscribe from our mailing list (Mautic has a hard stop to prevent email unsubscribed contacts but we like to be extra safe)
Once you have completed the filters select “Save and Close”
It will take a few minutes for contacts to be added to your segment and if you tire of waiting, you can always bulk add contacts from the contact view.
Mautic campaigns are feature rich, and incredibly easy to set up. The drag-and-drop builder gives the ability to set conditions, rules and time delays for your email campaigns.
To start building your campaign, select “Campaigns” from the left menu, choose a name and select “Launch Campaign Builder” to start building the content of your campaign
The builder gives you two options for deciding how contacts are enrolled in your campaign. In this example, we are going to choose the segment that we setup in a previous step.
After we choose the correct segment, we need to choose our first step, because we already defined the members of our segment with a filter we are going to start with an “Action” but you can narrow down your campaigns ability to send additional conditionals, or decisions.
The action we are going to work with is “Send Email”
The Send email options are pretty self explanatory. In this scenario, we expect contacts to be added to campaign at different times so we want to make sure emails will be sent at a time when they are most likely to be read.
Once you are ok with all the settings select the “add” option. From there you can choose additional steps, decisions, and conditions. Then “Save” >> “Close Builder”
Now your campaign is set, and emails will be sent at the time you scheduled.
You can monitor the progress from the “Actions” menu.
Your Free email marketing system is ready to use!
Mautic is pretty outstanding and one of the more powerful automation platforms in the market. As an agency with services for Salesforce, Zoho, and HubSpot development, we often need features that are only provided in Mautic. Because Mautic is an open source software, you are free to change or add any custom features you need. If you need help with extending your Mautics functionality, adding custom branding, or upgrading your Mautics hosting server, reach out to AKWMS.