27 Commits
Author SHA1 Message Date
Eric 85692f8238 Website: set historical event source (#50546)
Changes:
- Updated the website's createHistoricalEvent helper to accept an
eventSource input that is used to set the historical event source on
created records.
- Updated places where we create historical events to set a historical
event source
- Updated the accepted contact sources values in the receive-from-clay
webhook
- Updated the deliver-gitops-workshop-request action to log a warning
when a campaign member record cannot be created

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

- **Improvements**
- Improved activity tracking for newsletter subscriptions, signups,
contact forms, workshop requests, webinars, gated content, and page
views.
- Added clearer source details to records for more accurate attribution.
- Expanded support for website, webinar, event, LinkedIn, prospecting,
and GitHub activity sources.
- **Bug Fixes**
- Workshop requests now continue successfully if campaign updates
encounter an error.
- Corrected warning messages and preserved relevant submission details
for troubleshooting.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-04 18:26:14 -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
Eric d90f8dfd27 Website: update when stripe customers are created for new users (#43424)
Changes:
- Updated when Stripe customers are created for users who sign up on the
website. A Stripe customer will be created for new users if they
purchase a self-service Fleet Premium license.

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

* **New Features**
* Stripe customer accounts are now created during checkout instead of at
signup, deferring billing setup until needed.
* Signup no longer creates a Stripe customer record as part of user
registration.
* Checkout now enforces billing feature availability and includes
improved handling when creating customer billing records.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-10 15:23:18 -05:00
Eric eed4fe1357 Website: Update CRM helper to set values on account (#42989)
Closes: https://github.com/fleetdm/confidential/issues/14516

Changes:
- Updated update-or-create-contact-and-account to set the number of
hosts on account records if it is provided.
- Updated the create-quote action to send details about the number of
hosts to the update-or-create-contact-and-account helper
2026-04-03 12:30:21 -05:00
Eric addabc28bb Website: Update self-service Fleet premium license form (#42488)
Closes: https://github.com/fleetdm/confidential/issues/14516 

Changes:
- Added inputs for individual platforms to the license form on
/new-license
- Updated contact descriptions set by the receive-from-stripe webhook
- Updated supported intentSignal values in the createHistoricalEvent
helper
- Updated the create-quote action to update contact descriptions and
create a historical event
2026-03-26 14:23:05 -05:00
Eric 75ffd8b12f Website: Update login/register flow, add Fleet UI background to /try and /login (#39290)
Closes: https://github.com/fleetdm/fleet/issues/36465
Closes: https://github.com/fleetdm/fleet/issues/36467
Related to: https://github.com/fleetdm/confidential/issues/14254

Changes:
- Updated "Try it yourself" links to go to the `/try` page (Which
redirects users who aren't logged in to the /login page)
- Removed the `<signup-modal>` and `<signup-button>` components
- Removed the route for the /register page, and added a redirect to go
to /login
- Updated the /login page to have the signup form, and to match the
latest wireframes
- Updated the /try page to have a fake Fleet UI as a background
(previously an image)
2026-02-10 12:32:49 -06:00
Eric 8ca9abc5a0 Website: add attribution cookie and update CRM helper (#38324)
https://github.com/fleetdm/confidential/issues/13605

Changes:
- Updated the website's custom hook to set a `marketingAttribution`
cookie.
- Updated places where we use the update-or-create-contact-and-account
helper to pass in a requesting user's marketingAttribution cookie.
- Updated the update-or-create-contact-and-account helper to process
values from the marketingAttribution cookie.
2026-01-14 18:14:55 -06:00
Eric 01c95370b0 Website: Add support for promotional codes on the self-service license dispenser (#26280)
Changes:
- Added the ability to use coupons on the Fleet premium license
dispenser
- Updated the stripe webhook to support coupons on Fleet premium
subscriptions
- Updated the customer dashboard on the website to show decimal places
in subscription/host prices.
2025-02-11 17:11:53 -06:00
Eric c53332259f Website: Update license dispenser form (#23838)
Closes: https://github.com/fleetdm/confidential/issues/7696

Changes:
- Added `stripe` as a dependency
- Updated the license dispenser form to take users to a stripe hosted
checkout page where they can provide their billing address and Tax ID
depending on their location.
- Updated the receive-from-stripe webhook to fulfill license dispenser
purchases made via stripe checkout
- Added a new action: get-stripe-checkout-session-url. This action
creates a Stripe Checkout session and returns the URL
- Updated the customer dashboard to have a link that users can visit to
update their billing information, add more hosts to their Fleet premium
license, or cancel their subscription.
- Added a new action: redirect-to-stripe-billing-portal. An action that
redirects users to a Stripe-hosted billing portal.
2024-11-25 13:55:56 -06:00
Eric 2d8ebb4388 Website: Update CRM helper and usage (#23670)
Changes:
- Updated the update-or-create-contact-and-account helper to update
created contact records with a psychological stage
- Updated places where we were using the
update-or-create-contact-and-account helper to set a contact source on
new records.
2024-11-11 12:35:49 -06:00
Eric c8149fa5e2 Website: update contacts when users subscribe to Fleet Premium (#22004)
Closes: #21921

Changes:
- Updated `save-biling-info-and-subscribe` to update CRM records in the
background when users purchase a self-service license.
2024-09-12 17:17:52 -05:00
Eric cde4a61bd3 Website: requested changes from website review (#18923)
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
2024-05-10 16:33:45 -05:00
Eric ba229a153c Website: Update save-billing-info-and-subscribe.js (#18708)
Closes: #18702

Changes:
- Removed the request to Zapier in save-billing-info-and-subscribe
2024-05-02 10:55:36 -05:00
Eric 70745dcf24 Website: update "Get your license" link & login/register pages. (#18489)
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.
2024-04-23 12:25:29 -05:00
Eric 081e0e432a Website: Update self-service license dispenser (#12987)
Related to: https://github.com/fleetdm/confidential/issues/3219

Changes:
- Updated `save-billing-info-and-continue.js` to check a new
subscription's invoice before completing the order.
- Added a new error message to the self-service license dispenser to
tell users signing up if a card provided requires additional
verification.
...
...
2023-07-27 21:11:23 -05:00
Eric c77eb13aab Website: Update Fleet Premium price in license dispenser (#11967)
Changes:
- Updated the price of Fleet Premium on
fleetdm.com/customers/new-license to match the price of Fleet premium on
fleetdm.com/pricing ($7.00/host/month)
- Updated the price of Fleet premium in `create-quote.js`

As this is merged, we will need to update the value of
`sails.config.custom.stripeSubscriptionPriceId` to be the id for the new
price in Stripe.
2023-05-29 20:23:19 -05:00
Eric 4cc7709675 Website: Update expiration timestamp sent to create-license-key helper (#10375)
Changes:
- Updated the `expiresAt` value sent to the `create-license-key` helper
in `save-billing-info-and-subscribe` action to be a JS timestamp
2023-03-08 09:07:10 -06:00
Eric 896918bc79 Website: Fleet Premium subscription renewals (#9200)
https://github.com/fleetdm/fleet/issues/9172

Changes:
- Added
`website/api/controllers/webhooks/recieve-stripe-subscription-events.js`
a webhook for receiving Stripe events.
- If the stripe event received is from a user's subscription
automatically renewing, A new license key is generated, the subscription
record is updated, and a renewal confirmation email is sent.
- If the stripe event received is from a user's subscription's upcoming
renewal, a renewal notification email is sent.
- If any other event type is received from Stripe, the webhook returns a
200 response.
- Added new email templates:
   - `email-subscription-renewal-confirmation`
   - `email-upcoming-subscription-renewal`
- Updated `website/api/controllers/admin/view-email-template-preview.js`
to have fake data for the added email templates.
- Updated `website/api/controllers/customers/view-dashboard.js` to set
two boolean variables: `subscriptionExpiresSoon` and
`subscriptionHasBeenRecentlyRenewed`
- Updated the customer dashboard to display notifications on the top of
the page if a user's subscription will renew in the next 30 days, or if
the user's subscription has been renewed in the past 30 days.
- `website/views/layouts/layout-email.ejs` - Updated the font, padding,
and text color to match wireframes.
2023-01-06 18:36:29 -06:00
Eric cddf7953e6 Update Fleet Premium pricing (#8966)
* update Fleet Premium price

* Update new-license.ejs
2022-12-08 13:01:24 -06:00
EricandMike McNeil 48f86b21b1 Website: Add admin tool for generating Fleet Premium licenses. (#8478)
* create admin/generate-license page

* create generate-license-key action, update routes, policies, importer, regenerate cloud-sdk

* update layouts

* use moment

* Update view-generate-license.js

* Fixing lint errors

* Update generate-license-key.js

* Update redirects in is-super-admin policy

* redirect super admins to the license generator

* Update login form

* requested changes from mike-j-thomas

* Update generate-license.page.js

* Update is-super-admin.js

* Update view-login.js

* Update generate-license-key.js

* Update generate-license-key.js

* use naming convention for js timestamps

* validTo » expiresAt

Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
2022-12-05 14:53:16 -06:00
EricandMike Thomas 53939e7858 Website: update billing info form for Fleet Sandbox users purchasing a license (#7748)
* add additional inputs to billing info form

* adjust layout, update labels to match wireframes

* update inputs

* rebuild cloud-sdk with new inputs

* Remove focus from billing info form

* update updateOne inputs

* Add signupReason to the User model, update new-license page script and signup action

Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
2022-10-04 14:35:09 -05:00
Eric 15ac7ac189 Update save-billing-info-and-subscribe.js (#7897) 2022-09-22 11:58:31 -05:00
EricandMike McNeil e2022c67db Website: send request to Zapier when a subscription is created (#7273)
* Website: send request to Zapier when a license is purchased

* Update error message/lint fix

Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
2022-08-17 18:46:24 -05:00
Eric abadf8efe3 Website: pricing update (#7018)
* pricing update

* change env variable name
2022-08-02 13:57:48 -05:00
EricandTim Kern babccf8a36 License dispenser query strings (#5321)
Co-authored-by: Tim Kern <tim@fleetdm.com>
2022-04-21 16:46:31 -05:00
eashaw 645490019e Update customer portal styles (#3663)
* Add more specific error for login.js

* fix typo, add can I use comment

* adjust padding for quote preview

* update quoted price when number of hosts change

* update footer link layout

* fix lint error
2022-01-17 14:26:40 +09:00
eashaw e335e835c9 Add customer portal and license dispenser to fleetdm.com (#3546)
* Add images for customer portal, dashboard, and email templates

* updated email layout and reset password template, new email template

* update ajax-button component to have an optional spinner

* updated cloud-error & stripe-card-element component styles

* updates to user model, add quote and subscription

* Login, signup, forgot password, update profile

* link to customer portal from pricing

* new-license page, bootstrap updates

* create quote action, dashboard page, update routes

* Add new page styles to importer, update component styles

* updates to js-timestamp

* update modal styles and layout

* using @submitted on ajax form, controller updates

* Update create-quote.js

* updates to quote model, action updates, truncate license key on dashboard

* update email layout, subscribe action, user model

* Update importer.less

* style updates, order confirmation

* use correct font

* style updates

* create license key

* new-license page changes

* signup page changes

* add billing format to js-timestamp component, dashboard updates, change password

* swap get started link for customers

* order -> subscription

* Update login.ejs

* Lint fixes, page updates, mobile styles

* remove edit-profile route, update layout, bootstrap, forms

* change customer-layout name to match other layout names, update copyright year in layouts

* changes requested from code review and #3570

* submit button width, contact font-size

* Update dashboard.less

* Update bootstrap-overrides.less

* slack logo update, login text
2022-01-04 20:02:42 -06:00