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: Import subscribers but do not assign them list membership Delete all the lists a subscriber was a member of (without deleting the subscriber) 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: Their email will be kept on the system and added to a do-not-send list (blacklist) Your phpList system will never send a campaign to them again, unless they re-subscribe If you import their email again (by accident) you will not be able to send them campaigns inadvertently You have a record of when/why they unsubscribed which you can use to improve your campaigns in the future 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. Feedback 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: You must select at least one list when sending You can select several lists or use the all lists function when sending Subscribers will never get the same campaign twice, even if they are on several of the lists you select Lists can be categorized to help you keep organized Lists are not the same as Attributes 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. Add 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 You want subscribers to be able to add themselves to the list using a subscribe page You want subscribers to be able to leave this individual list (but stay on others) You have chosen a list name and description which you are happy to display publicly 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. Feedback You can discuss this chapter here. Adding Subscribers (to Lists) There are three main ways to add subscribers to your phpList installation: copy and paste a list of emails upload a file with emails upload a CSV file with emails and additional data. This chapter deals with each of these methods in three stages: When and why you might use the import method Preparing your data Importing your data Why is (to lists) in brackets? It is important to remember that: Subscribers can exist on the system without being a member of any list In this chapter is assumed that you will be adding subscribers in the form of a list, but you can add them without making/choosing a list if you want to When you add a subscriber to the system for the first time, a subscriber profile is created Adding the subscriber to more lists does not create more profiles, all the subscriber details are saved in one profile no matter how many lists the subscriber is on Deleting the list does not delete the subscribers. 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: Control+C or Right click > Copy or Edit > Copy. 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 control+v Or right click and Paste. 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: One email per line No spaces, tabs, commas etc. You need to save it as plain text (filename.txt) You should only edit it in a text editor such as NotePad, TextEdit or Geany. It is still possible to import this data when there is additional information after the email, for example: test7@example.com 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, test7@example.com, 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 Open the data in a spreadsheet Rename some columns to avoid or utilise phpList system values Save as a csv - make a note of the delimiter. 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 a subscriber's email address changes in your other app, this can be updated in phpList Any changes to subscriber attributes can be updated automatically, for example surname, location, date of last purchase form your store. 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): ID confirmed passwordchanged 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. There are various other options on this page, which all have a description. Generally, it is good to keep the Test Output option checked. Use the Overwrite existing and/or Retain old email options to preserve the data set which should be held safe; it is the source of most up-to-date data. When you have finished filling out this form, click Import. You will now see a page where you can match the data in your file to attributes on the system. Attributes such as Foreign Key and Email will not appear on this page because the system deals with them automatically: all the attribute on this page are new to the system. Click on each dropdown - is the correct attribute already in the list? If not, select Create new one. This will create a new attribute in your phpList so that next time you import similar data the system can deal with it automatically. Problem? If you see something like the image below, where all your attributes are on one line, then you have used the wrong delimiter. You will also see some test data, that will give you a strong indication of whether your import is going well. Each column title from your csv should line up with some data about one of your new subscribers. Problems? If you see anything wrong in the test, do not proceed! Click the Reset import session button to start again, check your delimiter settings and/or get help. A messy import is no fun to fix! When all attributes have been dealt with and you are happy with your test data, click Continue. You will be shown a summary of what will happen when you import. Now you can see that Foreign Key and Email are matched automatically, and all your other attributes will be created for you. If you are satisfied, click Confirm Import. You will see that your subscribers and their data has been imported. Feedback You can discuss this chapter here. Creating a subscribe page A subscribe page usually consists of a short form that a visitor to your website can fill out to subscribe themselves to one or more of your lists. Here is an example: In the example above, the subscriber is asked to input their email address and to confirm it. They can then choose to receive a text version format and they can add their first and last names if they wish. In phpList you can have an unlimited number of pages, combining any set of Attributes, Lists and Languages. Additionally you can use pages in conjunction with scripts to create subscribe forms which integrate more closely with your website. As this is a custom-made process for individual sites we do not have generic documentation about it. Create a page To get started with your subscribe page visit Config > Subscribe Pages. Initially you'll find this page empty, with no subscribe pages to display, although there is a default subscribe page at www.yourdomain.com/lists. The first page you make will replace this default page and later you can set any page as default. To create a new page click Add a new subscribe page. This will open a page called EDIT A SUBSCRIBE PAGE. Customize a Subscribe Page The subscribe page editor is broken into four collapsible areas: General information Select the lists to offer Select the attributes to use Transaction messages These sections will guide you though creating a subscribe page which meets your specific needs. General information The first box edits the titles and text on the page. Enter your title in the Title box first of all. You can leave Language file to use as --default, unless you are creating a page for a language other than the one you use for your installation, for example, if you are creating a multi-lingual system. You can change the text in the intro too. The Header and Footer dialogues are used for html editing, and the default code in them is taken from Config > Settings >  subscription-ui settings. We will discuss this further in the Subscribe page design and configuration chapter. You can edit the text in the Thank you page and Text for button too, however, the standard texts are suitable for most situations so you may wish to just leave the defaults as they are. General Information: HTML or Text The last section of the general information sections is on HTML Email choice. It is very important and it directly affects the quality of your lists and the subscribe satisfaction. You can create a HTML email in phpList, with images and other design elements, and also a plain text version, with just text, no images, colours etc.  Some subscribers prefer only text, they may want plain text for technical reasons, for example for compatibility with assistive software for a visual impairment, or it may simply be a personal preference. If you are planning on sending HTML messages you will want to avoid large numbers of your subscribers accidentally signing up for text only emails. You will have wasted time on a design they will never see and they may be less interested in your mails. It is therefore worth spending time on this section, deciding how you would like to present the text vs. HTML options. The default is Don't offer choice, default to HTML, where the box defaults to unchecked on the subscribe page. Although, you can check any other field. If you intend to send emails in HTML format it is best to make the "path of least resistance" be the signup for HTML. Many subscribers will ignore the box, or may not know what HTML vs. text means. Transaction messages These are the messages sent to the Subscriber based on various actions, such as subscribe and unsubscribe. The defaults are taken from Config > Settings > transactional settings. It is possible to edit these, although the defaults are suitable for most situations. Select the attributes to use This section allows you to choose which attributes, which personal/demographic data, you will ask for from your subscribers on the page. You might ask for generic information like name and city, or something more specific, like shoe size or hobbies. The use of attributes is described in the Attributes and Placeholders chapters. In this example we collected First Name and Last Name only and we did not make either of them required because many people do not wish to give out personal information. We had several other attributes to choose from. The Type: is defined in the attributes editor. The Default value can be different on each subscribe page if needed. Please note that if a customer does not change the Default value when they subscribe, whatever you set it as here will be added to your database. Select the lists to offer This final section allows you to select which lists to offer.  If you select only one list, then the subscriber will not be given a choice. If you select multiple lists, then the subscriber will be able to select which lists they want to join. In this example we chose only one list. Save your new page Click the Save button at the end of the page when you are ready. You will be able to edit the page again later if you want to make a change. You will then be directed back to your Subscribe Pages list. We can now see one page. View your page To view your new subscribe page page click the magnifying glass icon next to it on your subscribe pages list (Config > Subscribe pages from the main menu). Your page will look something like this: Use your page to add a subscriber as an admin One additional functionality of the subscribe page view is to add a subscriber to your database quickly, without needing to go into the administrative interface. If you view the subscribe page while logged in as an adminiatartor,  you will see an additional box: This box allows you to add a subscriber by filling out the form on their behalf, and you can specify if you need to send them a confirmation request or not. This can be useful if you are talking to the new subscriber on the phone, for example. Add an AJAX subscribe box on your website To make it very easy for your subscribers to sign up, and stay on your website, you can add an AJAX form to your website. Step by step 1. Create a subscribe page that only requires the email address to be filled out.This means for HTML Email choice, select Don't offer choice, default to HTML and for Display Email confirmation, select Don't display email confirmation. Make sure the subscribe page has at least one list to subscribe to and do not select any attributes as a requirement. 2. Set the text to show when subscription was successful in your Settings page. 3. Use the following code on your website.
Email
Members of the community forum have provided some useful insights regarding the website AJAX integration. You can find the discussion thread here. NOTE 1: Your subscribers will be automatically added to all the lists that you selected for the subscribe page. The ID of your Subscribe page is the one passed as a parameter in the URL, id=1 in the example's javascript For consistency, the ID in brackets in the list[11] input should be that of your Subscribers list, the one that the Subscriber page is configured for (see Config/Subscribe Pages) If your Subscribe page has attributes, especially required ones, they should be added to your
as NOTE 2: If you already use jQuery on your page, you may not need to load it again. NOTE 3: This functionality has been tested with Internet Explorer 8 and 9 and Firefox 3. In other browsers, or in case of an error, it will redirect to your phpList hosted installation to allow your subscribers to sign up. NOTE 4: The URL used for these AJAX callbacks includes p=asubscribe, not p=subscribe like regular subscribe pages NOTE 5: If test=0 in your phpList config.php file, then all subscribers remain unconfirmed as no confirm mail is sent. NOTE 6: If SMTP settings are incorrect then subscription won't be allowed due to failed confirmation sending, and the AJAX submission will fail regardless of the email address. On the community forum you can also find several topics related to this. All you have to do is search for "embedded  subscribe page" or "website integration". Feedback Discuss this chapter here. Setting up your List Categories When you have more than a handful of lists you will need to organize them into categories. You will be promoted to do this once you create more than 16 lists. You can create categories to help you organize your lists at any time, and so the exact method you should use depends on your situation. In this chapter there are two suggested workflows. Categories are set up before any lists are made (categories before lists). Categories are set up to help organize pre-exisitng lists (lists before categories). You should follow the section most appropriate to your situation. Categories before lists To create your categories go to Config > Settings Scroll down until you find list-organisation settings Enter the names of your categories, separated by a comma. In the image above you can see I have made a list category called Releases, for example. This is because I know I will have several lists about the new phpList releases in the future. NEXT, See the section about Using categories at the bottom of the page. Lists before categories If you use phpList a lot and you are using list segmentation you will soon end up with more lists than you can easily manage without categorising. To start categorising your lists go to Subscribers > Subscriber lists. Then click Categorise lists. If you have no categories at all yet, you will see the following screen: Click  Configure categories. If you already have a few categories you will see a similar screen with the Configure categories button (which you still must click). Create your categories Add your categories, one by one, with commas between them. Click Save Changes. Add lists to categories Go back to Subscribers > Subscriber lists. Click the Categorise lists button. Select the correct category from the drop-down beside each list. If a list is already categorized, it will not be displayed. Carry on till all the lists are matched with a category if possible. If you find a list that does not fit into a category you can keep it in Uncategorized by leaving --Choose category in the dropdown and make a new category later. When you have finished click Save. Then, if you want to create more categories click the Configure categories button at the top of the page again and repeat the cycle. If a list has already been categorised and you want to change the category, you can do this by editing the list from the main lists page. Using your categories Once you have finished setting up categories, they should become part of your everyday workflow with phpList. For example, when you create a new list, you can assign it to a category during the creation stage. In this image we have created a list called Just a list and we can categorize it under "Releases". Also, as a second example of categories in use; when you send a campaign you can look for your lists by using categories too. Feedback Discuss this chapter here. Using Attributes phpList is pre-configured to deal with some data about your subscribers, for example email address, number of bounces (bouncecount) and their phpList ID number: these are called system values. Attributes are used for any other data you want to add to the system about your subscribers, usually demographic information. Some common attributes are Name, Age, Gender and City. Some bespoke examples could be height, annual income, names of pets or kids and favourite genre of book. The attributes you use are entirely up to you to decide. Once you have collected/uploaded attribute data, it can be used to connect to your subscribers more directly and with better precision, by using placeholders and the segment plugin. There are two ways to create attributes: Create them in bulk when you import a csv file Create them manually from the configure attributes page Edit them from the configure attributes page This chapter will explain how to create attributes. How to use them is covered by the placeholders chapter and the segment plugin documentation. Creating Attributes when importing data When you import complex data using the "csv with additional data" method, attributes can be easily created (in bulk) from column titles which are not already listed as an attribute. Do not create new attributes for email and other system attributes, you must map those to the pre-existing system attributes listed in the dropdown. In the image below, five new attributes are being created, and EmailAddress is mapped to Email. Surname and Gender are standard attributes, however, the subscribers' height in Centimeters is more unusual. phpList treats all these attributes in the same way: there are no restrictions on the subject matter of an attribute. Once an attribute has been created, any column headed with the attribute name in future csv files you import will be mapped to the attribute automatically. You will not need to create the attribute again. If there is new data for a pre-existing subscriber, it will be integrated into the subscriber details by using email address or Foreign Key as a reference. In the image below, for example, we have subscribers on the system already, and now have added ShoeSize as a new attribute. Where our new dataset provides a shoe size for a pre-existing subscriber, this new attribute data is simply added to the details. Creating and editing attributes on the Configure attributes page To create or edit an attribute manually, go to Config > Configure attributes from the main menu. From there you can create a new attribute: You can also edit existing attributes: You can, Specify/change the name Choose/change the Type, which dictates the input method on your subscribe pages (see the example edit below) Choose/change the Default Value, which dictates the standard value on the subscribe page (you may need to change this on the Subscribe page editor too) Make the attribute required, so subscribers must give the information in order to sign up (warning: mandatory fields may deter subscribers) Additionally, you may tag them to delete one or more attributes tag to merge several attributes together Example edit 1: changing the type from text line to select In this example we will change the Type of the attribute for ShoeSize, which was automatically created during a CSV file import, from textline to select. First we change the type to select using the dropdown menu, then we click the Save changes button at the bottom of the page. Then we click the edit values button which appears below the Type: dropdown. We can then add all the shoe sizes we want. If you are editing an attribute that already has data in the system, some values may already be listed: if you try to add these again phpList will skip them rather than create a duplicate, so you can simply list all the values you want rather than search through. You can change the order of the values for the attribute. This will affect the order in which they are listed in the dropdown on the subscribe page. In this example the shoe sizes had become jumbled because some were already in the system and some were not,  so we re-ordered them. By changing the order, the choice given to subscribers when they sign up is clearer. Using Attributes The primary use of attributes is as placeholders. Please see the placeholders chapter for information on how to use them. The segment plugin and the attribute select plugin allow you to send emails to subscribers with certain attribute values. Feedback Discuss this chapter here. Using placeholders A place holder is a word in square brackets, for example, [FIRSTNAME] or [UNSUBSCRIBE] which will be replaced with real data, such as the subscriber's name or a unique URL during sending. Placeholders in phpList There are three types of placeholder in phpList: System e.g. [UNSUBSCRIBE] Config e.g. [WEBSITE] Attribute e.g. [FIRSTNAME] In this chapter we will deal with the Attribute placeholders only. We will deal with system and config placeholders in the templating and configuration chapters respectively. Where to find a list of Attribute placeholders When composing a campaign, you can find a list of placeholders by clicking on the information symbol (the question mark) "?" next to the text Compose Message. Any Attribute placeholders will be listed here along with instructions on how to use them. These are generated directly from your chosen Attributes so if you wish to edit them, please see the Attributes chapter. How to use a placeholder in a mail To use a placeholder, you need to type it exactly as suggested in the information, i, box. This will include: an open square bracket the placeholder name (in Capitals, with spaces) and a close square bracket It is also wise to use some fallback words, that is words that will be inserted in place of the data when the data is missing. You can indicate the fallback words with the double percent sign %%. Anything before the %% is the attribute placeholder. Everything after the %% is the fallback text. The fallback text is optional. In this example, the placeholder would either print the subscribers' first name, and where the name is not known, it will print the word Friends. It is important that you test your placeholder before you send your mail, as mistakes are ugly and disconcerting for your subscribers. Set up two test accounts To test your placeholder effectively you will need: one subscriber profile suitable for testing the attribute placeholder. You can use an alternative email to which you have access, where the attribute data is completed another subscriber using an email you have access to, where the attribute data is not completed. You may need to add these emails or edit your existing data to achieve this. You can do all these things from the Search > Search Subscribers page. In the example below I have subscribed myself to the system using my personal email (rather than my work email) and I have filled out my name. And I have another one using my old email address where the attribute data has not been provided. Send a test message Next, enter the two test emails into the Send Test box at the bottom of your campaign Content page and press Send Test. You may need to confirm the emails if it is the first time you have used them. Check the results For the subscriber where the attribute related to the placeholder has data, you should see that data in the email. In this example you can see the name Anna is visible in the place of [FIRST NAME] Where the subscriber has no data for the attribute, you should see the Fallback Text. In this example that is the word Friends. You can now send your campaign as usual. Documentation wiki For additional documentation, you can visit the wiki page. Targeting your campaigns In this example, Ethical Pets are sending out a campaign about a special offer on dog treats.  They are targeting the campaign by only sending it to customers who have previously bought products for a dog. There are several reasons for doing this: It enables more campaigns to be sent overall, which increases the impact of email marketing Most people will receive fewer campaigns, so they are not inundated Campaigns will be more relevant to readers Campaigns are quicker and easier to write, because they only need to be interesting to the target audience and not to everyone It is easier to measure the impact of the campaign In this campaign only 35% of the total number of subscribers were emailed. Without segmentation either a large number of people would have received a campaign with little relevance to them or Ethical Pets would have needed to spend time tying to make the campaign have a broader appeal. The overall consequences of segmentation should be: Happier customers Fewer unsubscribes More motivated marketeers Improved sales/responses to calls to action Improved customer loyalty/retention over time Segmenting your list The method of segmentation depends on, The quality of your data Where and how your data is stored What tools you have to segment it Adding a segmented list to phpList A suggested methodology for adding a segmented list to phpList is: Synchronize your data - upload any new subscribers to phpList Create a new list Copy and paste the segmented emails into the new list phpList will pull in the rest of the data/attributes for you from the subscriber profiles Having synchronized the data by uploading the latest data using a CSV import, Ethical Pets went on to create a new list. In this case a new list Dog category purchasers was created (note: a private list, not public) Then the emails from the prestashop segmentation export were pasted in: The segmented list of subscribers are now all members of the list. Sending to a segmented list The process for sending to segmented lists is the same as sending to large, unsegmented lists. You simply select the list on the Lists tab of the campaign workflow. In this example we have put the segmented list in a category too. Excluding a list If you are sending a lot of mails and there is a chance that subscribers are in multiple segments and receiving lots of campaigns, you could consider using the "exclude" list functionality. For example, if Ethical Pets wants to send a campaign to a list of cat product purchasers just a few days after they sent the email to dog product purchasers, they could exclude anyone on the dog list from receiving the cat related campaign. While this involves prioritizing which campaign is most important, the dog or the cat one, it means that the people who buy both dog and cat products are not receiving too many campaigns in total. Activate the list exclude feature You need to use define("USE_LIST_EXCLUDE",1); in your config.php The line of code and comments can be found in the extended config and copied over. If you do not know how to do this, you can find more information in the manual installation chapter. Using the list exclude feature In this example, Ethical Pets have emailed the cat product purchasers segment but excluded the dog purchasers segment. During sending phpList checks if the subscriber on the cat list is also on the dog list, and if they are, the email is not sent to them. Additional ways to segment a list Here are a few ideas for ways you could segment your lists: Subscriber location Subscriber interests Subscriber demographic (gender, age, shoe size etc) Subscriber actions (purchase, abandoned cart, signed petition, recent comment etc) Subscriber status (new to list, long-time member) Subscriber preference: ask your subscribers how often or when they would like to receive emails from you using an attribute on your subscribe page. Additional benefits of segmentation There are many benefits to list segmentation: You can a/b test aspects of your email, for example the tone/style/grammar of the subject line You can automate transactional messages, for example, messages offering help to customers who abandoned a cart. You can use a recurring campaign for this. You can tailor very specific emails, for example about events, to those who live in the location of those events. Feedback Discuss this chapter here.