@picked/client 0.0.1-dev.1785305085063 → 0.0.1-dev.1785908062293
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 -0
- package/dist/api-03c5jvVk.js +38 -0
- package/dist/api-CQxCVIrm.cjs +1 -0
- package/dist/cjs/form/index.js +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/dom-observer/index.js +1 -1
- 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 +124 -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} +53 -28
- 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/how-to/build-a-flow.md +83 -0
- 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/how-to/install-the-gtm-template.md +84 -0
- 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 -59
- package/dist/docs/reference/dashboard/actions.mdx +53 -0
- package/dist/docs/reference/dashboard/api-keys.mdx +37 -0
- package/dist/docs/reference/dashboard/conditions.mdx +42 -0
- package/dist/docs/reference/dashboard/content/asset-library.mdx +63 -0
- package/dist/docs/reference/dashboard/content/content-entries.mdx +44 -0
- package/dist/docs/reference/dashboard/content/layouts.mdx +62 -0
- package/dist/docs/reference/dashboard/content/pages.mdx +35 -0
- package/dist/docs/reference/dashboard/content/sections.mdx +28 -0
- package/dist/docs/reference/dashboard/experiences.mdx +51 -0
- package/dist/docs/reference/dashboard/features.mdx +114 -0
- package/dist/docs/reference/dashboard/fields.mdx +100 -0
- package/dist/docs/reference/dashboard/flow-builder/canvas.mdx +58 -0
- package/dist/docs/reference/dashboard/flow-builder/condition-builder.md +57 -0
- package/dist/docs/reference/dashboard/flow-builder/keyboard-shortcuts.md +72 -0
- package/dist/docs/reference/dashboard/flow-builder/nodes.md +63 -0
- 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/reference/dashboard/team-management.md +29 -0
- package/dist/docs/reference/dashboard/workspace-versioning.mdx +30 -0
- package/dist/docs/reference/dashboard/workspaces.mdx +76 -0
- package/dist/docs/{delivery-api → reference/delivery-api}/experience-content.md +17 -5
- package/dist/docs/reference/delivery-api/index.md +45 -0
- package/dist/docs/reference/delivery-api/preview-caching-crawling.md +79 -0
- package/dist/docs/{delivery-api → reference/delivery-api}/project-config.md +15 -6
- 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 +70 -47
- package/dist/docs/reference/management-api/error-handling.md +233 -0
- package/dist/docs/{api → reference/management-api}/pagination.md +36 -20
- package/dist/docs/reference/pickedql/data-sources.md +174 -0
- package/dist/docs/reference/pickedql/dimensions.md +87 -0
- package/dist/docs/{pickedql → reference/pickedql}/filtering.md +17 -6
- package/dist/docs/reference/pickedql/index.md +18 -0
- package/dist/docs/reference/pickedql/schema.md +172 -0
- package/dist/docs/reference/pickedql/virtual-functions.md +237 -0
- package/dist/docs/reference/sdk/actions.md +30 -0
- package/dist/docs/{sdk → reference/sdk}/conditions.md +15 -5
- package/dist/docs/reference/sdk/content-security-policy.md +21 -0
- package/dist/docs/reference/sdk/experiences.md +51 -0
- package/dist/docs/reference/sdk/features.md +233 -0
- package/dist/docs/reference/sdk/fields.md +209 -0
- package/dist/docs/reference/sdk/index.md +68 -0
- package/dist/docs/{sdk → reference/sdk}/plugins/create-experience.md +25 -34
- package/dist/docs/reference/sdk/plugins/dynamic-experiences.md +74 -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/reference/sdk/ssr/rendering-and-hydration.md +103 -0
- package/dist/docs/reference/sdk/ssr/serialize.md +77 -0
- package/dist/docs/reference/sdk/ssr/slots-and-placements.md +59 -0
- package/dist/docs/reference/sdk/steps.md +87 -0
- package/dist/docs/reference/tools/chrome-extension.md +16 -0
- package/dist/docs/reference/tools/image-optimisation-service.md +104 -0
- package/dist/docs/reference/tools/mcp.md +88 -0
- package/dist/docs/reference/tools/vite-plugin.md +88 -0
- package/dist/docs/tutorials/first-api-call.md +228 -0
- 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/{dom-BwmTHeT7.js → dom-BqcToNL0.js} +1 -3
- package/dist/{dom-CDrHc_j9.cjs → dom-DlLH3FxV.cjs} +1 -1
- package/dist/esm/form/index.js +2 -4
- package/dist/esm/index.js +225 -186
- package/dist/esm/plugins/dom-observer/index.js +1 -1
- package/dist/esm/plugins/dynamic-experiences/index.js +3 -3
- package/dist/esm/preview/index.js +1 -1
- package/dist/esm/server/index.js +33 -31
- package/dist/{experience-instance-DOJShRk5.js → experience-instance-DGk11d8a.js} +3 -3
- package/dist/experience-instance-Dej3P1sE.cjs +1 -0
- package/dist/plugin-CHOVsx7Z.js +287 -0
- package/dist/plugin-DsaGXQHx.cjs +1 -0
- package/dist/{preview-channel-DW9J8t4B.js → preview-channel-CSr96XAo.js} +1 -1
- package/dist/{protocol-DSqOlW2r.js → protocol-C5KkkiZc.js} +1 -1
- package/dist/types/client.d.ts +7 -6
- package/dist/types/data-source/api.d.ts +60 -0
- package/dist/types/data-source/api.d.ts.map +1 -0
- package/dist/types/data-source/provider.d.ts +97 -0
- package/dist/types/data-source/provider.d.ts.map +1 -0
- package/dist/types/entities/action/action.d.ts +5 -4
- package/dist/types/entities/action/action.d.ts.map +1 -1
- package/dist/types/entities/component/component.d.ts +6 -5
- package/dist/types/entities/component/component.d.ts.map +1 -1
- package/dist/types/entities/condition/condition.d.ts +5 -5
- package/dist/types/entities/content/content.d.ts +4 -3
- package/dist/types/entities/experience/experience.d.ts +11 -10
- package/dist/types/entities/experience/experience.d.ts.map +1 -1
- package/dist/types/entities/experience-instance/experience-instance.d.ts +10 -9
- package/dist/types/entities/feature/feature.d.ts +19 -2
- package/dist/types/entities/feature/feature.d.ts.map +1 -1
- package/dist/types/entities/field/field.d.ts +7 -6
- package/dist/types/entities/framework/framework.d.ts +7 -6
- package/dist/types/entities/framework/framework.d.ts.map +1 -1
- package/dist/types/entities/history/history.d.ts +6 -6
- package/dist/types/entities/plugin/plugin.d.ts +3 -2
- package/dist/types/entities/plugin/plugin.d.ts.map +1 -1
- package/dist/types/entities/predicate/predicate.d.ts +4 -3
- package/dist/types/entities/predicate/predicate.d.ts.map +1 -1
- package/dist/types/entities/response/response-validation.d.ts +3 -2
- package/dist/types/entities/response/response.d.ts +12 -11
- package/dist/types/entities/session/session.d.ts +2 -1
- package/dist/types/entities/step/step.d.ts +6 -5
- package/dist/types/exports.d.ts +2 -1
- package/dist/types/exports.d.ts.map +1 -1
- package/dist/types/form/build-responses.d.ts +2 -1
- package/dist/types/form/create-field-evaluator.d.ts +4 -3
- package/dist/types/form/create-field-validation.d.ts +5 -4
- package/dist/types/form/create-form.d.ts +7 -6
- package/dist/types/form/create-submit-pipeline.d.ts +7 -6
- package/dist/types/form/get-step-fields.d.ts +3 -2
- package/dist/types/lifecycle/condition-selection.d.ts +14 -4
- package/dist/types/lifecycle/lifecycle.d.ts +4 -3
- package/dist/types/lifecycle/rules-logic.d.ts +4 -3
- package/dist/types/lifecycle/state-snapshot.d.ts +4 -3
- package/dist/types/picked.d.ts +79 -62
- package/dist/types/picked.d.ts.map +1 -1
- package/dist/types/ping.d.ts +1 -1
- package/dist/types/ping.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/create-experience.d.ts +9 -8
- package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/plugin.d.ts +3 -2
- package/dist/types/plugins/create-experience/plugin.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/serialization.d.ts.map +1 -1
- package/dist/types/plugins/dom-observer/plugin.d.ts +1 -1
- package/dist/types/plugins/dynamic-experiences/hash.d.ts +40 -5
- package/dist/types/plugins/dynamic-experiences/hash.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/index.d.ts +2 -0
- package/dist/types/plugins/dynamic-experiences/index.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/plugin.d.ts +4 -36
- package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/types.d.ts +42 -11
- package/dist/types/plugins/dynamic-experiences/types.d.ts.map +1 -1
- package/dist/types/plugins/experience-browser-storage/plugin.d.ts +1 -1
- package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -1
- package/dist/types/plugins/history-browser-storage/plugin.d.ts +1 -1
- package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
- package/dist/types/plugins/responses-browser-storage/plugin.d.ts +1 -1
- package/dist/types/plugins/responses-browser-storage/plugin.d.ts.map +1 -1
- package/dist/types/plugins/responses-indexeddb/plugin.d.ts +1 -1
- package/dist/types/plugins/single-page-app/plugin.d.ts +1 -1
- package/dist/types/plugins/single-page-app/plugin.d.ts.map +1 -1
- package/dist/types/plugins/web-components/plugin.d.ts +2 -1
- package/dist/types/plugins/window-object/plugin.d.ts +2 -2
- package/dist/types/preview-channel.d.ts +5 -1
- package/dist/types/preview-receiver/index.d.ts +18 -1
- package/dist/types/preview-receiver/protocol.d.ts +10 -1
- package/dist/types/server/index.d.ts +3 -3
- package/dist/types/server/serialize.d.ts +8 -2
- package/dist/types/server/serialize.d.ts.map +1 -1
- package/dist/types/utils/dom.d.ts +2 -1
- package/dist/types/utils/events.d.ts +6 -6
- package/dist/types/utils/events.d.ts.map +1 -1
- package/dist/types/utils/global-obj.d.ts +1 -1
- package/dist/types/utils/global-obj.d.ts.map +1 -1
- package/dist/types/utils/id.d.ts.map +1 -1
- package/dist/types/utils/logger.d.ts +2 -1
- package/dist/types/utils/logger.d.ts.map +1 -1
- package/dist/types/utils/node-tree/get-next-node-from-action.d.ts +2 -1
- package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts +2 -1
- package/dist/types/utils/node-tree/get-next-node.d.ts +1 -1
- package/dist/types/utils/node-tree/get-next-node.d.ts.map +1 -1
- package/dist/types/utils/node-tree/get-origin-node.d.ts +1 -1
- package/dist/types/utils/node-tree/get-origin-node.d.ts.map +1 -1
- package/dist/types/utils/node-tree/min-max-steps-to-leaf.d.ts +1 -1
- package/dist/types/utils/node-tree/min-max-steps-to-leaf.d.ts.map +1 -1
- package/dist/types/utils/node-tree/min-max-steps-to-origin.d.ts +1 -1
- package/dist/types/utils/node-tree/min-max-steps-to-origin.d.ts.map +1 -1
- package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts +1 -1
- package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts.map +1 -1
- package/dist/types/utils/nodes.d.ts +1 -1
- package/dist/types/utils/picked-config.d.ts +2 -1
- package/dist/types/utils/rehydrate-scripts.d.ts +6 -0
- package/dist/types/utils/rehydrate-scripts.d.ts.map +1 -1
- package/dist/types/utils/rules-logic.d.ts +6 -2
- package/dist/types/utils/storage.d.ts +1 -1
- package/dist/types/utils/storage.d.ts.map +1 -1
- package/package.json +22 -23
- package/dist/api-CPL40b7A.js +0 -40
- package/dist/api-Dz5rgRgQ.cjs +0 -1
- package/dist/docs/actions.mdx +0 -78
- package/dist/docs/api/authentication.md +0 -376
- package/dist/docs/api/error-handling.md +0 -211
- package/dist/docs/api/index.md +0 -197
- package/dist/docs/api-keys.mdx +0 -40
- package/dist/docs/chrome-extension.md +0 -51
- package/dist/docs/conditions.mdx +0 -59
- package/dist/docs/content/asset-library.mdx +0 -93
- package/dist/docs/content/content-entries.mdx +0 -30
- package/dist/docs/content/layouts.mdx +0 -70
- package/dist/docs/content/pages.mdx +0 -67
- package/dist/docs/content/sections.mdx +0 -33
- package/dist/docs/delivery-api/index.md +0 -46
- package/dist/docs/delivery-api/preview-caching-crawling.md +0 -59
- package/dist/docs/experiences.mdx +0 -42
- package/dist/docs/features.mdx +0 -58
- package/dist/docs/fields.mdx +0 -79
- package/dist/docs/flow-builder/building-flows.md +0 -61
- package/dist/docs/flow-builder/condition-builder.md +0 -54
- package/dist/docs/flow-builder/keyboard-shortcuts.md +0 -66
- package/dist/docs/flow-builder/nodes.md +0 -43
- package/dist/docs/flow-builder/overview.mdx +0 -50
- package/dist/docs/gtm-template.md +0 -69
- package/dist/docs/guides/build-a-personalized-page.mdx +0 -143
- package/dist/docs/image-optimisation-service.md +0 -80
- package/dist/docs/mcp.md +0 -120
- package/dist/docs/pickedql/data-sources.md +0 -145
- package/dist/docs/pickedql/dimensions.md +0 -65
- package/dist/docs/pickedql/index.md +0 -36
- package/dist/docs/pickedql/schema.md +0 -156
- package/dist/docs/pickedql/virtual-functions.md +0 -204
- package/dist/docs/projects.mdx +0 -37
- package/dist/docs/reports.mdx +0 -18
- package/dist/docs/sdk/actions.md +0 -66
- package/dist/docs/sdk/content-security-policy.md +0 -32
- package/dist/docs/sdk/experiences.md +0 -46
- package/dist/docs/sdk/features.md +0 -212
- package/dist/docs/sdk/fields.md +0 -263
- package/dist/docs/sdk/index.md +0 -83
- package/dist/docs/sdk/plugins/dynamic-experiences.md +0 -58
- package/dist/docs/sdk/plugins/index.md +0 -9
- package/dist/docs/sdk/predicates.md +0 -112
- package/dist/docs/sdk/ssr/index.md +0 -62
- package/dist/docs/sdk/ssr/rendering-and-hydration.md +0 -141
- package/dist/docs/sdk/ssr/serialize.md +0 -86
- package/dist/docs/sdk/ssr/slots-and-placements.md +0 -35
- package/dist/docs/sdk/steps.md +0 -434
- package/dist/docs/steps.mdx +0 -44
- package/dist/docs/team-management.md +0 -40
- package/dist/docs/vite-plugin.md +0 -82
- package/dist/docs/workspace-versioning.mdx +0 -28
- package/dist/docs/workspaces.mdx +0 -102
- package/dist/experience-instance-DurC3pE-.cjs +0 -1
- package/dist/plugin-CFXwbXeM.js +0 -247
- package/dist/plugin-m4qekgtA.cjs +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Pages
|
|
9
|
+
|
|
10
|
+
A Page is a standalone, server-rendered experience backed by CMS content, built for SEO-critical landing pages.
|
|
11
|
+
|
|
12
|
+
<Screenshot
|
|
13
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/experiences"
|
|
14
|
+
alt="The experiences list, where Pages and Flows are created on the Picked dashboard"
|
|
15
|
+
/>
|
|
16
|
+
|
|
17
|
+
## Edit page content
|
|
18
|
+
|
|
19
|
+
The Page editor has two tabs. The **Properties** tab holds the content of the page.
|
|
20
|
+
The **Settings** tab holds its name, its condition, and its layout. Fill in the
|
|
21
|
+
fields on the **Properties** tab. The inspector on the right edits the field that you
|
|
22
|
+
choose, and the preview panel shows the page while it fills in.
|
|
23
|
+
|
|
24
|
+
## Change or remove the layout
|
|
25
|
+
|
|
26
|
+
Use the change-layout control on the **Settings** tab to move the page to another
|
|
27
|
+
Page Layout. When you unlink a layout, Picked separates the Content Entry from the
|
|
28
|
+
page. It deletes no entry, but the page then has no content to render until you
|
|
29
|
+
attach a layout again.
|
|
30
|
+
|
|
31
|
+
## Related
|
|
32
|
+
|
|
33
|
+
- [About pages and flows](/explanation/pages-and-flows) — when to choose a Page.
|
|
34
|
+
- [How to fill and publish a page](/how-to/fill-and-publish-a-page)
|
|
35
|
+
- [How to server-render a page](/how-to/server-render-a-page)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Sections
|
|
9
|
+
|
|
10
|
+
Sections are reusable schema fragments you embed inside layouts, so common structures such as a hero or a feature list are defined once.
|
|
11
|
+
|
|
12
|
+
<Screenshot
|
|
13
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/blocks"
|
|
14
|
+
alt="The sections list in the schema builder on the Picked dashboard"
|
|
15
|
+
/>
|
|
16
|
+
|
|
17
|
+
## What a section is
|
|
18
|
+
|
|
19
|
+
A Section is a reusable schema fragment with its own **Key**. A
|
|
20
|
+
[layout](/reference/dashboard/content/layouts) gives its shape to a whole Page or Step. A Section is a
|
|
21
|
+
part that you put into one or more layouts. Define the shape one time, then reuse it
|
|
22
|
+
everywhere.
|
|
23
|
+
|
|
24
|
+
## Related
|
|
25
|
+
|
|
26
|
+
- [About the content model](/explanation/the-content-model) — why sections exist.
|
|
27
|
+
- [How to reuse a section](/how-to/reuse-a-section)
|
|
28
|
+
- [Page and step layouts](/reference/dashboard/content/layouts)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Experiences
|
|
9
|
+
|
|
10
|
+
An experience is personalized content that Picked serves to the visitors on your
|
|
11
|
+
site. Each experience points at a component that you register in your application.
|
|
12
|
+
|
|
13
|
+
An experience is either a **Flow** or a **Page**. A **Flow** is an interactive
|
|
14
|
+
experience of more than one step, and the browser renders it. This page covers the
|
|
15
|
+
flow. A **Page** is a standalone experience that the server renders from CMS content,
|
|
16
|
+
for a landing page where the search rank matters. See [Pages](/reference/dashboard/content/pages) for
|
|
17
|
+
that kind.
|
|
18
|
+
|
|
19
|
+
<Screenshot
|
|
20
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/experiences"
|
|
21
|
+
alt="The experiences list for a workspace on the Picked dashboard"
|
|
22
|
+
/>
|
|
23
|
+
|
|
24
|
+
## Experience settings
|
|
25
|
+
|
|
26
|
+
Choose no node on the canvas, or click the canvas background, to open the experience
|
|
27
|
+
inspector in the right panel.
|
|
28
|
+
|
|
29
|
+
**Name**: The name that the dashboard shows. Your visitors do not see it.
|
|
30
|
+
|
|
31
|
+
**Component Name**: The identifier that points this experience at a component in your
|
|
32
|
+
application.
|
|
33
|
+
|
|
34
|
+
**Condition**: An optional condition. When you set it, the experience starts only for
|
|
35
|
+
a visitor who matches the condition. See
|
|
36
|
+
[Condition Builder](/reference/dashboard/flow-builder/condition-builder) for how to write one. Keep it
|
|
37
|
+
blank to start the experience for every visitor.
|
|
38
|
+
|
|
39
|
+
**Initialize Open**: An optional condition that controls whether the experience opens
|
|
40
|
+
by itself when the page loads. When it is blank, the experience loads but stays
|
|
41
|
+
closed until something opens it.
|
|
42
|
+
|
|
43
|
+
## Experience list
|
|
44
|
+
|
|
45
|
+
The experiences list shows every experience in the current project. Click an
|
|
46
|
+
experience to open it in the flow builder.
|
|
47
|
+
|
|
48
|
+
## Related
|
|
49
|
+
|
|
50
|
+
- [About pages and flows](/explanation/pages-and-flows) — Page or Flow.
|
|
51
|
+
- [How to create an experience](/how-to/create-an-experience)
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Feature flags
|
|
9
|
+
|
|
10
|
+
A feature flag lets you run an A/B test and roll a change out in stages. It controls
|
|
11
|
+
which visitors see a change to your site, and you deploy no code.
|
|
12
|
+
|
|
13
|
+
<Screenshot
|
|
14
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/features"
|
|
15
|
+
alt="The feature flags list for a workspace on the Picked dashboard"
|
|
16
|
+
/>
|
|
17
|
+
|
|
18
|
+
## Keys
|
|
19
|
+
|
|
20
|
+
Each feature flag has a unique key. Your application uses this key to check whether
|
|
21
|
+
Picked allocates a visitor to the feature flag. You set the key when you create the
|
|
22
|
+
feature flag, and you cannot change it later.
|
|
23
|
+
|
|
24
|
+
## Set the allocation
|
|
25
|
+
|
|
26
|
+
Set the allocation from the detail page of the feature flag:
|
|
27
|
+
|
|
28
|
+
| Control | What it does |
|
|
29
|
+
| --- | --- |
|
|
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). |
|
|
31
|
+
| **Weight** | The percentage of visitors that Picked allocates to the feature flag, from 0 to 100. |
|
|
32
|
+
| **Description** | An internal note about what the feature flag tests. |
|
|
33
|
+
|
|
34
|
+
A feature flag has one weight. For each visitor it gives one of two outcomes:
|
|
35
|
+
allocated, or not allocated. A weight of 30 allocates 30% of your visitors. The other
|
|
36
|
+
70% stay unallocated. A weight of 0 allocates nobody. A weight of 100 allocates
|
|
37
|
+
everybody.
|
|
38
|
+
|
|
39
|
+
## How Picked allocates a visitor
|
|
40
|
+
|
|
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).
|
|
45
|
+
|
|
46
|
+
## Disable a feature flag
|
|
47
|
+
|
|
48
|
+
A disabled feature flag allocates nobody, and it records nothing. The difference
|
|
49
|
+
from a weight of 0 matters for your reports. The visitor is **not in the test at
|
|
50
|
+
all**, and the visitor is not in the control group.
|
|
51
|
+
|
|
52
|
+
The SDK does not evaluate a disabled feature flag. It stores no decision in the
|
|
53
|
+
browser of the visitor, and it reports no decision to your analytics. Such a feature
|
|
54
|
+
flag is absent from the feature list on every analytics event.
|
|
55
|
+
|
|
56
|
+
An experience whose condition points at a disabled feature flag behaves as though
|
|
57
|
+
the visitor is not in the test. The condition reads as not allocated, and Picked
|
|
58
|
+
records no assignment.
|
|
59
|
+
|
|
60
|
+
This state is temporary, and it discards no decision that Picked made already. A
|
|
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.
|
|
64
|
+
|
|
65
|
+
:::note
|
|
66
|
+
Expect a step change in your reports when you disable a feature flag: fewer feature
|
|
67
|
+
flags for each visitor, and fewer decision events. That is the feature flag that drops
|
|
68
|
+
out, and you lose no data.
|
|
69
|
+
:::
|
|
70
|
+
|
|
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.
|
|
73
|
+
|
|
74
|
+
## Feature flag versions
|
|
75
|
+
|
|
76
|
+
Each feature flag has a version number, and it starts at 1. The SDK caches an
|
|
77
|
+
allocation decision in the browser of the visitor under a key, and the version is part
|
|
78
|
+
of that key. The version does nothing else, and it is not an input to the allocation
|
|
79
|
+
value. When you increment the version, the SDK discards those cached decisions. It
|
|
80
|
+
then evaluates every visitor again on the next page load.
|
|
81
|
+
|
|
82
|
+
### What happens when you increment the version
|
|
83
|
+
|
|
84
|
+
- **The SDK invalidates the cached decisions.** The cache key holds the version, so the
|
|
85
|
+
old entry no longer matches and the feature flag counts as undecided.
|
|
86
|
+
- **Picked evaluates each visitor against the current weight.** The allocation is
|
|
87
|
+
deterministic and the version is not one of its inputs, so the same visitor against
|
|
88
|
+
an unchanged weight gives the same result.
|
|
89
|
+
- **You cannot reverse this.** There is no way to decrement a version.
|
|
90
|
+
|
|
91
|
+
:::note
|
|
92
|
+
The new version does not move your visitors between groups. It clears the cached
|
|
93
|
+
decisions and runs the allocation again. With an unchanged weight, everybody lands
|
|
94
|
+
where they were before. Change the weight to move your visitors.
|
|
95
|
+
:::
|
|
96
|
+
|
|
97
|
+
### When to increment
|
|
98
|
+
|
|
99
|
+
Increment the version after you change the weight. Do this when you want Picked to
|
|
100
|
+
evaluate an allocated visitor again against the new weight, and not to use the cached
|
|
101
|
+
decision.
|
|
102
|
+
|
|
103
|
+
### When not to increment
|
|
104
|
+
|
|
105
|
+
To apply a weight change only to a visitor that Picked does not allocate yet, change
|
|
106
|
+
the weight and leave the version as it is. An allocated visitor keeps the current
|
|
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)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Fields
|
|
9
|
+
|
|
10
|
+
A field is a data input that a visitor sees inside a step. A field collects
|
|
11
|
+
information such as a name, an email address, a preference, or a choice.
|
|
12
|
+
|
|
13
|
+
This page covers the experience field, which collects visitor input. An experience
|
|
14
|
+
field is not the same as a content field. A content field is part of the schema of a
|
|
15
|
+
CMS layout. See [Page and Step Layouts](/reference/dashboard/content/layouts) for those.
|
|
16
|
+
|
|
17
|
+
<Screenshot
|
|
18
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/fields"
|
|
19
|
+
alt="The fields list for a workspace on the Picked dashboard"
|
|
20
|
+
/>
|
|
21
|
+
|
|
22
|
+
## Field types
|
|
23
|
+
|
|
24
|
+
A field has one of many types. These are the common ones:
|
|
25
|
+
|
|
26
|
+
`TEXT`: A string input. Use it for a name, an email address, or free text.
|
|
27
|
+
|
|
28
|
+
`NUMBER`: A numeric input. Use it for a quantity, a rating, or an age.
|
|
29
|
+
|
|
30
|
+
`BOOLEAN`: A true or false toggle. Use it for a checkbox or for consent.
|
|
31
|
+
|
|
32
|
+
`OBJECT`: A structured data input. Use it for data that holds other data.
|
|
33
|
+
|
|
34
|
+
## Options
|
|
35
|
+
|
|
36
|
+
**Name**: The name that the dashboard shows. Your visitors do not see it.
|
|
37
|
+
|
|
38
|
+
**Key**: The identifier for your application. You set it once and you cannot change
|
|
39
|
+
it. Your visitors do not see it.
|
|
40
|
+
|
|
41
|
+
**Label**: The label that a visitor sees next to the field.
|
|
42
|
+
|
|
43
|
+
**Placeholder**: The hint text that the input shows while it is empty.
|
|
44
|
+
|
|
45
|
+
**Description**: A longer description of what the field is for. The dashboard shows
|
|
46
|
+
it. Your visitors do not see it.
|
|
47
|
+
|
|
48
|
+
**Help Text**: Text below the field that helps your visitors.
|
|
49
|
+
|
|
50
|
+
**Default Value**: The value that the field holds when it loads.
|
|
51
|
+
|
|
52
|
+
## Validation
|
|
53
|
+
|
|
54
|
+
**Required**: When this is on, a visitor must fill in the field before the flow can
|
|
55
|
+
continue.
|
|
56
|
+
|
|
57
|
+
**Validation rules**: Conditions for a constraint such as a smallest value, a largest
|
|
58
|
+
value, or a pattern. See [Condition Builder](/reference/dashboard/flow-builder/condition-builder) for how
|
|
59
|
+
to build a validation rule.
|
|
60
|
+
|
|
61
|
+
## More than one value
|
|
62
|
+
|
|
63
|
+
Turn on **Multiple** to let a visitor send more than one value for the field. This is
|
|
64
|
+
useful for an input that takes several choices, or for a field of tags.
|
|
65
|
+
|
|
66
|
+
## Choices
|
|
67
|
+
|
|
68
|
+
For a field with a fixed set of choices, such as a dropdown or a set of radio
|
|
69
|
+
buttons, add options. Each option has a value, and the response carries that value.
|
|
70
|
+
|
|
71
|
+
Each option can also carry a condition. When you set one, the option appears only to
|
|
72
|
+
a visitor who matches the condition. See
|
|
73
|
+
[Condition Builder](/reference/dashboard/flow-builder/condition-builder) for more detail.
|
|
74
|
+
|
|
75
|
+
## Privacy
|
|
76
|
+
|
|
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.
|
|
92
|
+
|
|
93
|
+
## Related
|
|
94
|
+
|
|
95
|
+
- [How to add a step, a field, an action, or a condition](/how-to/add-a-step-field-or-action)
|
|
96
|
+
|
|
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.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Flow builder
|
|
9
|
+
|
|
10
|
+
The flow builder is a visual editor for an experience flow. You drag a block onto a
|
|
11
|
+
canvas, connect the blocks with arrows, and set the options of each node in an
|
|
12
|
+
inspector panel.
|
|
13
|
+
|
|
14
|
+
<Screenshot
|
|
15
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/experiences/{experienceId}"
|
|
16
|
+
alt="The flow builder with the library, canvas, and inspector panels"
|
|
17
|
+
/>
|
|
18
|
+
|
|
19
|
+
## Layout
|
|
20
|
+
|
|
21
|
+
The flow builder has three panels, from left to right.
|
|
22
|
+
|
|
23
|
+
**Library**, on the left: it lists every step, action, condition, and field in
|
|
24
|
+
your project. Drag an item from here onto the canvas.
|
|
25
|
+
|
|
26
|
+
**Canvas**, in the middle: the area where you build your flow. A node stands for a
|
|
27
|
+
block. An arrow stands for a connection between two blocks.
|
|
28
|
+
|
|
29
|
+
**Inspector**, on the right: it shows the options of the node that you choose. When
|
|
30
|
+
you choose no node, it shows the settings of the experience.
|
|
31
|
+
|
|
32
|
+
## Panel controls
|
|
33
|
+
|
|
34
|
+
Drag a divider between two panels to change their size. Press `Cmd/Ctrl+\` to turn
|
|
35
|
+
both side panels on and off. Press `Cmd/Ctrl+Shift+\` to turn the inspector on and
|
|
36
|
+
off.
|
|
37
|
+
|
|
38
|
+
## Move around the canvas
|
|
39
|
+
|
|
40
|
+
**Zoom**: scroll to make the view larger or smaller.
|
|
41
|
+
|
|
42
|
+
**Pan**: choose the hand tool with `H`, then drag. You can also hold `Space` and
|
|
43
|
+
drag. A drag with the middle mouse button also pans.
|
|
44
|
+
|
|
45
|
+
**Choose tool**: press `V` to go back to the default tool.
|
|
46
|
+
Click to choose a node. Drag on empty space to choose every node inside a rectangle.
|
|
47
|
+
|
|
48
|
+
## Auto-layout
|
|
49
|
+
|
|
50
|
+
Click the auto-layout button in the toolbar. The flow builder then arranges every
|
|
51
|
+
node into a clean hierarchy. This is useful after you add many nodes, and when the
|
|
52
|
+
canvas becomes messy.
|
|
53
|
+
|
|
54
|
+
## Related
|
|
55
|
+
|
|
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)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Condition builder
|
|
7
|
+
|
|
8
|
+
The condition builder is a visual rule editor, and the dashboard uses it in several
|
|
9
|
+
places. With it you define a rule and you write no code.
|
|
10
|
+
|
|
11
|
+
## Where it appears
|
|
12
|
+
|
|
13
|
+
The dashboard uses the condition builder here:
|
|
14
|
+
|
|
15
|
+
- **Condition nodes** — they set which branch the flow takes in the
|
|
16
|
+
[flow builder](/reference/dashboard/flow-builder/canvas).
|
|
17
|
+
- **Experience conditions** — they control when an experience starts for a visitor.
|
|
18
|
+
- **Initialize open conditions** — they control when an experience opens by itself as
|
|
19
|
+
the page loads.
|
|
20
|
+
- **Field option conditions** — they show or hide one option, and the state of the
|
|
21
|
+
visitor decides which.
|
|
22
|
+
|
|
23
|
+
## Rule structure
|
|
24
|
+
|
|
25
|
+
The builder holds your rules in groups. Each group uses **AND** or **OR**. With
|
|
26
|
+
**AND**, every rule must match. With **OR**, one rule must match.
|
|
27
|
+
|
|
28
|
+
A single rule has three parts:
|
|
29
|
+
|
|
30
|
+
1. **Field** — the data source to evaluate.
|
|
31
|
+
2. **Operator** — how to compare. Examples are equals, not equals, greater than, and
|
|
32
|
+
contains.
|
|
33
|
+
3. **Value** — the value to compare against.
|
|
34
|
+
|
|
35
|
+
You can put a group inside another group to build a larger rule. An example is an AND
|
|
36
|
+
group that holds two OR groups.
|
|
37
|
+
|
|
38
|
+
## Data sources
|
|
39
|
+
|
|
40
|
+
A rule can point at these data sources:
|
|
41
|
+
|
|
42
|
+
**Responses** — the values that your visitors send through the form fields of the
|
|
43
|
+
current experience. Each field that you create in your project appears here under its
|
|
44
|
+
name.
|
|
45
|
+
|
|
46
|
+
**Actions** — the actions that ran during the flow.
|
|
47
|
+
|
|
48
|
+
**Feature flags** — the state of each feature flag in your project. Use it to take a
|
|
49
|
+
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
|
|
52
|
+
pathname, the search parameters, the hostname, and the hash.
|
|
53
|
+
|
|
54
|
+
## Related
|
|
55
|
+
|
|
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)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Keyboard shortcuts
|
|
7
|
+
|
|
8
|
+
These shortcuts work when the canvas of the flow builder holds the keyboard input.
|
|
9
|
+
|
|
10
|
+
## Canvas tools
|
|
11
|
+
|
|
12
|
+
| Shortcut (Mac) | Shortcut (PC) | Action |
|
|
13
|
+
| --- | --- | --- |
|
|
14
|
+
| `V` | `V` | The choose tool |
|
|
15
|
+
| `H` | `H` | The hand tool, which pans the view |
|
|
16
|
+
| `Space`, held | `Space`, held | The hand tool, while you hold the key |
|
|
17
|
+
|
|
18
|
+
## Layout
|
|
19
|
+
|
|
20
|
+
| Shortcut (Mac) | Shortcut (PC) | Action |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| `Shift+L` | `Shift+L` | Auto-layout |
|
|
23
|
+
|
|
24
|
+
## Choice
|
|
25
|
+
|
|
26
|
+
| Shortcut (Mac) | Shortcut (PC) | Action |
|
|
27
|
+
| --- | --- | --- |
|
|
28
|
+
| `Cmd+A` | `Ctrl+A` | Choose every node |
|
|
29
|
+
| `Escape` | `Escape` | Choose no node |
|
|
30
|
+
|
|
31
|
+
## Edits
|
|
32
|
+
|
|
33
|
+
| Shortcut (Mac) | Shortcut (PC) | Action |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `Cmd+D` | `Ctrl+D` | Make a copy of each chosen node |
|
|
36
|
+
| `Delete` or `Backspace` | `Delete` or `Backspace` | Delete each chosen node |
|
|
37
|
+
| `Cmd+Z` | `Ctrl+Z` | Undo |
|
|
38
|
+
| `Cmd+Shift+Z` | `Ctrl+Shift+Z` | Redo |
|
|
39
|
+
|
|
40
|
+
## Movement
|
|
41
|
+
|
|
42
|
+
| Shortcut (Mac) | Shortcut (PC) | Action |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| Arrow keys | Arrow keys | Move each chosen node a small distance |
|
|
45
|
+
| `Shift` and an arrow key | `Shift` and an arrow key | Move each chosen node further |
|
|
46
|
+
|
|
47
|
+
## Zoom
|
|
48
|
+
|
|
49
|
+
| Shortcut (Mac) | Shortcut (PC) | Action |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
| Scroll | Scroll | Zoom in or out |
|
|
52
|
+
| Pinch | Pinch | Zoom in or out, on a trackpad |
|
|
53
|
+
| `Cmd+=` | `Ctrl+=` | Zoom in |
|
|
54
|
+
| `Cmd+-` | `Ctrl+-` | Zoom out |
|
|
55
|
+
| `Shift+1` | `Shift+1` | Fit the flow to the view |
|
|
56
|
+
| `Shift+0` | `Shift+0` | Zoom to 100% |
|
|
57
|
+
|
|
58
|
+
## Panels
|
|
59
|
+
|
|
60
|
+
| Shortcut (Mac) | Shortcut (PC) | Action |
|
|
61
|
+
| --- | --- | --- |
|
|
62
|
+
| `Cmd+\` | `Ctrl+\` | Turn both side panels on or off |
|
|
63
|
+
| `?` | `?` | Turn this shortcut list on or off |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
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.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Nodes
|
|
7
|
+
|
|
8
|
+
A node is one part of a flow. Each node stands for a block in your experience. There
|
|
9
|
+
are four node types.
|
|
10
|
+
|
|
11
|
+
## Origin
|
|
12
|
+
|
|
13
|
+
Every flow starts with an origin node. It is a gray circle on the left side of the
|
|
14
|
+
canvas, and it has one output handle on its right side.
|
|
15
|
+
|
|
16
|
+
You cannot move the origin, delete it, or make a copy of it. It is always there.
|
|
17
|
+
|
|
18
|
+
## Step
|
|
19
|
+
|
|
20
|
+
A step node stands for a screen that a visitor sees. It appears as a blue rectangle
|
|
21
|
+
on the canvas.
|
|
22
|
+
|
|
23
|
+
A step holds fields. Drag a field from the library onto a step node to assign
|
|
24
|
+
it. The subtitle of the node gives the number of assigned fields.
|
|
25
|
+
|
|
26
|
+
Each step has a `layoutName`. It tells the SDK which visual layout to use for this
|
|
27
|
+
step. Set the layout name in the inspector.
|
|
28
|
+
|
|
29
|
+
## Action
|
|
30
|
+
|
|
31
|
+
An action node stands for a side effect. A side effect happens where the visitor
|
|
32
|
+
cannot see it. The node appears as a green rectangle.
|
|
33
|
+
|
|
34
|
+
An action runs when the flow reaches it. Use an action to record an event, to send
|
|
35
|
+
data, or to start an integration.
|
|
36
|
+
|
|
37
|
+
## Condition
|
|
38
|
+
|
|
39
|
+
A condition node stands for a point where the flow splits. It appears as an amber
|
|
40
|
+
rectangle.
|
|
41
|
+
|
|
42
|
+
A condition node has two output handles, and not one. The green handle at the top
|
|
43
|
+
right connects to the path for a true result. The red handle at the bottom right
|
|
44
|
+
connects to the path for a false result.
|
|
45
|
+
|
|
46
|
+
Define the rule in the inspector, with the visual condition builder. See
|
|
47
|
+
[Conditions](/reference/dashboard/conditions) for more detail.
|
|
48
|
+
|
|
49
|
+
## Handles
|
|
50
|
+
|
|
51
|
+
A handle is a connection point on a node. An input handle is on the left. An output
|
|
52
|
+
handle is on the right. Drag from an output handle to an input handle to connect two
|
|
53
|
+
nodes.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
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.
|