0

I'm using AutomateWoo plugin to send some email marketing automation such as win back customer (sending discount coupon code to customers who did not make any purchase for XX days).

It works like a charm, except when I have a lot of customers who meets the criteria of the workflow's logic. For example, if I have 300 orders on my website in one day, and none of those customers made any new purchase for 300 days, then AutomateWoo will create a 200 emails queue for those customers. Then, the email will start to send out in a really fast/quick rate.

The bunch of emails sent out by AutomateWoo in a short period of time causing problems because:

  1. I'm still using my hosting SMTP email service with a limit of 200 emails per hour. Meanwhile, AutomateWoo trying to send those 300 emails in minutes! This result in SMTP blocking and my emails did not sent out to the end customer.
  2. I'm using this email to trigger Webhook (Mail Hook) on Integromat for some other automation, with a free plan I only got 10 queue capacity in the mail hook. When the queue is full (more than 10 email coming in a short period of time), rest of the emails will get ignored.

My main goal is to "slow down" the rate of email triggered by AutomateWoo to 1 - 3 emails per minute. Because I don't need all the email delivered at the same time. I don't care if it took 3 hours to send out 200 emails as long as it gets delivered and my integromat could catch all of them as a trigger.

I tried to google and did not find any solution, the only thing that I found is how to increase the queue batch size. And I tried to modify it to reduce the batch size from the default 50 to 10 by inserting this code in my function.php as follow:

function eg_increase_aw_batch_size( $default_batch_size ) {
    return 10;
}
add_filter( 'automatewoo_queue_batch_size', 'eg_increase_aw_batch_size' );

But it doesn't seem to work as I still get my SMTP blocked (I'm not quite sure on how to test this quantitatively).

Anybody gives me some advice on what to try?

  • 1
    Hard to comment without seeing your code. Still, at some point, you are shoving data into the system you have devised - can you not pass them in one at a time and add a sleep(30) between them? That would take 2.5 hours to process 300 emails, but, as you point out, time is not of the essence. It should keep your queue size down to 1, and the send rate down to 120 per hour. – wordragon Jun 27 '21 at 04:09
  • Hi, actually I'm not coding it myself. I'm using the standard AutomateWoo plugin in I'm wondering if there's any snippet that I could use to slow the email rate down. If I could not slow down from the AutomateWoo side, do you know if there's an SMTP provider that has a feature to slow down the outgoing email rate? ( my web/AutomateWoo will send out the request at once via SMTP/API and then the SMTP server process it at adjustable speed). – Adityo Ariwibowo Jun 27 '21 at 13:02
  • 1
    I would probably venture into the Woo code and find the send call and throw a sleep after it. Many mail services block high volume traffic to avoid being labelled as a spamming source. It seems that nearly all mail services have such limits, and few frameworks provide that service for their applications. If you have both a queue size limit and a rate limit, sleep is probably the simplest solution. Here is a discussion of better [strategies](https://cloud.google.com/architecture/rate-limiting-strategies-techniques#client-side_strategies), but all assume you can control the flow. – wordragon Jun 28 '21 at 14:36
  • Thanks for the response, since I'm no mean of any developer then looking to venture into the Woo code seems like not the best option. But thanks to your comment I find a better keyword for googling and found this article: https://wordpress.stackexchange.com/questions/328581/throttling-email-frequency I will try the plugin to see if it's working. A lot of people having this issue seems like – Adityo Ariwibowo Jun 28 '21 at 23:58

0 Answers0