Related to: https://github.com/fleetdm/fleet/issues/49212
Changes:
- Updated the custom hook to create `sails.androidProxyApiRequestCount`,
and to log and reset the value every minute
- Updated android proxy endpoints to increment
`sails.androidProxyApiRequestCount` every time a request to the Android
management API is sent
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Monitoring**
* Added comprehensive tracking for Android Management API requests
across enrollment, enterprise, device, application, policy, and command
operations.
* Added periodic request-count logging and automatic resets when Android
Enterprise credentials are configured.
* Improved reporting alignment with minute-based API limits while
keeping logs quiet during periods without requests.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
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 -->
Following the pattern we have for Clay updating historical events with
the campaign name, this updates the historical event to include the
campaign name for website events.
After the contact is created/updated, we now include the campaign name
as a parameter for the historical event to update/populate the existing
field on the sfdc historical event object.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Historical events for signups, newsletter subscriptions, contact/quote
requests, whitepaper downloads, workshop requests, and page views now
include campaign association to improve marketing analytics.
* **Bug Fixes / Reliability**
* Webhooks now fall back to the most recent campaign when none is
provided.
* **Chores**
* Backend responses now expose a mostRecentCampaign field to support
campaign attribution.
<!-- review_stack_entry_start -->
[](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45750?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)
<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Eric <eashaw@sailsjs.com>
Closes: https://github.com/fleetdm/confidential/issues/14391
Changes:
- Updated the attribution cookie set in the website's custom hook to
include the value of a user's `gclid` query parameter (if it is set)
- Updated the updateOrCreateContactAndAccount helper to set this value
on created Contact records.
Closes: https://github.com/fleetdm/fleet/issues/38375
Changes:
- Added a new intent signal value to the create-historical-event helper
- Updated the signup action to create a historical event when new users
sign up.
https://github.com/fleetdm/confidential/issues/13605
Changes:
- Updated the website's custom hook to set a `marketingAttribution`
cookie.
- Updated places where we use the update-or-create-contact-and-account
helper to pass in a requesting user's marketingAttribution cookie.
- Updated the update-or-create-contact-and-account helper to process
values from the marketingAttribution cookie.
Closes: https://github.com/fleetdm/confidential/issues/10718
Related to: https://github.com/fleetdm/confidential/issues/10719
Changes:
- Created a new helper
(`sails.helpers.salesforce.createHistoricalEvent`) to create Historical
event records in our CRM.
- Updated the custom hook, receive-from-clay webhook, and
create-or-update-one-newsletter-subscription action to create historical
event records using the new helper.
Changes:
- Updated the Historical event crm records created by the website's
custom hook to include an `Event_type__c` value and to not set a
`Visited_on__c` timestamp.
Closes: #23904
Changes:
- Replaced the regex routes that handle articles and article category
pages to have a separate route for each category
- Updated the build-static-content script to transform periods in
article filenames into dashes
- Added redirects for articles that have a changed URL
Closes: #24399
Changes:
- Updated the website's custom hook to validate values in the
sails.config.custom.githubRepoDRIByPath config variable when the website
starts.
Changes:
- Updated the update-or-create-contact-and-account helper to update
created contact records with a psychological stage
- Updated places where we were using the
update-or-create-contact-and-account helper to set a contact source on
new records.
Closes: #23107
Changes:
- Updated the custom hook to send `adAttributionString` to Fleet website
page view records if that value was set in a logged-in user's session
<30m before they visit a page.
Closes: #22881
Changes:
- updated the website's custom hook to only create Fleet website page
view records if the requested URL will not redirect the user and to not
log warnings caused by duplicate records.
Closes: #21694
Changes:
- Updated the custom hook to run the
`update-or-create-contact-and-account` helper and create a fleet website
page view record in the background when logged-in users visit a page.
Changes:
- Updated the `update-or-create-contact-and-account` helper to support a
new input: `psychologicalStageChangedBy`, and to set the provided value
on contact records.
- Updated `save-questionnaire-progress` to set a
psychologicalStageChangedBy value when updating contact records.
Closes: #21417Closes: #21413Closes: #21378
Changes:
- Updated save-questionnaire-progress to return the user's current
psychological stage when a user submits a step of the /start
questionnaire
- Updated the /start questionnaire to display an image that changes as
the user's psychological stage progresses.
- Updated the first step of the /start questionnaire and gave users the
ability to go back to the first step.
- Added an option for Linux to the "what do you manage" question that is
asked to MDM-focused users
- Added a step for MDM-focused users filling out the /start
questionnaire
- Updated the /start CTA to show different images based on psychological
stage and to be visible to users who have not purchased a self-service
license
Closes: #20189
Changes:
- Made the CTA for the get started questionnaire visible to users who
have completed the "Thanks for checking out Fleet" step
- Updated the background of the image in the mobile start CTA.
- Updated the get started questionnaire to take users who have completed
the "Thanks for checking out Fleet" step to either the "What did you
think?" or "How was your deployment?" steps
Closes: #18530
Changes:
- Added a collapsable sitewide CTA to bring users who have not completed
the get started questionnaire back to the /start page.
- Added a new action (`account/updateStartCtaVisibility`) to set a
timestamp of when the CTA will be visible (not collapsed) in a user's
session when they close the CTA
---------
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
Changes:
- Updated personalization on the integrations section of the homepage
for users with `vm` or `eo-security`.
- Added a `FUTURE:` note to the custom hook detailing how to use the
platform model to be smarter about sending requests to the Algolia
crawler.
Closes: #18295
Changes:
- Updated the custom hook to set `res.locals` for HEAD requests to
prevent 500 errors when a request is sent to a page that references
`res.locals.me`
Changes:
- updated the custom hook to support clearing the
`primaryBuyingSituation` with a query string (`?utm_content=clear`)
- Updated the pricing page to pre-select a pricing table mode based on a
user's `primaryBuyingSituation`
- reordered content on and updated the /support page to personalize/hide
community slack links based on a user's `primaryBuyingSituation`
- Updated the meta description of the product category landing pages
- updated personalization based on `primaryBuyingSituation` on the
/contact page.
- Updated the title of the /queries page based on the user's
`primaryBuyingSituation`
- Added personalization to the product category landing pages.
Changes:
- Updated the custom hook to set `res.locals.primaryBuyingSituation` for
HEAD requests to prevent 500 errors when `primaryBuyingSituation` is not
set to `undefined`.
Changes:
- Updated the custom hook to not set
`req.session.primaryBuyingSituation` as undefined if a user does not
have a `utm_content` query parameter.
Closes: #10984
Changes:
- Added an override `sails.LOOKS_LIKE_ASSET_RX` value to the custom hook
that does not match paths that start with `/releases/`.
Changes:
- Updated the custom hook to include a POST request to Algolia to
refresh the Fleetdm.com search index.
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
* rename dir
* no need to install website or docs from npm
At some point, would also be nice to be able to exclude assets/ as well, and to only install a pre-built version of Fleet's frontend code
* Bring in fleetdm.com website
From https://github.com/fleetdm/fleetdm.com as of https://github.com/fleetdm/fleetdm.com/releases/tag/v0.0.21
* add procfile for heroku
Using https://github.com/timanovsky/subdir-heroku-buildpack
* avoid getting anybody's hopes up
* Create deploy-fleet-website.yml (#82)
* Create deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* update pjs with SPDX-like license expressions. also fix repo URL
and remove package lock
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* remove dummy uri
* Dissect deploy script
* Update deploy-fleet-website.yml
* workaround for eslintrc nesting issue
* lint fixes
* forgot the .js
* add per-commit git config
* Update deploy-fleet-website.yml
* might as well remove that
* cleanup
* connect w/ heroku app and have it actually push
* fix bug I introduced in 578a1a01ffb8404aae869e05005e30a6ba2b2a95
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* the beauty, the glory, of javascript
* GH actions don't like "\n"
* Update deploy-fleet-website.yml
* restore \n chars from 0d45e568f693efba7d7072085bc98d72a482d9ae
hoping I was wrong in 0d45e568f693efba7d7072085bc98d72a482d9ae but see also https://github.community/t/what-is-the-correct-character-escaping-for-workflow-command-values-e-g-echo-xxxx/118465/5
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* Update deploy-fleet-website.yml
* rename script to prevent duplicate building
* Configure the real website
* clean up
* a test of the deploy workflow
* add handbook to npmignore
* I guess you could call this fixing a typo
* point workflow at master branch
* now clearly bogus: this completely unused version string