* add content previews to notification emails
* add fetcher for doc lines
* gate content previews behind a split test
* make composable blocks for rendering
GitOrigin-RevId: c8df384d55a301084b98df76fd3edd6dde6ea50c
* increase scanStream COUNT for project notifications
* fix Bull queue.add delay option being ignored
* parse timestamp to number before adding to notification queue
* fix outdated comments in project_notifications script
GitOrigin-RevId: 98bb638228550b2f6f2de90280a06c47e022cf96
* feat: add granular controls for other features
* feat: add filtering to notifications that were missing them
* refactor: rm duplicate thread fetches
* fix: reduce permissions to fit spec (all === new comments/tracked changes, replies === only if also a participant)
* fix: include mentions in types
GitOrigin-RevId: b4a09ef59e5cf4de2e07d5b9a13c31fc1cf81a31
Unhandled promise rejections from these fire-and-forget calls were
surfacing in Sentry. Add .catch(debugConsole.error) to suppress them.
GitOrigin-RevId: a14cd0a3956a2b551210723ad56e7ec5e354a7a7
* add footerMessage to base email template
* add customized subject line and CTA
* add _getBundledActivityList
GitOrigin-RevId: e70c0955485b0892f31e20daa0430faef80b0d64
* display global disabled state
* show loading indicator while project notification preferences load
GitOrigin-RevId: d7e905aaa3fc7b15b54bf99caeabf60c1e5d8050
* emit email-notification-sent event
* use UTM tags to track email link clicks
* do not include utm_id on session at registration
GitOrigin-RevId: 24091bf8923fa11b8ba5ebfc63a0cea5c0f9f40c
* accept taxInfoPending as tax id comparison point
* convert recurly unit amount to minor units correctly for no cent currencies
* Use original subscription currency in finalization check
* make it easier to spot migrated with tax info pending
---------
Co-authored-by: John Lees-Miller <jdleesmiller@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
GitOrigin-RevId: d3c74032bc06369fcf6bafb4cfaff85c49a3cfef
* update webhook handler to include cancel_at
* guard against accidentally marking subscription event as canceled
* fix cancellation edgecase (reactivating a subscription that was canceled from Stripe Dashboard and also has a non-migration schedule)
GitOrigin-RevId: a872e91afa19094d4ae859293fc9669ea3e528f2
* add a script to detect drift between recurly and stripe
* only flag when Recurly updated since subscription created in Stripe
* add --comparison-date option instead of stripe subscription created time
* reduce API calls by checking Recurly update time earlier
GitOrigin-RevId: f0ecb5644f7445603da020a46e32622fcd2eebf4
* add script to query taxes
* Use full address to determine tax
* use all applied taxes
* include status in tax script output
* add warning to the script
* only normalize US and CA
* default to RoW if no countries specified
* use RateLimiter and pqueue
* only normalize US postal codes
---------
Co-authored-by: John Lees-Miller <jdleesmiller@gmail.com>
GitOrigin-RevId: 01ecc1b1461e955b6c6a798a3a568e5b5f6bbcdb
* [web] extract card comparison function
* [web] throw if more than 1 duplicate customer account
* [web] attempt to pick the pre-existing account
* [web] overwrite email of duplicate account
* Update services/web/scripts/helpers/migrate_recurly_customers_to_stripe.helpers.mjs
* [web] handle setting being undefined
* [web] allow other account to be reused if migrating account is using paypal
* [web] allow matching for customers with no payment method
GitOrigin-RevId: 7d8eeb4734a20c09ce3e0d73095e28696e212549
* support Paypal for migration
* remove sensitive payment info in logging
* add `resolveStripeCustomer`
GitOrigin-RevId: a8fc7de4a4bf3971c5221a0dec3fc279d8d2f67d
* make warnings more eye catching in clean up dry run
* only increment processedCount after processing
* always rm recurlyAccountCode
* check if existing Stripe customer already has a subscription
* ensure no other customer accounts share the user id
* set recurly_to_stripe_migration_status to cancelled in cancel script
* add script for updating metadata of canceled migrations
GitOrigin-RevId: 3331de480e99774679ff2649b90d41e981a8fdef
* handle group quantities & add-ons when detecting changes
* include analyticsId in output
* flag users in customer-io
* rely on customer metadata for tax info needing updating
* rollback customer.io data in rollback script
* refactor how we handle errors when migrating to avoid losing data for output
GitOrigin-RevId: f77430b0b366217ac85b72dde92e9364dc879023
* fix source on analytics mapping in finalization script
* add script to redo mappings for finalized subscriptions
GitOrigin-RevId: a62af6c6c7ae11f9bea62ed643c8dfa7595ba99b
* check and log unexpected end states before terminating Recurly subscriptions
* update finalize and rollback scripts to only postpone active subscriptions
GitOrigin-RevId: 7fe6ffa56cb8ddf19133eb0cb59e39fd783430b7
* remap customer.metadata.recurlyAccountCode to customer.metadata.userId
* verify recurlyAccountCode is what we expect it to be before setting
GitOrigin-RevId: 8ab1d5e311dba34bb8c15d01096f6c31273a7506
* return early from various event handlers if the subscription isn't controlled by the payment provider sending the event
* update `Subscription` type for webhook events
GitOrigin-RevId: f3fc345c37bbe134b7696ccde9d6d8c7608f8f12
* update recurly change prices script
* write to /tmp/ and add an option to write to stdout
* add analytics events
* default script to renewal
GitOrigin-RevId: 5ebb17ee2c1ad70128391745a994ea6c74c739f9
* make Stripe export script only export active products and prices
* add a gitignore for the scripts/stripe/output
GitOrigin-RevId: 975d84077c3940d4f5af518e5f8292ea455e1c3a
* update pricing settings for Nov 2025 update
* update `StripeLookupKeyVersion` type
* update unit tests to match new Stripe version
GitOrigin-RevId: f5df5167b605b6667cc19edad09fb2c0f72a293b
* update generate recurly prices script to skip stripe-only prices
* add script for creating new Stripe prices from a CSV
* add script to archive Stripe prices by version key
* add script for exporting Stripe products and prices
* add script to import Stripe products
GitOrigin-RevId: 3c9cf8037d956b9532c3efed5fe8d63f8be53a93
* refactor PaymentService.getPaymentProviderAdminUrl to be more useful
* display all stripe customer accounts
* mv change segment modal to each account
* stripeSubscriptionData -> stripeCustomerData
GitOrigin-RevId: 4c1a277f5073ee7cb12f4596210ba4f8624451b8
* do not emit subscription-started when status is incomplete
* emit subscription-started when incomplete subscription transitions to active
* do not emit subscription-expired when status is incomplete_expired
* do not sync incomplete or incomplete_expired Stripe subscriptions
* allow `incomplete*` status to better guard against syncing
GitOrigin-RevId: 4e851f654dcb4bf356280197dd158e834175df12
* [web] add error messages for payment failing to upgrade modal
* [web] show payment error on preview change page
* [web] add separate message for 3ds failure
GitOrigin-RevId: b2680ff9b4f01e42f31c1c11457f216a5eadf49d
* [web] link to correct Stripe dashboard from admin panel
* [web] be more careful about constructing the base URL
* [web] be extra careful about accessing values in the subscription
* [web] switch to plain text environment variables
GitOrigin-RevId: 5fa802fce11967f56289b11476f39e2e1d5a9c74
[web] Add missing publicKey to purchase add-on flow when user need to authenticate their payment via 3ds secure flow
GitOrigin-RevId: cc330cb8dad501479bbb3c5c5b4fc32ef9d36921
* [web] make SubscriptionController.cancelSubscription return a status
* [web] update acceptance test to match cancel subscription behavior
GitOrigin-RevId: 507809dcb7fa645c2a69e38cdf4a9e3f736622e1