Growing and using complex lists

Understanding Subscribers and Lists

It is important  to understand the nature of Subscribers and Lists in phpList. 

What is a subscriber?

A subscriber is usually someone who is a member of one or more of your lists. They may have subscribed themselves though a subscribe page, or you may have imported their details from another source.

It is important to understand, however, that a subscriber may not be on any list. This happens when you:

What is a subscriber profile

All the data about a subscriber is stored in their subscriber profile.

This profile can be found by searching for their email in Subscribers > Search Subscribers. To see all subscribers search for @.

Here are some examples of the kind of data held in a subscriber profile:

On the Details page you can see information like ID, email address, confirmed or not, blacklisted or not, number of bounces and html or text emails. Some of this information is editable.


By clicking on the Lists tab you can see the lists which the subscriber is a member of, and you can edit this too.


By clicking on the History button you can see all the campaigns that have been sent to the subscriber.


As you can see, the subscriber profile is the central place where all information about a subscriber is stored. This is very different to list membership.

What is a list? 

A list is a way of grouping together subscribers, so you can send them campaigns. However, the list itself does not contain the subscriber details. As you have seen, all that information is in the subscriber profile.

You can view your lists by going to Subscribers > Subscriber lists from the main menu. Next to each list is the number of MEMBERS that list has.


However, if I delete the list, I have not deleted the subscribers. 

Some examples of how this works in practice. 

A useful tool to help understand lists and subscribers is the All subscribers feature, which was added in version 3.0.8. When this feature is enabled (in the config.php file) you can see the total number of subscribers shown alongside your lists.

Let's do some experiments with adding and deleting lists to see what happens to the All Subscribers total.

At the start of our test, the number stands at 11.879. That means we have 11.879 subscriber profiles in our system all together.


If we create a new list, and paste in the emails of some of our subscribers,  we can add these subscribers to the list and send Campaigns to just a sub-section of our total number of subscribers.


The outcome is a new list (in this example with 662 members). However, you can see that the All subscribers total stays at 11.879. This is because we have not added any new subscribers, we have just created a list out of current subscribers.


Now, if we delete the new list with its 662 members,


the All subscribers count does not go down either, it is still 5327.


We can repeat this test, but this time add a mixture of current subscribers (2) and new subscribers whose data we have never introduced to phpList before (8). You can see phpList processes all the lines, imports 8 new emails to the system and marks 2 as duplicates. 


All of these emails are added to our new list, and additionally, our All subscribers count goes up by 8 subscribers to 5335. 


We have added 8 new subscribers to the system, and phpList has created 8 new subscriber profiles for us. If we delete our new list again...


The List is deleted, however the subscriber count stays at 5335. We have only deleted a list, we have not deleted any subscribers.


How to delete subscribers

You should not delete subscribers in most circumstances. If a subscriber wants to stop receiving emails from you they can unsubscribe. Unsubscription means that:


If you are in a situation where you want to delete some subscribers rather than simply blacklist them, for example, to bring the size of your lists down, first try the options on the Reconcile page, for example to remove those with x number of bounces, those with an invalid email and those who are not-confirmed.

The final resort is to get some emails by exporting them (from Export subscribers) and then pasting whichever emails you wish to delete into the bulk delete function. This can be found though the Manage Subscriber page. 


You can discuss this chapter here.





Creating your lists

In phpList you can organize your subscribers into lists. You must have at least one list.  You may find that having multiple lists, that is, Segmenting your list, improves subscriber satisfaction and opens/clicks.

There are several factors to be aware of:

Now that you know the basics, it's time to get started. 

Go to your lists page

Go to Subscribers > Subscriber lists from the main menu. 


This will take you to your SUBSCRIBER LISTS page, where all of your lists will be displayed.

There are two lists by default, test and newsletter.

You can view lists by category, or view lists which have no category by selecting Uncategorized from the dropdown menu.

Screenshot from 2021-11-16 11-34-04.pngAdd a list

Click the Add a list button at the top of the page.



Fill out the details using the guide below to help you.



List Name

This will help you to keep your lists organized and remember what the list is for. If your list is public this name will be displayed on your subscribe pages. If your list is private, the name will be known only to you (and possibly to other people who manage your phpList installation).

Public List

The Public List box should be checked when

If you do not make the list public, it is considered private, and it will not be seen by your subscribers. 

List Description

This information will display on your subscribe pages if the list is public.

Save and repeat 

When you have filled out the page, click Save. You can come back and edit the info again later if you need to. You can create as many lists as you need. 

You will be prompted to add some subscribers to the list. See the next chapters for more guidance.

Search for lists by name

The lists page now includes a field to search for your lists. This saves time on installations with many lists. If you have categorized your lists, the search will be performed on the lists within the currently selected list category.



You can discuss this chapter here.




Adding Subscribers (to Lists)

There are three main ways to add subscribers to your phpList installation:

This chapter deals with each of these methods in three stages:

Why is (to lists) in brackets? 

It is important to remember that:

You can read the chapter about the difference between subscribers and lists for more information.

Copy and pasting

Why and when to use this method 

If your data is very simple, just a long list of emails in a paper or digital document, then this could be the method for you - especially if you are not very confident with file formats.

If the emails are on paper then you could type them directly into the import dialogue, however, it is probably better to type them into a document first.

This is also the method you will use when you create a new list from subscribers that are already on your system.

Preparing your data for this method

