About bounces and complaints (Amazon SES) on v3
Did something change on the management of bounces and complaints from Amazon SES?
As you may know the "unsubscribe" link from the header on Yahoo! is sent to Amazon SES as complain (not as unsubscribe).
A lead clicked the unsubscribe header link on two emails from my automation, and obviously Amazon SES three days ago said it was a complaint.
I thought it was managed as usual, as "complaint", BUT I was shocked today because that person received my today's email and marked it AGAIN as "complaint", but still as "subscribed" on my FCRM.
Previously v3, for more than 5 years, this worked well.
That's the reason for my question: Did something change on the management of bounces and complaints from Amazon SES? Do I have to do something to solve it?
Thanks!
Following!
Following
Please check if your Amazon SNS is correctly set. I just tested and working fine. Here is what you can do to check if your SNS is working fine or not. Create a contact with: complaint@simulator.amazonses.com and then send a test email from emails tab. Wait a few minute and then the contact should be marked as complained automatically.

Shahjahan JewelΒ Hey Jewel, small question regarding contact statuses in FluentCRM after testing Amazon SES complaint handling with this test hint you gave us.
I tested the SNS flow using:
complaint@simulator.amazonses.com
and everything seems to work correctly on my side (as always). The contact is automatically marked as βComplainedβ, which makes sense.
However, this made me wonder about the purpose of the βSpam / Junkβ status inside FluentCRM.
At the moment, we seem to have clear automatic logic/triggers for statuses like:
- Complaint
- Bounce
- Pending
- Subscribed
- Transactional
But βSpam / Junkβ does not appear to have its own trigger or automatic activation flow.
So I am curious:
Is βSpam / Junkβ mainly intended for manual/internal contact management by the admin, or are there providers/events that should automatically trigger that status under certain circumstances?
Like the issue Jose had with Yahoo.
Because so far, even with SES complaint simulations, I have only seen the contact become βComplainedβ, never βSpam / Junkβ in all this years of use of FCRM.
Thank you!
Jorge de los ReyesΒ You're right that "Complained" is the one that fires automatically. Every email provider we integrate with (SES, Mailgun, SendGrid, Postmark, SparkPost,
Brevo, SMTP2GO, ElasticEmail, Pepipostβ¦) reports spam complaints through their feedback loop, and we map all of those to the Complained status, even the
ones whose internal event is literally called "spam." So when someone hits "mark as spam" in Gmail/Yahoo/etc. and that comes back to us via SNS or a
webhook, the contact becomes Complained. That's exactly what you saw with the SES simulator, and it's working as intended.
The "Spammed" status is a different thing, it's not tied to any provider event at all. There's no webhook or trigger that sets it automatically. It's
purely a manual/internal flag for admins to use when you decide a contact is junk - e.g. cleaning up an import, flagging obvious spam-trap or fake
signups, or your own internal categorization. That's why you've never seen it appear on its own in all these years; nothing in the automatic flow ever
sets it.
Functionally the two behave the same way once set - both are "strict" statuses, so sending stops and the usual unsubscribe cleanup runs. The difference is
really just who triggers it: Complained = the recipient/ISP told us, Spammed = you told us.
So for the Yahoo case (and complaints in general), Complained is the correct and expected status - a Yahoo complaint comes back through the same
feedback-loop path and lands as Complained, not Spammed.
Hope that clears it up!
Shahjahan JewelΒ That clarifies my question and confirms my interpretation haha. Thank you, Jewel!
SOLVED: After many days test/error processing, I found that it was a combination of "Bot fight mode" active and "Security rules" on Cloudflare, and I had active these options on FluentAuth:
-----
Disable App Login (Rest API) for Remote Access. (Recommended: Disable)
Disable REST Endpoint for p users query for public (Recommended: Disable)
-----
Thanks Shahjahan JewelΒ