Website: set historical event source (#50546)

Changes:
- Updated the website's createHistoricalEvent helper to accept an
eventSource input that is used to set the historical event source on
created records.
- Updated places where we create historical events to set a historical
event source
- Updated the accepted contact sources values in the receive-from-clay
webhook
- Updated the deliver-gitops-workshop-request action to log a warning
when a campaign member record cannot be created

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Improvements**
- Improved activity tracking for newsletter subscriptions, signups,
contact forms, workshop requests, webinars, gated content, and page
views.
- Added clearer source details to records for more accurate attribution.
- Expanded support for website, webinar, event, LinkedIn, prospecting,
and GitHub activity sources.
- **Bug Fixes**
- Workshop requests now continue successfully if campaign updates
encounter an error.
- Corrected warning messages and preserved relevant submission details
for troubleshooting.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Eric
2026-08-04 18:26:14 -05:00
committed by GitHub
parent a4af4d896c
commit 85692f8238
11 changed files with 72 additions and 16 deletions
@@ -68,6 +68,7 @@ module.exports = {
eventType: 'Intent signal',
intentSignal: 'Subscribed to the Fleet newsletter',
relatedCampaign: recordDetails.mostRecentCampaign,
eventSource: 'Website - Newsletter',
});
}).exec((err)=>{// Use .exec() to run the salesforce helpers in the background.
if(err) {
+2 -1
View File
@@ -84,7 +84,7 @@ module.exports = {
emailAddress: this.req.me.emailAddress,
firstName: this.req.me.firstName,
lastName: this.req.me.lastName,
contactSource: 'Website - Contact forms',
contactSource: 'Website - Sign up',
description: descriptionForContactUpdate,
marketingAttributionCookie: attributionCookieOrUndefined,
numberOfHostsDetails: inputs,
@@ -104,6 +104,7 @@ module.exports = {
intentSignal: 'Created a quote for a self-service Fleet Premium license',
eventContent: descriptionForContactUpdate,
relatedCampaign: recordDetails.mostRecentCampaign,
eventSource: 'Website - Sign up',
}).intercept((err)=>{
return new Error(`Could not create an historical event. Full error: ${require('util').inspect(err)}`);
});
@@ -121,6 +121,7 @@ Fleet Premium subscription details:
intentSignal: 'Submitted the "Send a message" form',
eventContent: message,
relatedCampaign: recordDetails.mostRecentCampaign,
eventSource: 'Website - Contact forms',
}).intercept((err)=>{
return new Error(`Could not create an historical event. Full error: ${require('util').inspect(err)}`);
});
+4 -1
View File
@@ -85,6 +85,8 @@ module.exports = {
await sails.helpers.salesforce.createCampaignMember.with({
salesforceContactId: recordDetails.salesforceContactId,
salesforceCampaignId: '701UG00000bLCLpYAO',// 2026_01-FE-GitOps_Workshop_Interest Campaign
}).tolerate((err)=>{
sails.log.warn(`When a user (${firstName} ${lastName}, email: ${emailAddress}) submitted the GitOps workshop request form, an error occurred when adding this user to a Salesforce campaign. Full error: ${require('util').inspect(err)}`);
});
if(!recordDetails.salesforceAccountId) {
@@ -98,12 +100,13 @@ module.exports = {
intentSignal: 'Submitted the "GitOps workshop request" form',
eventContent: descriptionForCrmUpdate,
relatedCampaign: recordDetails.mostRecentCampaign,
eventSource: 'Website - Workshop request',
}).intercept((err)=>{
return new Error(`Could not create an historical event. Full error: ${require('util').inspect(err)}`);
});
}).tolerate((err)=>{
sails.log.warn(`When a user (${firstName} ${lastName}, email: ${emailAddress}) submitted the gitops workshop request form, an error occured when updating CRM records for this user.\n Submission information: ${descriptionForCrmUpdate.split('Submission information:')[1]}\n Full error: ${require('util').inspect(err)}`);
sails.log.warn(`When a user (${firstName} ${lastName}, email: ${emailAddress}) submitted the gitops workshop request form, an error occurred when updating CRM records for this user.\n Submission information: ${descriptionForCrmUpdate.split('Submission information:')[1]}\n Full error: ${require('util').inspect(err)}`);
});
@@ -58,6 +58,7 @@ module.exports = {
eventType: 'Intent signal',
intentSignal: 'Requested webinar recording',
eventContent: webinarName,
eventSource: 'Website - Gated video',
}).intercept((err)=>{
return new Error(`Could not create an historical event. Full error: ${require('util').inspect(err)}`);
});
@@ -59,6 +59,7 @@ module.exports = {
intentSignal: 'Requested whitepaper download',
eventContent: whitepaperName,
relatedCampaign: recordDetails.mostRecentCampaign,
eventSource: 'Website - Gated document',
}).intercept((err)=>{
return new Error(`Could not create an historical event. Full error: ${require('util').inspect(err)}`);
});
+1
View File
@@ -246,6 +246,7 @@ the account verification message.)`,
eventType: 'Intent signal',
intentSignal: 'Signed up for a fleetdm.com account',
relatedCampaign: recordDetails.mostRecentCampaign,
eventSource: 'Website - Sign up',
}).intercept((err)=>{
return new Error(`Could not create an historical event. Full error: ${require('util').inspect(err)}`);
});
+20 -7
View File
@@ -32,19 +32,31 @@ module.exports = {
type: 'string',
required: true,
isIn: [
'Website - Contact forms',
'Website - Sign up',
'Website - Newsletter',
'Website - Swag request',
'Attended a call with Fleet',
'Event',
'Event - 2026-07 PSU MacAdmins',
'GitHub - Stared fleetdm/fleet',
'GitHub - Forked fleetdm/fleet',
'Event - Webinar',
'Event - Workshop - GitOps',
'GitHub - Contributed to fleetdm/fleet',
'GitHub - Forked fleetdm/fleet',
'GitHub - Stared fleetdm/fleet',
'LinkedIn - Comment',
'LinkedIn - Liked the LinkedIn company page',
'LinkedIn - Reaction',
'LinkedIn - Share',
'LinkedIn - Liked the LinkedIn company page',
'Prospecting - AE',
'Prospecting - Meeting service',
'Prospecting - Specialist',
'Website - Chat',
'Website - Contact forms',
'Website - Contact forms - Demo',
'Website - Contact forms - Demo - ICP',
'Website - Gated document',
'Website - Gated video',
'Website - Newsletter',
'Website - Sign up',
'Website - Swag request',
'Website - Workshop request'
],
},
jobTitle: {
@@ -153,6 +165,7 @@ module.exports = {
eventContentUrl: historicalContentUrl,
linkedinUrl: trimmedLinkedinUrl,
relatedCampaign: relatedCampaign || recordDetails.mostRecentCampaign,
eventSource: contactSource,
})
.intercept((err)=>{
sails.log.warn(`When the receive-from-clay webhook received information about LinkedIn activity, a historical event record could not be created. Full error: ${require('util').inspect(err)}`);
+33 -2
View File
@@ -81,6 +81,36 @@ module.exports = {
},
relatedCampaign: {
type: 'string',
},
eventSource: {
type: 'string',
isIn: [
'Attended a call with Fleet',
'Event',
'Event - 2026-07 PSU MacAdmins',
'Event - Webinar',
'Event - Workshop - GitOps',
'GitHub - Contributed to fleetdm/fleet',
'GitHub - Forked fleetdm/fleet',
'GitHub - Stared fleetdm/fleet',
'LinkedIn - Comment',
'LinkedIn - Liked the LinkedIn company page',
'LinkedIn - Reaction',
'LinkedIn - Share',
'Prospecting - AE',
'Prospecting - Meeting service',
'Prospecting - Specialist',
'Website - Chat',
'Website - Contact forms',
'Website - Contact forms - Demo',
'Website - Contact forms - Demo - ICP',
'Website - Gated document',
'Website - Gated video',
'Website - Newsletter',
'Website - Sign up',
'Website - Swag request',
'Website - Workshop request'
],
}
},
@@ -96,7 +126,7 @@ module.exports = {
},
fn: async function ({ salesforceAccountId, salesforceContactId, eventType, linkedinUrl, intentSignal, eventContent, eventContentUrl, fleetWebsitePageUrl, websiteVisitReason, relatedCampaign}) {
fn: async function ({ salesforceAccountId, salesforceContactId, eventType, linkedinUrl, intentSignal, eventContent, eventContentUrl, fleetWebsitePageUrl, websiteVisitReason, relatedCampaign, eventSource}) {
// Return undefined if we're not running in a production environment.
if(sails.config.environment !== 'production') {
sails.log.verbose('Skipping Salesforce integration...');
@@ -148,7 +178,8 @@ module.exports = {
Page_URL__c: fleetWebsitePageUrl,// eslint-disable-line camelcase
Website_visit_reason__c: websiteVisitReason,// eslint-disable-line camelcase
Related_campaign__c: relatedCampaign// eslint-disable-line camelcase
Related_campaign__c: relatedCampaign,// eslint-disable-line camelcase
Historical_event_source__c: eventSource// eslint-disable-line camelcase
});
}).intercept((err)=>{
return new Error(`An error occured when creating a new Historical event record in Salesforce. full error ${require('util').inspect(err, {depth: null})}`);
@@ -41,6 +41,8 @@ module.exports = {
'Attended a call with Fleet',
'Event',
'Event - 2026-07 PSU MacAdmins',
'Event - Webinar',
'Event - Workshop - GitOps',
'GitHub - Contributed to fleetdm/fleet',
'GitHub - Forked fleetdm/fleet',
'GitHub - Stared fleetdm/fleet',
@@ -53,14 +55,14 @@ module.exports = {
'Prospecting - Specialist',
'Website - Chat',
'Website - Contact forms',
'Website - Contact forms - Demo - ICP',
'Website - Contact forms - Demo',
'Website - Workshop request',
'Website - Contact forms - Demo - ICP',
'Website - Gated document',
'Website - Gated video',
'Website - Newsletter',
'Website - Sign up',
'Website - Swag request',
'Website - Gated document',
'Website - Gated video',
'Website - Workshop request'
],
},
getStartedResponses: {
@@ -208,8 +210,8 @@ module.exports = {
'Website - Contact forms - Demo - ICP',
'Website - Contact forms - Demo',
'Website - Workshop request',
'Webinar',
'Website - Gated document',
'Website - Gated video',
];
if(contactSource && formBasedContactSources.includes(contactSource)) {
contactValuesToSet.Most_recent_campaign_member_status__c = 'Registered';// eslint-disable-line camelcase
+1
View File
@@ -402,6 +402,7 @@ will be disabled and/or hidden in the UI.
eventType: 'Website page view',
websiteVisitReason: websiteVisitReason,
relatedCampaign: recordDetails.mostRecentCampaign,
eventSource: 'Website - Sign up',
}).intercept((err)=>{
return new Error(`Could not create new Fleet website page view record. Error: ${err}`);
});