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.
Closes: https://github.com/fleetdm/confidential/issues/8237
Closes: https://github.com/fleetdm/confidential/issues/8236
Changes:
- Updated `save-questionnaire-progress` to update CRM records whenever a
user submits a step of the get started questionnaire. (This previously
only happened when a user's psychological stage changed)
- Changed the name of the 'cross-platform-mdm' step to
'message-about-cross-platform-mdm'
Closes: #22522
Changes:
- Updated the contact form to not have a personal email address filter.
- Updated the message posted in Slack when users submit contact form
messages.
Closes: #22190
Changes:
- updated `save-questionnaire-progress` to set a default value for the
`organization` value of generated license keys (if a user does not have
an organization set)
Related to: #18869
Changes:
- Updated the /start questionnaire to generate a 30 day, 10 host trial
for Fleet Premium when users submit the step before the "Is it any
good?" step (Where the user is directed to try `fleetctl preview`) and
to save the details (license key and expiration timestamp) of the trial
to their user record.
- Added two new attributes to the User model:
- `fleetPremiumTrialLicenseKey`: A Fleet Premium license key that was
generated for the user when they progressed through the get started
questionnaire.
- `fleetPremiumTrialLicenseKeyExpiresAt`: A JS timestamp of when the
user's Fleet Premium trial license key expires.
- Updated the try-fleet page to have copyable terminal commands, and to
add the `--license_key` flag with the users license key to the command
to run `fleetctl preview`
Related to: #21918
Changes:
- Changed the name of the query string the endpoint ops page uses for
personalization to be `purpose` (previously `pageMode`)
- Updated `update-or-create-contact-and-account` to only allow automated
psychological stage regressions caused by the get started questionnaire.
- Updated deliver-talk-to-us-form-submission to always set a
psychological stage. (That now may not be set depending on the contact
records psychological stage)
- Updated the `update-or-create-contact-and-account` helper to assert
that the number of employees returned from the `get-enriched` helper is
always a number.
- Updated the version of `sails-hooks-organics` the website uses and
updated the inputs to the sendgrid sendTemplateEmail helper.
Closes: #21798
Changes:
- Updated the layout and styles for the /guides page.
- Upgraded the version of DocSearch the website uses
---------
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
Related to: #21259
Changes:
- Updated the `receive-usage-analytics` webhook to add new inputs for
metrics added in [#21131](https://github.com/fleetdm/fleet/pull/21131)
- Updated the `HIstoricalUsageSnapshot` model to add attributes for the
new metrics.
When this PR is merged:
- [ ] Put the website into maintenance mode
- [ ] Update the HistoricalUsageSnapshot table to add new columns
- [ ] Update all existing records to set the default value for the new
columns
Closes: #21695
Changes:
- Removed the quote from Harrison in testimonials.yml
- Updated the order of quotes on the endpoint ops page
- Replaced the quote from Harrison on the /contact and /signup pages
Closes: https://github.com/fleetdm/confidential/issues/7815
Changes:
- Updated deliver-talk-to-us-form-submission to set contacts who fill
out the "talk to us form" to book a meeting as Psychological stage 4.
Closes: #21237
Changes:
- Updated view-endpoint-ops to set a `pagePersonalization` value using
the users primaryBuyingSituation (if it is set) or a `pageMode` query
parameter.
- Updated the endpoint ops page to be personalized based off the
pagePersonalization value set in the view action
- Updated the links to the endpoint ops page on the unpersonalized
homepage to use a pageMode query parameter (e.g., pageMode=it) instead
of a utm_content query parameter.
- Updated the links to the endpoint ops page on the personalized
homepage to not include a utm_content query parameter.
Closes: https://github.com/fleetdm/confidential/issues/7844
Changes:
- Updated the get-enriched helper to fix the return value for
numberOfEmployees.
- Updated the update-or-create-contact-and-account to make sure the
number of employees set on new account records is always a number.
Closes: #20904
Changes:
- Updated the `deliver-contact-form-message` action to send contact form
submissions to Fleet's support email address.
- Added an email template for contact form messages.
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.
Changes:
- Updated save-questionnaire-progress to send a formatted string of a
user's start questionnaire responses to the
update-or-create-contact-and-account helper
- Updated the update-or-create-contact-and-account helper to set
getStartedResponses on contact records.
Related to: https://github.com/fleetdm/confidential/issues/7339
Changes:
- Updated `save-questionnaire-progress` to return the user's selected
`primaryBuyingSituation`
- Updated the /start flow to update data in Segment
- Removed the border on the /start flow images that I mistakenly added.
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
Changes:
- Updated the `update-or-create-contact-and-account` helper to set a
"Contact source" on new contact records created.
- Updated everywhere where a lead source was being set to instead set a
contact source
- Removed duplicate and redundant features
- Reordered features by order of operation from the POV of an IT admin
- Consolidated use cases
- Renamed some features for clarity
See [this
doc](https://docs.google.com/document/d/1z7X__TmJIpRXQF-Mx9NK4EChwkX73fj0ymLnIJM2GnQ/edit?usp=sharing)
for more details, including methodology for the organization and
styling.
---------
Co-authored-by: Eric <eashaw@sailsjs.com>
Co-authored-by: Noah Talerman <47070608+noahtalerman@users.noreply.github.com>
Closes: https://github.com/fleetdm/confidential/issues/7528
Changes:
- Added a new action: unsubscribe-from-marketing-emails, which updates a
user record that uses a specified email address to exclude it from the
deliver-nurture-emails script.
- Updated the email template to include a link that users can click to
unsubscribe.
- Added a modal to the homepage that is shown to users who unsubscribe
from marketing emails
- Updated the email template data in deliver-nurture-emails and
view-email-template-preview
Closes: #20823
Changes:
- Updated the build-static-content script to use the GitHub API to get
timestamps of when files were last changed.
- Updated the get-extended-osquery schema helper to use a GitHub token
to authenticate GitHub requests (if it is provided)
Related to: https://github.com/fleetdm/confidential/issues/7227
Changes:
- Added a banner to the /better page that is visible to users who visit
it with a `?utm_content=secureframe` query param.
- Updated the `<animated-arrow-button>` component to support customizing
text and arrow color.
Changes:
- Added three new emails for MDM-focused users who are psystage 3, 4
,and 5.
- Added a new email layout
- Added a script to send nurture emails to users with an MDM primary
buying situation who signed up after 2024-07-22 that
- have been in psychological stage 3 for 24 hours
- have been in psychological stage 4 for 24 hours
- have been in psychological stage 5 for six weeks
- Updated the USer model to have. four new attributes:
- `psychologicalStageLastChangedAt`
- `stageThreeNurtureEmailSentAt`
- `stageFourNurtureEmailSentAt`
- `stageFiveNurtureEmailSentAt`
- Added a new custom config variable
`sails.config.custom.contactEmailForNutureEmails`
Closes: #19531
Changes:
- Added a deal registration page at /deals
- Added a new email template: `email-deal-registration`
- Added a new action to send the deal registration form submission to
the email address set in the `sails.config.custom.
dealRegistrationContactEmailAddress` config variable
- Updated the HTML email preview page to support the new email template.
Closes: https://github.com/fleetdm/confidential/issues/7394
Changes:
- Updated update-or-create-contact-and-account to set descriptions on
contacts
- Updated deliver-talk-to-us-form-submissions to not create leads for
users sent to the "Lets get you set up!" event
- Updated deliver-contact-form-message to only create contact records.
Closes: #20284
Changes:
- Updated the `update-or-create-contact-and-account` helper to set a
lead source on new contact records
- Updated `update-or-create-contact-and-account-and-create-lead` to to
pass in a lead source to the `update-or-create-contact-and-account`
helper
- Updated save-questionnaire-progress to set a lead source on newly
created contact records
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: #20102
Changes:
- Replaced timers.setImmediate with `.exec()` when CRM records are
updated in the background
- Removed the `\s` replacement during relative link modification in
build-static-content and added a comment explaining why we replace URL
encoded spaces in links.
Changes:
- Updated the `authorGitHubUsername` meta tag for three articles
- Updated a GitHub username in the list of maintainers in the
receive-from-github webhook.
Closes: https://github.com/fleetdm/confidential/issues/6929
Changes:
- Updated the update-or-create-contact-and-account helper to search for
an existing contact by email address before searching for an account
with the information provided by the get-enriched helper. This change
will allow us to change the account that a contact is associated with in
the CRM without duplicate records getting (re)created.
Closes: #19895
Changes:
- Updated the `update-or-create-account-and-contact` helper to search
for an existing account record by name before searching by website. This
additional search adds ~1.5 seconds to the time the helper runs in the
background but greatly reduces the chances of creating duplicate
accounts.
Closes: https://github.com/fleetdm/confidential/issues/6069
Changes:
- Added a new route going to the create-vanta-authorization-request
action: `/api/v1/create-external-vanta-authorization-request`
- Added a new input to the create-vanta-authorization-request action:
`sharedSecret` - A secret that must match
`sails.config.custom.sharedSecretForExternalVantaRequests` when an
external request is made to the
`/api/v1/create-external-vanta-authorization-request` endpoint
- Updated the authorization URL returned by the
create-vanta-authorization-request endpoint
- Updated the redirect in the view-vanta-authorization endpoint (if a
redirect URL is provided) to not use res.redirect() (it causes 500
errors) when redirecting users.
Related to: https://github.com/fleetdm/confidential/issues/5573
Changes:
- Deleted /explore-data pages and related files
- Added redirects for removed pages.
- Removed all explore data related website configuration in the
build-static-content script.
- Removed the explore data section of the custom configuration.
Closes: https://github.com/fleetdm/confidential/issues/6069
Changes:
- Added a new action to add support for the Vanta integration to be set
up from a partners website. This action sets the required cookies
provided via queryString and redirects users to the Vanta authorization
page.
- Updated the `create-vanta-authorization-request` action to redirect
users who provide a `redirectToExternalPageAfterAuthorization` value the
new endpoint instead of returning a vanta authorization URL.
- Updated `view-vanta-authorization` to redirect users to the URL
provided to the `create-vanta-authorization-request` endpoint (if one
was provided)
Changes:
- Updated the update-or-create-contact-and-account helper to always set
the integrations admin user as the owner of new accounts and contact
records created.
Closes: https://github.com/fleetdm/fleet/issues/19308
Changes:
- Added six new attributes to the `HistoricalUsageSnapshot` model (
`numSoftwareVersions`, `numHostSoftwares`, `numSoftwareTitles`,
`numHostSoftwareInstalledPaths`, `numSoftwareCPEs` and
`numSoftwareCVEs`)
- Added inputs to the receive-usage-analytics webhook for the new usage
statistics.
When this PR is merged, we will need to migrate the Fleet website's
database to add the new columns, to do this:
- [x] Make an announcement in Slack to let people know the website will
be offline for ~8 minutes
- [ ] Merge this PR
- [ ] As the deploy action runs, put the website into maintenance mode
- [ ] Add the new columns for the added attributes
- [ ] Set the default value for the new attributes on existing database
records
- [ ] After the deploy workflow is complete, take the website out of
maintenance mode.
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>
Related to: https://github.com/fleetdm/fleet/issues/19369
Changes:
- Disabled the requests to MergeFreeze that unfreeze auto-approved PRs
when the main branch of the Fleet repo is frozen.
Closes: #19271Closes: #19286
Changes:
- Updated the example in the schema folder readme
- Updated the block scalar used in Fleet's osquery override
documentation (`>-` » `|-`) and removed extra newlines
- Updated the block scalar used in URLs used to create new yaml override
files
- Regenerated osqeury_fleet_schema.json
Closes: #18932
Changes:
- Updated `update-or-create-contact-and-account.js` to not round robin
new account records created.
- Updated create-lead to reassign accounts owned by the integrations
admin user when a new lead is created.
- Updated logged warnings in signup, deliver-contact-form-message and
deliver-talk-to-us-form-submission.
- Updated signup.js to not create salesforce leads (only account and
contact records)
- Updated save-questionnaire-progress to create Salesforce leads when we
know the user has a use case for Fleet.
Changes:
- Added a new helper:
`salesforce/update-or-create-contact-and-account-and-create-lead`, a
wrapper for the `update-or-create-contact-and-account` and `create-lead`
helpers that is intended to be run in the background.
- Updated the `signup`, `deliver-contact-form-message`, and
`deliver-talk-to-us-form-submission` actions to use the new helper
Changes:
- Moved the logic for redirecting users to the license dispenser after
they login/sign up into the page scripts for the login and register
pages.
- Updated error messages in the create lead helper
Related to: https://github.com/fleetdm/fleet/issues/18863
Changes:
- Updated the receive-usage-analytics webhook to set a default value for
organization if a Fleet instance reports an empty string as its
organization.
Related to: https://github.com/fleetdm/fleet/issues/18817
Changes:
- Updated a conditional statement in save-questionnaire-progress to
check the correct variable for a user's previous answer to the "Have you
ever used Fleet?" question
Changes:
- Updated the `update-or-create-contact-and-account` helper to round
robin existing Account records assigned to the "Integrations admin"
user.
Changes:
- Updated the regex used to match HTTP protocol and common subdomains in
the `get-enriched` helper to include more subdomains and changed it to a
custom config variable
(`sails.config.custom.RX_PROTOCOL_AND_COMMON_SUBDOMAINS`)
- Updated the update-or-create-contact-and-account helper to remove HTTP
protocol and subdomains from provided linkedIn URLs.
Related to: https://github.com/fleetdm/confidential/issues/6357
Changes:
- wrapped the `updateOrCreateContactAndAccount` helper call in
`save-questionnaire-progress` in `setImmediate()` to allow users to
progress through the form without waiting for CRM updates.
Closes: https://github.com/fleetdm/confidential/issues/6381
Changes:
- Updated the get-enriched helper to improve enrichment results for
users whose provided organization is not the top experience listed on
their LinkedIn profile.
Eric, I did not test this (coded live w/ mike T). Relying on your eyes.
Also, remember remember the old legacy data that might need to be
migrated, especially since I added some assertions? (whuh ohhh)
When using this API many times in a row to try and populate real policy
descriptions/resolutions, I discovered a problem: the inferred
resolution (“What we’ll do”) almost never used decisive language, so
you'd get a lot of “probably”, etc., when we really want it to sound
more confident about what will happen during the maintenance window.
(The calendar events say what WILL happen to your device, not what
should probably happen.)
After several attempts to tweak the prompt, I ended up getting the best
results by just removing "probably" from
`whatWillProbablyHappenDuringMaintenance`. I made this change to the
prompt without changing the data that this API returns.
---------
Co-authored-by: Eric <eashaw@sailsjs.com>
Closes: https://github.com/fleetdm/confidential/issues/6268
Changes:
- Updated the questionnaire on the /start page to take users who answer
"I'd like you to host Fleet for me" on the "What did you think?" step to
the host count question.
- Updated the /start page script to handle this new behavior.
- Updated how psychologicalStage is set for users who answer the host
count question in `save-questionnaire-progress`.
- Updated `save-questionnaire-progress` to only call the salesforce
helper if the user's `psychologicalStage` changes.
Changes:
- Added two steps to the /start questionnaire for users who select "I
want to deploy Fleet in my environment" on the "What did you think"
question.
- Updated save-questionnaire-progress to set psychologicalStage based on
selected answers to the new questions
Closes: https://github.com/fleetdm/confidential/issues/6355
Changes:
- Replaced the reqeust to zapier in `signup.js` with
`sails.helpers.salesforce.createLead()`.
- Updated signup.js to only call the salesforce helpers when the website
is running in a production environment.
- Updated the `createLead` to handle errors when retrieving or creating
salesforce records, and to set a provided `numberOfHosts` and
`primaryBuyingSituation` on created lead records.
Changes:
- Changed the warnings in the get-enriched helper to use
`sails.log.info`.
- Updated the email domain parsing to handle protocol-less URLs returned
from Coresignal
Closes: #18643
Changes:
- Updated the response from the `updateOrCreateAccountAndContact` helper
when running the website in a development environment.
- Updated the Zapier webhook request in the signup action to send the
contact and account IDs returned from the
`updateOrCreateAccountAndContact` helper.
Related to https://github.com/fleetdm/confidential/issues/6357
Changes:
- Updated `save-questionnaire-progress` to only call
`sails.helpers.salesforce.updateOrCreateContactAndAccount` is called
when a user's `psychologicalStage` changes.
Closes: https://github.com/fleetdm/confidential/issues/6215
Changes:
- Updated how psychological stages are set when a user completes a step
of the get started questionnaire
> Note: I'm creating this as a draft PR until I review these changes to
make sure this is what we want to do.
Changes:
- Updated the `salesforce/update-or-create-contact-and-account` helper
to not to try to use `enrichementData.employer.emailDomain` if an
`organization` was provided.
Changes:
- Updated the default value that is being sent as a
primaryBuyingSituation
- Updated the updateOrCreateContactAndAccount Salesforce helper to do
nothing in development.
+ Use the same "Failed to generate human interpretation using generative
AI." message if you send it something weird like "asdf" (so you don't
get a vague 500 error).
+ Simplify the code a bit
---------
Co-authored-by: Eric <eashaw@sailsjs.com>
Closes: https://github.com/fleetdm/confidential/issues/6255
Changes:
- Updated view-endpoint-ops to sort and exclude quotes based on a user's
`primaryBuyingSituation`.
- Updated the quote by Brendan Shaklovitz in testimonials.yml
- Updated the endpoint ops page to hide/show videos based on a user's
`primaryBuyingSituation`
-
Closes: https://github.com/fleetdm/confidential/issues/6199
Changes:
- Updated view-new-license to redirect non-logged-in users to the
/register page (it was previously doing this, but had a policy applied,
so non-logged-in users were always redirected to the signup page.)
- Updated the /register page to support a new input: `purchaseLicense`.
If this query string is provided, the register page will redirect users
who sign up to the /new-license page.
- Updated the /login page to support a new input: `purchaseLicense`. If
this query string is provided, the login page will redirect users who
log in to the /new-license page.
- Updated policies to bypass the is-logged-in policy for the
/new-license page.
- Updated the "get your license" link in the website nav menu to go to
the /new-license page.
Closes: https://github.com/fleetdm/fleet/issues/18448
Changes:
- Updated `create-vanta-authorization-request` to return an
`invalidResponseFromFleetInstance ` response when a response from a
Fleet instance does not contain the expected values (A `user` object for
a request to the `/me` endpoint and a `license` object for the request
to the `/config` endpoint.)
- Updated the /connect-vanta page to show an error message to users
asking them to verify the URL of their Fleet instance if the API
response is invalid.
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.
Related to: https://github.com/fleetdm/confidential/issues/6155
Changes:
- Added a new attribute to the `User` model: `psychologicalStage`
- Updated `save-questionnaire-progress` to update a user's
`psychologicalStage` based on their current answers/progress on the
/start questionnaire
- Updated the personalization on the /contact page to use the
`psychologicalStage` from the user model
- Updated the value of a unselectable form option on the /start page
Closes: https://github.com/fleetdm/confidential/issues/6158
Changes:
- Added two new config variables to website/config/custom:
- `bannedEmailDomainsForCSRSigning` An array of email domains that are
not allowed for CSR signing requests
- `bannedEmailDomainsForWebsiteSubmissions` an array of email domains
that are not allowed for website signups and contact form submissions.
- Updated the `deliver-apple-csr`, `deliver-talk-to-us-form-submission`,
`deliver-contact-form-message`, and `signup` actions to use the new
config variables.
Closes: #18240
Changes:
- Updated the schema override files to use only one YAML block scalar
(`>-`)
- Updated the template yaml included in the link to create a new
override file in get-extended-osquery-schema helper to use the `>-`
block scalar
- regenerated osquery_fleet_schema.json
Related to: #18099
Changes:
- Updated the contact page to show a different message depending on
answers a user provided in the /start questionnaire.
- For users who have Fleet deployed already: "Schedule a personalized
demo for your team and get support or training."
- For users who have tried Fleet and are ready to deploy: "Let us help
you deploy and evaluate Fleet quickly for yourself. We’d love to save
you some time."
-
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 `save-questionnaire-progress` to send a request to Zapier
when a user completes the "What are you using Fleet for" step of the
/start questionnaire.
Closes: #18047
Changes:
- Added three steps to the /start questionnaire
- Updated the contact page to prefill information for logged-in users by
default
- Updated the layout of the f/leetctl-preview page for users navigating
to it from the /start page.
- Updated the quote for vulnerability management on the /start and
/contact pages to have a logo (There will be a separate PR, to add it to
testimonials.yml)
---------
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
Changes:
- Updated the `build-static-content` script to remove support for the
`requires_user_context` column attribute
- Updated `get-extended-osquery-schema` to not set a
`requires_user_context` value in the merged schema json.
- Regenerated `schema/osquery_fleet_schema.json`
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.
Closes: #17958
Changes:
- Updated the primary and secondary CTAs site-wide
- Updated the /start page to have a multi-stage form that users can fill
out to personalize their onboarding experience
- Updated the signup action to not set a `primaryBuyingSituation` on new
user records (This will now be set when users progress through the
/start form)
- Added two new attributes to the `User` model:
`currentGetStartedQuestionnarieStep` and
`getStartedQuestionnarieAnswers` that save user's progress in the /start
form.
Before this PR can be merged we will need to:
- [x] Update the Zapier webhook that runs when new users sign up to no
longer expect a `primaryBuyingSituation` value
- [ ] Update the User table in the website's database
- [ ] Migrate the existing user records
Closes: #17883
Changes:
- Updated the `get-extended-osquery-schema` helper to set the `type`
values of columns of tables with Fleet overrides to be lowercase.
- Regenerated `osquery_fleet_schema.json`
Related to: https://github.com/fleetdm/fleet/issues/17861
Changes:
- Updated `get-extended-osquery-schema` helper to remove `examples`
values from the merged schema JSON if they are an empty array.
- regenerated `osqeury_fleet_schema.json`
Changes:
- Added a new attribute to the `User` model: `primaryBuyingSituation`
- Updated `signup.js` to set this value on new User accounts
Before this PR can be merged, we will need to:
- [ ] Add the new column to the User table in the website's database
- [ ] Set a default value for existing User records.
---------
Co-authored-by: Sam Pfluger <108141731+Sampfluger88@users.noreply.github.com>
Closes: #16697
Changes:
- Updated the managed cloud feature in `pricing-features-table.yml` to
note that is only available for >700 hosts
- Updated `signup.js` to accept one new input `primaryBuyingSituation`
and to throw an error if someone signs up with a personal email address.
- Updated the /customers/register page to ask users signing up what they
will be using Fleet for, and to display an error if a user signs up with
a personal email address.
- Updated the /try-fleet/register page to show an error if a user signs
up with a personal email address
- Updated the /customers/new-license page to:
- only show the quoted price for users creating a quote for >700 hosts
- Add a checkbox to the billing form for users to confirm that they
understand they are buying a license for self-hosted Fleet Premium
Changes:
- Added `/start`, a page where users can choose whether to run a local
demo of Fleet, or purchase a Fleet Premium license
- Updated all "Try it now" links to go to the `/register` page.
- Updated the URL and added redirects:
- `/customers/new-license` » `/new-license`
- `/try-fleet/fleetctl-preview` » `/try-fleet`
- `/customers/register` » `/register`
- `/customers/login` » `/login`
- Removed the `/try-fleet/login` and `/try-fleet/register` pages
- Updated the /try-fleet/explore-data pages to redirect logged-out-users
to the /register page
- Updated policies, routes, and importer.less
---------
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
Changes:
- Updated the contact page to have a second form that users can fill out
to schedule a Calendly meeting with Fleet.
- Updated CTAs on all landing pages, product category pages, article
pages, pricing page, and license dispenser.
- Updated the CTAs on the landing page generator template
- Removed the function that opens the hubspot chat widget from page
scripts.
- Updated `deliver-contact-form-message` to send a request to a Zapier
webhook
- Created a new action: `deliver-talk-to-us-form-submission` that sends
form submissions to a Zapier webhook.
> Related issue: https://github.com/fleetdm/confidential/issues/5138
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
<!-- Note that API documentation changes are now addressed by the
product design team. -->
- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
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: https://github.com/fleetdm/fleet/issues/17188
Changes:
- Updated `get-extended-osquery-schema.js` to only include the last
example from the osquery schema if a table has an override file that
does not contain an `examples` value.
- Regenerated osquery_fleet_schema.json with the correct `examples`
values
Closes: #16945
Changes:
- Updated the receive-from-stripe` webhook to update the database
records of subscriptions that have been changed in the Stripe UI.
Closes: https://github.com/fleetdm/confidential/issues/5182
Changes:
- Added a quote from Chandra Majumdar to testimonials.yml
- Updated the testimonial sorting in the view actions for the product
category landing pages to sort quotes by the authors full name.
---------
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
Related to: #16458
Changes:
- Updated the receive-usage-analytics webhook not to send metrics to
Datadog.
- Updated the send-aggregated-metrics-to-datadog script to build
aggregated metrics from the JSON values reported by Fleet instances
(stored errors, host count by orbit version, host count by osquery
version, host count by operating system), and updated the script to not
report metrics from Fleet instances using the development premium
license key.
Closes: #16246
Closes: https://github.com/fleetdm/fleet/issues/16245
Changes:
- Added a logo for the quote from Harrison Ravazzolo
- Changed the `productCategories` value for the quotes from Nick Fohs
and Erik Gomez
- Updated the order of testimonials on the /endpoint-ops and
/vulnerability-management pages
Closes: #16135
Changes:
- Updated the `receive-from-github` webhook to not send requests to
Zapier when a patch version of Fleet is released.
For context: The request to Zapier triggers an automation that updates
Slack channel topics with information about the latest release of Fleet.
---------
Co-authored-by: Sam Pfluger <108141731+Sampfluger88@users.noreply.github.com>
Closes https://github.com/fleetdm/confidential/issues/5015
- Updated testimonials.yml to reflect correct quote content and logos
from wireframes
- Updated logos to be a consistent height
- Adjusted logo min and max height css
# Checklist for submitter
- [x] Manual QA for all new/changed functionality
---------
Co-authored-by: Eric <eashaw@sailsjs.com>
Closes: #16018
Changes:
- Updated the testimonial configuration in testimonial.yml to add two
new required values:
- `quoteAuthorProfileImageFilename` - The filename of the quote author's
LinkedIn profile picture in the website's `assets/images/` folder
- `productCategories`: An array of product categories that this quote is
relevant to
- Added new quotes to testimonials.yml
- Updated the testimonial validation in build-static-content to throw an
error if a testimonial is missing one of the new required values
- Updated the `<scrollable-tweets> component to match the latest
wireframes
- Updated the controllers for the product category landing pages to
filter testimonials by product category and sort them by the order
specified in [the
wireframes](https://www.figma.com/file/3he8e72251IEnF6dBafKq1/%F0%9F%9A%A7-fleetdm.com-(scratchpad)?type=design&node-id=9369-4714&mode=dev)
Changes:
- Added a new (required) key to pricing-features-table.yml:
`pricingTableCategories` - an array of categories that will be used to
categorize the feature on the pricing page.
- Updated build-static-content to validate pricingTableCategories values
- Updated the pricing page features table to be categorized by the
pricingTableCategories value of features.
- Updated the names of tiers on the pricing features table to match the
cards above the table ("Free" » "Community")
Closes: #15728
Changes:
- Updated `view-query-report.js` to redirect non-logged in users who
visit `/try-fleet/explore-data/*` to `/try-fleet/register`
https://github.com/fleetdm/confidential/issues/4533
Changes:
- Added `/handbook/company/testimonials.yml`.
- Updated `build-static-content` to validate each item in
`testimonials.yml` and to add each item to
`sails.config.builtStaticContent.testimonials`
- Updated the scrollable tweets component to build cards of quotes from
`sails.config.builtStaticContent.testimonials`.
- Updated view-actions for pages where the `<scrollable-tweets>`
component is being used to throw an error if the testimonials
configuration is missing and to send the testimonials config to the
page.
- Updated pages where `<scrollable-tweets>` was being used.
- Updated the landing page generator to create new view-actions that
send the testimonials configuration to generated pages and updated the
template .ejs file.
Closes: #14900Closes: #15666
Changes:
- Updated the receive-from-github webhook to:
- Log a warning if a label cannot be deleted from a pull request.
- Reset the array of unfrozen PR numbers when the main branch of
fleetdm/fleet is unfrozen
---------
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Closes https://github.com/fleetdm/fleet/issues/15615
_I'm sorry, I should have split this into separate PRs. I was trying to
move fast, but I didn't consider how awkward to review this PR would
become._
- Updated page titles and descriptions for:
- Homepage (no change to description. Currently set to the default blurb
from "Why Fleet doc."
- `/pricing`
- `/integrations`
- `/vulnerability-management`
- `/endpoint-ops`
- `/device-management` (I'm not super happy with this one. I tried to
summarize everything, but I think it's too long. I probably need to
rewrite it in a fast follow PR)
- Renamed `/osquery-management` to `/endpoint-ops` and set up redirect
- Removed `/compliance` (Note: I did not remove the compliance feature
images as they are referenced in various /imagine land pages. I need to
confirm whether those imagine pages are used in active ads?)
---------
Co-authored-by: Eric <eashaw@sailsjs.com>
Closes: #14847
Changes:
- Added two new pages:
- `/try-fleet/explore-data`: A page where users can select a host, and
be taken to a page where they can see query results for that host.
- `try-fleet/explore-data/:platformName/:tableName`: A page where users
can see the contents of osquery tables on hosts.
- The view-action for this page will:
- Redirect unauthenticated users to the /try-fleet/login page. (With a
query parameter that will tell the login/register pages to redirect
users back to this page)
- Get information for hosts on a specified team.
- Build a filtered list of osquery tables that are compatible with the
host and have queries that will run on a specified host.
- Get the latest query results for a specified query/osquery table for
the specified host, and reorder the results to match the order of the
columns in the osquery schema.
- Updated build-static-content to add information about osquery tables
for the /explore-data pages to
`sails.config.builtStaticContent.osqueryTables`.
- Added 5 new config variables:
- `sails.config.custom.fleetBaseUrlForQueryReports`: The URL of the
Fleet instance used for the /explore-data pages
- `sails.config.custom.fleetTokenForQueryReports`: An API token for the
Fleet instance used for the /explore-data pages
- `sails.config.custom.teamApidForQueryReports`: the API ID of the team
that the hosts listed on the explore-data page are in.
- `sails.config.custom.queryIdsByTableName`: A dictionary containing
key:value pairs where each key is the name of an osquery table, and the
value is the API ID of the query that gets results for this table in a
Fleet instance. This is stored in the custom configuration to make it
easily editable (If we ever need to add or remove queries
- `sails.config.custom.hostIdsByHostPlatform`: A dictionary containing
key:value pairs where each key is a type of operating system, and the
value is the API ID of a Host.
- Updated the `/try-fleet` redirect to go to `/try-fleet/explore-data`
- Updated the "try it out" button links to go to `/try-fleet`
- Updated /try-fleet/login and /try-fleet/register to send users who are
redirected to the page via the /explore-data page to the page they had
tried to navigate to when they log in/create an account.
I'm creating this as a PR as a draft. It will be ready to merge when we:
- [x] Add hosts to the "Explore data (fleetdm.com) [DO NOT DELETE]" team
- [x] Create queries for every compatible osquery table for the "Explore
data (fleetdm.com) [DO NOT DELETE]" team.
- [ ] Add a `sails.config.custom.queryIdsByTableName` config variable
with the query IDs for the queries created in the previous step
- [ ] Add `sails.config.custom.hostIdsByHostPlatform` config variable
with the real host IDs/platforms
Closes: #15255
Changes:
- Added the usage statistics added in
https://github.com/fleetdm/fleet/pull/14216 to the inputs of the
`receive-usage-analytics` webhook.
- Updated the `receive-usage-analytics` webhook to send the new usage
statistics to Datadog.
- Added attributes for the new usage statistics to the
`HistoricalUsageSnapshot` model.
- Removed the `columnName` from the `hostsStatusWebHookEnabled`
attribute of the `HistoricalUsageSnapshot` model, the name of this
column will be changed in the database when the new columns are added to
the databse table.
- Updated the usage statistics documentation to have the new statistics.
This PR requires database migrations. When this is approved and ready to
merge, we will need to:
- [ ] Merge this PR
- [ ] Put fleetdm.com into maintenance mode while the "Deploy Fleet
website" GH action runs.
- [ ] Add the new columns to the database table
- [ ] Change the name of the `hostStatusWebhookEnabled` column to
`hostsStatusWebHookEnabled`
- [ ] Set the default values for the new columns on the existing
records.
- [ ] When the website has finished redeploying, take it out of
maintenance mode.
Closes: #15265
Changes:
- Updated `pricing-features-table.yml`:
- Changed the structure of the file so it is a flat array of features
(previously, features were nested under a category)
- Added `productCategories` arrays to features that did not have them
- Added `usualDepartment` values to features.
- Updated the pricing features validation in `build-static-content` to
work with the new file structure and made `productCategories` a required
value for features.
- Updated `view-pricing.js` to:
- categorize features based on the values of the `productCategories`
array
- build a single array of features (previously, it would also build an
array of features for security-focused buyers).
- sort premium features to the bottom of the pricing table.
- Updated the `pricing.ejs` to:
- render only the list of all features server-side
- conditionally show features in the pricing table, depending on the
selected pricing mode
Closes: https://github.com/fleetdm/fleet/issues/15243
Changes:
- Updated the `receive-usage analytics` webhook to send multiple
requests to Datadog, depending on the number of metrics built from
reported usage statistics. (Datadog has a request body limit of 512kb)
Closes: #11812
Changes:
- Renamed the `hostStatusWebhookEnabled` attribute of the
`HistoricalUsageSnapshot` model to `hostsStatusWebHookEnabled` and
updated the definition to use the existing database column name.
- Updated the inputs of the `receive-usage-analytics` webhook to accept
a `hostsStatusWebHookEnabled` input.
- Updated the usage statistics documentation to have the [correct
variable
name](36e12d02e3/server/fleet/statistics.go (L21)).
Closes: #15182
Changes:
- Updated the receive-usage-analytics webhook to create new database
records with a cloned `inputs` object. This prevents the JSON attributes
from being mutated into strings.
When running a live query recently, I noticed some columns in the
results that we didn't have documented, and realized we weren't using
the latest osquery schema version when regenerating the merged schema.
According to the docs, [we support the latest version of
osquery](https://fleetdm.com/docs/using-fleet/enroll-hosts#supported-osquery-versions),
so figure we ought to update the schema version to the latest.
---------
Co-authored-by: Eric <eashaw@sailsjs.com>
Closes: https://github.com/fleetdm/confidential/issues/4015
Changes:
- Changed the url for `/fleetctl-preview` to
`/try-fleet/fleetctl-preview`
- Updated the controller for the `/fleetctl-preview` page to redirect
non-logged-in users to `/try-fleet/login`
- Removed the route for `/try-fleet/sandbox-expired`, and added a
redirect going to `/try-fleet/fleetctl-preview`.
- Updated the controller for `/try-fleet/sandbox` to redirect the users
without a non-expired Sandbox instance to `/try-fleet/fleetctl-preview`.
- Updated `signup.js` to not provision Fleet sandbox instances for
users.
- Updated the `User` model to support a third `signupReason`: "Try
Fleet"
- Updated `/try-fleet/register` to submit "Try Fleet" as a
`signupReason` when users sign up.
- Renamed the files for the `/fleetctl-preview` page (`get-started` »
`fleetctl-preview`)
- Updated/removed Fleet Sandbox related handbook sections.
- Replaced the "Fleet vs Fleet Sandbox" section in the deploying
documentation with a note about `fleetctl preview`.
- Updated links to Fleet Sandbox in articles.
---------
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
Changes:
- Added the `invoice.updated` and `invoice.voided` events to the
`STRIPE_EVENTS_SENT_BEFORE_A_SUBSCRIPTION_RECORD_EXISTS` array in the
`receive-from-stripe` webhook.
Changes:
- Added a new page: /integrations
- Added the page to `config/policies.js`, `config/routes.js`, and
`assets/styles/importer.less`
- Added a link to the page to the "Platform" navigation dropdown.
This PR will be ready for review when:
- [ ] The meta description (in routes.js) is approved
- [ ] The text that replaces the lorum ipsum in the wireframes has been
approved.
Closes: #12836
Changes:
- Updated the `build-static-content` script to not add HTML comments to
Markdown codeblocks, and to not replace HTML comments in generated HTML
pages
- Updated the custom codeblock renderer in the `to-html` helper to add
syntax highlighting classes to Markdown codeblocks.
- Updated the indentation of content in lists on the MDM macOS setup
docs page.
---------
Co-authored-by: Rachael Shaw <r@rachael.wtf>
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Closes: #13722
Changes:
- Updated the `get-extended-osquery-schema` helper to sort the merged
schema by table name.
- Regenerated `/schema/osquery_fleet_schema.JSON`
Closes: #13728
Changes:
- Added /support to the array of hand-coded HTML pages in
`download-sitemap.js`:
- Updated `get-extended-osquery-schema`:
- Added a new (optional) input: `includeLastModifiedAtValue` if this
input is provided, the helper will:
- Set a `lastModifiedAt` value on all tables.
- Send a request to the GitHub API to get a lastModifiedAt timestamp for
tables that have no fleet overrides.
- Use `git` to get a lastModifiedAt timestamp of when the tables YAML
file was changed.
- Updated the `build-static-content` script to include a lastModifiedAt
timestamp for table pages, and updated the `lastModifiedAt` value that
is set for pages built from `/handbook/company/open-positions.yml`
---------
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Closes: #11755
Changes:
- Created a new model: `Platform` that has a single attribute:
`currentUnfrozenGitHubPrNumbers`
- Updated bootstrap.js to throw an error if more than one platform
record exists, and to create a platform record when the server is lifted
with the `--drop` flag.
- Updated the receive-from-github webhook to use a Platform record to
track the PRs that are currently unfrozen in the fleetdm/fleet repo.
Before this Pr is merged, we will need to:
- [x] Migrate the Fleet website's database to add the new database
table.
- [x] Create a single platform record.
Closes: #13536
Changes:
- Deleted all handbook pages for current open positions.
- Created `/handbook/company/open-positions.yml`, and created entries
for the deleted handbook pages.
- Updated the build script to generate handbook pages for every entry in
`open-positions.yml`, and add information about each open position to
`sails.config.builtStaticContent.openPositions`
- Created a new component: `<open-positions>` - A component that takes a
single prop (named `openPositions`) that renders links to open position
handbook pages.
- Updated the "Creating a new position" section of the handbook to have
updated instructions for adding a new position to `open-positions.yml`
.