在mailchimp api中暂时不允许更多注册

Pro*_*omo 18 mailchimp

使用Mailchimp API,我取消订阅列表的用户.然后我立即发送一个新请求,使用Mailchimp API重新订阅同一个用户.

我收到400条错误错误请求:

(...)最近签署了许多名单; 我们暂时不允许更多注册

我等待新查询多长时间?如何解决这个问题?

0b1*_*011 13

TL;博士

5分钟后,1天后,2天后,7天后重试.


(方式太长)版本

我们遇到了大量订阅这个问题,这个(无用的)响应:

HTTP 400 Bad Request
Server: openresty
Content-Type: application/problem+json; charset=utf-8
Content-Length: 301
X-Request-Id: {requestId}
Link: <https://us14.api.mailchimp.com/schema/3.0/ProblemDetailDocument.json>; rel="describedBy"
Date: {date}
Connection: close
Set-Cookie: _AVESTA_ENVIRONMENT=prod; path=/
Run Code Online (Sandbox Code Playgroud)
{
    "type": "http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
    "title": "Invalid Resource",
    "status": 400,
    "detail": "{email} has signed up to a lot of lists very recently; we're not allowing more signups for now",
    "instance": "{instance}"
}
Run Code Online (Sandbox Code Playgroud)

链接的错误,词汇是没有太大的帮助之一:

400

错误的请求

您的请求无法处理.

这是一般错误.

让实验开始吧!

我们从直接调用MailChimp API切换到在我们的数据库中保存所有订阅请求(我承认,我们应该一直这样做).这个表看起来像:

CREATE TABLE `subscribes` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `email` varchar(254) NOT NULL,
  `json` varchar(500) NOT NULL,
  `subscribed` datetime NOT NULL,
  `ip` int(10) unsigned NOT NULL,
  `retry` datetime DEFAULT NULL,
  `attempts` int(11) DEFAULT 0,
  `synced` datetime DEFAULT NULL,
  `failed` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `unsynced` (`synced`,`failed`,`retry`,`id`)
);
Run Code Online (Sandbox Code Playgroud)

然后我们设置一个cron作业来定期检查需要与查询同步的订阅,如下所示:

SELECT `id`
FROM `subscribes`
WHERE `synced` IS NULL
AND `failed` IS NULL
AND (`retry` IS NULL OR `retry` < UTC_TIMESTAMP())
Run Code Online (Sandbox Code Playgroud)

对于每个订阅,attempts递增.如果订阅有效,synced则使用当前时间戳更新.否则,retry将根据值设置为将来的日期attempts,或者failed如果我们用完了尝试,则设置为当前时间戳.

初始延迟(在最近的尝试之后)如下:

  • 5分钟
  • 1小时
  • 6个小时
  • 1天
  • 2天
  • 7天

如果订阅完全重试这些延迟,则需要10天,7小时和5分钟.

我们目前只有大约3个星期的测试时间,但它产生了有用的结果,所以我想我现在在这里发布:

after last | after first | % subscribed
-----------|-------------|-------------
-          | -           | 73.45%
5 minutes  | 5m          | 73.61%
1 hour     | 1h 5m       | 73.61%
6 hours    | 7h 5m       | 73.61%
1 day      | 1d 7h 5m    | 78.43%
2 days     | 3d 7h 5m    | 96.15%
7 days     | 10d 7h 5m   | 99.49%
Run Code Online (Sandbox Code Playgroud)

较短的延迟可以帮助解决网络错误或MailChimp api的临时问题(这是相当不常见的),而较长的延迟(1天和更长时间)解决"暂时不允许更多注册"问题.仍然有少量订阅在MailChimp中"成功"并标记为"已清理",但这是预期的,绝大多数订阅成功.

我的(非官方)推荐

我等待新查询多长时间?如何解决这个问题?

我建议您运行自己的测试,看看哪些适合您!但是,如果你只想获得一些对别人有用的东西:

我建议在5分钟后,1天后,2天后和之后7天重试.可能在此之后再次捕获额外的.51%的订阅,但我没有数据来验证它是否可行.

延迟5分钟导致订阅人数增加0.16%.这有助于及时订阅某人即将发送的电子邮件,这可以避免"我已注册但未收到新闻通讯"的投诉.这并没有为我们捕获许多用户,但是对于MailChimp api(或网络中的某个地方)短暂中断的那些时间,这很好.

1小时和6小时的延误对我们没有任何作用,所以可能没有必要.但结果可能会有所不同 同样,这对于短暂的中断更为重要,因此在发生这种情况之前,您并不知道最佳延迟.确定最符合您需求的产品并与之保持一致.

延迟1天的人数增加了4.7%以上(约11%的重试成功).如果在他们尝试订阅的那天有网络或MailChimp api问题,这将使第二天订阅的人获得.我会推荐.

延迟2天导致超过17.72%的人订阅(约80%的重试成功).绝对推荐.

延迟7天导致另外3.34%订阅(约80%的重试成功).推荐的.

注意:我们还没有自己测试1,2和7天的延迟.这可能是他们自己没有那么有用,但堆叠在一起是他们成功的原因(例如,2天延迟失败,但延迟3天7小时5分钟工作).


小智 6

This error message is related to a throttle that Mailchimp have in place to prevent spammers from inundating audiences with fake signups. When Mailchimp system recognizes that an email address is being added to a large number of audiences within a small window of time (or a variant of the address like with these alias addresses), we will throttle signup activity for that email address for up to 48 hours. 这是来自支持的回应。您必须等待 48 小时才能排除该电子邮件,或者您可以使用其他电子邮件,或者您可以从 Mailchimp 添加受众