Preparation for copy and pasting the emails in is minimal. You may need to do nothing at all.

If your emails are in a text file or a word-processing file, you need to open the file with the emails in, and make sure the data is just a list of emails, one on each line and with no punctuation.

If your emails are in a spreadsheet or csv file you do not need to prepare them. However, if this is the first time you will be adding the subscribers to the system you may wish to use a csv import to allow you to add more of your data to their subscriber profiles.

Importing your data

If your data set consists of a list of emails in a file, like this:


Or a complex data set in a spreadsheet like this, from which you only wish to upload the emails


Then first you need to select them in your document and copy them. This is often done by pressing:

Then go to Subscribers > Import emails from the main menu


Click the copy and paste list of emails button in phpList 


 You will then see the following page: 


First choose a list by ticking the box next to the list name.

You may also Add a list, or tick All Lists. Also, it is best to leave the Check to skip emails that are not valid box ticked. Next, paste your emails into the box, using 



Click the Import emails button.

You will then see the results of your import.


Upload a file with emails 

Why and when to use this method 

If you have a digital list of emails with no other data, and you know how to save them as a text file, then this is the right method for you.

If you have more than just emails in the file and you want to upload all of the information, you will need to use the CSV import.

Preparing your data

Your file needs to be formatted:


It is still possible to import this data when there is additional information after the email, for example: age 23 from Southport likes chips with curry sauce

But, everything after the end of the email will be discarded. Additionally, if you have any punctuation attached to the end of the email, for example,, age 23 from Southport likes chips with curry sauce

then the data will be corrupted because the comma at the end of the email address will be imported as part of the email.

Importing your data

Go to Subscribers > Import subscribers from the main menu


Click Import by uploading a file with emails



You will then see the Import Subscribers From Text File page. 



First choose a list by ticking the box next to the list name. You may also Add a list, or tick All Lists. Then select a file to upload by clicking the Browse... button. Navigate to the file on your computer and click Open. Then click the Import button. 

You will see the emails importing.

Upload a CSV file: emails and some additional information

Why and when to use this method 

This is the method used when you have a spreadsheet full of data, where there might be names, emails, addresses... Often this data will have been exported from another source, such as a CMS, CRM, webshop, database or email address book. 

If you have such data, it is a good idea to upload a CSV file the first time you add subscribers to the system and you are asked to make a list (even though you will only be prompted to copy and paste). From then on, unless you need to re-synchronise or add some new data, you can just use copy and paste to add subscribers to lists.

Preparing your data

When you have emails and some additional information, such as Name and Gender, you need to

Example Dataset for CSV Import

In this example we have ID, title, first name, email address, height in cm and gender, and they are stored in a spreadsheet format (xls, ods or similar).


Data that includes an ID

When you use another application, a blog, webstore, CRM software etc, you may want to keep the data in phpList synchronized with the data in your other app.

phpList allows you to do this accurately by using a foreign key: this means that the ID tag or number used to identify an individual in your other application can also be used to identify a the subscriber in phpList. This means that:

If you wish to use the ID as a foreign key you should rename the column ID (or similar) to foreign key.

Renaming columns to avoid phpList system values

Some words are already used by phpList to describe data: these are called phpList system values. phpList will not allow you to import data from columns in your CSV when certain system values are used as a column title. These columns will simply be skipped when you try to import.

It is common for other software and web applications to use the same system values. Columns must be renamed before the data exported from one app can be imported into phpList. Here are some examples (a full list can be found later in the chapter):


Renaming columns to match phpList system values

Some columns can be renamed to match phpList system values, because those system values are designed to take imported data.

In the example below we rename the column Email address to Email. It is possible to achieve the same thing during import by mapping one term to another.


As another example, the ID column can be renamed to Foreign Key. This allows the data to be put to use in phpList when otherwise it would just be skipped. In this case, phpList would not allow you to map ID to Foreign key during import so this task must be done before upload. 


A list of system values 

Here is a table containing a list of all the system values and how phpList will deal with columns with that name if you try and import them. 


List of system values and how phpList will respond if they are column names.
id Will be skipped
email Will import
confirmed Will be skipped
blacklisted Will be skipped
optedin Will import
bouncecount Will be skipped
entered Will be skipped 
modified Will be skipped
uniqid  Will be skipped
htmlemail Will import
subscribepage Will be skipped
rssfrequency Will be skipped
password Will import
passwordchanged Will be skipped
disabled Will import
extradata Will import (as attribute)
foreignkey Will import
unique_1 (2, 3 etc) or index_1 (2, 3 etc) Will be skipped


Saving the file

Next we need to save the file as a CSV file, a comma separated value file. You should ideally change the delimiter to tab. If it is not tab, you will at least need to be aware of what the delimiter is so you can tell phpList when you import.

Importing the subscribers

First go to Subscribers > Import subscribers from the main menu.


Click the final option for import by uploading a CSV file with emails and additional data.


You will then see the Import Subscribers From CSV Page.


First choose a list by ticking the box next to it. You may also choose All Lists or Add a list.


Next upload your CSV file by clicking Browse..., choosing the file on your PC and clicking Save.


You must also indicate the delimiter, this is what separates each item in your CSV (in place of the column lines). If you are unsure what the delimiter of your file is, you can open the file into a plain text editor such as Notepad. You will see what is separating the items. In this case it is a comma, so we put a , in the Field Delimiter box.