@picked/client 0.0.71-next.1 → 0.0.71-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/{api-CH2FNa6S.cjs → api-CnjBi6JG.cjs} +1 -1
- package/dist/{api-CgqRvuKL.js → api-vBVGLtvU.js} +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/explanation/conditions-and-the-logic-engine.md +94 -0
- package/dist/docs/explanation/feature-flag-allocation.md +176 -0
- package/dist/docs/explanation/how-picked-works.md +102 -0
- package/dist/docs/explanation/how-pickedql-works.md +76 -0
- package/dist/docs/explanation/pages-and-flows.md +64 -0
- package/dist/docs/explanation/the-content-model.md +77 -0
- package/dist/docs/explanation/the-two-apis.md +68 -0
- package/dist/docs/explanation/why-server-side-rendering.md +76 -0
- package/dist/docs/explanation/workspaces-and-versions.md +71 -0
- package/dist/docs/how-to/add-a-step-field-or-action.md +43 -0
- package/dist/docs/{pickedql/examples.md → how-to/analytics/index.md} +19 -6
- package/dist/docs/how-to/archive-or-delete-a-workspace.md +46 -0
- package/dist/docs/how-to/authenticate-with-a-magic-link.md +40 -0
- package/dist/docs/how-to/authenticate-with-a-password.md +51 -0
- package/dist/docs/how-to/authenticate-with-an-api-key.md +51 -0
- package/dist/docs/how-to/authenticate-with-oauth.md +40 -0
- package/dist/docs/{flow-builder/building-flows.md → how-to/build-a-flow.md} +13 -9
- package/dist/docs/how-to/connect-the-mcp-server.md +38 -0
- package/dist/docs/how-to/create-a-project.md +29 -0
- package/dist/docs/how-to/create-an-experience.md +42 -0
- package/dist/docs/how-to/create-and-revoke-an-api-key.md +37 -0
- package/dist/docs/how-to/debug-with-the-chrome-extension.md +57 -0
- package/dist/docs/how-to/define-a-page-layout.md +39 -0
- package/dist/docs/how-to/fill-and-publish-a-page.md +50 -0
- package/dist/docs/{gtm-template.md → how-to/install-the-gtm-template.md} +9 -3
- package/dist/docs/how-to/install-the-sdk.md +68 -0
- package/dist/docs/how-to/install-the-vite-plugin.md +56 -0
- package/dist/docs/how-to/invite-and-remove-members.md +34 -0
- package/dist/docs/how-to/preview-a-workspace.md +28 -0
- package/dist/docs/how-to/publish-a-workspace.md +30 -0
- package/dist/docs/how-to/read-a-feature-flag.md +101 -0
- package/dist/docs/how-to/register-a-component.md +55 -0
- package/dist/docs/how-to/register-an-action-handler.md +67 -0
- package/dist/docs/how-to/render-a-step-form.md +132 -0
- package/dist/docs/how-to/render-an-unpublished-preview.md +41 -0
- package/dist/docs/how-to/reuse-a-section.md +37 -0
- package/dist/docs/how-to/reuse-a-step-field-or-action.md +28 -0
- package/dist/docs/how-to/roll-back-a-published-version.md +26 -0
- package/dist/docs/how-to/run-an-ab-test.md +49 -0
- package/dist/docs/how-to/run-code-on-a-form-submission.md +125 -0
- package/dist/docs/how-to/server-render-a-page.md +81 -0
- package/dist/docs/how-to/set-a-content-security-policy.md +32 -0
- package/dist/docs/how-to/set-up-mfa.md +69 -0
- package/dist/docs/how-to/upload-and-use-an-asset.mdx +73 -0
- package/dist/docs/how-to/validate-a-field.md +52 -0
- package/dist/docs/how-to/write-a-condition.md +45 -0
- package/dist/docs/how-to/write-a-predicate.md +60 -0
- package/dist/docs/index.md +41 -70
- package/dist/docs/reference/dashboard/actions.mdx +53 -0
- package/dist/docs/{api-keys.mdx → reference/dashboard/api-keys.mdx} +7 -15
- package/dist/docs/reference/dashboard/conditions.mdx +42 -0
- package/dist/docs/reference/dashboard/content/asset-library.mdx +63 -0
- package/dist/docs/{content → reference/dashboard/content}/content-entries.mdx +11 -3
- package/dist/docs/{content → reference/dashboard/content}/layouts.mdx +11 -35
- package/dist/docs/reference/dashboard/content/pages.mdx +35 -0
- package/dist/docs/reference/dashboard/content/sections.mdx +28 -0
- package/dist/docs/{experiences.mdx → reference/dashboard/experiences.mdx} +9 -16
- package/dist/docs/{features.mdx → reference/dashboard/features.mdx} +26 -41
- package/dist/docs/{fields.mdx → reference/dashboard/fields.mdx} +26 -20
- package/dist/docs/{flow-builder/overview.mdx → reference/dashboard/flow-builder/canvas.mdx} +8 -13
- package/dist/docs/{flow-builder → reference/dashboard/flow-builder}/condition-builder.md +5 -13
- package/dist/docs/{flow-builder → reference/dashboard/flow-builder}/keyboard-shortcuts.md +7 -1
- package/dist/docs/{flow-builder → reference/dashboard/flow-builder}/nodes.md +10 -3
- package/dist/docs/reference/dashboard/projects.mdx +44 -0
- package/dist/docs/reference/dashboard/reports.mdx +43 -0
- package/dist/docs/reference/dashboard/steps.mdx +37 -0
- package/dist/docs/{team-management.md → reference/dashboard/team-management.md} +5 -22
- package/dist/docs/{workspace-versioning.mdx → reference/dashboard/workspace-versioning.mdx} +6 -10
- package/dist/docs/reference/dashboard/workspaces.mdx +76 -0
- package/dist/docs/{delivery-api → reference/delivery-api}/experience-content.md +11 -4
- package/dist/docs/reference/delivery-api/index.md +45 -0
- package/dist/docs/{delivery-api → reference/delivery-api}/preview-caching-crawling.md +12 -5
- package/dist/docs/{delivery-api → reference/delivery-api}/project-config.md +11 -4
- package/dist/docs/reference/glossary.md +173 -0
- package/dist/docs/reference/management-api/authentication.md +74 -0
- package/dist/docs/{api → reference/management-api}/authorization-and-scopes.md +10 -3
- package/dist/docs/{api → reference/management-api}/error-handling.md +9 -3
- package/dist/docs/{api → reference/management-api}/pagination.md +6 -0
- package/dist/docs/{pickedql → reference/pickedql}/data-sources.md +16 -9
- package/dist/docs/{pickedql → reference/pickedql}/dimensions.md +7 -0
- package/dist/docs/{pickedql → reference/pickedql}/filtering.md +7 -0
- package/dist/docs/reference/pickedql/index.md +18 -0
- package/dist/docs/{pickedql → reference/pickedql}/schema.md +13 -6
- package/dist/docs/{pickedql → reference/pickedql}/virtual-functions.md +7 -0
- package/dist/docs/reference/sdk/actions.md +30 -0
- package/dist/docs/{sdk → reference/sdk}/conditions.md +8 -1
- package/dist/docs/reference/sdk/content-security-policy.md +21 -0
- package/dist/docs/reference/sdk/experiences.md +51 -0
- package/dist/docs/{sdk → reference/sdk}/features.md +30 -117
- package/dist/docs/{sdk → reference/sdk}/fields.md +10 -88
- package/dist/docs/reference/sdk/index.md +68 -0
- package/dist/docs/{sdk → reference/sdk}/plugins/create-experience.md +10 -22
- package/dist/docs/reference/sdk/plugins/dynamic-experiences.md +26 -0
- package/dist/docs/reference/sdk/plugins/index.md +29 -0
- package/dist/docs/{sdk → reference/sdk}/plugins/window-object.md +6 -0
- package/dist/docs/reference/sdk/predicates.md +43 -0
- package/dist/docs/reference/sdk/ssr/index.md +33 -0
- package/dist/docs/{sdk → reference/sdk}/ssr/rendering-and-hydration.md +4 -63
- package/dist/docs/{sdk → reference/sdk}/ssr/serialize.md +6 -33
- package/dist/docs/{sdk → reference/sdk}/ssr/slots-and-placements.md +7 -1
- package/dist/docs/reference/sdk/steps.md +87 -0
- package/dist/docs/reference/tools/chrome-extension.md +16 -0
- package/dist/docs/{image-optimisation-service.md → reference/tools/image-optimisation-service.md} +8 -0
- package/dist/docs/{mcp.md → reference/tools/mcp.md} +5 -45
- package/dist/docs/{vite-plugin.md → reference/tools/vite-plugin.md} +8 -38
- package/dist/docs/{api/index.md → tutorials/first-api-call.md} +27 -15
- package/dist/docs/tutorials/first-experience-in-the-dashboard.mdx +143 -0
- package/dist/docs/tutorials/first-experience.mdx +255 -0
- package/dist/docs/tutorials/first-server-rendered-page.mdx +186 -0
- package/dist/esm/index.js +468 -426
- package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
- package/dist/esm/server/index.js +1 -1
- package/dist/{plugin-DCW-tnjO.cjs → plugin-CSmD1gPl.cjs} +1 -1
- package/dist/{plugin-D2UqFikQ.js → plugin-GOTtoDlC.js} +1 -1
- package/dist/types/entities/feature/feature.d.ts +25 -2
- package/dist/types/entities/feature/feature.d.ts.map +1 -1
- package/dist/types/picked.d.ts +2 -1
- package/dist/types/picked.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/docs/actions.mdx +0 -98
- package/dist/docs/api/authentication.md +0 -403
- package/dist/docs/chrome-extension.md +0 -68
- package/dist/docs/conditions.mdx +0 -72
- package/dist/docs/content/asset-library.mdx +0 -124
- package/dist/docs/content/pages.mdx +0 -82
- package/dist/docs/content/sections.mdx +0 -44
- package/dist/docs/delivery-api/index.md +0 -53
- package/dist/docs/guides/build-a-personalized-page.mdx +0 -161
- package/dist/docs/pickedql/index.md +0 -54
- package/dist/docs/projects.mdx +0 -44
- package/dist/docs/reports.mdx +0 -20
- package/dist/docs/sdk/actions.md +0 -82
- package/dist/docs/sdk/content-security-policy.md +0 -33
- package/dist/docs/sdk/experiences.md +0 -64
- package/dist/docs/sdk/feature-allocation.md +0 -161
- package/dist/docs/sdk/index.md +0 -98
- package/dist/docs/sdk/plugins/dynamic-experiences.md +0 -84
- package/dist/docs/sdk/plugins/index.md +0 -9
- package/dist/docs/sdk/predicates.md +0 -128
- package/dist/docs/sdk/ssr/index.md +0 -79
- package/dist/docs/sdk/steps.md +0 -479
- package/dist/docs/steps.mdx +0 -53
- package/dist/docs/workspaces.mdx +0 -133
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
import { Screenshot } from '
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
6
7
|
|
|
7
8
|
# Feature flags
|
|
8
9
|
|
|
@@ -14,27 +15,19 @@ which visitors see a change to your site, and you deploy no code.
|
|
|
14
15
|
alt="The feature flags list for a workspace on the Picked dashboard"
|
|
15
16
|
/>
|
|
16
17
|
|
|
17
|
-
## Create a feature flag
|
|
18
|
-
|
|
19
|
-
1. Open your project.
|
|
20
|
-
2. Click **Feature flags** in the sidebar.
|
|
21
|
-
3. Click **New feature flag**.
|
|
22
|
-
4. Enter a name.
|
|
23
|
-
5. Click **Create feature flag**.
|
|
24
|
-
|
|
25
18
|
## Keys
|
|
26
19
|
|
|
27
20
|
Each feature flag has a unique key. Your application uses this key to check whether
|
|
28
21
|
Picked allocates a visitor to the feature flag. You set the key when you create the
|
|
29
22
|
feature flag, and you cannot change it later.
|
|
30
23
|
|
|
31
|
-
##
|
|
24
|
+
## Set the allocation
|
|
32
25
|
|
|
33
26
|
Set the allocation from the detail page of the feature flag:
|
|
34
27
|
|
|
35
28
|
| Control | What it does |
|
|
36
29
|
| --- | --- |
|
|
37
|
-
| **Enabled** | Whether Picked allocates a visitor to the feature flag. A feature flag
|
|
30
|
+
| **Enabled** | Whether Picked allocates a visitor to the feature flag. A disabled feature flag allocates nobody, and it records nothing. See [Disable a feature flag](#disable-a-feature-flag). |
|
|
38
31
|
| **Weight** | The percentage of visitors that Picked allocates to the feature flag, from 0 to 100. |
|
|
39
32
|
| **Description** | An internal note about what the feature flag tests. |
|
|
40
33
|
|
|
@@ -43,55 +36,40 @@ allocated, or not allocated. A weight of 30 allocates 30% of your visitors. The
|
|
|
43
36
|
70% stay unallocated. A weight of 0 allocates nobody. A weight of 100 allocates
|
|
44
37
|
everybody.
|
|
45
38
|
|
|
46
|
-
## How
|
|
47
|
-
|
|
48
|
-
The allocation is deterministic. Picked gives each visitor a stable value for each
|
|
49
|
-
feature flag. It derives that value from the visitor ID and from the ID of the feature
|
|
50
|
-
flag. It then compares the value against the weight. When the value is below the
|
|
51
|
-
weight, Picked allocates the visitor.
|
|
39
|
+
## How Picked allocates a visitor
|
|
52
40
|
|
|
53
|
-
The
|
|
54
|
-
|
|
55
|
-
|
|
41
|
+
The allocation is deterministic. It derives from the visitor ID, the ID of the feature
|
|
42
|
+
flag, and the weight. Each feature flag gets its own value, so tests that run at the
|
|
43
|
+
same time are independent. See
|
|
44
|
+
[About feature flag allocation](/explanation/feature-flag-allocation).
|
|
56
45
|
|
|
57
|
-
|
|
58
|
-
independent. Two feature flags, both at weight 50, split your visitors into four equal
|
|
59
|
-
parts: allocated to both, to one, to the other, or to neither. Three feature flags at
|
|
60
|
-
weight 50 give eight groups of 12.5%.
|
|
46
|
+
## Disable a feature flag
|
|
61
47
|
|
|
62
|
-
|
|
63
|
-
Inside one feature flag, a larger weight only adds visitors. Everybody at weight 30 is
|
|
64
|
-
still allocated at weight 50, so you can make a release wider and move nobody who is
|
|
65
|
-
in it already. A smaller weight removes visitors from the top of the range.
|
|
66
|
-
:::
|
|
67
|
-
|
|
68
|
-
## Turn a feature flag off
|
|
69
|
-
|
|
70
|
-
A feature flag that is off allocates nobody, and it records nothing. The difference
|
|
48
|
+
A disabled feature flag allocates nobody, and it records nothing. The difference
|
|
71
49
|
from a weight of 0 matters for your reports. The visitor is **not in the test at
|
|
72
50
|
all**, and the visitor is not in the control group.
|
|
73
51
|
|
|
74
|
-
The SDK does not evaluate a feature flag
|
|
52
|
+
The SDK does not evaluate a disabled feature flag. It stores no decision in the
|
|
75
53
|
browser of the visitor, and it reports no decision to your analytics. Such a feature
|
|
76
54
|
flag is absent from the feature list on every analytics event.
|
|
77
55
|
|
|
78
|
-
An experience whose condition points at a feature flag
|
|
56
|
+
An experience whose condition points at a disabled feature flag behaves as though
|
|
79
57
|
the visitor is not in the test. The condition reads as not allocated, and Picked
|
|
80
58
|
records no assignment.
|
|
81
59
|
|
|
82
60
|
This state is temporary, and it discards no decision that Picked made already. A
|
|
83
|
-
visitor who was allocated before keeps that decision in the browser. When you
|
|
84
|
-
feature flag
|
|
85
|
-
|
|
61
|
+
visitor who was allocated before keeps that decision in the browser. When you enable the
|
|
62
|
+
feature flag again, Picked continues from that decision, and the visitor stays in the
|
|
63
|
+
group they were already in.
|
|
86
64
|
|
|
87
65
|
:::note
|
|
88
|
-
Expect a step change in your reports when you
|
|
66
|
+
Expect a step change in your reports when you disable a feature flag: fewer feature
|
|
89
67
|
flags for each visitor, and fewer decision events. That is the feature flag that drops
|
|
90
68
|
out, and you lose no data.
|
|
91
69
|
:::
|
|
92
70
|
|
|
93
|
-
A feature flag
|
|
94
|
-
[URL override](/sdk/features#overrides-in-the-url) still turns one on for QA.
|
|
71
|
+
A disabled feature flag stays visible in the developer tools, and a
|
|
72
|
+
[URL override](/reference/sdk/features#overrides-in-the-url) still turns one on for QA.
|
|
95
73
|
|
|
96
74
|
## Feature flag versions
|
|
97
75
|
|
|
@@ -127,3 +105,10 @@ decision.
|
|
|
127
105
|
To apply a weight change only to a visitor that Picked does not allocate yet, change
|
|
128
106
|
the weight and leave the version as it is. An allocated visitor keeps the current
|
|
129
107
|
allocation.
|
|
108
|
+
|
|
109
|
+
## Related
|
|
110
|
+
|
|
111
|
+
- [About feature flag allocation](/explanation/feature-flag-allocation)
|
|
112
|
+
- [How to run an A/B test](/how-to/run-an-ab-test)
|
|
113
|
+
- [How to read a feature flag](/how-to/read-a-feature-flag)
|
|
114
|
+
- [How to add a step, a field, an action, or a condition](/how-to/add-a-step-field-or-action)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
import { Screenshot } from '
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
6
7
|
|
|
7
8
|
# Fields
|
|
8
9
|
|
|
@@ -11,22 +12,13 @@ information such as a name, an email address, a preference, or a choice.
|
|
|
11
12
|
|
|
12
13
|
This page covers the experience field, which collects visitor input. An experience
|
|
13
14
|
field is not the same as a content field. A content field is part of the schema of a
|
|
14
|
-
CMS layout. See [Page and Step Layouts](/content/layouts) for those.
|
|
15
|
+
CMS layout. See [Page and Step Layouts](/reference/dashboard/content/layouts) for those.
|
|
15
16
|
|
|
16
17
|
<Screenshot
|
|
17
18
|
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/fields"
|
|
18
19
|
alt="The fields list for a workspace on the Picked dashboard"
|
|
19
20
|
/>
|
|
20
21
|
|
|
21
|
-
## Create a field
|
|
22
|
-
|
|
23
|
-
1. Open your project.
|
|
24
|
-
2. Click **Fields** in the sidebar.
|
|
25
|
-
3. Click **New Field**.
|
|
26
|
-
4. Enter a name, a key, and a label.
|
|
27
|
-
5. Choose a type.
|
|
28
|
-
6. Click **Create**.
|
|
29
|
-
|
|
30
22
|
## Field types
|
|
31
23
|
|
|
32
24
|
A field has one of many types. These are the common ones:
|
|
@@ -63,7 +55,7 @@ it. Your visitors do not see it.
|
|
|
63
55
|
continue.
|
|
64
56
|
|
|
65
57
|
**Validation rules**: Conditions for a constraint such as a smallest value, a largest
|
|
66
|
-
value, or a pattern. See [Condition Builder](/flow-builder/condition-builder) for how
|
|
58
|
+
value, or a pattern. See [Condition Builder](/reference/dashboard/flow-builder/condition-builder) for how
|
|
67
59
|
to build a validation rule.
|
|
68
60
|
|
|
69
61
|
## More than one value
|
|
@@ -78,17 +70,31 @@ buttons, add options. Each option has a value, and the response carries that val
|
|
|
78
70
|
|
|
79
71
|
Each option can also carry a condition. When you set one, the option appears only to
|
|
80
72
|
a visitor who matches the condition. See
|
|
81
|
-
[Condition Builder](/flow-builder/condition-builder) for more detail.
|
|
73
|
+
[Condition Builder](/reference/dashboard/flow-builder/condition-builder) for more detail.
|
|
82
74
|
|
|
83
75
|
## Privacy
|
|
84
76
|
|
|
85
|
-
|
|
86
|
-
|
|
77
|
+
Two policies control where the value of a field can go. They are independent, and a
|
|
78
|
+
sensitive field usually needs both.
|
|
79
|
+
|
|
80
|
+
| Policy | What it does |
|
|
81
|
+
| --- | --- |
|
|
82
|
+
| **Do Not Track** | Picked keeps the value out of your analytics events. The events carry the field ID only. |
|
|
83
|
+
| **Do Not Store** | The SDK reads the value but does not put it in browser storage. |
|
|
84
|
+
|
|
85
|
+
Neither policy stops the flow from the use of the value inside the page. A field with both
|
|
86
|
+
policies set still holds its value there. The flow validates the step with it, and it
|
|
87
|
+
evaluates the conditions after the step with it. The policies control what leaves the
|
|
88
|
+
page.
|
|
89
|
+
|
|
90
|
+
Set both for a password, a tax number, or a payment detail. A field that only takes a
|
|
91
|
+
branch in a flow needs neither.
|
|
87
92
|
|
|
88
|
-
|
|
89
|
-
keep it. Use it for sensitive information such as a password or payment detail.
|
|
93
|
+
## Related
|
|
90
94
|
|
|
91
|
-
|
|
95
|
+
- [How to add a step, a field, an action, or a condition](/how-to/add-a-step-field-or-action)
|
|
92
96
|
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
- [How to validate a field](/how-to/validate-a-field)
|
|
98
|
+
- [How to write a condition](/how-to/write-a-condition) — for a validation rule or an
|
|
99
|
+
option condition.
|
|
100
|
+
- [SDK fields](/reference/sdk/fields) — the `policies` object.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
import { Screenshot } from '
|
|
6
|
+
import { Screenshot } from '../../../../../components/Screenshot'
|
|
6
7
|
|
|
7
8
|
# Flow builder
|
|
8
9
|
|
|
@@ -12,14 +13,14 @@ inspector panel.
|
|
|
12
13
|
|
|
13
14
|
<Screenshot
|
|
14
15
|
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/experiences/{experienceId}"
|
|
15
|
-
alt="The flow builder with the
|
|
16
|
+
alt="The flow builder with the library, canvas, and inspector panels"
|
|
16
17
|
/>
|
|
17
18
|
|
|
18
19
|
## Layout
|
|
19
20
|
|
|
20
21
|
The flow builder has three panels, from left to right.
|
|
21
22
|
|
|
22
|
-
**
|
|
23
|
+
**Library**, on the left: it lists every step, action, condition, and field in
|
|
23
24
|
your project. Drag an item from here onto the canvas.
|
|
24
25
|
|
|
25
26
|
**Canvas**, in the middle: the area where you build your flow. A node stands for a
|
|
@@ -50,14 +51,8 @@ Click the auto-layout button in the toolbar. The flow builder then arranges ever
|
|
|
50
51
|
node into a clean hierarchy. This is useful after you add many nodes, and when the
|
|
51
52
|
canvas becomes messy.
|
|
52
53
|
|
|
53
|
-
##
|
|
54
|
+
## Related
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
The flow builder also saves by itself after a period of inactivity. A dot on the save
|
|
59
|
-
button means that you have an unsaved change.
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
**Flow Builder** · [Nodes](/flow-builder/nodes) · [Build Flows](/flow-builder/building-flows) · [Keyboard Shortcuts](/flow-builder/keyboard-shortcuts) · [Condition Builder](/flow-builder/condition-builder)
|
|
56
|
+
- [How to build a flow](/how-to/build-a-flow) — add, connect, and branch.
|
|
57
|
+
- [Keyboard shortcuts](/reference/dashboard/flow-builder/keyboard-shortcuts)
|
|
58
|
+
- [Nodes](/reference/dashboard/flow-builder/nodes)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
@@ -12,7 +13,7 @@ places. With it you define a rule and you write no code.
|
|
|
12
13
|
The dashboard uses the condition builder here:
|
|
13
14
|
|
|
14
15
|
- **Condition nodes** — they set which branch the flow takes in the
|
|
15
|
-
[flow builder](/flow-builder/
|
|
16
|
+
[flow builder](/reference/dashboard/flow-builder/canvas).
|
|
16
17
|
- **Experience conditions** — they control when an experience starts for a visitor.
|
|
17
18
|
- **Initialize open conditions** — they control when an experience opens by itself as
|
|
18
19
|
the page loads.
|
|
@@ -50,16 +51,7 @@ branch on whether Picked allocates a visitor to a flag.
|
|
|
50
51
|
**Location** — the parts of the current page URL of the visitor. These are the
|
|
51
52
|
pathname, the search parameters, the hostname, and the hash.
|
|
52
53
|
|
|
53
|
-
##
|
|
54
|
+
## Related
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
1. Create an AND group.
|
|
58
|
-
2. Add a rule: **Location → pathname** equals `/pricing`.
|
|
59
|
-
3. Add a rule: **Responses → `marketing_opt_in`** equals `true`.
|
|
60
|
-
|
|
61
|
-
The rule group matches only when both conditions are true.
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
[Overview](/flow-builder/overview) · [Nodes](/flow-builder/nodes) · [Build Flows](/flow-builder/building-flows) · [Keyboard Shortcuts](/flow-builder/keyboard-shortcuts) · **Condition Builder**
|
|
56
|
+
- [How to write a condition](/how-to/write-a-condition) — a worked example.
|
|
57
|
+
- [About conditions and the logic engine](/explanation/conditions-and-the-logic-engine)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
@@ -63,4 +64,9 @@ These shortcuts work when the canvas of the flow builder holds the keyboard inpu
|
|
|
63
64
|
|
|
64
65
|
---
|
|
65
66
|
|
|
66
|
-
[Overview](/flow-builder/
|
|
67
|
+
[Overview](/reference/dashboard/flow-builder/canvas) · [Nodes](/reference/dashboard/flow-builder/nodes) · [Build Flows](/how-to/build-a-flow) · **Keyboard Shortcuts** · [Condition Builder](/reference/dashboard/flow-builder/condition-builder)
|
|
68
|
+
|
|
69
|
+
## Related
|
|
70
|
+
|
|
71
|
+
- [How to build a flow](/how-to/build-a-flow)
|
|
72
|
+
- [Canvas](/reference/dashboard/flow-builder/canvas) — the panels and the view controls.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
@@ -19,7 +20,7 @@ You cannot move the origin, delete it, or make a copy of it. It is always there.
|
|
|
19
20
|
A step node stands for a screen that a visitor sees. It appears as a blue rectangle
|
|
20
21
|
on the canvas.
|
|
21
22
|
|
|
22
|
-
A step holds fields. Drag a field from the
|
|
23
|
+
A step holds fields. Drag a field from the library onto a step node to assign
|
|
23
24
|
it. The subtitle of the node gives the number of assigned fields.
|
|
24
25
|
|
|
25
26
|
Each step has a `layoutName`. It tells the SDK which visual layout to use for this
|
|
@@ -43,7 +44,7 @@ right connects to the path for a true result. The red handle at the bottom right
|
|
|
43
44
|
connects to the path for a false result.
|
|
44
45
|
|
|
45
46
|
Define the rule in the inspector, with the visual condition builder. See
|
|
46
|
-
[Conditions](/conditions) for more detail.
|
|
47
|
+
[Conditions](/reference/dashboard/conditions) for more detail.
|
|
47
48
|
|
|
48
49
|
## Handles
|
|
49
50
|
|
|
@@ -53,4 +54,10 @@ nodes.
|
|
|
53
54
|
|
|
54
55
|
---
|
|
55
56
|
|
|
56
|
-
[Overview](/flow-builder/
|
|
57
|
+
[Overview](/reference/dashboard/flow-builder/canvas) · **Nodes** · [Build Flows](/how-to/build-a-flow) · [Keyboard Shortcuts](/reference/dashboard/flow-builder/keyboard-shortcuts) · [Condition Builder](/reference/dashboard/flow-builder/condition-builder)
|
|
58
|
+
|
|
59
|
+
## Related
|
|
60
|
+
|
|
61
|
+
- [How to build a flow](/how-to/build-a-flow)
|
|
62
|
+
- [Canvas](/reference/dashboard/flow-builder/canvas)
|
|
63
|
+
- [About how Picked works](/explanation/how-picked-works) — why a flow is a graph.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Projects
|
|
9
|
+
|
|
10
|
+
A project is one site or one application that you want to measure with Picked. Each
|
|
11
|
+
project has its own experiences, content, and options.
|
|
12
|
+
|
|
13
|
+
<Screenshot
|
|
14
|
+
route="/{orgSlug}"
|
|
15
|
+
alt="The organization home page on the Picked dashboard, with the projects in an organization"
|
|
16
|
+
/>
|
|
17
|
+
|
|
18
|
+
## Workspaces
|
|
19
|
+
|
|
20
|
+
Each project holds one or more [Workspaces](/reference/dashboard/workspaces). In a workspace you set the
|
|
21
|
+
options for an experience and you see a preview of it before you make it live.
|
|
22
|
+
|
|
23
|
+
## Project home
|
|
24
|
+
|
|
25
|
+
When you open a project, you land on the project home page. It shows your SDK
|
|
26
|
+
snippet and a list of the setup tasks that are still open.
|
|
27
|
+
|
|
28
|
+
Copy the snippet and add it to your site. The snippet connects your site to the
|
|
29
|
+
project and lets Picked serve experiences to it. See
|
|
30
|
+
[SDK Installation](/reference/sdk) for the setup detail.
|
|
31
|
+
|
|
32
|
+
## Project navigation
|
|
33
|
+
|
|
34
|
+
The sidebar shows the sections of your project: **Feature flags**, **Fields**, **Flows**,
|
|
35
|
+
**Pages**, and **Workspace settings**. **Flows** holds **Step Layouts**, and **Pages**
|
|
36
|
+
holds **Page Layouts** and **Sections**.
|
|
37
|
+
|
|
38
|
+
A step, an action, and a condition have no sidebar entry. You reach all three from the
|
|
39
|
+
library in the flow builder, because each one belongs to a flow.
|
|
40
|
+
|
|
41
|
+
## Related
|
|
42
|
+
|
|
43
|
+
- [How to create a project](/how-to/create-a-project)
|
|
44
|
+
- [How to install the SDK](/how-to/install-the-sdk)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Reports
|
|
9
|
+
|
|
10
|
+
A report is an embedded Metabase dashboard or question, attached to a Picked project. Use
|
|
11
|
+
a report to see how your visitors move through your experiences and your feature flags.
|
|
12
|
+
|
|
13
|
+
<Screenshot
|
|
14
|
+
route="/{orgSlug}/{projectId}/reports"
|
|
15
|
+
alt="The reports list for a project on the Picked dashboard"
|
|
16
|
+
/>
|
|
17
|
+
|
|
18
|
+
## Report options
|
|
19
|
+
|
|
20
|
+
| Option | Description |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| **Report name** | The name that the reports list shows. |
|
|
23
|
+
| **Description** | An optional note about what the report shows. |
|
|
24
|
+
| **Metabase report type** | `Dashboard` or `Question`. |
|
|
25
|
+
| **Metabase report ID** | The numeric ID from the Metabase URL. |
|
|
26
|
+
| **Display order** | Optional. It controls the position of the report in the list. |
|
|
27
|
+
|
|
28
|
+
The create form has a link that opens the report, so you can check that the ID is
|
|
29
|
+
correct before you save.
|
|
30
|
+
|
|
31
|
+
## Permissions
|
|
32
|
+
|
|
33
|
+
A member needs permission in the organization to create, edit, or delete a report. The
|
|
34
|
+
dashboard hides those actions from a member without it.
|
|
35
|
+
|
|
36
|
+
## Delete a report
|
|
37
|
+
|
|
38
|
+
Open the report settings page and click **Delete report**. You cannot reverse a delete.
|
|
39
|
+
|
|
40
|
+
## Related
|
|
41
|
+
|
|
42
|
+
- [Analytics queries](/how-to/analytics) — query the same data with SQL.
|
|
43
|
+
- [About PickedQL](/explanation/how-pickedql-works) — what the query layer expands.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Steps
|
|
9
|
+
|
|
10
|
+
A step is one screen or card that a visitor sees during an experience. Each step
|
|
11
|
+
holds one or more fields. A field collects data or shows content.
|
|
12
|
+
|
|
13
|
+
<Screenshot
|
|
14
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/steps"
|
|
15
|
+
alt="The steps list for a workspace on the Picked dashboard"
|
|
16
|
+
/>
|
|
17
|
+
|
|
18
|
+
## Set up a step
|
|
19
|
+
|
|
20
|
+
**Name**: The name that the dashboard shows. Your visitors do not see it.
|
|
21
|
+
|
|
22
|
+
**Key**: The identifier that your application uses for this step. Your
|
|
23
|
+
visitors do not see it.
|
|
24
|
+
|
|
25
|
+
**Layout Name**: The name of the component layout that renders this step. Examples
|
|
26
|
+
are `card`, `modal`, and `fullscreen`.
|
|
27
|
+
|
|
28
|
+
A step can also carry a **Step Layout**. A step layout is a reusable CMS schema, and
|
|
29
|
+
it gives the step a Content Entry. See [Page and Step Layouts](/reference/dashboard/content/layouts).
|
|
30
|
+
|
|
31
|
+
## Related
|
|
32
|
+
|
|
33
|
+
- [How to add a step, a field, an action, or a condition](/how-to/add-a-step-field-or-action)
|
|
34
|
+
|
|
35
|
+
- [How to build a flow](/how-to/build-a-flow) — add a step and assign fields to it.
|
|
36
|
+
- [How to reuse a step, a field, or an action](/how-to/reuse-a-step-field-or-action)
|
|
37
|
+
- [Page and step layouts](/reference/dashboard/content/layouts) — the step layout schema.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
@@ -15,28 +16,6 @@ to more than one organization.
|
|
|
15
16
|
To move between organizations, use the organization control at the top of the
|
|
16
17
|
sidebar.
|
|
17
18
|
|
|
18
|
-
## Invite members
|
|
19
|
-
|
|
20
|
-
1. Open your organization.
|
|
21
|
-
2. Click **Members**.
|
|
22
|
-
3. Click **Invite**.
|
|
23
|
-
4. Enter an email address.
|
|
24
|
-
5. Choose a role.
|
|
25
|
-
6. Click **Send Invite**.
|
|
26
|
-
|
|
27
|
-
The person that you invite receives an email with a link to join your organization.
|
|
28
|
-
A person without a Picked account must create one first.
|
|
29
|
-
|
|
30
|
-
## Remove members
|
|
31
|
-
|
|
32
|
-
1. Open your organization.
|
|
33
|
-
2. Click **Members**.
|
|
34
|
-
3. Find the member that you want to remove.
|
|
35
|
-
4. Click **Remove** next to the name of the member.
|
|
36
|
-
5. Confirm.
|
|
37
|
-
|
|
38
|
-
The member loses access to every project in the organization immediately.
|
|
39
|
-
|
|
40
19
|
## Roles and permissions
|
|
41
20
|
|
|
42
21
|
Each member holds a role, and the role controls what the member can reach. A role
|
|
@@ -44,3 +23,7 @@ decides whether a member can create a project, edit an experience, control other
|
|
|
44
23
|
members, or read a report.
|
|
45
24
|
|
|
46
25
|
Give each member the smallest role that the work of that member needs.
|
|
26
|
+
|
|
27
|
+
## Related
|
|
28
|
+
|
|
29
|
+
- [How to invite and remove members](/how-to/invite-and-remove-members)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
import { Screenshot } from '
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
6
7
|
|
|
7
8
|
# Workspace versioning
|
|
8
9
|
|
|
@@ -22,13 +23,8 @@ The **Publish history** page lists each published version of every workspace in
|
|
|
22
23
|
project, the newest first. The version that Picked serves now carries a **Live**
|
|
23
24
|
badge.
|
|
24
25
|
|
|
25
|
-
##
|
|
26
|
+
## Related
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
4. Read the diff preview. It shows what changes between the current live version and
|
|
31
|
-
the version that you chose.
|
|
32
|
-
5. Click **Restore this version** to confirm.
|
|
33
|
-
|
|
34
|
-
The restored version is live immediately. Your current draft does not change.
|
|
28
|
+
- [About workspaces and versions](/explanation/workspaces-and-versions) — why a roll-back
|
|
29
|
+
changes no data.
|
|
30
|
+
- [How to roll back a published version](/how-to/roll-back-a-published-version)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Workspaces
|
|
9
|
+
|
|
10
|
+
A workspace is one version of the configuration of your project. Use a workspace to hold
|
|
11
|
+
a change, to see a preview of it, and to publish it when it is ready.
|
|
12
|
+
|
|
13
|
+
<Screenshot
|
|
14
|
+
route="/{orgSlug}/{projectId}/workspaces"
|
|
15
|
+
alt="The workspaces list inside a project on the Picked dashboard"
|
|
16
|
+
hide={['[data-testid="workspace-row-relative-time"]']}
|
|
17
|
+
/>
|
|
18
|
+
|
|
19
|
+
## How workspaces work
|
|
20
|
+
|
|
21
|
+
Each project has a workspace that holds your experiences, feature flags, steps, fields,
|
|
22
|
+
actions, and conditions. When you make a change in the dashboard, that change stays in
|
|
23
|
+
the workspace until you publish it. A change to a flow, to a feature flag, or to a step
|
|
24
|
+
all behave the same way.
|
|
25
|
+
|
|
26
|
+
A workspace is in one of three states:
|
|
27
|
+
|
|
28
|
+
- **Live** — the workspace that the SDK serves to your visitors. Each project has
|
|
29
|
+
exactly one live workspace.
|
|
30
|
+
- **Draft** — a workspace that no visitor sees. You can edit a draft, see a preview
|
|
31
|
+
of it, and publish it to make it live.
|
|
32
|
+
- **Archived** — a draft that you put to one side. An archived workspace is still
|
|
33
|
+
editable, but it does not appear in the default workspaces list.
|
|
34
|
+
|
|
35
|
+
## Change previews
|
|
36
|
+
|
|
37
|
+
The publish modal shows a side-by-side change preview. It compares the current
|
|
38
|
+
workspace against the last published snapshot. Use it to see exactly what your
|
|
39
|
+
visitors get after you publish.
|
|
40
|
+
|
|
41
|
+
<Screenshot
|
|
42
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/experiences?action=publish"
|
|
43
|
+
alt="The publish modal with a change preview of added experiences, steps, and conditions"
|
|
44
|
+
selector='[role="dialog"]'
|
|
45
|
+
wait='[role="dialog"]'
|
|
46
|
+
hide={['[data-testid="publish-diff-replaces-version"]']}
|
|
47
|
+
renderWidth={720}
|
|
48
|
+
renderHeight={579}
|
|
49
|
+
/>
|
|
50
|
+
|
|
51
|
+
The preview puts the changes into groups: experiences, feature flags, steps, fields,
|
|
52
|
+
actions, and conditions. Each row shows whether the record was **added**, **removed**,
|
|
53
|
+
or **modified**. For a modified record, expand the row to see which properties changed.
|
|
54
|
+
|
|
55
|
+
Some changes break other records. An example is a field that you remove while other
|
|
56
|
+
steps still point at it. The change preview shows a banner above the diff for these
|
|
57
|
+
entries, so that you can look at them again before you publish.
|
|
58
|
+
|
|
59
|
+
The first publish of a workspace has no earlier snapshot to compare against. The
|
|
60
|
+
publish modal shows the contents of the workspace as the first publish, with no diff.
|
|
61
|
+
|
|
62
|
+
## Unpublished changes
|
|
63
|
+
|
|
64
|
+
The workspace records whether anything changed since the last publish. The toolbar then
|
|
65
|
+
shows a warning badge. It counts a change to any of these:
|
|
66
|
+
|
|
67
|
+
- An experience or a feature flag.
|
|
68
|
+
- A step, a field, an action, or a condition.
|
|
69
|
+
|
|
70
|
+
## Related
|
|
71
|
+
|
|
72
|
+
- [About workspaces and versions](/explanation/workspaces-and-versions) — why a draft and
|
|
73
|
+
a version are separate.
|
|
74
|
+
- [How to see a preview of a workspace](/how-to/preview-a-workspace)
|
|
75
|
+
- [How to publish a workspace](/how-to/publish-a-workspace)
|
|
76
|
+
- [How to archive or delete a workspace](/how-to/archive-or-delete-a-workspace)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: reference
|
|
2
3
|
layout: docs
|
|
3
4
|
---
|
|
4
5
|
|
|
@@ -44,7 +45,7 @@ GET /api/v1/projects/:projectId/experiences/:id/content
|
|
|
44
45
|
|
|
45
46
|
## An HTML asset comes back in the response
|
|
46
47
|
|
|
47
|
-
A layout can have an [HTML asset](/content/asset-library) field. The value of that
|
|
48
|
+
A layout can have an [HTML asset](/reference/dashboard/content/asset-library) field. The value of that
|
|
48
49
|
field arrives inside the response. The endpoint changes the reference to
|
|
49
50
|
`{ id, content }`. There, `content` holds the HTML that you uploaded, as a string. It
|
|
50
51
|
is `null` when the endpoint cannot resolve it:
|
|
@@ -85,6 +86,12 @@ curl https://api.picked.app/api/v1/projects/proj_123/experiences/exp_123/content
|
|
|
85
86
|
}
|
|
86
87
|
```
|
|
87
88
|
|
|
88
|
-
See [Project Config](/delivery-api/project-config) for the endpoint that links a step
|
|
89
|
-
to an entry. See [Asset Library](/content/asset-library) for an HTML asset. See
|
|
90
|
-
[Server Snapshot](/sdk/ssr/serialize) for how the SDK reads this content.
|
|
89
|
+
See [Project Config](/reference/delivery-api/project-config) for the endpoint that links a step
|
|
90
|
+
to an entry. See [Asset Library](/reference/dashboard/content/asset-library) for an HTML asset. See
|
|
91
|
+
[Server Snapshot](/reference/sdk/ssr/serialize) for how the SDK reads this content.
|
|
92
|
+
|
|
93
|
+
## Related
|
|
94
|
+
|
|
95
|
+
- [About the two APIs](/explanation/the-two-apis)
|
|
96
|
+
- [Project config](/reference/delivery-api/project-config)
|
|
97
|
+
- [Preview, cache, and crawlers](/reference/delivery-api/preview-caching-crawling)
|