@picked/client 0.0.101-next.2 → 0.0.101
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/README.md +34 -158
- package/dist/{api-BlRFU0Fi.js → api-BOKA2i46.js} +1 -1
- package/dist/{api-AaQeg3Ij.cjs → api-C5jUHF3A.cjs} +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/esm/index.js +2 -2
- package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
- package/dist/esm/server/index.js +2 -2
- package/dist/{plugin-CVD2TnRC.cjs → plugin-BcB9ah7q.cjs} +1 -1
- package/dist/{plugin-DhznDG-h.js → plugin-COWxZiTa.js} +2 -2
- package/dist/{preview-unavailable-mW4Pj3Ph.js → preview-unavailable-BJjc3UNr.js} +1 -1
- package/dist/{preview-unavailable-xWLCr93y.cjs → preview-unavailable-CV1BonKA.cjs} +1 -1
- package/dist/{provider-COb_V-yq.js → provider-CszmtTg3.js} +1 -1
- package/dist/{provider-zag5m5GH.cjs → provider-daBChM0G.cjs} +1 -1
- package/package.json +5 -5
- package/dist/docs/_root.css +0 -101
- package/dist/docs/explanation/conditions-and-the-logic-engine.md +0 -94
- package/dist/docs/explanation/content-references.md +0 -99
- package/dist/docs/explanation/feature-flag-allocation.md +0 -218
- package/dist/docs/explanation/how-picked-works.md +0 -124
- package/dist/docs/explanation/how-pickedql-works.md +0 -76
- package/dist/docs/explanation/pages-and-flows.md +0 -64
- package/dist/docs/explanation/the-content-model.md +0 -87
- package/dist/docs/explanation/the-two-apis.md +0 -68
- package/dist/docs/explanation/why-server-side-rendering.md +0 -76
- package/dist/docs/explanation/workspaces-and-versions.md +0 -71
- package/dist/docs/how-to/add-a-step-field-or-action.md +0 -43
- package/dist/docs/how-to/analytics/index.md +0 -316
- package/dist/docs/how-to/archive-or-delete-a-workspace.md +0 -46
- package/dist/docs/how-to/authenticate-the-cli.md +0 -101
- package/dist/docs/how-to/authenticate-with-a-magic-link.md +0 -47
- package/dist/docs/how-to/authenticate-with-a-password.md +0 -59
- package/dist/docs/how-to/authenticate-with-an-api-key.md +0 -51
- package/dist/docs/how-to/authenticate-with-oauth.md +0 -40
- package/dist/docs/how-to/build-a-flow.md +0 -93
- package/dist/docs/how-to/call-an-external-api-from-a-workflow.md +0 -102
- package/dist/docs/how-to/connect-the-mcp-server.md +0 -46
- package/dist/docs/how-to/create-a-content-entry.md +0 -48
- package/dist/docs/how-to/create-a-project.md +0 -29
- package/dist/docs/how-to/create-an-experience.md +0 -42
- package/dist/docs/how-to/create-and-revoke-an-api-key.md +0 -42
- package/dist/docs/how-to/debug-with-the-chrome-extension.md +0 -57
- package/dist/docs/how-to/define-a-page-layout.md +0 -46
- package/dist/docs/how-to/fill-and-publish-a-page.md +0 -66
- package/dist/docs/how-to/install-the-gtm-template.md +0 -84
- package/dist/docs/how-to/install-the-sdk.md +0 -93
- package/dist/docs/how-to/install-the-vite-plugin.md +0 -69
- package/dist/docs/how-to/invite-and-remove-members.md +0 -35
- package/dist/docs/how-to/point-one-entry-at-another.md +0 -61
- package/dist/docs/how-to/preview-a-workspace.md +0 -28
- package/dist/docs/how-to/publish-a-workspace.md +0 -30
- package/dist/docs/how-to/read-a-feature-flag.md +0 -113
- package/dist/docs/how-to/read-a-referenced-entry.md +0 -109
- package/dist/docs/how-to/register-a-component.md +0 -55
- package/dist/docs/how-to/register-an-action-handler.md +0 -85
- package/dist/docs/how-to/register-an-api-that-uses-oauth2.md +0 -107
- package/dist/docs/how-to/render-a-step-form.md +0 -131
- package/dist/docs/how-to/render-an-unpublished-preview.md +0 -41
- package/dist/docs/how-to/retry-a-failed-call-with-a-loop.md +0 -81
- package/dist/docs/how-to/reuse-a-section.md +0 -53
- package/dist/docs/how-to/reuse-a-step-field-or-action.md +0 -28
- package/dist/docs/how-to/roll-back-a-published-version.md +0 -26
- package/dist/docs/how-to/run-an-ab-test.md +0 -49
- package/dist/docs/how-to/run-code-on-a-form-submission.md +0 -125
- package/dist/docs/how-to/server-render-a-page.md +0 -81
- package/dist/docs/how-to/set-a-content-security-policy.md +0 -32
- package/dist/docs/how-to/set-up-mfa.md +0 -113
- package/dist/docs/how-to/switch-workspaces.md +0 -122
- package/dist/docs/how-to/upload-and-use-an-asset.mdx +0 -73
- package/dist/docs/how-to/validate-a-field.md +0 -52
- package/dist/docs/how-to/wait-for-an-action-response.md +0 -182
- package/dist/docs/how-to/write-a-condition.md +0 -45
- package/dist/docs/how-to/write-a-predicate.md +0 -60
- package/dist/docs/index.md +0 -59
- package/dist/docs/reference/dashboard/actions.mdx +0 -56
- package/dist/docs/reference/dashboard/api-keys.mdx +0 -38
- package/dist/docs/reference/dashboard/conditions.mdx +0 -42
- package/dist/docs/reference/dashboard/content/asset-library.mdx +0 -63
- package/dist/docs/reference/dashboard/content/blocks.mdx +0 -57
- package/dist/docs/reference/dashboard/content/content-entries.mdx +0 -95
- package/dist/docs/reference/dashboard/content/models.mdx +0 -108
- package/dist/docs/reference/dashboard/content/pages.mdx +0 -61
- package/dist/docs/reference/dashboard/experiences.mdx +0 -51
- package/dist/docs/reference/dashboard/external-apis.md +0 -169
- package/dist/docs/reference/dashboard/features.mdx +0 -154
- package/dist/docs/reference/dashboard/fields.mdx +0 -106
- package/dist/docs/reference/dashboard/flow-builder/canvas.mdx +0 -58
- package/dist/docs/reference/dashboard/flow-builder/condition-builder.md +0 -57
- package/dist/docs/reference/dashboard/flow-builder/keyboard-shortcuts.md +0 -72
- package/dist/docs/reference/dashboard/flow-builder/nodes.md +0 -63
- package/dist/docs/reference/dashboard/labels.md +0 -321
- package/dist/docs/reference/dashboard/lead-search.md +0 -224
- package/dist/docs/reference/dashboard/projects.mdx +0 -44
- package/dist/docs/reference/dashboard/reports.mdx +0 -43
- package/dist/docs/reference/dashboard/steps.mdx +0 -37
- package/dist/docs/reference/dashboard/team-management.md +0 -29
- package/dist/docs/reference/dashboard/workflow-runs.md +0 -142
- package/dist/docs/reference/dashboard/workflow-templates.md +0 -182
- package/dist/docs/reference/dashboard/workflow-test-runs.md +0 -77
- package/dist/docs/reference/dashboard/workspace-versioning.mdx +0 -30
- package/dist/docs/reference/dashboard/workspaces.mdx +0 -76
- package/dist/docs/reference/delivery-api/experience-content.md +0 -152
- package/dist/docs/reference/delivery-api/index.md +0 -45
- package/dist/docs/reference/delivery-api/preview-caching-crawling.md +0 -79
- package/dist/docs/reference/delivery-api/project-config.md +0 -65
- package/dist/docs/reference/delivery-api/workspace-schema.md +0 -107
- package/dist/docs/reference/glossary.md +0 -201
- package/dist/docs/reference/management-api/authentication.md +0 -87
- package/dist/docs/reference/management-api/authorization-and-scopes.md +0 -291
- package/dist/docs/reference/management-api/error-handling.md +0 -232
- package/dist/docs/reference/management-api/pagination.md +0 -192
- package/dist/docs/reference/pickedql/data-sources.md +0 -174
- package/dist/docs/reference/pickedql/dimensions.md +0 -103
- package/dist/docs/reference/pickedql/filtering.md +0 -64
- package/dist/docs/reference/pickedql/index.md +0 -18
- package/dist/docs/reference/pickedql/schema.md +0 -172
- package/dist/docs/reference/pickedql/virtual-functions.md +0 -248
- package/dist/docs/reference/sdk/actions.md +0 -154
- package/dist/docs/reference/sdk/analytics-events.md +0 -453
- package/dist/docs/reference/sdk/conditions.md +0 -147
- package/dist/docs/reference/sdk/content-security-policy.md +0 -21
- package/dist/docs/reference/sdk/content.md +0 -253
- package/dist/docs/reference/sdk/experiences.md +0 -51
- package/dist/docs/reference/sdk/features.md +0 -256
- package/dist/docs/reference/sdk/fields.md +0 -255
- package/dist/docs/reference/sdk/index.md +0 -68
- package/dist/docs/reference/sdk/plugins/create-experience.md +0 -123
- package/dist/docs/reference/sdk/plugins/dynamic-experiences.md +0 -74
- package/dist/docs/reference/sdk/plugins/index.md +0 -29
- package/dist/docs/reference/sdk/plugins/window-object.md +0 -25
- package/dist/docs/reference/sdk/predicates.md +0 -43
- package/dist/docs/reference/sdk/ssr/index.md +0 -33
- package/dist/docs/reference/sdk/ssr/rendering-and-hydration.md +0 -103
- package/dist/docs/reference/sdk/ssr/serialize.md +0 -80
- package/dist/docs/reference/sdk/ssr/slots-and-placements.md +0 -113
- package/dist/docs/reference/sdk/steps.md +0 -86
- package/dist/docs/reference/sdk/type-generation.md +0 -265
- package/dist/docs/reference/tools/chrome-extension.md +0 -16
- package/dist/docs/reference/tools/cli.md +0 -292
- package/dist/docs/reference/tools/image-optimisation-service.md +0 -104
- package/dist/docs/reference/tools/mcp.md +0 -136
- package/dist/docs/reference/tools/vite-plugin.md +0 -163
- package/dist/docs/tutorials/first-api-call.md +0 -235
- package/dist/docs/tutorials/first-experience-in-the-dashboard.mdx +0 -143
- package/dist/docs/tutorials/first-experience.mdx +0 -254
- package/dist/docs/tutorials/first-server-rendered-page.mdx +0 -186
|
@@ -1,72 +0,0 @@
|
|
|
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.
|
|
@@ -1,63 +0,0 @@
|
|
|
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.
|
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: reference
|
|
3
|
-
layout: docs
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Labels
|
|
7
|
-
|
|
8
|
-
A label is a name and a value on a lead, a project or a workflow run. A workflow sets and
|
|
9
|
-
removes labels with tool nodes. A label can expire, a write can be conditional, and a node
|
|
10
|
-
can increment a `number` label.
|
|
11
|
-
|
|
12
|
-
## Name, type and value
|
|
13
|
-
|
|
14
|
-
| Part | Format |
|
|
15
|
-
| --------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
16
|
-
| Namespace | 1 to 64 characters. Each character is a lowercase letter, a digit, `_` or `-`. |
|
|
17
|
-
| Key | 1 to 64 characters. Each character is a lowercase letter, a digit, `_` or `-`. |
|
|
18
|
-
| Type | `text`, `number`, `boolean` or `json`. It tells how to read the value. |
|
|
19
|
-
| Value | Text. A `number` label holds a number, a `boolean` label holds `true` or `false`, and a `json` label holds a JSON document. |
|
|
20
|
-
|
|
21
|
-
The lead, the project or the run that has a label is the owner of the label. An owner has
|
|
22
|
-
one label for each namespace and key.
|
|
23
|
-
|
|
24
|
-
## Owners
|
|
25
|
-
|
|
26
|
-
| Owner | Where the labels stay | Scope to read the labels | Scope to set and remove the labels |
|
|
27
|
-
| ------------ | ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ---------------------------------- |
|
|
28
|
-
| Lead | Until you delete the lead. Picked deletes the labels of a lead with the lead. | `ORGANIZATION_LEADS_READ` | `ORGANIZATION_LEADS_UPDATE` |
|
|
29
|
-
| Project | Picked keeps the labels when you delete the project. These labels hold data for all the runs of the project. | `ORGANIZATION_PROJECTS_READ` | `ORGANIZATION_PROJECTS_UPDATE` |
|
|
30
|
-
| Workflow run | With the run. Picked does not delete a run. | `ORGANIZATION_PROJECTS_READ` | `ORGANIZATION_PROJECTS_UPDATE` |
|
|
31
|
-
|
|
32
|
-
A run reads, sets and removes its own labels without a scope.
|
|
33
|
-
|
|
34
|
-
## Labels in the dashboard
|
|
35
|
-
|
|
36
|
-
The **Labels** card shows the labels of one owner, in one section for each namespace.
|
|
37
|
-
|
|
38
|
-
| Page | Where the card shows | Scope to change the labels |
|
|
39
|
-
| -------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------ |
|
|
40
|
-
| Lead | Next to the responses, or below them on a medium screen. On a narrow screen, it is on the **Labels** tab. | `ORGANIZATION_LEADS_UPDATE` |
|
|
41
|
-
| Project labels | At `…/<project>/labels`. **Project labels** in the project menu opens the page for `ORGANIZATION_PROJECTS_READ`. | `ORGANIZATION_PROJECTS_UPDATE` |
|
|
42
|
-
| Run | Below the details of the run. On a narrow screen, the card is on the **Labels** tab. | `ORGANIZATION_PROJECTS_UPDATE` |
|
|
43
|
-
|
|
44
|
-
The project settings also have a **Labels** link to the Project labels page. To open the project
|
|
45
|
-
settings, you must have `ORGANIZATION_PROJECTS_UPDATE`.
|
|
46
|
-
|
|
47
|
-
Without the scope, the card shows the labels, and you cannot change them.
|
|
48
|
-
|
|
49
|
-
With the scope, the card has these controls:
|
|
50
|
-
|
|
51
|
-
| Control | Result |
|
|
52
|
-
| ------------- | --------------------------------------------------------------------------------------------- |
|
|
53
|
-
| The value | Changes the value of the label. |
|
|
54
|
-
| **Add label** | Adds a label with a namespace, a key, a type and a value. This label does not expire. |
|
|
55
|
-
| **×** | Removes the label. |
|
|
56
|
-
| **Save** | Sets and removes the labels that you changed. Picked does not change a label before **Save**. |
|
|
57
|
-
| **Discard** | Removes your changes. |
|
|
58
|
-
|
|
59
|
-
A label with an expiry shows the time until it expires. You can remove it, but you cannot
|
|
60
|
-
change its value.
|
|
61
|
-
|
|
62
|
-
## Visitor data in project and run labels
|
|
63
|
-
|
|
64
|
-
The labels of a project and of a run stay after Picked deletes a lead. Picked does not delete
|
|
65
|
-
visitor data in a project label or a run label with the lead. Visitor data is, for example, an
|
|
66
|
-
email address, a phone number or a visitor ID.
|
|
67
|
-
|
|
68
|
-
A project label or a run label can have the `sha256` hash of a visitor identifier as its key.
|
|
69
|
-
With a hash, a workflow can hold a label for one visitor across runs. Use `expiresIn` to set
|
|
70
|
-
how long the label stays. Refer to [Example: one run at a time for each visitor](#example-one-run-at-a-time-for-each-visitor).
|
|
71
|
-
|
|
72
|
-
## Tools
|
|
73
|
-
|
|
74
|
-
| Tool | Name in the editor | Owner | Output | Scopes |
|
|
75
|
-
| ----------------------- | ------------------------- | ------------------------------- | ---------------------------------- | -------------------------------------------------------------------------------------- |
|
|
76
|
-
| `set_lead_labels` | **Set lead labels** | The lead in its `lead` argument | `lead` and `count` | `ORGANIZATION_LEADS_UPDATE` and `ORGANIZATION_LEADS_READ` |
|
|
77
|
-
| `remove_lead_labels` | **Remove lead labels** | The lead in its `lead` argument | `lead` and `removed` | `ORGANIZATION_LEADS_UPDATE` and `ORGANIZATION_LEADS_READ` |
|
|
78
|
-
| `create_lead` | **Create lead** | The lead that it makes | `lead`, `created` and `labelCount` | `ORGANIZATION_LEADS_CREATE`, `ORGANIZATION_LEADS_READ` and `ORGANIZATION_LEADS_UPDATE` |
|
|
79
|
-
| `set_project_labels` | **Set project labels** | The project of the run | `project` and `count` | `ORGANIZATION_PROJECTS_UPDATE` and `ORGANIZATION_PROJECTS_READ` |
|
|
80
|
-
| `remove_project_labels` | **Remove project labels** | The project of the run | `project` and `removed` | `ORGANIZATION_PROJECTS_UPDATE` and `ORGANIZATION_PROJECTS_READ` |
|
|
81
|
-
| `get_project` | **Get project** | The project of the run | `project` | `ORGANIZATION_PROJECTS_READ` |
|
|
82
|
-
| `set_run_labels` | **Set run labels** | The run | `run` and `count` | None |
|
|
83
|
-
| `remove_run_labels` | **Remove run labels** | The run | `run` and `removed` | None |
|
|
84
|
-
| `get_run` | **Get run** | The run | `run` | None |
|
|
85
|
-
|
|
86
|
-
**Set project labels**, **Remove project labels**, **Set run labels**, **Remove run labels**,
|
|
87
|
-
**Get project** and **Get run** have no argument for the owner.
|
|
88
|
-
|
|
89
|
-
The `lead`, `project` and `run` outputs hold the labels of the owner at the time that a later
|
|
90
|
-
node reads them, as `labels.<namespace>.<key>`:
|
|
91
|
-
|
|
92
|
-
| Output | Fields |
|
|
93
|
-
| --------- | ------------------------- |
|
|
94
|
-
| `lead` | The lead, and `labels` |
|
|
95
|
-
| `project` | `id`, `name` and `labels` |
|
|
96
|
-
| `run` | `id` and `labels` |
|
|
97
|
-
|
|
98
|
-
For example, `{{ nodes.project.project.labels.cms.sent_today }}` reads the label
|
|
99
|
-
`cms.sent_today` of the project.
|
|
100
|
-
|
|
101
|
-
When Picked refuses the labels of a node, or cannot find the owner, the node fails with the
|
|
102
|
-
code `tool_failed`. Its reason is the error code in lowercase, such as `label_write_invalid`,
|
|
103
|
-
`value_invalid_for_type` or `owner_not_found`. An edge on the error exit of the node can
|
|
104
|
-
continue the run. Refer to the [workflow runs reference](/reference/dashboard/workflow-runs#run-status).
|
|
105
|
-
|
|
106
|
-
## Labels in a test run
|
|
107
|
-
|
|
108
|
-
For the run tools in a test run, refer to
|
|
109
|
-
[What runs](/reference/dashboard/workflow-test-runs#what-runs).
|
|
110
|
-
|
|
111
|
-
## A row that sets a label
|
|
112
|
-
|
|
113
|
-
The `labels` argument of **Set lead labels**, **Set project labels**, **Set run labels** and
|
|
114
|
-
**Create lead** is a list of rows. Each row sets one label.
|
|
115
|
-
|
|
116
|
-
| Field | Type | Default | Description |
|
|
117
|
-
| -------------- | ----------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
118
|
-
| `namespace` | Text | — | The namespace of the label. |
|
|
119
|
-
| `key` | Text | — | The key of the label. |
|
|
120
|
-
| `type` | Text | `number` with `increment`, else `text` | The type of the label. |
|
|
121
|
-
| `value` | Text | — | The value of the label. |
|
|
122
|
-
| `increment` | Number | — | An amount to add to the value of a `number` label. Refer to [Increments](#increments). |
|
|
123
|
-
| `expiresIn` | Number | No expiry | The number of seconds until the label expires, from 1 to 31536000. Refer to [Expiry](#expiry). |
|
|
124
|
-
| `onlyIfAbsent` | `true` or `false` | `false` | When `true`, the row sets the label only when the owner does not have it. Refer to [Conditional rows](#conditional-rows). |
|
|
125
|
-
|
|
126
|
-
A row has `value` or `increment`. It cannot have both. When you save a workflow, Picked
|
|
127
|
-
refuses a row that has both, or neither.
|
|
128
|
-
|
|
129
|
-
A row with a `value` and no `expiresIn` sets a label that does not expire. If the label had
|
|
130
|
-
an expiry, the row removes it.
|
|
131
|
-
|
|
132
|
-
The namespace, the key, `value`, `increment` and `expiresIn` can have a template. Refer to
|
|
133
|
-
[Workflow templates](/reference/dashboard/workflow-templates).
|
|
134
|
-
|
|
135
|
-
### Rows in the workflow editor
|
|
136
|
-
|
|
137
|
-
In the workflow editor, each row has an **Operation** list:
|
|
138
|
-
|
|
139
|
-
| Operation | Fields | The row that Picked saves |
|
|
140
|
-
| ------------- | ---------------------------------- | --------------------------- |
|
|
141
|
-
| **Set** | **Value** | `value` |
|
|
142
|
-
| **Increment** | **Amount**: a number or a template | `increment` with the amount |
|
|
143
|
-
|
|
144
|
-
To make the value smaller, give a negative amount. For example, the amount `-3` saves `increment: -3`, and
|
|
145
|
-
the amount `-{{ trigger.cost }}` saves `increment: "-{{ trigger.cost }}"`.
|
|
146
|
-
|
|
147
|
-
With **Increment**, the type is always `number`. When you change the operation to
|
|
148
|
-
**Increment**, the editor removes `value` and `onlyIfAbsent` and sets the amount to 1. When you
|
|
149
|
-
change it to **Set**, the editor removes `increment`.
|
|
150
|
-
|
|
151
|
-
**Expires after (seconds)** sets `expiresIn`. It accepts a number or a template. When the
|
|
152
|
-
field is empty, the row has no `expiresIn`.
|
|
153
|
-
|
|
154
|
-
With **Set**, the **Only while the owner does not hold it** checkbox sets `onlyIfAbsent: true`.
|
|
155
|
-
When the checkbox is clear, the row has no `onlyIfAbsent`.
|
|
156
|
-
|
|
157
|
-
The full `labels` argument can also be one template. The editor then shows the template, and
|
|
158
|
-
it shows no rows. **Replace with rows** removes the template after you confirm it.
|
|
159
|
-
|
|
160
|
-
## Expiry
|
|
161
|
-
|
|
162
|
-
A label with `expiresIn` expires that number of seconds after the node sets it. Picked does
|
|
163
|
-
not show an expired label:
|
|
164
|
-
|
|
165
|
-
- The `lead`, `project` or `run` output of a tool does not have it.
|
|
166
|
-
- A lead search clause does not match it. A negative clause, such as `-cms.status:*`, matches
|
|
167
|
-
the lead.
|
|
168
|
-
- A lead sorts as if it does not have the label.
|
|
169
|
-
- The pages of the dashboard do not show it.
|
|
170
|
-
|
|
171
|
-
A row that sets an expired label makes a new label, with a new ID. The task records it as
|
|
172
|
-
created.
|
|
173
|
-
|
|
174
|
-
Picked deletes an expired label within 15 minutes after it expires. This delete does not
|
|
175
|
-
record an operation.
|
|
176
|
-
|
|
177
|
-
## Conditional rows
|
|
178
|
-
|
|
179
|
-
A row with `onlyIfAbsent: true` sets its label only when the owner does not have a label with
|
|
180
|
-
its namespace and key. An expired label does not count. Picked does the check and the write in
|
|
181
|
-
one step. When two nodes set the same absent label at the same time, only one of them sets it.
|
|
182
|
-
|
|
183
|
-
When the owner has the label already:
|
|
184
|
-
|
|
185
|
-
| The label has | Result |
|
|
186
|
-
| --------------------------------- | ------------------------------------------------------------------------------------- |
|
|
187
|
-
| The type and the value of the row | The node takes the label. Picked does not change it and does not record an operation. |
|
|
188
|
-
| A different type or value | The node does not take the label. Picked does not change it, its value or its expiry. |
|
|
189
|
-
|
|
190
|
-
When the value is an ID unique to one run, such as `{{ run.id }}`, only one run can hold the
|
|
191
|
-
label at a time. When Picked starts a node again after the node set its label, the node takes
|
|
192
|
-
the label again with the same result.
|
|
193
|
-
|
|
194
|
-
A row with `increment` cannot have `onlyIfAbsent`.
|
|
195
|
-
|
|
196
|
-
## Atomic writes
|
|
197
|
-
|
|
198
|
-
**Set lead labels**, **Set project labels** and **Set run labels** have an `atomic`
|
|
199
|
-
argument. In the workflow editor, it is the **Atomic** checkbox. When it is `true`, the node
|
|
200
|
-
takes all of its labels or none of them. If one conditional row does not take its label, the
|
|
201
|
-
node sets no label, records no operation, and gives a `count` of 0.
|
|
202
|
-
|
|
203
|
-
Two nodes with `atomic` can run at the same time. If both nodes set the same label with
|
|
204
|
-
`onlyIfAbsent` and a value unique to each node, one node at most takes its labels.
|
|
205
|
-
|
|
206
|
-
## Increments
|
|
207
|
-
|
|
208
|
-
A row with `increment` adds that amount to the value of a `number` label. When the owner does
|
|
209
|
-
not have the label, or the label expired, the value starts at 0. When many nodes add to the
|
|
210
|
-
same label at the same time, the label counts each amount.
|
|
211
|
-
|
|
212
|
-
| Rule | Description |
|
|
213
|
-
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
214
|
-
| Type | The row must be of type `number`, which is the default with `increment`. When you save a workflow, Picked refuses a row with a different type. |
|
|
215
|
-
| A label of a different type | The node fails with the code `tool_failed` and the reason `value_invalid_for_type`. Picked does not change the label. |
|
|
216
|
-
| Expiry | The label keeps its expiry. The `expiresIn` of the row applies only when the row makes the label. So the label expires at a fixed time after the first row that made it. |
|
|
217
|
-
| Operations | Each row with `increment` records an operation. |
|
|
218
|
-
|
|
219
|
-
When Picked starts a node again after it added its amount, the node adds the amount again.
|
|
220
|
-
|
|
221
|
-
## A row that removes a label
|
|
222
|
-
|
|
223
|
-
The `labels` argument of **Remove lead labels**, **Remove project labels** and **Remove run
|
|
224
|
-
labels** is a list of rows. Each row removes one label.
|
|
225
|
-
|
|
226
|
-
| Field | Type | Default | Description |
|
|
227
|
-
| ----------- | ---- | --------- | ------------------------------------------------------------------------------------------------- |
|
|
228
|
-
| `namespace` | Text | — | The namespace of the label. |
|
|
229
|
-
| `key` | Text | — | The key of the label. |
|
|
230
|
-
| `ifValue` | Text | Any value | When it is set, the row removes the label only when the value of the label is equal to `ifValue`. |
|
|
231
|
-
|
|
232
|
-
Picked does the check and the remove in one step. A row with `ifValue: "{{ run.id }}"`
|
|
233
|
-
removes the label only while this run holds it. It does not remove the label when a different
|
|
234
|
-
run holds it.
|
|
235
|
-
|
|
236
|
-
In the workflow editor, **Only while its value is** sets `ifValue`. It accepts text or a
|
|
237
|
-
template. When the field is empty, the row has no `ifValue`.
|
|
238
|
-
|
|
239
|
-
A row that names a label that the owner does not have removes nothing. An expired label counts
|
|
240
|
-
as no label.
|
|
241
|
-
|
|
242
|
-
## Count and removed
|
|
243
|
-
|
|
244
|
-
| Output | Value |
|
|
245
|
-
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
246
|
-
| `count` | The number of labels that the node took. The node takes a label when it sets it, or when a conditional row finds the label with its own type and value. |
|
|
247
|
-
| `labelCount` | The same as `count`, for **Create lead**. |
|
|
248
|
-
| `removed` | The number of labels that the node removed. |
|
|
249
|
-
|
|
250
|
-
## Example: one run at a time
|
|
251
|
-
|
|
252
|
-
This **Set lead labels** node holds a label for one hour, unless a different run holds it:
|
|
253
|
-
|
|
254
|
-
```json
|
|
255
|
-
{
|
|
256
|
-
"lead": "{{ nodes.lead.lead }}",
|
|
257
|
-
"labels": [
|
|
258
|
-
{
|
|
259
|
-
"namespace": "cms",
|
|
260
|
-
"key": "request-callback",
|
|
261
|
-
"value": "{{ run.id }}",
|
|
262
|
-
"onlyIfAbsent": true,
|
|
263
|
-
"expiresIn": 3600
|
|
264
|
-
}
|
|
265
|
-
]
|
|
266
|
-
}
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
When `count` is 1, the run holds the label. This **Remove lead labels** node removes the label
|
|
270
|
-
only while the run holds it:
|
|
271
|
-
|
|
272
|
-
```json
|
|
273
|
-
{
|
|
274
|
-
"lead": "{{ nodes.lead.lead }}",
|
|
275
|
-
"labels": [{ "namespace": "cms", "key": "request-callback", "ifValue": "{{ run.id }}" }]
|
|
276
|
-
}
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
## Example: one run at a time for each visitor
|
|
280
|
-
|
|
281
|
-
This **Set project labels** node holds a label for the visitor of the run for one hour,
|
|
282
|
-
unless a different run holds it. The key is the `sha256` hash of the visitor ID, and the label
|
|
283
|
-
expires. Refer to [the rule for visitor data](#visitor-data-in-project-and-run-labels).
|
|
284
|
-
|
|
285
|
-
```json
|
|
286
|
-
{
|
|
287
|
-
"labels": [
|
|
288
|
-
{
|
|
289
|
-
"namespace": "cms-lock-visitor",
|
|
290
|
-
"key": "{{ trigger.action.userId | default: run.id | sha256 }}",
|
|
291
|
-
"value": "{{ run.id }}",
|
|
292
|
-
"onlyIfAbsent": true,
|
|
293
|
-
"expiresIn": 3600
|
|
294
|
-
}
|
|
295
|
-
]
|
|
296
|
-
}
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
When `count` is 1, the run holds the label. This **Remove project labels** node removes the
|
|
300
|
-
label only while the run holds it:
|
|
301
|
-
|
|
302
|
-
```json
|
|
303
|
-
{
|
|
304
|
-
"labels": [
|
|
305
|
-
{
|
|
306
|
-
"namespace": "cms-lock-visitor",
|
|
307
|
-
"key": "{{ trigger.action.userId | default: run.id | sha256 }}",
|
|
308
|
-
"ifValue": "{{ run.id }}"
|
|
309
|
-
}
|
|
310
|
-
]
|
|
311
|
-
}
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
## Related
|
|
315
|
-
|
|
316
|
-
- [Workflow runs](/reference/dashboard/workflow-runs) — the error exit of a node, and the
|
|
317
|
-
operations that a task records.
|
|
318
|
-
- [Workflow templates](/reference/dashboard/workflow-templates) — the `sha256` filter and the
|
|
319
|
-
`run.id` variable.
|
|
320
|
-
- [Lead search](/reference/dashboard/lead-search) — clauses on labels.
|
|
321
|
-
- [Glossary](/reference/glossary) — label, namespace and label type.
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: reference
|
|
3
|
-
layout: docs
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Lead search
|
|
7
|
-
|
|
8
|
-
A lead is one set of answers that a visitor gave to your flow. The **Leads** page lists
|
|
9
|
-
them, and it has one search box. The box accepts a plain word, a filter, or both. The
|
|
10
|
-
dashboard holds the query in the address, so you can share the link.
|
|
11
|
-
|
|
12
|
-
## The parts of a lead that a query reads
|
|
13
|
-
|
|
14
|
-
| Part | How to write it | Example |
|
|
15
|
-
| --- | --- | --- |
|
|
16
|
-
| Every captured answer | a plain word | `melbourne` |
|
|
17
|
-
| One label | `namespace.key` | `acme.status:sent` |
|
|
18
|
-
| One answer | the key of the field | `suburb:Sydney` |
|
|
19
|
-
| The capture date | `createdAt` | `createdAt>2026-08-01` |
|
|
20
|
-
| The visitor | `userId` | `userId:sess_7x2k9q3m1n4a` |
|
|
21
|
-
| The visit that captured the lead | `session.field` | `session.utm_source:google` |
|
|
22
|
-
|
|
23
|
-
A path of two parts is a label, unless it starts with `session.`: that path reads the visit.
|
|
24
|
-
A label namespace and a label key cannot contain a full stop. A path of one part is the key
|
|
25
|
-
of a field, unless the name is `createdAt` or `userId`.
|
|
26
|
-
|
|
27
|
-
A query does not read an expired label. Refer to [Labels](/reference/dashboard/labels#expiry).
|
|
28
|
-
|
|
29
|
-
## Operators
|
|
30
|
-
|
|
31
|
-
| Operator | Meaning | Example |
|
|
32
|
-
| --- | --- | --- |
|
|
33
|
-
| `:` | equal to | `details.phone:"0400000000"` |
|
|
34
|
-
| `~` | contains | `details.email~example.com` |
|
|
35
|
-
| `:*` | the lead has a value | `acme.status:*` |
|
|
36
|
-
| `>` `>=` `<` `<=` | compare a number or a date | `scoring.value>=50` |
|
|
37
|
-
| `-` | makes the clause negative | `-acme.status:*` |
|
|
38
|
-
|
|
39
|
-
Each part accepts a different set:
|
|
40
|
-
|
|
41
|
-
| Part | `:` | `~` | `:*` | `>` `>=` `<` `<=` |
|
|
42
|
-
| --- | --- | --- | --- | --- |
|
|
43
|
-
| Label | yes | yes | yes | yes |
|
|
44
|
-
| Answer | yes | yes | yes | no |
|
|
45
|
-
| `createdAt` | yes | no | no | yes |
|
|
46
|
-
| `userId` | yes | no | no | no |
|
|
47
|
-
| `session.` | yes | yes | yes | no |
|
|
48
|
-
|
|
49
|
-
## How clauses combine
|
|
50
|
-
|
|
51
|
-
A space between two clauses means AND. The word `OR` between them means OR.
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
acme.status:sent scoring.contacted:true
|
|
55
|
-
acme.status:sent OR acme.status:queued
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
One query holds a maximum of 10 clauses. One query uses AND or OR, and not both: there is
|
|
59
|
-
no way to show which one comes first. A query that mixes them gives an error.
|
|
60
|
-
|
|
61
|
-
## The visit that captured the lead
|
|
62
|
-
|
|
63
|
-
A visit is the set of events that one visitor made, from the first page to the last page. The visit
|
|
64
|
-
that captured a lead is the visit that holds its capture. A clause on the visit matches the
|
|
65
|
-
lead when one event of the visit has the value. The event can come before the capture or
|
|
66
|
-
after it.
|
|
67
|
-
|
|
68
|
-
| Field | What it holds |
|
|
69
|
-
| --- | --- |
|
|
70
|
-
| `gaid` | The ID that Google Analytics gives the visitor |
|
|
71
|
-
| `utm_source` | The `utm_source` parameter of the page address |
|
|
72
|
-
| `utm_medium` | The `utm_medium` parameter of the page address |
|
|
73
|
-
| `utm_campaign` | The `utm_campaign` parameter of the page address |
|
|
74
|
-
| `utm_term` | The `utm_term` parameter of the page address |
|
|
75
|
-
| `utm_content` | The `utm_content` parameter of the page address |
|
|
76
|
-
| `page_url` | The full address of the page |
|
|
77
|
-
| `page_origin` | The host of the page, for example `shop.example.com` |
|
|
78
|
-
| `page_pathname` | The path of the page, for example `/quote` |
|
|
79
|
-
| `page_query` | The query string of the page, with no `?` |
|
|
80
|
-
| `landing_page_url` | The full address of the first page of the visit |
|
|
81
|
-
| `landing_page_origin` | The host of the first page, for example `shop.example.com` |
|
|
82
|
-
| `landing_page_pathname` | The path of the first page, for example `/` |
|
|
83
|
-
| `landing_page_query` | The query string of the first page, with no `?` |
|
|
84
|
-
|
|
85
|
-
A clause on the visit searches every lead, with no date limit.
|
|
86
|
-
|
|
87
|
-
A clause with `-` matches a lead when no event of the visit has the value. A lead that has
|
|
88
|
-
no visit does not match a clause on the visit, with `-` or without it. A lead has no visit
|
|
89
|
-
when one of these is true:
|
|
90
|
-
|
|
91
|
-
- The lead has no capture event. The capture came before Picked recorded capture events, or
|
|
92
|
-
the deployment sends no events.
|
|
93
|
-
- The visit was on a deployment that is not for production, for example a preview or a test
|
|
94
|
-
deployment.
|
|
95
|
-
- The visit started more than 7 days before its events arrived.
|
|
96
|
-
- The time on the device of the visitor was more than one day later than the real time.
|
|
97
|
-
|
|
98
|
-
A query with a clause on the visit combines its clauses with AND. It can use OR only when
|
|
99
|
-
all of its clauses are on the visit.
|
|
100
|
-
|
|
101
|
-
A query with a clause on the visit shows the leads in the order of their capture events,
|
|
102
|
-
newest first. A capture event has its own time, and that time can differ from the `createdAt`
|
|
103
|
-
of the lead. The dashboard shows no column sort while the search has a clause on the visit.
|
|
104
|
-
|
|
105
|
-
A query with a clause on the visit shows the number of leads on the page, and no total. For
|
|
106
|
-
a page of 20 leads with another page after it, the dashboard shows `Showing 20 leads` above
|
|
107
|
-
the list.
|
|
108
|
-
|
|
109
|
-
A clause with `:` finds a value that is exactly the same, with the same upper case and lower
|
|
110
|
-
case.
|
|
111
|
-
|
|
112
|
-
In a clause on the visit, `~` finds the value as text, and ignores the difference between
|
|
113
|
-
upper case and lower case. In a clause on the visit, `%` and `_` in the value match only `%`
|
|
114
|
-
and `_`.
|
|
115
|
-
|
|
116
|
-
## Values with a space
|
|
117
|
-
|
|
118
|
-
Put `"` at each end of a value that has a space. To search for `"` inside a value, write
|
|
119
|
-
`\"`.
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
details.company:"Acme Corporation"
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## Plain words
|
|
126
|
-
|
|
127
|
-
A plain word searches every answer that the visitor gave, and it includes the text inside
|
|
128
|
-
a JSON answer.
|
|
129
|
-
|
|
130
|
-
A plain word matches a whole word. `amy@example.com` finds the lead with that address, and
|
|
131
|
-
`example.com` finds nothing. To match a part of a value, name the field and use `~`:
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
email-address~example.com
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
Two plain words both must match.
|
|
138
|
-
|
|
139
|
-
## Examples
|
|
140
|
-
|
|
141
|
-
**Plain words**
|
|
142
|
-
|
|
143
|
-
| Query | What it finds |
|
|
144
|
-
| --- | --- |
|
|
145
|
-
| `melbourne` | Leads with `melbourne` in an answer |
|
|
146
|
-
| `amy@example.com` | The lead with that address |
|
|
147
|
-
| `Amy Rockwell` | Leads with both words in their answers |
|
|
148
|
-
| `dental` | Leads with `dental` inside a JSON answer |
|
|
149
|
-
|
|
150
|
-
**Labels**
|
|
151
|
-
|
|
152
|
-
| Query | What it finds |
|
|
153
|
-
| --- | --- |
|
|
154
|
-
| `details.phone:"0400000000"` | Leads with that exact telephone number |
|
|
155
|
-
| `details.email~example.com` | Leads with an email label that holds `example.com` |
|
|
156
|
-
| `acme.status:sent` | Leads that the `acme` workflow sent |
|
|
157
|
-
| `acme.status:*` | Leads with an `acme` status |
|
|
158
|
-
| `-acme.status:*` | Leads with no `acme` status, which no workflow took |
|
|
159
|
-
| `scoring.value>=50` | Leads with a score of 50 or more |
|
|
160
|
-
| `scoring.contacted:true` | Leads with that boolean label set to true |
|
|
161
|
-
| `crm.payload:*` | Leads with a JSON label under `crm` |
|
|
162
|
-
|
|
163
|
-
**Answers and the capture date**
|
|
164
|
-
|
|
165
|
-
| Query | What it finds |
|
|
166
|
-
| --- | --- |
|
|
167
|
-
| `suburb:Sydney` | Leads whose `suburb` answer is `Sydney` |
|
|
168
|
-
| `email-address~rocketrides` | Leads whose `email-address` answer holds `rocketrides` |
|
|
169
|
-
| `quote-preferences:*` | Leads that answered `quote-preferences` |
|
|
170
|
-
| `createdAt>2026-08-01` | Leads captured after that date |
|
|
171
|
-
| `userId:sess_7x2k9q3m1n4a` | Leads captured for that visitor |
|
|
172
|
-
|
|
173
|
-
**The visit that captured the lead**
|
|
174
|
-
|
|
175
|
-
| Query | What it finds |
|
|
176
|
-
| --- | --- |
|
|
177
|
-
| `session.utm_source:google` | Leads whose visit had the `utm_source` `google` |
|
|
178
|
-
| `session.utm_campaign~spring` | Leads whose visit had a `utm_campaign` that holds `spring` |
|
|
179
|
-
| `session.page_pathname:/quote` | Leads whose visit had the page `/quote` |
|
|
180
|
-
| `session.page_origin:shop.example.com` | Leads whose visit had a page on `shop.example.com` |
|
|
181
|
-
| `session.landing_page_pathname:/` | Leads whose visit started on the page `/` |
|
|
182
|
-
| `session.landing_page_query~utm_source=google` | Leads whose visit started on a page with `utm_source=google` in its query string |
|
|
183
|
-
| `session.gaid:*` | Leads whose visit had a Google Analytics ID |
|
|
184
|
-
| `-session.utm_source:*` | Leads whose visit had no `utm_source` |
|
|
185
|
-
| `session.utm_source:google OR session.utm_source:bing` | Leads whose visit had either `utm_source` |
|
|
186
|
-
|
|
187
|
-
**More than one clause**
|
|
188
|
-
|
|
189
|
-
| Query | What it finds |
|
|
190
|
-
| --- | --- |
|
|
191
|
-
| `details.first_name:Amy scoring.contacted:true` | Both clauses are true |
|
|
192
|
-
| `acme.status:sent OR acme.status:queued` | Either clause is true |
|
|
193
|
-
| `Sydney details.phone:"0400000000"` | A plain word and a label clause together |
|
|
194
|
-
|
|
195
|
-
## The `labels.` and `responses.` prefixes
|
|
196
|
-
|
|
197
|
-
A path takes an optional `labels.` or `responses.` prefix. Two cases need it:
|
|
198
|
-
|
|
199
|
-
- A label namespace with the name `labels`, `responses`, or `session`: write
|
|
200
|
-
`labels.responses.status:sent`.
|
|
201
|
-
- The key of a field that holds a full stop: write `responses.quote.preferences:*`. Without
|
|
202
|
-
the prefix the query reads that path as a label.
|
|
203
|
-
|
|
204
|
-
A field with the name `createdAt` or `userId` also needs the prefix. A path of one part with
|
|
205
|
-
that name reads as the capture date or the visitor.
|
|
206
|
-
|
|
207
|
-
## Errors
|
|
208
|
-
|
|
209
|
-
The search box shows an error, and the list does not change, for each of these:
|
|
210
|
-
|
|
211
|
-
| Cause | Example |
|
|
212
|
-
| --- | --- |
|
|
213
|
-
| A `"` with no second `"` | `details.company:"Acme` |
|
|
214
|
-
| A namespace or a key outside `a-z`, `0-9`, `_` and `-` | `Details.Phone:1` |
|
|
215
|
-
| An operator that the part does not accept | `createdAt~2026` |
|
|
216
|
-
| AND together with OR | `a.b:1 c.d:2 OR e.f:3` |
|
|
217
|
-
| More than 10 clauses | 11 clauses in one query |
|
|
218
|
-
| A visit field that does not exist | `session.referrer:x` |
|
|
219
|
-
| OR between a clause on the visit and a clause that is not | `session.utm_source:google OR labels.crm.status:sent` |
|
|
220
|
-
|
|
221
|
-
## Related
|
|
222
|
-
|
|
223
|
-
- [Fields](/reference/dashboard/fields) — the keys that name each answer
|
|
224
|
-
- [Glossary](/reference/glossary) — lead, label, and the other terms
|