Available Webhooks
-
Assessment Webhook
Reports assessment activity.
-
Job Fit Webhook
Reports new and updated match scores.
-
Assessment Email Tracking Webhook
Reports email tracking events related to an assessment, such as delivery, bounces, and spam reports.
Configuration
To configure a webhook target, we require the following information:
- The URL target to which the webhook will POST. We recommend using an HTTPS (secure) target. Note that GET is not provided due to the possibility of payload sizes in excess of 2048 characters.
- The webhook types (Assessment and Job Fit) to which to subscribe.
- The webhook type events to which you wish to subscribe.
- The data format you wish to receive – JSON, XML, CSV, or form-multipart.
- Any static headers you require to be added.
Optionally, you can specify a port number. If no port number is specified then it will be inferred from the protocol (HTTP or HTTPS). The allowed ports are 80, 443, and 8000.
We can configure multiple webhook targets. For example, if you want assessment information going to one URL and job fit information to another, then please specify each configuration.
Testing
Once your webhook target(s) are configured, we will provide a URL to which you can POST the data values you want echoed by the webhook back to your URL target. The webhook test function does not ensure that the inbound data you send it is valid. Its main function is to help you validate connectivity, the inbound format, headers, and hash comparison functions.
For developers testing behind a firewall, we recommend (and use) the NGrok reverse proxy.
Delivery
The webhook is throttled to perform no more than one outbound call per second. To better handle bursts of activity, we combine up to 100 events in a single call. Therefore, if your target format is JSON, you should expect to parse an array of 1 to 100 events. If your system is under heavy load - for example, a job has been modified and we are recalculating thousands of match scores - then events will queue and be delivered in order. If there are 100,000 events in your queue, then it will take no less than (100,000 / 100) seconds = 1000 seconds to deliver the data.
Under a normal load, you can expect near-real time delivery of webhook events.
Headers
The webhook will add the following headers to every call to your URL target:
-
X-Sha256Digest
You can use this value to validate that the data you receive from the webhook was sent from our system and was not tampered while in transit.To compute the X-Sha256Digest on your system for comparison:
- ToHash = a string that combines your URL target and the data payload.
- HashKey = a SHA 256 HMAC hash created using ToHash. Your private API key is the secret key.
To validate the data you received:
- CompareToHash = a string that combines your URL target and the payload extracted from the inbound HTTP call. The payload is the data portion of the HTTP call (which follows the headers). Do not include the headers.
- CompareHashKey = a SHA 256 HMAC hash created using CompareToHash. Your private API key is the secret key.
- If CompareHashKey and the value in the X-Sha256Digest header are equal, then the data originated from our system intact.
-
Headers you specify, if any.
Please provide a list of the header names and values you want included. These headers cannot be computed - static header values only.
Retry Schedule
We make every reasonable attempt to deliver your event messages. However, we cannot retry indefinitely. For timeouts or any other response (404, 500, etc.), we follow the schedule below.
- Post message near real time. If 2xx not received from target, then
- Retry 60 seconds later. If 2xx not received from target, then
- Retry 5 minutes later. If 2xx not received from target, then
- Retry 1 hour later. If 2xxx not received from target, then
- Retry 24 hours later. If 2xxx not received from target, then
- Retry 24 hours later. If 2xxx not received from target, then
- Retry 24 hours later. If 2xxx not received from target, then
-
Stop retrying and eliminate activity message.
7 attempts over 77 hours before eliminating message.
A message is successfully delivered when we receive a 2xx (anything between 200 and 299) from the target. Once delivered, a message will never be resent. Once eliminated following multiple retries, a message cannot be recovered.
Message Origin
Messages may originate from a variety of IP addresses in our system. These IP addresses are dynamically assigned and will change without notice. Therefore, you should not whitelist inbound traffic from a specific IP address. Rather, use the X-Sha256Digest header to ensure the validity of inbound data to your URL target.
Delivery Timeout
When your listener receives a message, it must reply with a 2xx within 3000 milliseconds. Otherwise, the posting attempt will timeout and re-queue for later delivery. This is to ensure that the webhook connection is rapidly opened and closed.
Therefore, your listener’s architecture must not synchronously perform long-running operations, such as retrieving reports, before replying OK to the webhook. We recommend that your listener posts the inbound message to a message queue or database for asynchronous processing or forks a new thread after replying OK to process the message. This will help ensure your listener is not overwhelmed if a large burst of messages is pushed through the webhook.
Delivery Order
Event messages may not be delivered in the exact order they occurred. The outbound webhook queue is multithreaded and may send batches of messages slightly out of order during periods of high activity. Messages retried due to failure will also arrive out of order. Always look at the event’s EventTime value (UTC, Unix format) when deciding what action to take when a message is received.
Extended Failure Auto Shutdown
If all posts to your URL target fail over a 96 hour period, then the webhook will be automatically disabled for all activity until you manually re-enable it. This is necessary to ensure that an abandoned URL target does not continue to consume system and bandwidth resources.
What Do I Do With The Message?
That is up to you. For example, when you receive a “completed” message, your system might call the Berke API to download the report for the completed assessment, then email it to your end-user.
Note that we do not recommend downloading every report for every job for every participant. It wastes bandwidth and storage space. Rather, download reports as your users request them to ensure the requested report is always up-to-date with the latest job configuration, report enhancements, and assessment data. Our API provides three methods for generating reports:
-
SendReport
Email a report
-
GetReportForJob
Downloads a report PDF from the Berke API
-
GetReport
Anonymous URL, no authentication required (not for long-term storage)
Assessment Webhook
The Assessment Webhook reports assessment activity, including provisioning, starting, completing, emailing invitations and reminders, and the assessment's current completion status.
Assessment Events
-
101: Assessment Created
Raised when an assessment is created.
Scores and reports will not be available for the assessment until a 106: Assessment Completed event is raised.
-
102: Assessment Invitation Sent
Raised when an assessment invitation is emailed.
-
103: Assessment Reminder Sent
Raised when an assessment reminder is emailed.
-
104: Assessment Started
Raised when a participant starts the assessment.
-
105: Assessment Percent Complete Changed
Raised anytime an assessment’s approximate percent complete changes.
This value changes at the end of each section – not on a per question basis. It is computed using the average remaining time to complete, so it is an approximate value.
Do not use this value to track whether an assessment is complete. Rather, use the 106: Assessment Completed event to track completion status.
-
106: Assessment Completed
Raised when an assessment is completed.
Scores will be transmitted shortly if you are subscribed to events 201 or 202. Reports can now be requested for the assessment.
-
107: Assessment Re-Opened
Raised when an assessment is re-opened.
This occurs when a job that requires additional assessment data is assigned to a complete assessment. Once an assessment is re-opened, all prior scores become invalid and reports cannot be requested. Once the assessment is closed again, fresh scores will be transmitted if you are subscribed to events 201 or 202 and reports will be available again. If you are caching scores and/or reports in your system, you should clear them when you receive this event.
-
108: Assessment Deleted
Raised when an assessment is deleted.
Deleted assessments cannot be un-deleted and all scores and reports for a deleted assessment are invalid and no longer available.
-
109: Assessment Component Opened
Raised when an assessment component, such as Personality or Logical Problem Solving, is first viewed by a participant. NOTE: This event appends an additional ComponentOpened object in the payload. Please review the payload information below.
-
110: Start Later Email Sent
Raised when participant says “send me a link so I can do this later”.
-
112: Name Mismatch Reported
Raised when the participant reports receiving someone else’s assessment. When this happens, an administrator needs to determine which assessment(s) need to be fixed/deleted/provisioned/etc.
NOTE: This event appends an additional NameMismatch object in the payload. Please review the payload information below.
Assessment Event Payload
Data can delivered by POST in JSON, XML, CSV, or form-multipart format to a URL target. Note that multiple events may be bundled in a single call, so you should expect an array of events of no less than 1 element.
-
string AssessmentUrl
Full URL to start the assessment. This field will be empty if the assessment is complete.
-
string AsessmentKey
The unique assessment key used to start the assessment.
-
string SourceCandidateId
The ID assigned by your system when the assessment was created. If you did not assign an ID, a GUID was assigned.
-
string Job
Name of the job for which the participant is being assessed.
-
string SourceJobId
The ID of the job for which the participant is being assessed.
-
string FirstName
The participant's first name.
-
string LastName
The participant's last name.
-
string Title
NotCaptured, Mr, Mrs, or Miss. This value will be NotCaptured until the Name section is complete. This value is used to derive gender for the purpose of pronoun replacement (he/she, his/her, etc.) when generating reports. The Berke Assessment does not use gender for any other purpose. This value is self-selected and confirmed by the participant. If a report is generated with incorrect gender pronouns, you can update the participant's title using the UpdateAssessment API method.
-
string EmailAddress
The participant's email address, if captured in the Name section or provided during provisioning. You can require capture of this value at Setup | Personalize | Assessment | Contact Information. (Berke login required)
-
string PhoneNumber
The participant's phone number, if captured in the Name section. You can require capture of this value at Setup | Personalize | Assessment | Contact Information. (Berke login required)
-
int SectionsComplete
Number of sections the participant has completed.
-
int SectionsRemaining
Number of sections the participant still has to complete.
-
int PercentComplete
The participant’s estimated percent complete. This number is updated at the end of each section – not on a per question basis – and is based on average time to complete the sections measured by the assigned job.
-
int ApproximateRemainingSeconds
The estimated remaining seconds to complete the assessment. This number is updated at the end of each section – not on a per question basis – and is based on average time to complete the sections measured by the assigned job.
-
string ApproximateRemainingTime
A label describing the approximate remaining time, such as "less than 15 minutes".
-
double TimeStampUtc
The time when the event occurred converted to Unix time and offset to UTC. Review http://www.epochconverter.com/ if you are unfamiliar with this format.
-
[Conditional] object ComponentOpened
Object that describes the component that was opened. This object will only be reported when event type 109 is raised.
-
string Section
Describes the section the participant opened. Most sections only have a single component, but some, such as personality, have 2 or more components.
-
string Component
Describes the component (part, portion, etc.) that the participant is in within a given section. Most sections only have a single component.
-
string Section
-
[Conditional] object NameMismatch
Object that describes name mismatch information. This object will only be reported when event type 112 is raised.
-
string UserReportingIssueName
Full name of the user who reported the name mismatch. For example, if Jackson Pollock opens Jeff Adkisson’s assessment, this value will be Jackson Pollock.
-
string UserReportingIssueEmail
Email address of user who reported the name mismatch. For example, if Jackson Pollock opens Jeff Adkisson’s assessment, this value will be Jackson Pollock’s email address.
-
string CurrentlyAssignedTo
> Name on the assessment the reporting user is reporting as mismatched. For example, if Jackson Pollock opens Jeff Adkisson’s assessment, this value will be Jeff Adkisson.
-
string HiringManagerName
Name of the hiring manager related to the name mismatched assessment. This will be your API user if the assessment was provisioned via the Berke API.
-
string HiringManagerEmail
Email address of the hiring manager related to the name mismatched assessment. This will be your API user’s email address if the assessment was provisioned via the Berke API.
-
string Company
The company name on your account.
-
string Department
Department related to the assessment. If your account has no departments, then this will match your company name.
-
string Message
A descriptive message describing the details of the name mismatch. There is no information in the Message property that is not found in other reported properties, but you might find it convenient as it describes the most common name mismatch scenarios.
-
string UserReportingIssueName
Assessment Payload Example: JSON POST
[ { "AssessmentUrl": "https:\/\/example.assessment.url\/ZZZ123ABC\/Jeff_Adkisson", "AssessmentKey": "ZZZ123ABC", "SourceCandidateId": "daa06a4-fdf6-4fe1-bca1-2983f88ac9aa", "Job": "Webhook Developer", "SourceJobId": "webhook_dev", "FirstName": "Jeff", "LastName": "Adkisson", "SectionsComplete": 2, "SectionsRemaining": 9, "PercentComplete": 5, "ApproximateRemainingSeconds": 3570, "ApproximateRemainingTime": "an hour or less", "TimeStampUtc": 1447988244.7782, "ComponentOpened": { //IMPORTANT NOTE! //This section is specific to event ID 109, component opened, //and will not appear in other assessment event messages "Section": "Welcome", "Component": "Welcome", "AverageDurationSeconds": 30 }, "NameMismatch": { //IMPORTANT NOTE! //This section is specific to event ID 112, name mismatch //reported, and will not appear in other assessment event messages "NameMismatch": { "UserReportingIssueName": "Jackson Pollock", "UserReportingIssueEmail": "Jackson@NotRealAddress.com", "CurrentlyAssignedTo": "Jeff Adkisson", "HiringManagerName": "HighMatch Support", "HiringManagerEmail": "Support@HighMatch.com", "Company": "E-Corp", "Department": "Security Dept" "Message": "Jackson Pollock is reporting that assessment he\/she received was intended for Jeff Adkisson, so Jackson Pollock's assessment was halted. Possible causes include 1) both people were sent the same invitation, or 2) the invitation for Jeff Adkisson was emailed to Jackson Pollock, or 3) Jeff Adkisson shared his\/her unique invitation with Jackson Pollock, or 4) Jackson Pollock did not understand that he\/she can correct minor problems with his\/her name during the assessment. Please correct this problem, then contact the appropriate parties with the updated assessment invitations. Jeff Adkisson is with Berke Assessment by HighMatch and was invited by HighMatch Support at support@highmatch.com." }, "Event": { "WebHookType": "Assessment", "WebHookTypeId": 1, "EventTypeId": 109, "EventType": "AssessmentComponentOpened", "EventTypeLabel": "Component Opened" } }, // subsequent messages of same webhook type - always plan for an // array of events to be received. we will combine bursts of assessment // events into a single post ]
HTTP Headers
- Connection: Keep-Alive
- Accept: application/json,application/xml,text/json,text/x-json,text/javascript,text/xml
- Accept-Encoding: gzip,deflate
- Host: localhost:9090
- User-Agent: Berke Assessment Webhook
- X-Sha256Digest: 4a3e5515a5ea0020e37518614303492259d4b536473e6b5c136eb0b9641de1dc
Job Fit Webhook
The Job Fit Webhook reports match scores related to an assessment. When an assessment is completed, we score the assessment against all of the jobs in your account and can report them via this webhook. This webhook will also report scores when new jobs are added to your account or existing jobs are changed and subsequently re-scored.
Job Fit Events
-
201: Job Fit Scored
Raised when a job fit is created for a job/assessment combination. If you have multiple jobs, then you will see this event raised for each job in your account when a participant completes an assessment. This event will also be raised when a job is modified, which re-evaluates all matches related to the job.
-
202: Job Fit Primary Job Scored
Assessments are always performed against a primary job. Unlike the Job Fit Scored event, this event only occurs against the primary job. If you do not want all of the job fit scores for a participant to be raised, choose this event.
Job Fit Payload
Data can delivered by POST in JSON, XML, CSV, or form-multipart format to a URL target. Note that multiple events may be bundled in a single call, so you should expect an array of events of no less than 1 element.
-
string SourceCandidateId
The ID assigned by your system when the assessment was created. If you did not assign an ID, a GUID was assigned.
-
string Job
Name of the job for which the participant is being assessed.
-
string SourceJobId
The ID of the job for which the participant is being assessed.
-
string FirstName
The participant's first name.
-
string LastName
The participant's last name.
-
double Score
The participant's overall job fit score. This is a value between 0 and 100. Higher values indicate a closer match to the ideal participant for a given job. A high match is greater than 66.6, a medium match is greater than 33.3, and a low match is anything less than or equal to 33.3.
-
int MatchLevelId
3 = High, 2 = Medium, 1 = Low, 4 = Match Disabled in Job, or 5 = Not Enough Assessment Data
-
string MatchLevel
High, Medium, Low, Match Disabled in Job, or Not Enough Assessment Data
-
boolean IsCandidatesPrimaryJob
If true, then match score is for the job assigned to the participant (almost always the job used to assess the participant). If false, then the score is for another job in your account. We score all participants against all jobs.
-
string AnonymousReportLinkUrl
If anonymous report links are enabled, this field will contain a secure, permalink URL that can be used to download the PDF report related to the assessment/job combination being raised without a Berke login. If anonymous report links are disabled, then this field will be empty. In that case, you will have to retrieve reports via an API call.
-
double TimeStampUtc
The time when the event occurred converted to Unix time and offset to UTC. Review http://www.epochconverter.com/ if you are unfamiliar with this format.
Job Fit Payload Example: JSON POST
[ { "SourceCandidateId": "dd644a0-bccd-40a6-a66e-71c4fb0491e7", "SourceJobId": "mapped_job_id", "FirstName": "Jeff", "LastName": "Adkisson", "Job": "Job Name Here", "Score": 0.75, "MatchLevelId": 3, "MatchLevel": "High", "IsCandidatesPrimaryJob": true, "AnonymousReportUrl": "https:\/\/example.assessment.url\/Rpt\/HVFWZTXEJPHZSH", "TimeStampUtc": 1447970904.4872, "Event": { "WebHookType": "JobFit", "WebHookTypeId": 2, "EventTypeId": 202, "EventType": "JobMatchPrimaryJobScored", "EventTypeLabel": "Job Match Primary Job Scored" } }, // subsequent messages of same webhook type - always plan for an // array of events to be received. we will combine bursts of job fit // events into a single post ]
HTTP Headers
- Connection: Keep-Alive
- Accept: application/json,application/xml,text/json,text/x-json,text/javascript,text/xml
- Accept-Encoding: gzip,deflate
- Host: localhost:9090
- User-Agent: Berke Job Match Webhook
- X-Sha256Digest: be53c9eb3149b6e30048d3b6ef98da128ac786cad5f81b5637e3c218443b3a89
Assessment Email Tracking Webhook
The Assessment Email Tracking Webhook reports when email messages related to an assessment occur, including delivery, opens, bounces, and spam notifications.
NOTE: Mail tracking has numerous significant caveats due to the arms race between spammers and spam detection systems. Unfortunately, legitimate mail from high-reputation businesses is often misclassified as spam and useful data, such as click tracking, is unavailable because the technique has been exploited by spammers. Please read the mail tracking documentation carefully to avoid setting an unrealistic expectation with your end users.
Assessment Email Tracking Events
-
300: EmailTrackingAssessmentInvitationBounced
Raised when Berke mail system is informed that an invitation emailed to a participant bounced or was dropped because the address is improperly formatted. This can also occur if the target mail system is too busy to receive mail at the time of delivery.
-
301: EmailTrackingAssessmentInvitationClicked
Raised when the mail system is informed that an invitation emailed to a participant was clicked.
NOTE: This event is presently disabled/unavailable because click tracking increases the likelihood of an invitation being considered spam by automated monitoring systems. We will enable this event if a future mail standard or technique is developed that prevents miscategorization of click-tracked messages.
-
302: EmailTrackingAssessmentInvitationDelivered
Raised when Berke mail system is informed by the target mail system that the invitation was delivered.
NOTE: This does not mean the invitation definitely arrived in your participant's Inbox. Some mail systems do not report bounces, spam notifications, etc. Therefore, a delivery event does not always indicate that your participant will see the invitation. Most reports of "I didn't get the invitation" are due to the target mail system misclassifying the invitation as spam, but reporting to the Berke system that the message was successfully delivered.
-
303: EmailTrackingAssessmentInvitationOpened
Raised when the Berke email system is informed by a small tracking tag that an invitation was viewed by a client connected to the target mail domain.
NOTE: This does not always mean that the message was viewed by your participant, though it is generally a reliable indicator. Furthermore, some mail clients strip out the tracking tag, so a missing open event does not necessarily indicate that the message was not opened.
-
304: EmailTrackingAssessmentInvitationMarkedSpam
Raised when the recipient of your invitation explicitly marks an invitation as spam. When this occurs, Berke will prevent further messages of any type from being delivered to that email address. This is to ensure our mail reputation is not damaged, which leads to poor delivery for everyone. Sending unsolicited invitations is prohibited for this reason.
NOTE: This event will likely only be raised by participants using a major mail vendor, such as Gmail, Yahoo, or AOL. Private mail systems and corporate mail servers rarely report when a message is classified as spam. Therefore, you will not always be notified when a message is marked as spam. Furthermore, a mail system that classifies your message as spam may report to Berke that your message delivered successfully (event 302).
-
305: EmailTrackingAssessmentReminderBounced
Raised when Berke mail system is informed that a reminder emailed to a participant bounced or was dropped because the address is improperly formatted. This can also occur if the target mail system is too busy to receive mail at the time of delivery.
-
306: EmailTrackingAssessmentReminderClicked
Raised when the mail system is informed that a reminder emailed to a participant was clicked.
NOTE: This event is presently disabled/unavailable because click tracking increases the likelihood of a reminder being considered spam by automated monitoring systems. We will enable this event if a future mail standard or technique is developed that prevents miscategorization of click-tracked messages.
-
307: EmailTrackingAssessmentReminderDelivered
Raised when Berke mail system is informed by the target mail system that a reminder was delivered.
NOTE: This does not mean the reminder definitely arrived in your participant's Inbox. Some mail systems do not report bounces, spam notifications, etc. Therefore, a delivery event does not always indicate that your participant will see the reminder. Most reports of "I didn't get the reminder" are due to the target mail system misclassifying the reminder as spam, but reporting to the Berke system that the message was successfully delivered.
-
308: EmailTrackingAssessmentReminderOpened
Raised when the Berke email system is informed by a small tracking tag that an reminder was viewed by a client connected to the target mail domain.
NOTE: This does not always mean that the message was viewed by your participant, though it is generally a reliable indicator. Furthermore, some mail clients strip out the tracking tag, so a missing open event does not necessarily indicate that the message was not opened.
-
309: EmailTrackingAssessmentReminderMarkedSpam
Raised when the recipient of your invitation explicitly marks a reminder as spam. When this occurs, Berke will prevent further messages of any type from being delivered to that email address. This is to ensure our mail reputation is not damaged, which leads to poor delivery for everyone. Sending unsolicited messages is prohibited for this reason.
NOTE: This event will likely only be raised by participants using a major mail vendor, such as Gmail, Yahoo, or AOL. Private mail systems and corporate mail servers rarely report when a message is classified as spam. Therefore, you will not always be notified when a message is marked as spam. Furthermore, a mail system that classifies your message as spam may report to Berke that your message delivered successfully (event 307).
-
310: EmailTrackingAssessmentStartLaterBounced
Raised when Berke mail system is informed that a "Start Later" message requested by a participant bounced or was dropped because the address is improperly formatted. This can also occur if the target mail system is too busy to receive mail at the time of delivery.
-
311: EmailTrackingAssessmentStartLaterClicked
Raised when the mail system is informed that a "Start Later" message emailed to a participant was clicked.
NOTE: This event is presently disabled/unavailable because click tracking increases the likelihood of a "Start Later" message being considered spam by automated monitoring systems. We will enable this event if a future mail standard or technique is developed that prevents miscategorization of click-tracked messages.
-
312: EmailTrackingAssessmentStartLaterDelivered
Raised when Berke mail system is informed by the target mail system that a "Start Later" message was delivered.
NOTE: This does not mean the "Start Later" message definitely arrived in your participant's Inbox. Some mail systems do not report bounces, spam notifications, etc. Therefore, a delivery event does not always indicate that your participant will see the "Start Later" message. Most reports of "I didn't get the Start Later message" are due to the target mail system misclassifying the reminder as spam, but reporting to the Berke system that the message was successfully delivered.
-
313: EmailTrackingAssessmentStartLaterOpened
Raised when the Berke email system is informed by a small tracking tag that a "Start Later" message was viewed by a client connected to the target mail domain.
NOTE: This does not always mean that the message was viewed by your participant, though it is generally a reliable indicator. Furthermore, some mail clients strip out the tracking tag, so a missing open event does not necessarily indicate that the message was not opened.
-
314: EmailTrackingAssessmentStartLaterMarkedSpam
Raised when a participant explicitly marks a "Start Later" message as spam. When this occurs, Berke will prevent further messages of any type from being delivered to that email address. This is to ensure our mail reputation is not damaged, which leads to poor delivery for everyone. Sending unsolicited messages is prohibited for this reason.
NOTE: This event will likely only be raised by participants using a major mail vendor, such as Gmail, Yahoo, or AOL. Private mail systems and corporate mail servers rarely report when a message is classified as spam. Therefore, you will not always be notified when a message is marked as spam. Furthermore, a mail system that classifies a "Start Later" messageas spam may report to Berke that the message was delivered successfully (event 312).
Assessment Email Tracking Payload
Data can delivered by POST in JSON, XML, CSV, or form-multipart format to a URL target. Note that multiple events may be bundled in a single call, so you should expect an array of events of no less than 1 element.
-
string SourceCandidateId
The ID assigned by your system when the assessment was created. If you did not assign an ID, a GUID was assigned.
-
string Description
A formatted description of the event, suitable for logging. This description may have technical information in it, so it is not generally appropriate for revealing to non-technical users.
-
string EmailAddress
The email address to which the message was sent.
-
string UserAgent
Will be empty unless an Open event or Click event is being reported. The UserAgent property is the client's email application or browser.
-
string UrlClicked
Will be empty unless a Click event is being reported. The UrlClicked property is the URL the user clicked.
NOTE: All click tracking events are presently disabled/unavailable because click tracking increases the likelihood of a reminder being considered spam by automated monitoring systems.
-
string IpAddress
The IP address used to send the email message. This is useful for troubleshooting when a mail target is denying traffic from a specific IP address.
-
string ServerResponse
Message the target domain server gave when contacted by the Berke mail system. This is useful for troubleshooting when a mail target is denying traffic. This response is generally very technical, so we do not recommend presenting it to non-technical end-users.
-
double TimeStampUtc
The time when the event occurred converted to Unix time and offset to UTC. Review http://www.epochconverter.com/ if you are unfamiliar with this format.
Assessment Email Tracking Payload Example: JSON POST
[ { "SourceCandidateId": "berke_77b95e58c8904e0bba7c9169190a7b48", "Description": "Mail server said '550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https:\/\/support.google.com\/mail\/answer\/6596 190si2150397oie.264 - gsmtp.", "EmailAddress": "please-bounce@berke.as", "UserAgent": "", "UrlClicked": "", "IpAddress": "167.89.43.120", "ServerResponse": "550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https:\/\/support.google.com\/mail\/answer\/6596 190si2150397oie.264 - gsmtp .", "TimeStampUtc": 1467143160, "Event": { "WebHookType": "EmailTrackingAssessment", "WebHookTypeId": 3, "EventTypeId": 300, "EventType": "EmailTrackingAssessmentInvitationBounced", "EventTypeLabel": "Assessment invitation bounced" } }, { "SourceCandidateId": "berke_77b95e58c8904e0bba7c9169190a7b48", "Description": "Start Later Link to jeff@berke.as delivered to berke.as mail system. The berke.as mail system replied [250 2.0.0 OK 1467141546 a73si17340871oib.245 - gsmtp .']", "EmailAddress": "jeff@berke.as", "UserAgent": "", "UrlClicked": "", "IpAddress": "167.89.43.120", "ServerResponse": "250 2.0.0 OK 1467141546 a73si17340871oib.245 - gsmtp .", "TimeStampUtc": 1467141546, "Event": { "WebHookType": "EmailTrackingAssessment", "WebHookTypeId": 3, "EventTypeId": 312, "EventType": "EmailTrackingAssessmentStartLaterDelivered", "EventTypeLabel": "Assessment start later link delivered" } }, { "SourceCandidateId": "berke_77b95e58c8904e0bba7c9169190a7b48", "Description": "Assessment Invitation to 'jeff@berke.as' opened in email client [Mozilla\/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox\/11.0 (via ggpht.com GoogleImageProxy)].", "EmailAddress": "jeff@berke.as", "UserAgent": "Mozilla\/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox\/11.0 (via ggpht.com GoogleImageProxy)", "UrlClicked": "", "IpAddress": "66.249.88.84", "ServerResponse": "Smtp Id: ", "TimeStampUtc": 1467142645, "Event": { "WebHookType": "EmailTrackingAssessment", "WebHookTypeId": 3, "EventTypeId": 303, "EventType": "EmailTrackingAssessmentInvitationOpened", "EventTypeLabel": "Assessment invitation opened" }, // subsequent messages of same webhook type - always plan for an // array of events to be received. we will combine bursts of assessment email tracking // events into a single post ]
HTTP Headers
- Connection: Keep-Alive
- Accept: application/json,application/xml,text/json,text/x-json,text/javascript,text/xml
- Accept-Encoding: gzip,deflate
- Host: localhost:9090
- User-Agent: Berke Assessment Email Tracking Webhook
- X-Sha256Digest: 2479e3b83693c97414d713da6e641c9d64cf65b5c99f1a5fde8133988cd62703