Commit Graph
852 Commits
Author SHA1 Message Date
b4364328c4 Add Ed Merrett testimonial to security-and-control and visibility-and-reporting pages (#47764)
## Summary

- Adds a new testimonial quote from Ed Merrett (Director, Security &
TechOps @ Harmonic Security) to `handbook/company/testimonials.yml`
- Wires up the testimonial to appear at the end of the quote carousels
on both `/security-and-control` and `/visibility-and-reporting` pages
- Adds a placeholder profile image for the testimonial author

**Quote:** "We use Fleet Device Management. Basically, osquery is the
answer."

**Note:** The profile image
(`testimonial-author-ed-merrett-48x48@2x.png`) is a placeholder
transparent PNG. Replace with Ed Merrett's actual profile photo when
available.

---

Built for [Mike
McNeil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1781716393012429?thread_ts=1780459268.285059&cid=D0AFASLRHNU)
by [Kilo for Slack](https://kilo.ai/slack)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Co-authored-by: Eric <eashaw@sailsjs.com>
2026-06-18 18:34:59 -05:00
Eric 0579699ae0 Website: update 404 page (#47726)
Changes:
- Added api/responses/notFound.js, an updated version of the notFound
response built into Sails that sets a `hideFooter` page local variable
to hide the website footer on the 404 page.
- Updated the styles and layout of the 404 page to match the latest
wireframes.

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

## Release Notes

* **New Features**
* Completely redesigned the 404 error page with refreshed content and a
more modern layout.
* Added new visual styling, including animated interactive elements on
the 404 page.

* **Bug Fixes**
* Improved 404 response handling to consistently return the correct
status for JSON requests and render the 404 page when available.
* Ensures the 404 page can render cleanly even if view rendering fails,
and hides the footer for a cleaner error-page presentation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-18 18:34:28 +09:00
Eric a7a98d6c6a Website: update get-enriched helper (#47688)
Changes:
- Updated the get-enriched helper to not use deleted locations returned
from Coresignal when including information about a company's
headquarters.
2026-06-16 13:25:46 -05:00
EricandMike Thomas 4e4fa9a649 Website: add "Security & control" page (#47377)
Changes:
- Added a new page: /security-and-control
- Added a link to the new page in the "Solutions" header dropdown menu


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

## Summary by CodeRabbit

## New Features
* Added a new "Security & control" page featuring security solutions
overview, product features including software inventory and autonomous
remediation capabilities, customer testimonials, and call-to-action
sections. The page is accessible via the updated website navigation
menu.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
2026-06-16 17:20:07 +09:00
Eric 6f8251cadd Website: Update get-territory-user-id helper (#47630)
Changes:
- Updated the get-territory-user-id helper to not require a country
input, but to throw an error if one is not provided. This is done to
replace the default usageError that is thrown by helpers with an error
that provides more information about the provided inputs

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

## Summary by CodeRabbit

* **Refactor**
* Improved input validation error handling for territory lookups to
provide clearer error messages during runtime.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-15 15:03:28 -05:00
Eric 7a1264154c Website: update testimonials on visibility and reporting page (#47542)
Changes:
- Updated the testimonials shown on the visibility and reporting page.

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

## Summary by CodeRabbit

## Release Notes

* **Updates**
* Modified the selection and order of testimonials displayed on the
Visibility and reporting page.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-12 15:05:00 -05:00
Eric 934268bccb Website: update error handling in Github webhook (#47533)
Related to: https://github.com/fleetdm/fleet/issues/47391

Changes:
- Updated the receive-from-github webhook to log a warning and return a
200 response when a request to the GitHub GraphQL API to find issue
details fails.
2026-06-12 12:46:09 -05:00
Eric fee63bba51 Website: Update user routing in deliver-talk-to-us-submission action (#47457)
Related to: https://github.com/fleetdm/confidential/issues/16303

Changes:
- Added a new Salesforce helper: getTerritoryUserId, a helper that
returns the ID of the Salesforce user associated with a provided
location (state, country, city)
- Updated the deliver-talk-to-us-form-submission action to send ICP
users to one of five different Calendly events based on their company's
headquarters location.
- Updated the get-enriched helper to include company headquarters
information when enriching a user.
2026-06-11 16:37:37 -05:00
Eric 3f169965c4 Website: add support for new usage statistics (#47144)
Closes: https://github.com/fleetdm/fleet/issues/42891


Changes:
- Added support for two new usage statistics, `gitOpsModeEnabled` and
`gitOpsModeExceptions`.

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

## Summary by CodeRabbit

* **Chores**
* Updated analytics infrastructure to support expanded configuration
tracking.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-08 18:22:25 -05:00
Eric 8ed163129a Website: update testimonial order (#46971)
Closes: https://github.com/fleetdm/fleet/issues/46872

Changes:
- Updated the `productCategories` value of the testimonial from Adam
Pippert to show it on the /software-management page.
- Updated the order of testimonials on the homepage,
/software-management, /device-management, and /linux-management
2026-06-05 17:11:28 -05:00
Eric 9d23b8509a Website: Update orchestration page content & url (#46789)
Closes: https://github.com/fleetdm/fleet/issues/45687

Changes:
- Updated the orchestration page to be at /visibility-and-reporting, and
updated the content and layout to match the latest wireframes
- Added a redirect for /orchestration going to /visibility-and-reporting
- Removed unused images

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

* **New Features**
* Launched redesigned "Visibility & Reporting" marketing page: new hero,
CTAs, feature sections, testimonials (including scrollable tweets), and
parallax background.
* Added site navigation entry for "Visibility & reporting" and redirect
from /orchestration to /visibility-and-reporting.

* **Style**
* New responsive heading styles and a dedicated page stylesheet for
improved layout, spacing, and mobile behavior.

* **Behavior**
* Testimonials payload simplified — personalization-driven headline
variations removed.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-04 17:44:56 +09:00
38eade73ff Edit marketing handbook (#46692)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Style**
  * Reformatted marketing ritual data structure in handbook

* **Refactor**
  * Removed workshop creation automation script

* **Chores**
* Updated GitHub webhook authorization whitelist for bot and maintainer
access control

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---

Built for [Sam
Pfluger](https://fleetdm.slack.com/archives/D0AF8QFBVHB/p1780458404375619?thread_ts=1775094096.519039&cid=D0AF8QFBVHB)
by [Kilo for Slack](https://kilo.ai/slack)

Built for [Mike
McNeil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1780459512087809?thread_ts=1780459268.285059&cid=D0AFASLRHNU)
by [Kilo for Slack](https://kilo.ai/slack)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
2026-06-02 23:41:17 -05:00
Eric 0bd7dbce72 Website: update description set by demo form submissions (#46660)
Closes: https://github.com/fleetdm/confidential/issues/16016

Changes:
- Updated the contact description set when users fill out the "Talk to
us" form.
2026-06-02 13:10:38 -05:00
Eric b911c82c30 Website: Update application form submission action (#46403)
Closes: https://github.com/fleetdm/confidential/issues/16057

Changes:
- Added `email-application-submitted`, an email template that is used to
reply to users who fill out the "Apply" form
- Updated the `deliver-application-submission` action to return an
`invalidEmailDomain` response if a user's email address is on the
bannedEmailDomainsForContactFormSubmissions list, and to send a "Thank
you for applying to Fleet" email to the user who submitted the form.
- Stubbed a new custom config variable: `applicationReplyEmailAddress`

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

* **New Features**
* Applicants receive a "Thanks for applying to Fleet" confirmation email
with a personalized greeting and ~7-day expectation.
* Added an application-submitted email template and preview using the
email layout.

* **Improvements**
* Added a hidden honeypot field to the application form; submissions
with it filled are silently discarded.
* Added email-domain validation with a specific form error and clearer
error rendering.
  * Redirected jobs to the internal handbook open-positions section.

* **Chores**
* Added a commented placeholder for an application reply email setting.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-02 12:36:26 -05:00
Eric 36cbfa2887 Website: update /device-management page (#46618)
Closes: https://github.com/fleetdm/fleet/issues/45686

Changes:
- updated layout and content of the /device-management page to match the
latest positioning/wireframes

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

* **New Features**
* Added testimonial block with scrollable tweets and responsive brand
logo grid
* Introduced new feature sections: patching, real-time compliance,
change management, transparency, and flexible deployment

* **Updates**
* Full redesign of the device management page: layout, typography,
spacing, responsive behavior, and testimonial/tweet styling
  * Updated hero copy and primary CTA to “Talk to an engineer”

* **Removals**
* Removed desktop/mobile comparison table, legacy feature blocks, video
modal, and swag request form
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-02 12:17:51 -05:00
Sam Pfluger 84b1f12017 Add 'Website - Swag request' to webhook options (#46617)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added support for website swag request contacts in webhook processing,
enabling the system to accept and validate requests from this new
contact source type.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-01 20:06:25 -05:00
Mike McNeilandEric 53139842f4 Website: Heading looks weird without tabs (#46413)
<img width="1048" height="205" alt="image"
src="https://github.com/user-attachments/assets/8f72da4d-d898-41ec-94bd-79f747eedda5"
/>


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

* **Documentation**
* Reorganized pricing table: device-related features are now grouped
under "Device management" for clearer, more consistent categorization.
* **Bug Fixes**
* Pricing page grouping updated so the new category displays correctly.
* **Chores**
* Build/validation updated to accept the "Device management" category,
preventing misclassification during site builds.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46413?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>
2026-06-01 11:38:55 -05:00
Victor Lyuboslavsky 76b0134b7b Added endpoint to fleetdm.com proxy (#46107)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #41683 

fleetdm.com for Android commands:

https://developers.google.com/android/management/reference/rest/v1/enterprises.devices/issueCommand

# Checklist for submitter

## Testing

- [x] QA'd all new/changed functionality manually

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

* **New Features**
* Added a new API endpoint to issue commands to Android Enterprise
managed devices with secure authentication, enterprise/device
validation, dynamic command parameters, management-status checks, and
clear error responses for rate limits, unmanaged devices, and auth
failures.
* Exposed a new Cloud SDK method to invoke the device-command endpoint
from browser/server clients.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46107?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 -->
2026-06-01 10:32:48 -05:00
johnjeremiah 45a7ad25e0 Add Organic AI referrer attribution (#46182)
Detect AI/LLM referrers and classify them as an "Organic AI (AI)"
source. Adds a REFERRER_DOMAINS_FOR_ORGANIC_AI list and branching logic
to set attributionDetails.sourceChannelDetails and
attributionDetails.campaign based on the referring AI platform (ChatGPT,
Claude, Gemini, or Other) in
website/api/helpers/salesforce/update-or-create-contact-and-account.js.

<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** 
resolves fleetdm/confidential#16034
 



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

* **New Features**
* Improved contact attribution: traffic from AI/LLM platforms (ChatGPT,
Claude, Gemini, etc.) is now labeled "Organic AI (AI)" and assigned
platform-specific default campaigns.
* Refined organic search detection to better identify Bing search
referrals.
* Other non-digital/non-event referrers now default to "Web referral
(WR)".

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46182?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 -->
2026-05-29 18:38:59 -04:00
Mike McNeilandEric 84da114c14 Website: Contributor experience: Allow pages to load without requiring build (#46225)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Scrollable tweets display more robustly when size/DOM measurements
fail.
* Several page renderers now tolerate missing static-content builds and
will show configured testimonials instead of erroring.

* **New Features**
* Dev/local setups now inject a placeholder testimonial to guide running
the static-content build.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46225?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>
2026-05-28 14:40:07 -05:00
Eric 1cf6cce5b2 Website: remove switch from features table on pricing page (#46265)
Changes:
- Removed the switch from the features table on the /pricing page

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

## Summary by CodeRabbit

## Release Notes

* **Updated Features**
* Pricing page now displays a single comprehensive feature table instead
of multiple filtered views
  * Removed the pricing mode switcher control from the pricing page
  * Updated pricing page styling and layout

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46265?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 -->
2026-05-27 11:57:15 -05:00
2e437aa6d1 Ak new android page for SEO (#46040)
Not linked to nav or added to footer
added to sitemap

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

* **New Features**
* Added an Android Device Management landing page with hero, marketing
sections, feature comparisons, self‑hosted vs hosted details, and a
testimonials carousel filtered to device‑management content.
* Page is reachable at /lp/android-mdm and its client script is
auto‑included.

* **Style**
  * Added comprehensive responsive styling across multiple breakpoints.

* **Chores**
  * Included the new landing page URL in the generated sitemap.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46040?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: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Eric <eashaw@sailsjs.com>
2026-05-26 16:11:11 -05:00
johnjeremiahandEric cc2cb0a204 Add mostRecentCampaign to event records (#45750)
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 -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](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>
2026-05-22 22:38:29 -04:00
365f80558c using attributionDetails to store referrer (#46096)
Not seeing referrer data in SFDC, making this code consistent to
troubleshoot


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

* **Refactor**
* Standardized referrer attribution so referrer URLs are consistently
captured from attribution data and applied for both new and existing
contacts in the Salesforce integration, improving accuracy of marketing
attribution and recent referrer tracking.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46096?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: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Eric <eashaw@sailsjs.com>
2026-05-22 22:37:33 -04:00
johnjeremiah 66f5b46903 Improve referrer matching and add domains (#45803)
A small bug in our attribution logic. R

Replace exact equality checks with startsWith() (via Array.some). 

The classification uses Array.includes(), which requires an **exact
string match**.
The lists contain bare root domains:  for example

> 'https://www.linkedin.com/'
> 'https://www.reddit.com/'
> 'https://x.com/'

The stored referrer is always the full URL of the specific page the
visitor came from, including path.

So - if an Organic Social URL was https://www.linkedin.com/feed/ 
It does not equal https://www.linkedin.com/ 
and 
The match fails, and the visit falls through to Web Referral. (this
would be incorrect)


Also - Expand search engine list (generalized Google domain, added
Startpage, Brave, Kagi, Yandex entries) and significantly extend social
referrer list (LinkedIn variants, lnkd.in, Hacker News, X/Twitter
variants, Facebook mobile/l.facebook, Instagram, Threads, Bsky, Mastodon
instances, YouTube, Reddit variants, Pinterest, Quora, etc.).

These changes make Organic search/social detection more accurate across
country TLDs, subdomains and shortened links.




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

* **Bug Fixes**
* Improved Salesforce traffic attribution by expanding organic referrer
allowlists and enhancing matching to better detect organic search and
social sources.
* Normalized referrer values when absent or malformed to prevent
misclassification, yielding more accurate traffic categorization and
attribution reporting.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45803?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 -->
2026-05-22 09:00:16 -04:00
johnjeremiah 04e0befd79 Populate referrer fields from marketing cookie (#45807)
Set Salesforce contact referrer fields from
marketingAttributionCookie.referrer. Adds Source_referrer_url__c and
Most_recent_referrer_url__c assignments in the initial attribution block
and an additional Most_recent_referrer_url__c assignment in the later
block so referrer data is persisted when creating/updating contacts.




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

## Summary by CodeRabbit

* **New Features**
* Enhanced Salesforce integration with improved contact attribution
tracking. Referrer information is now automatically captured and stored
in designated attribution fields for both newly created and updated
contact records, enabling more comprehensive tracking of customer
acquisition sources and marketing engagement paths throughout the user
journey.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45807?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 -->
2026-05-22 08:18:47 -04:00
Ashish KuthialaandEric 228b6c82d0 Add new windows mdm page (#45690)
iteration 1

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

## Summary by CodeRabbit

* **New Features**
* Launched a comprehensive Windows Device Management landing page
showcasing Fleet's Windows MDM features, capabilities, and deployment
options. The page features detailed product information, multiple
hosting configurations (self-hosted, Fleet-hosted, air-gapped), verified
customer testimonials, video demonstrations, and a comprehensive FAQ
section addressing Windows MDM enrollment, management, and support
topics. Accessible at `/lp/windows-mdm`.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45690?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>
2026-05-20 16:48:04 -05:00
Josh RoskosandEric 0b7fb7ffc2 Add testimonial from Andy Gombar (#45793)
Adding new testimonial -
https://fleetdm.slack.com/archives/C02TYJF11P0/p1778870833033779

Customer approved -
https://fleetdm.slack.com/archives/C0AHV3ZUHB9/p1779199990888579?thread_ts=1779199930.725129&cid=C0AHV3ZUHB9


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

* **New Features**
* Added a new featured customer testimonial for Observability with full
quote, author attribution, profile image, supporting visuals, and link.
* **Improvements**
* Updated testimonials ordering on the Observability page to include an
additional author so testimonials display in the intended sequence.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45793?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>
2026-05-19 15:09:46 -05:00
Eric 13ac73b65d Website: update Stripe webhook (#45758)
Changes:
- Updated the receive-from-stripe webhook to handle
`customer.subscription.updated` type events sent by Stripe when a
subscription's number of hosts is changed in the Stripe UI.
2026-05-18 17:34:44 -05:00
Eric 87589e1291 Website: Update sitemap (#45751)
Changes:
- Added pages in the landing-pages folder and two article category pages
to the sitemap.

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

## Summary by CodeRabbit

* **Chores**
* Added whitepapers and webinars pages, along with additional landing
pages to the sitemap for broader site coverage.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45751?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 -->
2026-05-18 16:36:41 -05:00
johnjeremiah e8ff0b1a42 Set campaign member status for form-based contacts (#45427)
Add a list of form-based contact sources and set
Most_recent_campaign_member_status__c to 'Registered' when contactSource
matches any of them. This marks contacts originating from website
contact forms, webinars, gated docs, and related sources as registered.
The change includes an eslint-disable-line camelcase comment for the
Salesforce field name.




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

## Summary by CodeRabbit

* **Bug Fixes**
* Enhanced contact registration tracking to automatically set
appropriate campaign status when contacts are registered through
form-based sources such as webinars.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45427)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-18 10:52:39 -04:00
Eric 07d84b14c0 Website: add article category page for webinars (#45660)
Closes: https://github.com/fleetdm/confidential/issues/15702

Changes:
- Added /webinars, an article category page for webinar articles
- Added a link to the /webinars to the sidebar on the article category
pages.
- Removed webinar articles from the "Blog" category

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

## Summary by CodeRabbit

## Release Notes

* **New Features**
* Added a dedicated Webinars section with a new navigation link in the
articles sidebar.
* Webinars are now displayed separately from other article content
types.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45660?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 -->
2026-05-15 17:55:50 -05:00
Eric 5a0b17bac5 Website: Update landing pages folder and routes (#45632)
Changes:
- Moved the files for four pages (linux-management, basic-comparison,
deployment, and gitops-workshop) out of the landing pages folder.
- Added policies for the moved pages
- Updated the URLs for pages in the landing pages folder to be prefixed
with /lp/, and added redirects that preserve query strings when
redirecting users.
- Created a section in the routes configuration for landing pages

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

* **New Features**
* Implemented /lp/* landing-page paths with 301 redirects from legacy
URLs (query strings preserved).
* Added public access exceptions so selected marketing pages are
reachable without login.

* **Refactor**
* Reorganized routing and page templates to move several pages out of
the previous landing-pages area into dedicated page paths.
* Updated included page scripts and style imports to match the
reorganized pages.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45632)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-15 14:04:45 -05:00
Ashish KuthialaandEric b166e11786 Create landing page on Fleet open source benefits (#45453)
Reviewed with Mike T - colors are ok for landing page.

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

* **New Features**
* Launched the "Open Source" landing page with hero, CTAs, terminal
install snippet, feature sections, handbook callout, FAQ (with JSON‑LD),
interactive visuals and client-side page wiring.

* **Styles**
* Added comprehensive responsive styles across desktop and mobile
breakpoints.

* **UX**
* Testimonials are now reordered using a prioritized list to surface key
contributors.

* **Routing**
* New public route exposes the landing page and includes page metadata.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45453)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Eric <eashaw@sailsjs.com>
2026-05-15 09:49:27 -05:00
Eric 48f8fb733e Website: add /download page (#45504)
Closes: https://github.com/fleetdm/fleet/issues/43242

Changes:
- Added /download, a page that has links to download the fleetctl
installers included in the latest release
- Updated the build-static-content script to send a request to GitHub to
get the download URLs of the latest released fleetctl installers.
- Update the parallax-city component to support a new prop that removes
the component's background when set.

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

* **New Features**
* Added a dedicated /download page with platform-specific installer
links, FAQ accordion, and copy-to-clipboard for code snippets (copy
buttons removed if unsupported).
  * Added shortlink redirect from /downloads → /download.
  * Sitemap now includes /download for better discoverability.

* **Style**
* New page styles and component styles, plus an option to render the
parallax city without a background.

* **Chores**
* Build now fetches and populates installer URLs automatically; the
download route is publicly accessible.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45504)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-14 12:41:27 -05:00
Ashish KuthialaandEric 62b320fb0b New apple management page as landing page (#45392)
For apple mdm search terms

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

* **New Features**
* Launched a dedicated Apple Device Management landing page with hero,
marketing sections, testimonials carousel, and bottom CTA.
* Added embedded video modal and client-side page behavior for
interactive presentation.
* Included page-specific styles and ensured the page is served at
/imagine/apple-mdm with updated route metadata.
* **Chores**
  * Injected the new page bundle into the global layout.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45392)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Eric <eashaw@sailsjs.com>
2026-05-13 21:19:02 -05:00
Sam Pfluger 8b64d27f35 Add "Requested Fleet SWAG" to intent signals (#45443)
@eashaw, I also updated the intent signals for the receive-from-clay.js
to match create-historical-event.js



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

## Summary by CodeRabbit

## Release Notes

* **Improvements**
* Expanded system support for tracking additional customer interaction
types, including training attendance, meetings, forms, account updates,
and marketing activities.
  * Added new event type for swag requests.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45443)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-13 19:52:28 -05:00
e4c6dd84b2 New Fleet autonomous endpoint management page (#45342)
to be published in landing page folder and not linked from the main
navigation

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

* **New Features**
* Added an Autonomous Endpoint Management landing page with full
marketing content, capability highlights, autonomous patching workflow,
GitOps messaging, and demo CTA.
* Includes a scrollable testimonials section, responsive styles across
breakpoints, and an interactive video modal.
* Page is reachable via a new route and loads the required client script
and styles.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45342)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: johnjeremiah <jjeremiah@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Eric <eashaw@sailsjs.com>
2026-05-13 11:29:19 -05:00
johnjeremiahandEric 65f2d97dec Landing page for AH's linkedin post (#45278)
This is an experiment landing page to see if we get any different
results from his post


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

* **New Features**
* Added "Patch Faster" landing page with marketing content, responsive
styles, and page-level meta (title/description)
* Interactive demo request form with client-side validation, submission
flow, conversion tracking, and success state
* Integrations/platforms and proof sections plus a CTA and client script
to boot the page UI

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/45278)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Eric <eashaw@sailsjs.com>
2026-05-12 21:28:13 -04:00
aa49a036c3 Ak test claude to create on-premise page (#44019)
Adding a new webpage on-premise and the menu navigation button using
Claude

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

## Summary by CodeRabbit

* **New Features**
* Introduced "On-premise" landing page with deployment details, feature
highlights, comparison tables, and customer testimonials
  * Added "On-premise" option to Solutions navigation menu

* **Style**
  * Updated homepage content and layout

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Eric <eashaw@sailsjs.com>
Co-authored-by: johnjeremiah <jjeremiah@gmail.com>
2026-05-08 17:23:06 -05:00
bfde04a076 testimonials.yml: patch management (#44717)
## Summary

- Adds a new testimonial from Brian LaShomb (Senior Client Platform
Engineer, Epic Games) to `handbook/company/testimonials.yml`
- Quote highlights Fleet's patch management capabilities — how quickly a
patch policy can be created and deployed using Fleet's maintained apps
- Source: [LinkedIn
post](https://www.linkedin.com/posts/brian-lashomb-8056705_when-adobe-released-a-patch-for-the-recent-share-7449543960177569792-EMew)

---

Built for [Mike
McNeil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1777938640694949)
by [Kilo for Slack](https://kilo.ai/slack)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Eric <eashaw@sailsjs.com>
2026-05-08 02:23:17 -05:00
Eric 8e522d0e7c Website: remove stripe script tag, update customer dashboard (#44159)
Website: 
- Removed the stripe script tag from the website layout
- Removed the stripe-card-element component
- Removed stripe from the assets eslint configuration
- Removed unused methods and modals from the customer dashboard
- Removed the unused sails account-overview page
- Removed the open-stripe-checkout utility

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

## Summary by CodeRabbit

* **Refactor**
  * Removed Stripe payment integration from the application.
* Removed account overview page and associated billing management
features.
* Removed payment card management functionality (add, update, remove
cards) from the dashboard.

* **Style**
  * Removed styles for deprecated payment components.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-07 11:30:55 -05:00
Isabell Reedy c39dbf66ea Update receive-from-github.js (#43597)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.

- [ ] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.
- [ ] Timeouts are implemented and retries are limited to avoid infinite
loops
- [ ] If paths of existing endpoints are modified without backwards
compatibility, checked the frontend/CLI for any necessary changes

## Testing

- [ ] Added/updated automated tests
- [ ] Where appropriate, [automated tests simulate multiple hosts and
test for host
isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing)
(updates to one hosts's records do not affect another)

- [ ] QA'd all new/changed functionality manually

For unreleased bug fixes in a release candidate, one of:

- [ ] Confirmed that the fix is not expected to adversely impact load
test results
- [ ] Alerted the release DRI if additional load testing is needed

## Database migrations

- [ ] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [ ] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [ ] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).

## New Fleet configuration settings

- [ ] Setting(s) is/are explicitly excluded from GitOps

If you didn't check the box above, follow this checklist for
GitOps-enabled settings:

- [ ] Verified that the setting is exported via `fleetctl
generate-gitops`
- [ ] Verified the setting is documented in a separate PR to [the GitOps
documentation](https://github.com/fleetdm/fleet/blob/main/docs/Configuration/yaml-files.md#L485)
- [ ] Verified that the setting is cleared on the server if it is not
supplied in a YAML file (or that it is documented as being optional)
- [ ] Verified that any relevant UI is disabled when GitOps mode is
enabled

## fleetd/orbit/Fleet Desktop

- [ ] Verified compatibility with the latest released version of Fleet
(see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/workflows/fleetd-development-and-release-strategy.md))
- [ ] If the change applies to only one platform, confirmed that
`runtime.GOOS` is used as needed to isolate changes
- [ ] Verified that fleetd runs on macOS, Linux and Windows
- [ ] Verified auto-update works from the released version of component
to the new version (see [tools/tuf/test](../tools/tuf/test/README.md))


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

## Summary by CodeRabbit

* **Chores**
* Removed a GitHub account from the maintainer allowlist, preventing it
from triggering automated webhook actions including Slack notifications
and repository management behaviors.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-06 14:32:50 +01:00
Eric 5ab0ead09a Website: remove /meetups and update routes (#44701)
Changes:
- Removed the /meetups page, and added a redirect going to
/gitops-workshop
- Changed the route for the query generator back to /query-generator
(was /report-generator), and updated links going to that page.
2026-05-04 17:08:21 -05:00
Eric 1c89b79dbe Website: Fix typo in ms compliance proxy inputs (#44258)
Closes: https://github.com/fleetdm/confidential/issues/15631

Changes:
- Fixed a typo in the inputs on three microsoft proxy endpoints

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

## Summary by CodeRabbit

* **Bug Fixes**
* Corrected input validation to properly enforce required fields in
Microsoft proxy endpoints.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-27 16:35:20 -05:00
Eric d55b60d320 Website: update CRM helper (#44081)
Closes: https://github.com/fleetdm/fleet/issues/44066

Changes:
- updated the `update-or-create-contact-and-account` helper to:
- Save potential duplicate contacts with placeholder name values (`?
?`).
- Use the firstName and lastName values returned by the get-enriched
helper if a name is not provided.
   - Update contacts with placeholder name values if a name is provided.
 - Removed a domain from the lists of banned email domains.

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

## Summary by CodeRabbit

* **New Features**
* Enhanced Salesforce contact creation with automatic name derivation
from enrichment data.
* Improved duplicate detection allowing new contacts to be created with
flexible matching rules.
* Automatic replacement of placeholder names with verified data during
contact updates.

* **Chores**
  * Updated email domain blocklists configuration.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-23 15:26:02 -05:00
Eric 2e762731dd Website: update forms inputs (#44024)
Changes:
- Added new fields to forms that deliver emails
- Updated the actions called by those forms to return a success response
if the new input is provided
- removed two routes for unused actions
- Removed the button from the deal registration success state
2026-04-22 19:05:31 -05:00
Eric 1e2c3891e4 Website: exclude whitepaper articles from blog category page (#43980)
Closes: https://github.com/fleetdm/fleet/issues/43953

Changes:
- Updated the article category template page's view action to exclude
whitepaper articles from the "Blog" category
2026-04-22 13:42:16 -05:00
Eric 275e21bcda Website: Update partners form, update action input validation (#43954)
Changes:
- Updated the input validation and added an invalidEmailDomain exit to
the deliver-deal-registration-submission and
deliver-partner-registration-submission actions
- Updated the input validation in the
deliver-whitepaper-download-request and deliver-webinar-access-request
actions
- Added error messages to the forms on the partners page for the added
exits
- Updated the `bannedEmailDomainsForCSRSigning` and
`bannedEmailDomainsForWebsiteSubmissions` config values

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

* **New Features**
* Blocked submissions from restricted email domains with a clear error
response and a prompt to use a work email.
* **Bug Fixes**
* Strengthened email-format and required-field validation across
registration and request forms.
  * Restricted partner registration type options to accepted values.
* **Chores**
  * Added a domain to the denylist used for website submissions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-22 11:02:06 -05:00
johnjeremiah 087ba3ff80 Contact source change for webinar and gated doc (#43838)
Updating the contact source value for webinars and gated docs to match
the new sfdc values



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

* **Bug Fixes**
* Corrected CRM contact-source classification so webinar access requests
and whitepaper downloads are categorized separately from general contact
form submissions.

* **Chores**
* Expanded accepted contact-source values in the CRM integration to
include distinct labels for webinars and gated documents.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-21 17:03:41 -05:00