Skip to content

feat(billing): Add Emerge quota exceeded UI with Contact Sales CTA#106932

Merged
dashed merged 6 commits intomasterfrom
billing/BIL-2005
Jan 27, 2026
Merged

feat(billing): Add Emerge quota exceeded UI with Contact Sales CTA#106932
dashed merged 6 commits intomasterfrom
billing/BIL-2005

Conversation

@dashed
Copy link
Copy Markdown
Member

@dashed dashed commented Jan 24, 2026

Closes https://linear.app/getsentry/issue/BIL-2005/add-emerge-billing-overage-ui-with-contact-sales-cta

Summary

  • Add special handling for Emerge data categories (SIZE_ANALYSIS, INSTALLABLE_BUILD) in the navigation billing status component
  • Show "Contact Sales" CTA (mailto:[email protected]) instead of AddEventsCTA since Emerge categories don't have PAYG available
  • Support three scenarios:
    • Only Emerge categories exceeded → Contact Sales CTA
    • Both Emerge and standard categories exceeded → Both sections displayed
    • Only standard categories exceeded → Original AddEventsCTA behavior
Screenshot 2026-01-24 at 4 16 39 PM

Test plan

  • Added tests for Size Analysis quota exceeded with Contact Sales CTA
  • Added tests for Build Distribution quota exceeded with Contact Sales CTA
  • Added tests for both Emerge categories exceeded together
  • Added tests for mixed Emerge and standard categories exceeded
  • All 21 tests in navBillingStatus.spec.tsx pass
  • Manually verified UI in dev environment with mocked database changes

@linear
Copy link
Copy Markdown

linear bot commented Jan 24, 2026

@github-actions github-actions bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Jan 24, 2026
@dashed dashed self-assigned this Jan 24, 2026
@dashed dashed marked this pull request as ready for review January 26, 2026 06:02
@dashed dashed requested a review from a team January 26, 2026 06:02
Add special handling for Emerge data categories (SIZE_ANALYSIS, INSTALLABLE_BUILD)
in the billing status alert:

- Show Emerge-specific copy explaining quota exceeded status
- Display "Contact Sales" CTA instead of standard AddEventsCTA (since Emerge
  has no PAYG/on-demand option)
- Use dynamic quota value from subscription.categories instead of hardcoded value
- Handle mixed scenarios (Emerge + other categories exceeded)

BIL-2005
…sage

Address PR review feedback to remove the hard-coded quota value (100)
from the Size Analysis quota exceeded message. The message now says
"full quota of Size Analysis builds" instead of including a specific
number, consistent with other category messages.
Address PR review feedback to use behavior-based naming instead of
product-specific naming. The term "Emerge" refers to a specific
product acquisition, but the behavior is about PAYG ineligibility
which could apply to any category.

Renames:
- EMERGE_CATEGORIES → PAYG_INELIGIBLE_CATEGORIES
- isEmergeCategory → isPaygIneligibleCategory
- getEmergeSubheader → getPaygIneligibleSubheader
- getEmergeBodyCopy → getPaygIneligibleBodyCopy
- emergeCategories → paygIneligibleCategories
- emergeEventTypes → paygIneligibleEventTypes
Refactor getPaygIneligibleSubheader and getPaygIneligibleBodyCopy to use
the existing listDisplayNames utility instead of hardcoding category
display names. This ensures consistency with other category displays
and follows the DRY principle.

Addresses review feedback from PR #106932.
The functions getPaygIneligibleSubheader and getPaygIneligibleBodyCopy
use tct() which returns React.ReactNode, not string.
The onDismiss function was ignoring the eventTypes parameter and snoozing
all prompts. This caused a bug where acting on the PAYG-eligible CTA
would incorrectly dismiss the "Contact Sales" prompt for PAYG-ineligible
categories. Now only prompts matching the passed eventTypes are snoozed.
Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

}
)}
</Description>
)}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicated JSX blocks for category descriptions

Low Severity

The usageCategories and seatCategories description blocks are identical between the "mixed" scenario (lines 231-252) and the "standard" scenario (lines 304-325). The same tct() calls with identical strings like 'You have used up your quota for [usageCategoryList]...' and '[prefix] reached your quota for [seatCategoryList]...' appear in both locations. If the copy needs updating, changes must be made in two places, increasing maintenance burden and risk of inconsistency.

Additional Locations (1)

Fix in Cursor Fix in Web

@dashed dashed merged commit 70a5fc6 into master Jan 27, 2026
53 checks passed
@dashed dashed deleted the billing/BIL-2005 branch January 27, 2026 21:01
priscilawebdev pushed a commit that referenced this pull request Jan 28, 2026
…106932)

Closes
https://linear.app/getsentry/issue/BIL-2005/add-emerge-billing-overage-ui-with-contact-sales-cta

## Summary

- Add special handling for Emerge data categories (SIZE_ANALYSIS,
INSTALLABLE_BUILD) in the navigation billing status component
- Show "Contact Sales" CTA (mailto:[email protected]) instead of
AddEventsCTA since Emerge categories don't have PAYG available
- Support three scenarios:
  - Only Emerge categories exceeded → Contact Sales CTA
- Both Emerge and standard categories exceeded → Both sections displayed
  - Only standard categories exceeded → Original AddEventsCTA behavior

<img width="504" height="383" alt="Screenshot 2026-01-24 at 4 16 39 PM"
src="https://github.com/user-attachments/assets/1aab103e-7d33-47f1-ad98-3e2a599f93d9"
/>


## Test plan

- [x] Added tests for Size Analysis quota exceeded with Contact Sales
CTA
- [x] Added tests for Build Distribution quota exceeded with Contact
Sales CTA
- [x] Added tests for both Emerge categories exceeded together
- [x] Added tests for mixed Emerge and standard categories exceeded
- [x] All 21 tests in navBillingStatus.spec.tsx pass
- [x] Manually verified UI in dev environment with mocked database
changes
priscilawebdev pushed a commit that referenced this pull request Feb 2, 2026
…106932)

Closes
https://linear.app/getsentry/issue/BIL-2005/add-emerge-billing-overage-ui-with-contact-sales-cta

## Summary

- Add special handling for Emerge data categories (SIZE_ANALYSIS,
INSTALLABLE_BUILD) in the navigation billing status component
- Show "Contact Sales" CTA (mailto:[email protected]) instead of
AddEventsCTA since Emerge categories don't have PAYG available
- Support three scenarios:
  - Only Emerge categories exceeded → Contact Sales CTA
- Both Emerge and standard categories exceeded → Both sections displayed
  - Only standard categories exceeded → Original AddEventsCTA behavior

<img width="504" height="383" alt="Screenshot 2026-01-24 at 4 16 39 PM"
src="https://github.com/user-attachments/assets/1aab103e-7d33-47f1-ad98-3e2a599f93d9"
/>


## Test plan

- [x] Added tests for Size Analysis quota exceeded with Contact Sales
CTA
- [x] Added tests for Build Distribution quota exceeded with Contact
Sales CTA
- [x] Added tests for both Emerge categories exceeded together
- [x] Added tests for mixed Emerge and standard categories exceeded
- [x] All 21 tests in navBillingStatus.spec.tsx pass
- [x] Manually verified UI in dev environment with mocked database
changes
@github-actions github-actions bot locked and limited conversation to collaborators Feb 12, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants