Introduction

Sendex - Email Marketing Application is the easiest way to send email marketing newsletters! Create your brands, add campaigns and monitor progression. Sendex has powerful features to create dynamic lists using different segments. Stop wasting monthly subscription fees and make your newsletter marketing more professional.

Sendex is developed with Laravel, Vue.js & MySQL database. It's easy to install.

Installation

Server requirements
  • PHP >= 7.4.0
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension
  • Ctype PHP Extension
  • JSON PHP Extension
  • ZIP PHP Extension
  • BCMath PHP Extension
How to install
How to install in root directory-
  1. Download the zipped file from CodeCanyon.
  2. Upload the zipped file into cPanel / server.
  3. Unzip the zipped file. Inside the unzipped folder you will get two folders "Documentation" and "upload"
  4. Move all the items from the "upload" folder to the root directory.
  5. Go to your web browser and type “your_domain.name” in the Address bar and follow the easy installer procedures step by step and install the application.
  6. Create the database and remember these things for future usage.
    • database_name
    • username
    • password
How to install in subfolder-
  1. Download the zipped file from CodeCanyon.
  2. Upload the zipped file into cPanel / server.
  3. Unzip the zipped file. Inside the unzipped folder you will get two folders "Documentation" and "upload"
  4. Move all the items from the "upload" folder to /public_html/sub_folder directory.
  5. Go to your web browser and type “your_domain.name/sub_folder” in the Address bar and follow the easy installer procedures step by step and install the application
  6. Create the database and remember these things for future usage.
    • database_name
    • username
    • password
Note: Please remember to show hidden files. There are 2 files named .env and .htaccess which are hidden by default. Remember to upload all files.

Important settings for the app

Few important settings are needed to run the app. Without these settings app can't do some process.
Note: We have two different side in this app. One is global side mostly refereed as App panel another is brand side (Brand panel) which you can find by clicking go button in any brand from brand list of the app.

Delivery settings

Delivery settings is one of the most important settings for the app. Delivery settings mean which settings your app will use to send mail. Most of the mail in app are Campaign mail, user invitation mail, password reset mail, Notification mail.

There are three different place to set up delivery setting in the app.

1. App delivery settings: Settings > App Settings > Delivery

App delivery settings will mostly use for user invitation and password reset mail. Also if you choose mail notification chanel from notification settings then this will also use for sending notification mail. You can find this settings from App panel navigation menu.

2. Global brand delivery settings: Settings > Brand Settings Delivery

Global brand delivery settings mean all brand will use this settings as long as the brand doesn't provide its own delivery settings. This settings will mostly used for sending campaign mail and user invitation mail from Brand panel. In this section you can choose a settings which you saved previously in app delivery settings and save that as brand global delivery setting.

3. Brand Delivery Settings: Brand panel > Settings > Delivery

This settings is brand specific. That means if you don't want use global brand settings for that brand then you can set up your own delivery settings

You have two option to set up delivery settings

1. Mailgun API

To set up Mailgun you will be needing Domain name(Here is how you can add domain in mailgun), API key, Webhook signing key. From name, From email

To track campaign mail status you have to set webhook in mailgun dashboard. The endpoint for the webhook is https://your-domain.com/webhook/mailgun.

You can find the webhook settings in Sending > Webhooks section of mailgun dashboard . Go to domain settings(Sending > Domain settings) to enable click, open tracking from Mailgun dashboard. Mailgun requires a CNAME to your DNS in the domain verification & DNS section which you can find in the dashboard of Mailgun Sending > Domain settings > DNS records

Set up DKIM with Mailgun

Mailgun requires a verified DKIM key via DNS check before a domain can send from its platform, in order to keep your messages as secure as possible. Instead of using a provider’s standard DKIM, you’re prompted to set up verification details that are specific to your domain and are associated with your organization. This keeps your emails easily identifiable by recipients—and it keeps your DKIM records recognizable and changeable for you and your team.

Verify your domain

Add a domain you own and verify it by setting up the DNS record we provide (this is the DKIM record) at your DNS provider. An example is below.

  • 1. Add your domain or subdomain in the Domains tab of the Mailgun control panel.
  • general settings
                    thumbnail
  • 2. Open your DNS provider and add the DKIM TXT DNS record provided. This record can be found in the Domain Verification & DNS section of the domain settings page of the Mailgun control panel.
  • 3. If you want Mailgun to track clicks and opens you can also add the CNAME record.
  • 4. MX records should also be added, unless you already have MX records for your domain pointed at another email service provider (e.g. Gmail).
  • Once you’ve added the records and they’ve propagated, your domain will be verified. Note: it can take 24-48 hours for DNS changes to be verified.
  • Source: Understanding DKIM: How It Works and Why It's Necessary
