Types of Events
- Table of Contents
- Bounce Events
- Spam Complaint Events
- Click and Open Tracking Events (for GreenArrow Engine’s SimpleMH System)
- Unsubscribe Events (for GreenArrow Engine’s SimpleMH System)
- Delivery Events
There are multiple kinds of events in the GreenArrow system that you can access or be notified of. This document gives an overview of each kind of event and how they relate.
Bounce Events
A bounce event is when a bounce message is received and processed by the GreenArrow Engine bounce processor.
This relates to delivery attempt events as follows:
- If you see a delivery attempt event with a status of
failure
orfailure_toolong
(as long as theReturn-Path
of the message is set correctly), you will then also see a bounce event for that message. - If you see a delivery attempt event with a status of
accepted
, this message may still bounce. This bounce can happen when a remote SMTP server accepts the message, then later fails at delivering it, and returns a bounce message to GreenArrow. This is called an asynchronous bounce.
A bounce event has different information on the failure than the delivery event, such as the code of the bounce processor.
There are two kinds of bounce events:
bounce_all
(Previously Called hook_stat
) Event
This event is triggered for every bounce message processed by the bounce processor. This includes bounces where the address has not yet met the qualifying criteria for deactivation. bounce_all
events do not require any action and should not be a reason to remove addresses from your database or stop sending to addresses. Use the bounce_bad_address
event for subscriber deactivation instead.
This event type exists for applications that want to keep statistical information on how many bounces are received for each campaign or information on what recipients didn’t receive the email and why.
If you do not plan to use this event type, it can be turned off to reduce the overhead of processing these events.
Field | Description | Example Value |
---|---|---|
event_type |
The type of event (bounce_all ). |
bounce_all |
event_time |
The time that the bounce happened, in seconds past the Unix epoch. | 1317305252 |
server_id |
Server ID as configured by server_id. | example |
event_unique_id |
A unique identifier for this event. | 64 character string |
email |
The email address that this message was to. | [email protected] |
listid |
The lowercased identifier for the mailing list that this message is a part of. | t99 |
sendid |
The lowercased internal identifier for the send. | t9920110705 |
bounce_type |
The type of bounce. h for hard, s for soft, and o for other. |
h |
bounce_code |
The code of the type of bounce. | 10 |
bounce_text |
The text of the failure message. (Up to the number of characters configured.) | 1.1.1.1 failed after I sent the message. Remote host said: 554 delivery error: dd This user doesn't have a yahoo.com account ([email protected]) - mta1218.mail.mud.yahoo.com |
click_tracking_id |
The click tracking ID is specified using the X-GreenArrow-Click-Tracking-ID header and can be used to trace an event back to a specific message. |
1927393 |
synchronous |
Indicates whether this was a synchronous bounce (true) or asynchronous bounce (false). | true |
bounce_bad_address
(Previously Called hook_bounce
) Event
This event is triggered when the bounce processing system detects that an email address has met the configured removal threshold for either hard or soft bounces. (This often requires more than one soft bounce, as we don’t want to remove addresses after a single soft bounce.)
This event occurs so you can remove the address from your database or stop sending to this address. (Continuing to send to a bad address may have a negative impact on your deliverability.)
Field | Description | Example Value |
---|---|---|
event_type |
The type of event (bounce_bad_address ). |
bounce_bad_address |
event_time |
The time that the bounce happened, in seconds past the Unix epoch. | 1317305252 |
server_id |
Server ID as configured by server_id. | example |
event_unique_id |
A unique identifier for this event. | 64 character string |
email |
The email address that this message was to. | [email protected] |
listid |
The lowercased identifier for the mailing list that this message is a part of. | t99 |
sendid |
For the most recent bounce in the run: The lowercased internal identifier for the send. | t9920110705 |
bounce_type |
For the most recent bounce: h for a hard bounce and s is for a soft bounce. |
h |
bounce_code |
For the most recent bounce in the run: The code of the bounce rule that this bounce matched. | 10 |
bounce_text |
For the most recent bounce in the run: The text of the failure message. (Up to the number of characters configured.) | 1.1.1.1 failed after I sent the message. Remote host said: 554 delivery error: dd This user doesn't have a yahoo.com account ([email protected]) - mta1218.mail.mud.yahoo.com |
click_tracking_id |
The click tracking ID is specified using the X-GreenArrow-Click-Tracking-ID header and can be used to trace an event back to a specific message. |
1927393 |
Bounce Text Format
The bounce_text
field in bounce_all
and bounce_bad_address
events is calculated as follows:
- For synchronous bounces (bounces that occurred as a result of the SMTP
delivery conversation), the
bounce_text
format is the same as the Queue Logfile Format except without the conversion and replacement of ASCII bytes outside of the 33-126 range. - For asynchronous bounces (bounces that were emailed back into GreenArrow), this is the raw body of the bounce email which GreenArrow received, without multipart decoding or quoted-printable decoding.
Then:
- Bytes/octents that are not part of valid UTF-8 characters get turned into
U+FFFD
. - The length is truncated to 1024 bytes.
- This can be overridden by the store_bounce_details_length field in the Bounce Processor Configuration.
Spam Complaint Events
When someone clicks on a “this is spam” link at an ISP that supports feedback loops, and a feedback loop notification is sent to GreenArrow, a spam complaint event is created.
This event occurs so that you can remove the address that generated the complaint from your database or stop sending to it. You can also use this event to maintain statistical information on the number of spam complaints created by each campaign. Continuing to send to an address that has complained about spam can have a negative effect on your deliverability.
scomp
(Previously Called hook_scomp
) Event
Field | Description | Example Value |
---|---|---|
event_type |
The type of event (scomp ). |
scomp |
event_time |
The time that the bounce happened, in seconds past the Unix epoch. | 1317305252 |
server_id |
Server ID as configured by server_id. | example |
event_unique_id |
A unique identifier for this event. | 64 character string |
email |
The email address that this message was to. | [email protected] |
listid |
The identifier for the mailing list that this message is a part of. | t99 |
sendid |
For the most recent bounce in the run: The internal identifier for the send. | t9920110705 |
click_tracking_id |
The click tracking ID is specified using the X-GreenArrow-Click-Tracking-ID header and can be used to trace an event back to a specific message. |
1927393 |
Click and Open Tracking Events (for GreenArrow Engine’s SimpleMH System)
If you are using SimpleMH’s click and open tracking, then a click or open event will be created whenever someone loads images in an email message or clicks on a link in it.
If you are using GreenArrow Studio for sending, then you will receive studio_click
and studio_open
events, instead of engine_click
and engine_open
events. See GreenArrow Studio’s Types of Events documentation.
engine_click
Event
Field | Description | Example Value |
---|---|---|
event_type |
The type of event (engine_click ). |
engine_click |
event_time |
The time that the bounce happened, in seconds past the Unix epoch. | 1317305252 |
server_id |
Server ID as configured by server_id. | example |
event_unique_id |
A unique identifier for this event. | 64 character string |
email |
The email address that this message was to. | [email protected] |
listid |
The identifier for the mailing list that this message is a part of. | t99 |
sendid |
For the most recent bounce in the run: The internal identifier for the send. | t9920110705 |
click_url |
The URL of the link that was clicked on. | http://www.example.com |
click_tracking_id |
The click tracking ID is specified using the X-GreenArrow-Click-Tracking-ID header and can be used to trace an event back to a specific message. |
1927393 |
engine_ip |
The IP address that generated the click | 1.2.3.4 |
user_agent |
The user agent that generated the click. | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36 |
engine_open
Event
Field | Description | Example Value |
---|---|---|
event_type |
The type of event (engine_open ). |
engine_open |
event_time |
The time that the bounce happened, in seconds past the Unix epoch. | 1317305252 |
server_id |
Server ID as configured by server_id. | example |
event_unique_id |
A unique identifier for this event. | 64 character string |
email |
The email address that this message was to. | [email protected] |
listid |
The identifier for the mailing list that this message is a part of. | t99 |
sendid |
For the most recent bounce in the run: The internal identifier for the send. | t9920110705 |
click_tracking_id |
The click tracking ID is specified using the X-GreenArrow-Click-Tracking-ID header and can be used to trace an event back to a specific message. |
1927393 |
engine_ip |
The IP address that generated the open | 1.2.3.4 |
user_agent |
The user agent that generated the open. | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 Lightning/4.0.1 |
is_privacy_open |
GreenArrow has determined that this open represents a Mail Privacy Protection open. | true |
Unsubscribe Events (for GreenArrow Engine’s SimpleMH System)
If you use SimpleMH, GreenArrow Engine can process unsubscribe links via two mechanisms:
- When you insert a SimpleMH unsubscribe link, SimpleMH processes it.
- When you do not include a
List-Unsubscribe
header, SimpleMH automatically inserts one for you and processes it.
When someone unsubscribes using either of the above mechanisms, an engine_unsub event will be created.
If you are using GreenArrow Studio for sending, then you will receive studio_unsub
events, instead of engine_unsub
events. See GreenArrow Studio’s Types of Events documentation.
engine_unsub
(Previously Called hook_unsub
) Event
Field | Description | Example Value |
---|---|---|
event_type |
The type of event (engine_unsub ). |
engine_unsub |
event_time |
The time that the bounce happened, in seconds past the Unix epoch. | 1317305252 |
server_id |
Server ID as configured by server_id. | example |
event_unique_id |
A unique identifier for this event. | 64 character string |
email |
The email address that this message was to. | [email protected] |
listid |
The identifier for the mailing list that this message is a part of. | t99 |
sendid |
For the most recent bounce in the run: The internal identifier for the send. | t9920110705 |
click_url |
The URL of the destination unsubscribe link. For unsubscribes that occur as a result of the List-Unsubscribe header, this value will be blank. | http://www.example.com/unsub.php |
click_tracking_id |
The click tracking ID is specified using the X-GreenArrow-Click-Tracking-ID header and can be used to trace an event back to a specific message. |
1927393 |
Continuing to send to an address that has unsubscribed can negatively impact your deliverability.
Delivery Events
A delivery event represents the attempted delivery of a message through SMTP or to a local mailbox. In the case of an SMTP delivery, this shows whether the remote SMTP server accepted or rejected the message or if the delivery attempt was throttled.
When a message delivery fails bounce_all
and bounce_bad_address
event(s) can also be created.
Delivery events can be logged using the delivery_attempt
event type described below. Alternatively, delivery events can be viewed with the hvmail_report
command or logged to a file.
delivery_attempt Event
Field | Description | Example Value |
---|---|---|
event_type |
The type of event (delivery_attempt ). |
delivery_attempt |
event_time |
The time that the bounce happened, in seconds past the Unix epoch. | 1317305252 |
server_id |
Server ID as configured by server_id. | example |
event_unique_id |
A unique identifier for this event. | 64 character string |
email |
The email address that this message was to. | [email protected] |
listid |
The identifier for the mailing list that this message is a part of. | t99 |
sendid |
The internal identifier for the send. | t9920110705 |
click_tracking_id |
The click tracking ID is specified using the X-GreenArrow-Click-Tracking-ID header and can be used to trace an event back to a specific message. |
1927393 |
timestamp |
The time that the bounce happened, in seconds past the Unix epoch. | 1317305252.08338 |
channel |
local if the delivery attempt is to a local mailbox or remote if the delivery attempt is to a remote mail server. |
remote |
status |
Result of this delivery attempt. Can be success , failure , failure_toolong , deferral or connmaxout . |
success |
is_retry |
0 if this is the first delivery attempt and 1 otherwise. |
0 |
msguid |
Internal unique ID of the message. IDs are not repeated unless the system clock goes backward. This is not the same as the Message-ID. | 1490817966.30790899 |
sender |
The Return-Path of the message. This is also called the envelope sender, MFROM address or bounce address. |
[email protected] |
mtaid |
Primary key of the VirtualMTA that the message is assigned to. | 2 |
injected_time |
The time that the message was injected into GreenArrow’s queue, in seconds past the Unix epoch. | 1490817966 |
message |
The success, failure, or deferral message for this delivery attempt. This message will be in the Queue Logfile Format with non-UTF8 characters removed. | 207.99.125.72 accepted message./Remote host said: 250 ok 1490817966 qp 13613/ |
outmtaid |
Primary key of the VirtualMTA that the delivery attempt took place with. This can be, but isn’t always the same as the mtaid . For example, if mtaid is a Routing Rule, then outmtaid will be the VirtualMTA within that Routing Rule that was actually used for the delivery attempt. |
2 |
outmtaid_ip |
The outgoing IP address used for this delivery attempt (see note below). | 127.0.0.1 |
outmtaid_hostname |
The hostname used for this delivery attempt’s SMTP conversation (see note below). | example.com |
sendsliceid |
Internal use Studio feature that’s not yet documented. | 298602 |
throttleid |
Blank if the delivery attempt took place using an SMTP Relay Server or the default Throttling Rule. Otherwise, it contains the ID of the Throttling Rule that was used when making the delivery attempt. | 35 |
mx_hostname |
The hostname to which this delivery attempt occurred (whether or not it came from an actual MX record). | alt2.gmail-smtp-in.l.google.com |
mx_ip |
The IP address to which this delivery attempt occurred (whether or not it came from an actual MX record). | 209.85.203.26 |
from_address |
The first email address in the From header as it was originally injected into GreenArrow. | [email protected] |
headers |
A JSON object containing the values of the headers as configured in the log_header configuration directive. Folded headers will simply contain the folding newlines/whitespace. As a header may be included in an email multiple times, the value of the JSON object is an array of strings. |
{"Subject":["=?UTF-8?Q?Let=E2=80=99s_ask_the_experts:_What_?=\n =?UTF-8?Q?will_email_look_like_next_year=3F?="]} |
message_size |
The size of the message (in bytes), if loaded from storage. | |
smtp_timing |
CSV list of SMTP timings of the delivery attempt. See the log_smtp_timings configuration directive for more information. | |
bounce_code |
This is the bounce code for this delivery attempt. Blank when status is success or connmaxout . |
10 |
A more detailed description of the timestamp
through throttleid
fields in the above list can be found in the Delivery Event Processed Logfile Format documentation. Note that that document’s clicktrackingid
and this document’s click_tracking_id
are equivalent.
Regarding outmtaid_ip
and outmtaid_hostname
: These values may be blank if the
IP address or relay server used for the attempt was deleted before the event was written
to GreenArrow’s internal database. The delivery_attempt
event is typically written to
that database within 10 seconds of the delivery attempt.