Campaign automatically processed new subscribers

Can anyone explain why a campaign that had been processed with the default schedule setting would re-process new subscribers that had been added to the subscriber list that it used?

My manager was not happy when a test campaign that originally went out to just 3 people started being emailed out to over 4000 subscribers!

My understanding is that there are three ways that you can achieve this…

  1. set the campaign information to requeue in the schedule tab
  2. use the AutoResponder plugin
  3. use the Segment plugin using a date attribute

Is this not the case?

The other thing that baffles me is that the new campaign process did not start until well after the additional members had been added to the subscriber list. Fortunately I was around to abandon the campaign part way through (although the fist 1000 went out)

@Geoff Possibly someone requeued the campaign on the Campaigns page, that is easily done.

You might want to reduce the interval for the finish sending time, which defaults to 6 months. Maybe make that a day or so, but long enough for a campaign to complete sending.
Then if someone does requeue a campaign then they would also need to change the finish sending time as well for the campaign to be sent.

// Message Age. The Scheduling tab has an option to stop sending a message when it has reached a certain date.
// This can be used to avoid the campaign going out, eg when an event has already taken place.
// This value defaults to the moment of creating the campaign + the number of seconds set here.
// phpList will mark the campaign as sent, when this date has been reached
// 15768000 is about 6 months, but other useful values can be
// 2592000 - 30 days
// 604800 - a week.
// 86400 - a day
define('DEFAULT_MESSAGEAGE', 15768000);

Hi Duncan,
I agree that there may be some low level tweaking that could be done, but I would not want to use that approach if it can be avoided. The default phpList system should handle this correctly.

The only person using the system in the last week is me, and I have not requeued any of the campaigns that had been completed.
The only thing that had been updated was the subscriber list used by the completed campaign (using the csv import process)

Is it possible that a campaign could run many times during the same day/week when using the default schedule tag values, without being requeued?
If so, this would have major implications in the approach I was expecting to be able to use.

add subscribers to list mylist

create a campaign using mylist
queue the campaign

job will be run automatically via Cron, wait for completion email

clear the list mylist,
add new subscribers to the list mylist,

copy the sent campaign (which will still be using mylist)
edit the message
queue the campaign

job will be run automatically via Cron, wait for completion email


I would not want the first message to be sent out again to the new subscribers!

Create a different subscriber list each time.
By re-using the same list you are re-using the Id and that is the problem

Hi sculptex,
doesn’t that sort of defeat the purpose of using subscriber lists if they can only be used once !
The whole point of them is to be able to subscribe/unsubscribe to a list, and then send new campaigns out.

if you process the campaign using a cron job, and you add new names to a list that it was sent to, and the stop sending date has not passed, the cron job will send to new names on the list. (this is following the instructions the user setup).

it is possible to put a stop sending date closer in, which would tell the cron job that it should not send that message to that list because the sending window has ended.

Hi Dan,
This seems to confirm what DuncanC said earlier.

What happens if the Stop sending after time is too short?
Would the job be abandoned part way through?

If this is the case I would always have to amend the schedule tab for every campaign and allocate some amount of time for the process to be completed…
I would then have to restrict the use of a list to be further apart than the limit I had set

I would like to be able to default the schedule settings, and for the campaign to just run once.

Does the – do not requeue option process need to be corrected to enforce that the campaign only runs to completion once by default?

not really, it is a different way of looking at it. you are basically treating the subscriber lists as disposable, in which case why not just create a new one each time? (delete the old one, not just the subscribers in it). having subscribers being able to be automatically added to a campaign after the campaign has been queued is potentially a useful feature, so that is not going to be removed any time soon.

I might be mistaken here - but isn’t automatically adding to a campaign after the campaign has been queued dealt with by requeueing the campaign via the schedule.

A campaign that is not set to be requeued should by definition only run once.
In my opinion this is a bug in the process.

@Geoff Can I suggest that you try to repeat the steps that you think you took, to see whether the same problem happens? There seems to be three possibilities as to why the campaign was sent to the second set of subscribers:

  • the campaign was requeued by mistake
  • the campaign was requeued automatically, such as by the requeue setting or by the autoresponder plugin
  • the first sending of the campaign had not actually finished when you imported the new set of subscribers. phplist would then continue sending to the new subscribers.

Unfortunately phplist does not log most actions, such as requeuing a campaign. All you have is what is in the event log and the user history to see in what order events actually happened.

There might be an obscure bug somewhere, but phplist doesn’t automatically requeue a campaign just because you have imported subscribers into a list. if it did then the problem would be happening all the time.