2. Amazon SES API

Amazon SES needed Api Region, Access Key, Secret Access key, Configuration set name, From name and From email to set up.

To track mail status from SES you have to create an SNS topic. Click here to see how you can create sns topic from management console. After creating topic go to the subscription option at the bottom of the topic. Then click on the create subscription. Choose http or https depends on your domain protocol. Enter the end point. The global end point is https://your-domain.com/webhook/ses and endpoint for specific brand is https://your-domain.com/webhook/your-brand-short-name/ses. To verify that endpoint go to the App panel Dashboard or brand(The brand short name you used) dashboard and you will see a section at top of the dashboard to verify the endpoint. Just click on confirm and that will verify the endpoint for Amazon SNS topic subscription. If you verify the endpoint once for any brand. For the same settings other brand doesn't have to verify. This is useful for global brand delivery settings

Now go back to your SES console and go to the configuration set section from left side menu. Create a configuration set by clicking create configuration set and give the name of your configuration set(You have to provide us this configuration set name while saving the ses configuration) and hit Create Configuration Set button. Click on the newly created configuration set You will see the details page. From the destination menu choose your SNS topic and choose events you want to track, and hit the save button. You also have to verify the email address which you are using as from email. To verify email address login in ses console. Navigate Email address section and click on Verify a New Email Address and verify the email you want to use.

In order to remove via amazonses.com from the mail you have verify your domain to amazon ses. Follow this link to know how you can verify the email address

AWS IAM user have at least access to these AWS IAM policies:
    AmazonSNSFullAccess
    AmazonSESFullAccess
                
Setting Up Easy DKIM for a Domain

The procedure in this section shows you how to set up Easy DKIM for a domain. If you setup Easy DKIM for a domain, then you can start sending email from that domain, even if you haven't completed the procedure to verify a domain.

    To set up Easy DKIM for a domain

  • 1. Open the Amazon SES console at https://console.aws.amazon.com/ses/.
  • 2. In the navigation pane, under Identity Management, choose Domains.
  • 3. In the list of domains, choose the domain that you want to set up Easy DKIM for.
  • 4. Under DKIM, choose Generate DKIM Settings.
  • 5. Copy the three CNAME records that appear in this section. Alternatively, you can choose Download Record Set as CSV to save a copy of the records to your computer.
  • The following image shows an example of the DKIM section.

  • 6. Add the CNAME records to the DNS configuration for your domain. To update the DNS records for your domain:
    • If you use Route 53 as your DNS provider – If you use Route 53 on the same account that you use when you send email using Amazon SES, choose Use Route 53 to automatically update the DNS settings for your domain. Otherwise, complete the procedures shown in Editing Records in the Amazon Route 53 Developer Guide.
    • If you use another DNS provider – Different providers have different procedures for updating DNS records. The following table lists links to the documentation for several common providers. This list isn't exhaustive and inclusion in this list isn’t an endorsement or recommendation of any company’s products or services. If your provider isn't listed in the table, you can probably use the domain with Amazon SES.

    Source: Setting Up Easy DKIM for a Domain

2. SMTP

SMTP needed hostname, port, encryption, username, password, hourly quota, daily quota, monthly quota, From name and From email to set up.

SMTP

How quota works!

  • 1. User can set any type of quota from Hourly, Daily, and Monthly.
  • 2. If user sets only hourly quota to 50 and makes the rest quota 0, then the mail will not send after the 50th per hour.
  • 3. If user sets only daily quota to 1200 and make the rests 0, then mail will send hourly = 25 (1200÷24).
    Note: After division form daily if the hourly count exists then it will send hourly basis, Else it will send daily basis.
  • 4.1. If user sets only monthly quota to 16000 and make the rests 0, then mail will send hourly = 22 ( 16000 ÷ (24*30) ).
    4.2. If monthly quota 700 and rests is 0, then mail will send daily 23 (700 ÷ 30)
    Note: After division form monthly if the hourly count exists then it will send hourly basis, else if daily count exists it will send daily basis.
  • 5. If user sets hourly = 50, daily = 2500 then it'll not be possible to send more than 1200/day regardless of the maximum daily quota.
    But if daily is 600, and hourly is 50, then the hourly could be 600/24 = 25 or 50 max.
  • 6. If user sets all quotas then it will take hourly = monthly / (30 * 24),
    If hourly not exists it will take daily count else it will take monthly count.
  • N.B: This quota distributes among all brands’ campaigns and notification events.

