# Testing pricing page copy stored in Storyblok, where do goals come from?

Asked by tobias_l on 2025-12-09. Tags: storyblok, ab-testing, saas, goals.

My hypothesis is that our pricing page underperforms because the value prop is
feature-led instead of outcome-led. I want to test two framings against each
other with trial signups as the success metric.

Blocks are already mapped to slots, so the content side is done. At my
last job every test like this meant a dev ticket plus an anti-flicker snippet, so
I am still calibrating what is self-serve here.

What I cannot figure out is the goal side. When I create the experiment it asks
for a goal, but how does the experiment actually know a trial signup happened?
Is there some event I need to be sending first

## 2 answers

### Accepted answer from Owen McAllister (2025-12-09)

You guessed it right at the end: the goal event must already be tracked before
it shows up as a selectable goal in the experiment setup. The experiment does
not invent the signal, it counts an event you are sending.

For trial signups you have two clean options:

```js
croct.track('userSignedUp', {userId: user.id});
```

or the generic goal event if you want a metric that is not tied to signup
semantics:

```js
croct.track('goalCompleted', {goalId: 'trial-signup'});
```

Fire it wherever your signup success handler lives, deploy, confirm the event
shows up in the dashboard, and then it becomes available as the experiment's
primary goal. That deploy is the only dev involvement; after that, launching
and iterating on tests is entirely in the experience editor.

One more thing worth doing: scope the experiment audience with

```cql
page's path is "/pricing"
```

so only visitors who actually saw the pricing page enter the test. Otherwise
your denominator includes people who never saw either variant.

#### Reply from tobias_l (2025-12-10)

Makes sense. We already send userSignedUp for another audience, so it was
selectable right away. Test is live, thanks.

### Answer from davi_r (2025-12-10)

adding one thing since you mentioned being metric-driven: the results are
Bayesian and unsampled, so you get probability-to-be-best rather than p-values,
and you can drill down by device, audience, time window, and custom events.
Worth checking the mobile split separately on pricing pages, in my experience
the winning framing is not always the same on both.
