mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 11:51:05 -05:00
Brevo: support proxy open, complained, error events
Add support for Brevo's new "Complained," "Error" and "Loaded by proxy" events in Brevo tracking webhook. Closes #385. --------- Co-authored-by: Mike Edmunds <medmunds@gmail.com>
This commit is contained in:
@@ -40,23 +40,34 @@ class BrevoTrackingWebhookView(BrevoBaseWebhookView):
|
||||
)
|
||||
return [self.esp_to_anymail_event(esp_event)]
|
||||
|
||||
# Map Brevo event type -> Anymail normalized (event type, reject reason).
|
||||
event_types = {
|
||||
# Map Brevo event type: Anymail normalized (event type, reject reason)
|
||||
# received even if message won't be sent (e.g., before "blocked"):
|
||||
# Treat "request" as QUEUED rather than SENT, because it may be received
|
||||
# even if message won't actually be sent (e.g., before "blocked").
|
||||
"request": (EventType.QUEUED, None),
|
||||
"delivered": (EventType.DELIVERED, None),
|
||||
"hard_bounce": (EventType.BOUNCED, RejectReason.BOUNCED),
|
||||
"soft_bounce": (EventType.BOUNCED, RejectReason.BOUNCED),
|
||||
"blocked": (EventType.REJECTED, RejectReason.BLOCKED),
|
||||
"spam": (EventType.COMPLAINED, RejectReason.SPAM),
|
||||
"complaint": (EventType.COMPLAINED, RejectReason.SPAM),
|
||||
"invalid_email": (EventType.BOUNCED, RejectReason.INVALID),
|
||||
"deferred": (EventType.DEFERRED, None),
|
||||
"opened": (EventType.OPENED, None), # see also unique_opened below
|
||||
# Brevo has four types of opened events:
|
||||
# - "unique_opened": first time opened
|
||||
# - "opened": subsequent opens
|
||||
# - "unique_proxy_opened": first time opened via proxy (e.g., Apple Mail)
|
||||
# - "proxy_open": subsequent opens via proxy
|
||||
# Treat all of these as OPENED.
|
||||
"unique_opened": (EventType.OPENED, None),
|
||||
"opened": (EventType.OPENED, None),
|
||||
"unique_proxy_open": (EventType.OPENED, None),
|
||||
"proxy_open": (EventType.OPENED, None),
|
||||
"click": (EventType.CLICKED, None),
|
||||
"unsubscribe": (EventType.UNSUBSCRIBED, None),
|
||||
# shouldn't occur for transactional messages:
|
||||
"error": (EventType.FAILED, None),
|
||||
# ("list_addition" shouldn't occur for transactional messages.)
|
||||
"list_addition": (EventType.SUBSCRIBED, None),
|
||||
"unique_opened": (EventType.OPENED, None), # first open; see also opened above
|
||||
}
|
||||
|
||||
def esp_to_anymail_event(self, esp_event):
|
||||
|
||||
Reference in New Issue
Block a user