Set up queue and scheduler

Adding delivery settings will not send the mail.

To process campaigns we use scheduler and to send mail and process notification we use a queue.

You need to add one Cron Job for the scheduler and two Cron Jobs for the queue.

Run campaign scheduler
  • 1. Search for the Cron Job in your cPanel.
  • 2. Click and go into the setup page for your Cron job.
  • 3. Select “Once per minute” from Common Settings.



  • 4. Run this command in to the “Command:” field
  • /path/to/php /path-to-your-project/src/artisan schedule:run >> /dev/null 2>&1

    Example:

    /usr/local/bin/php /home/sendexrelease/public_html/Sendex-1.0.2/upload/src/artisan schedule:run >> /dev/null 2>&1




Run Cron Job for Queue
  • 1. Again select “Once per minute” from Common Settings.
  • 2. Run this command in to the “Command:” field.
  • 3. Select “Once per minute” from Common Settings.



  • 4. Run this command in to the “Command:” field
  • /path/to/php /path-to-your-project/src/artisan queue:work --sansdaemon --tries=3 --queue=high

    Example:

    /usr/local/bin/php /home/sendexrelease/public_html/Sendex-1.0.2/upload/src/artisan queue:work --sansdaemon --tries=3 --queue=high




  • 1. Again select “Once per minute” from Common Settings.
  • 2. Select “Once per fifteen minutes” from “Minute” dropdown.
  • 3. Run this command in to the “Command:” field
  • /path/to/php /path-to-your-project/src/artisan queue:work --sansdaemon --tries=3 --queue=default

    Example:

    /usr/local/bin/php /home/sendexrelease/public_html/Sendex-1.0.2/upload/src/artisan queue:work --sansdaemon --tries=3 --queue=default




Usage of App level

Application settings

Settings related settings are listed bellow

General settings

    1. Go to "Settings" > "App Settings" > "General"

    • You can set your Company name.
    • Company Logo is used in you application. Select image of your logo
    • Upload an icon as Company icon of the application.
    • Upload your Company banner of the application.
    • Change suitable Language for application
    • Set Date and Time format and Timezone the way you want to see date/time in your application .
    • Decimal separator, Thousand separator, Number of decimal also can be set.

    general settings
                    thumbnail

Delivery settings

App level configuration will be used for app related processing. For example inviting user, password reset email, Notification etc.

2. Go to "Settings" > "App Settings" > "Delivery"

See Important setting section for information about delivery settings

In app side brand settings section you can choose previously(From "Settings" > "App Settings" > "Delivery") added delivery settings and set that for all brand

Notification

1. Go to "Settings" > "App Settings" / "Brand Setting" > "Notification"

2. You can update settings from here and Also can update the template of notification. You have the following option

  • You can set channels where the notification will send.
  • You can set choose users who will be notified on selected event.
  • You can set choose roles to set these audiences under that roles to get notified.
  • You can set up the template for the notification





When updating template to insert tag into template you have to click on the tag to insert. But for something like url or image you have add them from editor menu. From above screenshot if you want to add the {resource_url} tag to the template. Click on the link option and add it in second input. Add your link header in first input. For {app_logo}, Click on picture from editor menu and add this to the input box

Brand Setting

Here Delivery, Notification are similar to App level settings.

Privacy

    1. Go to "Settings" > "Brand Setting" > "Privacy"

    2. You can change tracking of Email Opens, Clicks and Locations of campaigns.

Custom Fields

    1. Go to "Settings" > "Brand Setting" > "Custom Fields"



    2. To create custom fields. click "Add Custom Fields" button, it will open a modal which reburies custom field type, name and context. If custom field type is 'radio/select' it will ask for options that will be shown as Selectable options.

    3. If you want to show this custom field in datatable then you can check 'Show in datatable' checkbox.


    4. You can edit any custom fields. If the custom field is not used then you can delete that custom field.

Users & Roles

1. Go to Users & Roles.(User and roles are also available for a specific brand)

Users and Roles is an important feature in any application. You may need different roles for different brands. For that you have to create roles as you required and gives them permission to access.



2. Click on Add Role, It will open a modal which requires Role name and permissions for that role



3.You can manage users of any role by clicking on 'Manage User' of that specific role from "Action" column.



4.You can manage permissions of any role by clicking on 'Manage' of that specific role from "Permission" column.

5. Click on Invite User, It will open a modal that requires user email, and role that will assigned to that user. Invited user will get an confirmation email with a link. That link will redirect to a page where user can set their basic information.



6.You can change user status, manage roles, edit and delete of specific users.

