Skip to content

Conversation

@aerosol
Copy link
Member

@aerosol aerosol commented Jan 3, 2026

Changes

This PR implements full capability of managing goals with custom props via site settings + filtering the dashboard.

The PR builds upon #5978, #5944, #5946, #5952

Billing states, such as Props feature unavailable are handled with appropriate CTAs.

Preview env: https://pr-5977.review.plausible.io/

Documentation update + changelog entry pending.

Additionally, we'll prohibit editing existing revenue goals currency.

Sample screenshots:

record-2026-01-19-11-03-52-blob.ayes.cuba.mp4
image image
record-2026-01-19-11-11-28-aunt.ribs.nora.mp4

Tests

  • Automated tests have been added
  • This PR does not require tests

Changelog

  • Entry has been added to changelog
  • This PR does not make a user-facing change

Documentation

  • Docs have been updated
  • This change does not need a documentation update

Dark mode

  • The UI has been tested both in dark and light mode
  • This PR does not change the UI

@aerosol aerosol force-pushed the feat-preview-custom-props-on-goals branch from 90d802d to e861beb Compare January 5, 2026 07:31
@aerosol aerosol added the preview label Jan 5, 2026
@github-actions
Copy link

github-actions bot commented Jan 5, 2026

Preview environment👷🏼‍♀️🏗️
PR-5977

@aerosol aerosol force-pushed the feat-preview-custom-props-on-goals branch from 0f70963 to 79098c7 Compare January 6, 2026 11:39
@sanne-san sanne-san force-pushed the feat-preview-custom-props-on-goals branch from 3398dd5 to 0daac2f Compare January 14, 2026 13:01
@aerosol aerosol marked this pull request as ready for review January 19, 2026 10:19
@aerosol aerosol requested a review from a team January 19, 2026 10:20
@aerosol aerosol changed the title [wip] Feat preview custom props on goals Goals with custom props (settings+filtering UI integration) Jan 19, 2026
@aerosol aerosol force-pushed the feat-preview-custom-props-on-goals branch from c14f5a7 to ded06ef Compare January 19, 2026 13:00
sanne-san and others added 21 commits January 19, 2026 14:08
…pair

- Add input and dropdown class attributes to combobox.
- Adjust combobox dropdown within a property pair to overflow to max the width of the property pair container, with help of container-type:inline-size.
- Ensure trash icon wrapper is hidden when icon is hidden.
- Add title attribute to option when it is being truncated.
- Improve `Upgrade` CTA in list and turn it into a link
- Improve `Upgrade` CTA tooltip copy to make it more clear what happens with locked goals on the dashboard
- Add disabled (faded) styling to icon button and toggle switch
- Move disabled styling to toggle only in goal form
- Add `link_class` attribute to `upgrade_call_to_action` component in order to override link color when displayed inside tooltip
- Add `Business` pill to goal form to make it more obvious that the feature is locked, and make it a link to the billing page
- Improve prop styling inside tooltip in goal list to make it more readable and ensure truncation when prop is long
@aerosol aerosol force-pushed the feat-preview-custom-props-on-goals branch from ded06ef to 4a39634 Compare January 19, 2026 13:08
Comment on lines 20 to 22
goals =
site
|> Plausible.Goals.for_site(include_goals_with_custom_props?: props_available?)
Copy link
Contributor

@apata apata Jan 26, 2026

Choose a reason for hiding this comment

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

nitpick, non-blocking: I think the error emitted to Stats API users may be a bit misleading if we do it this way. It will say that the requested goal doesn't exist, even though it does, just is unavailable.

{
  "error": "Invalid filters. The goal `...` is not configured for this site. Find out how to configure goals here: https://plausible.io/docs/stats-api#filtering-by-goals"
}

Copy link
Member Author

Choose a reason for hiding this comment

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

We can update the documentation once this is live and state that goals with custom props might become unavailable in Stats API, if subscription does not cover props. Settings web UI will make that clear. cc @metmarkosaric

@aerosol aerosol requested review from ukutaht and zoldar January 26, 2026 13:27
<PlausibleWeb.Components.Billing.upgrade_call_to_action
current_user={@current_user}
current_team={@site_team}
link_class="!inline !text-indigo-400 hover:!text-indigo-300"
Copy link
Contributor

Choose a reason for hiding this comment

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

I was trying to see what these classes do but don't see a visible difference when I remove the line. Am I doing something wrong or are these not really doing anything? Here's what it looks to me with this line removed

Image

Copy link
Member Author

Choose a reason for hiding this comment

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

Kindly paging @sanne-san

Copy link
Contributor

@sanne-san sanne-san Feb 2, 2026

Choose a reason for hiding this comment

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

Yeah this is because the upgrade CTA appears inside a tooltip here. The tooltip is there for extra context if people try to click the toggle. This means that even in light mode, it appears on a dark background and becomes hard to read. These classes make sure it 1) reads as a single line and 2) it's more visible. With and without:

CleanShot 2026-02-02 at 13 52 05@2x CleanShot 2026-02-02 at 13 53 06@2x

@aerosol aerosol added this pull request to the merge queue Feb 2, 2026
Merged via the queue into master with commit 3355b5f Feb 2, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants