Import records into Target Lists for "Suppression by email address"

Is it possible to import a list of email addresses and create a “Suppress by email address” list for a campaign WITHOUT first creating Contacts and running a Report to generate a Target List using the Wizard?

I have looked at existing entries in the forum and it does not seem like what I am trying to do is possible in SuiteCRM but in case things have changed, I wanted to ask.

I am on SuiteCRM v7.12.8 on Debian 11 (and another on CentOS) - waiting to update to 7.13 based on some compatiblity checks

I know how to add items to a Target List via Reports or List Views

I am ?hoping? there is a way to Import records to a new Target List so I can use the new Target list as a “Suppress by email address”

I looked at and tried the solution provided at

but it did not work for Target Lists (ProspectLists)

We run fund-raiser Campaigns and send “reminder” emails to buy a ticket - preferrably only to those who have NOT yet bought a ticket.

When we update the Accounts and Contacts by Importing records of the fund-raiser trnsactions, we go through a very involved “cleansing” process to ensure we are not creating redundant records due to someone entering different spelling for an Account or Contact. For example Joe Bloe not Joseph Bloe or Company Ltd not Company Limited.

Since the cleansing process is very manual, we want to do the cleansing and importing once, when the activity is complete.

But in the meatime, we want to suppress reminder emails to those who have already bought a ticket - and we have their email address.

So we would like to just import a list of email addresses we want to Suppress from a “reminder” campaign email by just importing the list of email addresses for purchasors of tickets.

We cannot therefore run Reports to see who has already bought a “Product” since the purchase transactions are not yet entered - and will not be until the campaign is completed.

So, is there a way to import a list of email addresses and create a “Suppress by email address” list for a campaign WITHOUT first creating Contacts and running a Report to generate a Target List using the Wizard?

I need to send the reminder email out today so have created a (rather kludgy) work-around that lets me do what I want and I’ll document it below.

I apologize for the bad formatting; I do not know how to do multi-level bulleted lists in this forum

If anyone sees a problem with what I am doing, please advise.

If anyone has a better way, please advise. I am not a fan of kludges but could not figure out another way.

We call our SuiteCRM system a DMS - Donor Management System

If you are running a fund-raising campaign with multiple requests for funding, you do not want to ask for funding from someone who has already donated. To prevent this, create a “Suppression List” of those who have already donated to that campaign, and when sending future emails, include the "Suppression List’ to keep those people off the new email distribution.

The normal way to create a Target List (any of the 3 types: Default, Test, Suppression) is to select from existing Accounts or Contacts by filtering them or by running a report to select them after they have “purchased” a Product.

Because we take such care when importing Accounts and Contacts (as we should), we try to limit the number of times we import new Accounts/Contacts and FundRaiser results. We wait until the Campaign is complete and then “cleanse” and import everything at once. So we will not have the purchase history to use for selecting Accoutns or Contacts to put into the Supression list.

SuiteCRM is not setup to allow direct importing of emails into any Target list, including a Suppression list, so we need a work-around to enable quick, mid-campaign creation of / addition to a Suppression list.

Fortunately, SuiteCRM does have options that let us create a kludge which lets us accomplish what we want.

SuiteCRM has a hierarchy of potential and existing customers (in addition to Accounts):

  • Target

    • A potential customer with whom you have no existing relationship. The Target may or may not be a legitimate opportunity for you but you somehow captured enough contact information that you are able to reach out to them and qualify them for future activy, if appropriate.
    • Targets could have been acquired by downloading attendees from a trade show, or some other source that is not personal.
    • You could have a very large Target list since they are not qualified and not yet assigned to a person for follow up.
    • Our DMS does NOT use Targets - which gives us an opportunity for creating Suppression lists.
  • Lead

    • A potential customer with whom you have no existing relationship but you know enough about them to believe (maybe incorrectly) that they have the potential to be a customer.
    • Usually you would have aq limited number of Leads since the expectation is that Leads will be assigned for follow-up by someone on your team.
    • Our DMS does not use Leads (yet) but we may use them in the future to integrate with a ContactUs form on a web site. Therefore, although we COULD use Leads as an opportunity for creating Suppression lists, we will not, reserving their application for future use.
  • Contact

    • A person who we have, at some point in the past, established a relationship.
    • Our DMS does use Contacts so this is not something we should use for “artificially” creating Suppression lists. We can include Contacts in a suppression list - once we have data in the system to use when filtering Contacts, but that is not a mid-campaign solution when we do not yet have the relevant data.

To clarify, the terminology used by SuiteCRM can be somewhat confusing. We have the above three types of potential customers, one of which is called a Target. We also have a thing called Target Lists which can contain Targets, Leads, Contacts and Accounts. So be careful when reading and following these instructions to be using the “Targets” OR the “Target Lists” modules.

We use Target Lists for our DMS.

We do NOT use Targets in the way SuiteCRM has defined them. Because we do NOT - in normal DMS operation - use Targets in our DMS, we can use Targets to quickly create Suppression lists in the middle of a campaign without needing to thoroughly “cleanse” the data each time. We just need Name and Email.

To use Targets for creating Suppression lists mid-campaign:

If you are creating the initial Supression list for a Campaign - as opposed to updating it for the second, third, … “reminder” email - make sure to delete all existing Targets first, so your Suppression list will use current information
SuiteCRM → Targets (list view = View Targets) → Select All (left Dropdown) → Bulk Action → Delete

Create a .csv file containing three columns of data with each row identifying someone who has already “purchased” a “product” from the campaign

  • First Name
  • Last Name
  • Email Address

If the purchase was made by an Account, get the Primary Account Contact and include them in the above list.

Import the contents of the .csv file into the Targets module

  • SuiteCRM → Targets → Import Targets → (follow the Wizard)

Make sure choose the “Create new records only” for the first import to the Targets

Create a Suppression Target List (Not required if Updating an existing one)

  • SuiteCRM → Target List → Create Target List
  • Name: {Open-text name}
  • Type: Suppression List - By Email Address

Populate the Target List (or update - can import duplicates and will NOT create redundant entries)

  • SuiteCRM - Target List → View Target List → Click on List Name
  • Click on Targets subpanel to expand it
  • Click on the Create dropdown icon and choose “Select”
  • Click on the left icon and choose “Select All”
  • Click the “Select” button

When creating the reminder campaign, make sure to select, as a Suppression List, the list you just created.

Just a suggestion, a trick that might be useful.

Whenever I do imports, I always include a field with a constant, unique value, so that I can later recognize all the imported rows (and only those). For example, you can add a custom field called importID and put a unique number there for each import.

Since I am lazy, and I dislike complicating the DB, I normally just reuse an existing field that I am not otherwise using. For example, when importing Targets there is a field called “Fax”, which, guess what, I am never gonna need. So if I put a “abcd” in there for all records in a certain import, I can later use that value to filter.

This way, without needing to clear out all Targets, I can still run an import, and then delete all those rows if I notice I want to re-do it for some reason; and I can filter it to use specifically those rows in a target list.

1 Like