Brand Group

    You may have many Brand Groups. All branch setting is here

  • 1. You can create new brand group.
  • 2. Edit brand group name, and also delete.

Brands

  • 1.You will see list of Brands here
  • 2. You can create a new brand. Type a name of brand on name text box. It will recommend some brand's unique short name. Select a short name or change the way you want. One a Brand is been created you can't change the short_name.



  • 3. You can, Edit and Delete any brand by clicking on the specific brand action menu.
  • 4. You can click on 'Click' button or on Brand's name to enter the dashboard of that Brand

Dashboard

  • 1. Count of total campaigns, total subscribers, total brands
  • 2. You can see Total sent emails count, Total deliveries count, Total bounces count, Total open count, Total clicks count, Total subscribers and unsubscribes count. Which is based on all brands gross email logs statistics.
  • 3. You can see Sending rate, Delivery rate, Bounce rate, Open rate, Click rat. which is based on rate of all brands email logs.
  • 4. You can see Campaign Overview, Audience Overview, Last 24 Hours Campaign Overview of all brands.
  • dashboard.png

Usage of Brand level

Brand settings

1. Go to "Settings" > "Delivery" and change it if you don't want to use app level settings provided by admin.

2. Go to "Settings" > "Custom Field" and you can add more custom field if you want more custom fields. These will appear with app level custom fields.

3. Go to "Settings" > "Notification" and you can change the notification audiences for the brand

4. Go to "Settings" > "Api": You will see the api to add subscriber from external resource.


Subscribers

All Subscribers
  • 1. Go to "Subscribers" > "All subscribers" and you can see list of subscribers.


  • 2. Subscribers can be filtered with created date, current status, list which is assigned to subscribers. Also you can search subscribers.
  • 3. You can create a new subscribers. Click "Add Subscriber". Fill at least subscriber email to create a new subscriber.


  • 4.1. You can import subscribers through CSV file. Click "Import Subscribers". Download a sample file. If you want to import subscribers with custom fields then check "Include custom fields" then click "Download" to download the file. Structure your csv in same structure of sample. And choose this file or drag and drop.


  • 4.2. After submitting subscribers will imported into database, If some data has duplicate or missing value or with other issues will raise up within a modal where you can download the subscribers with issues.


  • 5. You can, Edit and Delete subscribers specific action menu. (Note: You can't delete subscriber if it has any interaction with email logs.)
  • 6. You can click and checkboxes then you can perform bulk actions from context menu. You can assign a new list and assign subscribers to that. You can add to blacklist, delete. Make their status to subscribed, unsubscribed. You also can add to lists, remove from lists.


`
Black list
  • 1. Go to "Subscribers" > "Black list" and you can see blacklisted subscribers.


Segments

  • 1. Go to "Lists" > "Segments"
  • 1.2. List of all segments is here, You can filter segments through created date and Number of rules.
  • 1.3. Click "Show" to see the subscribers count of that segment.


  • 2. Go to "List" > "Add Segment". You can create a new segment. You must have to select at least one rule to create segment.


  • 3. You can and Delete segments by clicking on specific segment's action menu.
  • 4. You can click on segments name to view and update the rules of segments

Lists

  • 1. Go to "Lists" > "List"
  • 1.2. All List is here, You can filter lists through created date, Type, and Segment
  • 1.3. Click "Show" to see the subscribers count of that list if it is Dynamic.


  • 2. Go to "List" > "Add List". You can create a new list. You must have to select segment or subscriber.
  • 3. You can view overview of list by clicking on List name.


  • 5. You can and Delete any list by clicking delete action menu.

Templates

  • 1. Go to "Templates" > "Card View"
  • 1.2. From here you can see templates card view, You can filter templates through created date.
  • 1.3. Hover on card then you can perform suitable action
  • 3. You see the overview of template by clicking on List name.
  • 4. You can and Delete template by clicking on specific list's action menu.
  • 5. Go to "Template" > "List view", If you want to see list view of all templates



  • 2. Go to "Templates" > "Add Template". You can create a new Template. You also can choose templates from previous templates you have created.



  • When updating template to insert tag into template you have to click on the tag to insert. But for something like url or image you have add them from editor menu. From above screenshot if you want to add the {unsubscribe_link} tag to the template. Click on the link option and add it in second input. Add your link header in first input. For {app_logo}, Click on picture from editor menu and add this to the input box. One nice little feature is you can have autocomplete for tag inside editor. Start typing tag name and it will give you autocomplete. Example: {brand

Campaigns

    Go to "Campaigns" > "All Campaign"

  • 1. You can see list of campaigns. You can filter campaigns through created date, status.
  • 1.2. You can check campaign recipients, Click rate, Open rate by clicking on "Show" button.


  • Go to "Campaigns" > "Add Campaign"

  • 1. Fill campaign name, Email Subject and campaign attachments and click "Save and Next"


  • 2. Fill Time period, Send email between, Send email at and click "Save and next".


  • 3. Fill audiences. Select subscribers, Lists And then click "Save and next".


  • 4. Choose template for campaign or make template then click "Save and next".


  • 5. If you want to test this campaign, submit a valid email and test. If you don't Submit from confirmation page it will act as draft campaign.

Email Logs

  • 1. List of Email Logs
  • 2. You can preview email content clicking on preview icon on action.


  • 3. You can and delte an email by clicking on delete icon from action menu.

Dashboard

  • 1. Count of current brand's total campaigns, total subscribers, total segments
  • 2. You can see brand's Total sent emails count, Total deliveries count, Total bounces count, Total open count, Total clicks count, Total subscribers and unsubscribes count.
  • 3. You can see current brand's Sending rate, Delivery rate, Bounce rate, Open rate, Click rate.
  • 4. You can see brand's Campaign Overview, Audience Overview, Last 24 Hours Campaign Overview charts here.
  • dashboard.png

Quick start guide

Please log in to the admin panel. Configure Application settings, Important settings

Go to your Brands Click on a brand, It will open that brand's dashboard.

Go to your Subscribers Create/Import Subscribers.

Go to Segments Create Segments

Go to Lists Create a new list with segments and subscribers.

Go to Templates Create a new template.

Go to Campaign Create a campaign step by step.

Language

Language Settings
  1. Go to "resources/lang" directory of the project.
  2. Add a new directory named on your new language.
  3. Copy all the files from "resources/lang/en" directory.
  4. Change "resources/lang/your-new-language-name/default.php" file. Just make the changes to the right sided text in your language. Suppose, you are adding a new language "Portuguese" in this app. So add a new directory named "portuguese" in "resources/lang". Copy all files from "resources/lang/en" directory to "resources/lang/pr". Then change the "default.php" file in this directory. There can be translations from English (such as, "add"=>"Add"). You should change this to portuguese (such as, "add" => "Adicionar").
Update language
  1. Go to "Settings">"Application Settings".
  2. Select your preferred language from "Language Settings" section. Save the changes.
  3. If you would like to change any language, please copy the text from default.php to custom.php.
  4. Please note, we may replace all other files except the custom.php in future updates.
  5. After changing any text, please remember to clear cache from the Settings > Application settings by login as admin.

How to upgrade

  1. From app level Go to "Settings">"Updates".
  2. You can see the next upgrade able version of your application as (if any new upgradable version is available).
  3. Just click the new version to upgrade your application.

Development Guide

Environment configuration
  1. Open your project on an editor. Open terminal and run "npm i". Make sure that Nodejs is installed on your PC. If Nodejs is not installed on your PC Click here to download and install Nodejs.
  2. After successfully installed node_modules, To change something in vue component you need to go through the following steps -
    Steps : Go to resource/assets/js/component (You will find all the component here with specific folder) > Change something in vue component > run "npm run watch" command from terminal (You must have Nodejs install first) > Refresh browser to see the change
Add a new page
  1. For app level, Go to "resources/views/application/views/" directory of the project. For brand level, Go to "resources/views/brands/" directory.
  2. Create a directory and name it similar to your feature.
  3. Add a new blade file with the following code. Make sure to change "default .preferred_title_of_this_page" to your page title which is added in default.php of your language file and change the "app-component-name" to your component name related to feature. (component create process described below) for app level use @extends('layout.app'), for brand level use @extends('layout.brand') adding_app_page
                        .png

  4. Go to "app/Http/Controllers/" make a directory similar to your feature name. Create a controller class like "YourFeatureNameController", which is extends "App\Http\Controllers\Controller". create a function that returns view of the page you created before.
    Like for example:
  5. Go to "routes/" directory, check route files and subdirectories. You can create a .php file or you also can add in existing file which is similar to your feature. and create a route for your page like that-
  6. Now go to "resource/assets/js/app/Component/Views" directory. make a directory related to your feature.
  7. Add a new .vue file. Like for example- Write your desired HTML code inside the component.
  8. Go to "resource/assets/js/app/appComponent.js" file and register your vue component Save your changes. Make sure that your component is compiling successfully.
  9. Now hit your route in the browser and see the new page.
Thank you for using Sendex!
For any kind of help or support, feel free to contact by visiting our profile page.