picked 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 +27 -12
- package/docs/explanation/conditions-and-the-logic-engine.md +94 -0
- package/docs/explanation/content-references.md +99 -0
- package/docs/explanation/feature-flag-allocation.md +218 -0
- package/docs/explanation/how-picked-works.md +124 -0
- package/docs/explanation/how-pickedql-works.md +76 -0
- package/docs/explanation/pages-and-flows.md +64 -0
- package/docs/explanation/the-content-model.md +87 -0
- package/docs/explanation/the-two-apis.md +68 -0
- package/docs/explanation/why-server-side-rendering.md +76 -0
- package/docs/explanation/workspaces-and-versions.md +71 -0
- package/docs/how-to/add-a-step-field-or-action.md +56 -0
- package/docs/how-to/analytics/index.md +324 -0
- package/docs/how-to/archive-or-delete-a-workspace.md +59 -0
- package/docs/how-to/authenticate-the-cli.md +101 -0
- package/docs/how-to/authenticate-with-a-magic-link.md +56 -0
- package/docs/how-to/authenticate-with-a-password.md +68 -0
- package/docs/how-to/authenticate-with-an-api-key.md +60 -0
- package/docs/how-to/authenticate-with-oauth.md +49 -0
- package/docs/how-to/build-a-flow.md +106 -0
- package/docs/how-to/call-an-external-api-from-a-workflow.md +116 -0
- package/docs/how-to/connect-the-mcp-server.md +46 -0
- package/docs/how-to/create-a-content-entry.md +58 -0
- package/docs/how-to/create-a-project.md +40 -0
- package/docs/how-to/create-an-experience.md +51 -0
- package/docs/how-to/create-and-revoke-an-api-key.md +54 -0
- package/docs/how-to/debug-with-the-chrome-extension.md +57 -0
- package/docs/how-to/define-a-page-layout.md +54 -0
- package/docs/how-to/fill-and-publish-a-page.md +82 -0
- package/docs/how-to/install-the-gtm-template.md +84 -0
- package/docs/how-to/install-the-sdk.md +93 -0
- package/docs/how-to/install-the-vite-plugin.md +69 -0
- package/docs/how-to/invite-and-remove-members.md +45 -0
- package/docs/how-to/point-one-entry-at-another.md +75 -0
- package/docs/how-to/preview-a-workspace.md +39 -0
- package/docs/how-to/publish-a-workspace.md +42 -0
- package/docs/how-to/read-a-feature-flag.md +113 -0
- package/docs/how-to/read-a-referenced-entry.md +109 -0
- package/docs/how-to/register-a-component.md +55 -0
- package/docs/how-to/register-an-action-handler.md +85 -0
- package/docs/how-to/register-an-api-that-uses-oauth2.md +107 -0
- package/docs/how-to/render-a-step-form.md +131 -0
- package/docs/how-to/render-an-unpublished-preview.md +41 -0
- package/docs/how-to/retry-a-failed-call-with-a-loop.md +81 -0
- package/docs/how-to/reuse-a-section.md +64 -0
- package/docs/how-to/reuse-a-step-field-or-action.md +39 -0
- package/docs/how-to/roll-back-a-published-version.md +39 -0
- package/docs/how-to/run-an-ab-test.md +59 -0
- package/docs/how-to/run-code-on-a-form-submission.md +125 -0
- package/docs/how-to/server-render-a-page.md +81 -0
- package/docs/how-to/set-a-content-security-policy.md +32 -0
- package/docs/how-to/set-up-mfa.md +126 -0
- package/docs/how-to/switch-workspaces.md +122 -0
- package/docs/how-to/upload-and-use-an-asset.mdx +87 -0
- package/docs/how-to/validate-a-field.md +52 -0
- package/docs/how-to/wait-for-an-action-response.md +182 -0
- package/docs/how-to/write-a-condition.md +57 -0
- package/docs/how-to/write-a-predicate.md +60 -0
- package/docs/index.md +59 -0
- package/docs/reference/dashboard/actions.mdx +65 -0
- package/docs/reference/dashboard/api-keys.mdx +47 -0
- package/docs/reference/dashboard/conditions.mdx +51 -0
- package/docs/reference/dashboard/content/asset-library.mdx +74 -0
- package/docs/reference/dashboard/content/blocks.mdx +66 -0
- package/docs/reference/dashboard/content/content-entries.mdx +109 -0
- package/docs/reference/dashboard/content/models.mdx +119 -0
- package/docs/reference/dashboard/content/pages.mdx +72 -0
- package/docs/reference/dashboard/experiences.mdx +61 -0
- package/docs/reference/dashboard/external-apis.md +182 -0
- package/docs/reference/dashboard/features.mdx +165 -0
- package/docs/reference/dashboard/fields.mdx +120 -0
- package/docs/reference/dashboard/flow-builder/canvas.mdx +58 -0
- package/docs/reference/dashboard/flow-builder/condition-builder.md +69 -0
- package/docs/reference/dashboard/flow-builder/keyboard-shortcuts.md +72 -0
- package/docs/reference/dashboard/flow-builder/nodes.md +74 -0
- package/docs/reference/dashboard/labels.md +321 -0
- package/docs/reference/dashboard/lead-search.md +235 -0
- package/docs/reference/dashboard/projects.mdx +53 -0
- package/docs/reference/dashboard/reports.mdx +53 -0
- package/docs/reference/dashboard/steps.mdx +47 -0
- package/docs/reference/dashboard/team-management.md +38 -0
- package/docs/reference/dashboard/workflow-runs.md +157 -0
- package/docs/reference/dashboard/workflow-templates.md +182 -0
- package/docs/reference/dashboard/workflow-test-runs.md +85 -0
- package/docs/reference/dashboard/workspace-versioning.mdx +42 -0
- package/docs/reference/dashboard/workspaces.mdx +91 -0
- package/docs/reference/delivery-api/experience-content.md +152 -0
- package/docs/reference/delivery-api/index.md +45 -0
- package/docs/reference/delivery-api/preview-caching-crawling.md +79 -0
- package/docs/reference/delivery-api/project-config.md +65 -0
- package/docs/reference/delivery-api/workspace-schema.md +107 -0
- package/docs/reference/glossary.md +201 -0
- package/docs/reference/management-api/authentication.md +87 -0
- package/docs/reference/management-api/authorization-and-scopes.md +291 -0
- package/docs/reference/management-api/error-handling.md +232 -0
- package/docs/reference/management-api/pagination.md +192 -0
- package/docs/reference/management-api/schema/action.md +261 -0
- package/docs/reference/management-api/schema/analytics-session.md +363 -0
- package/docs/reference/management-api/schema/analytics.md +73 -0
- package/docs/reference/management-api/schema/api-key.md +170 -0
- package/docs/reference/management-api/schema/auth.md +1177 -0
- package/docs/reference/management-api/schema/cms-fields.md +954 -0
- package/docs/reference/management-api/schema/cms-models.md +1155 -0
- package/docs/reference/management-api/schema/common.md +362 -0
- package/docs/reference/management-api/schema/condition.md +254 -0
- package/docs/reference/management-api/schema/design-system.md +199 -0
- package/docs/reference/management-api/schema/experience.md +1098 -0
- package/docs/reference/management-api/schema/external-api.md +637 -0
- package/docs/reference/management-api/schema/feature.md +350 -0
- package/docs/reference/management-api/schema/feedback.md +103 -0
- package/docs/reference/management-api/schema/field.md +400 -0
- package/docs/reference/management-api/schema/index.md +243 -0
- package/docs/reference/management-api/schema/integration.md +272 -0
- package/docs/reference/management-api/schema/label.md +349 -0
- package/docs/reference/management-api/schema/lead.md +340 -0
- package/docs/reference/management-api/schema/mcp-server.md +299 -0
- package/docs/reference/management-api/schema/metric.md +223 -0
- package/docs/reference/management-api/schema/operation.md +96 -0
- package/docs/reference/management-api/schema/organization.md +749 -0
- package/docs/reference/management-api/schema/project.md +607 -0
- package/docs/reference/management-api/schema/report.md +243 -0
- package/docs/reference/management-api/schema/saved-view.md +288 -0
- package/docs/reference/management-api/schema/shopify.md +795 -0
- package/docs/reference/management-api/schema/step.md +273 -0
- package/docs/reference/management-api/schema/tenant-branding.md +185 -0
- package/docs/reference/management-api/schema/workbench.md +246 -0
- package/docs/reference/management-api/schema/workflow-run.md +263 -0
- package/docs/reference/management-api/schema/workflow.md +1110 -0
- package/docs/reference/management-api/schema/workspace-version.md +823 -0
- package/docs/reference/management-api/schema/workspace.md +917 -0
- package/docs/reference/pickedql/data-sources.md +174 -0
- package/docs/reference/pickedql/dimensions.md +103 -0
- package/docs/reference/pickedql/filtering.md +64 -0
- package/docs/reference/pickedql/index.md +18 -0
- package/docs/reference/pickedql/schema.md +172 -0
- package/docs/reference/pickedql/virtual-functions.md +248 -0
- package/docs/reference/sdk/actions.md +154 -0
- package/docs/reference/sdk/analytics-events.md +453 -0
- package/docs/reference/sdk/conditions.md +147 -0
- package/docs/reference/sdk/content-security-policy.md +21 -0
- package/docs/reference/sdk/content.md +253 -0
- package/docs/reference/sdk/experiences.md +51 -0
- package/docs/reference/sdk/features.md +256 -0
- package/docs/reference/sdk/fields.md +255 -0
- package/docs/reference/sdk/index.md +68 -0
- package/docs/reference/sdk/plugins/create-experience.md +123 -0
- package/docs/reference/sdk/plugins/dynamic-experiences.md +74 -0
- package/docs/reference/sdk/plugins/fingerprintjs.md +39 -0
- package/docs/reference/sdk/plugins/hotjar.md +60 -0
- package/docs/reference/sdk/plugins/index.md +33 -0
- package/docs/reference/sdk/plugins/sentry.md +51 -0
- package/docs/reference/sdk/plugins/shopify.md +109 -0
- package/docs/reference/sdk/plugins/window-object.md +25 -0
- package/docs/reference/sdk/predicates.md +43 -0
- package/docs/reference/sdk/react.md +61 -0
- package/docs/reference/sdk/ssr/index.md +33 -0
- package/docs/reference/sdk/ssr/rendering-and-hydration.md +103 -0
- package/docs/reference/sdk/ssr/serialize.md +80 -0
- package/docs/reference/sdk/ssr/slots-and-placements.md +113 -0
- package/docs/reference/sdk/steps.md +86 -0
- package/docs/reference/sdk/svelte.md +74 -0
- package/docs/reference/sdk/type-generation.md +265 -0
- package/docs/reference/tools/admin-api-client.md +89 -0
- package/docs/reference/tools/chrome-extension.md +16 -0
- package/docs/reference/tools/cli.md +319 -0
- package/docs/reference/tools/delivery-api-client.md +60 -0
- package/docs/reference/tools/image-optimisation-service.md +104 -0
- package/docs/reference/tools/mcp-run.md +121 -0
- package/docs/reference/tools/mcp.md +391 -0
- package/docs/reference/tools/vite-plugin.md +163 -0
- package/docs/tutorials/first-api-call.md +253 -0
- package/docs/tutorials/first-experience-in-the-dashboard.mdx +160 -0
- package/docs/tutorials/first-experience.mdx +254 -0
- package/docs/tutorials/first-server-rendered-page.mdx +186 -0
- package/package.json +8 -7
|
@@ -0,0 +1,235 @@
|
|
|
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
|
+
## API and MCP
|
|
222
|
+
|
|
223
|
+
You can also do this task with the [Management API](/reference/management-api/schema), the [MCP server](/reference/tools/mcp), or code that you send to [`picked_run`](/reference/tools/mcp-run).
|
|
224
|
+
|
|
225
|
+
| Task | GraphQL | MCP tool | Run |
|
|
226
|
+
| --- | --- | --- | --- |
|
|
227
|
+
| Search the leads | [`project`](/reference/management-api/schema/project#project) | None | None |
|
|
228
|
+
|
|
229
|
+
The `leads` field of the `project` query takes the same search text in its `query`
|
|
230
|
+
argument.
|
|
231
|
+
|
|
232
|
+
## Related
|
|
233
|
+
|
|
234
|
+
- [Fields](/reference/dashboard/fields) — the keys that name each answer
|
|
235
|
+
- [Glossary](/reference/glossary) — lead, label, and the other terms
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
## API and MCP
|
|
42
|
+
|
|
43
|
+
You can also do this task with the [Management API](/reference/management-api/schema), the [MCP server](/reference/tools/mcp), or code that you send to [`picked_run`](/reference/tools/mcp-run).
|
|
44
|
+
|
|
45
|
+
| Task | GraphQL | MCP tool | Run |
|
|
46
|
+
| --- | --- | --- | --- |
|
|
47
|
+
| List the projects | [`projects`](/reference/management-api/schema/project#projects) | [`list_projects`](/reference/tools/mcp#list_projects) | `tools.list_projects()` |
|
|
48
|
+
| List the workspaces in a project | [`project`](/reference/management-api/schema/project#project) | [`list_workspaces`](/reference/tools/mcp#list_workspaces) | `tools.list_workspaces({ project_id })` |
|
|
49
|
+
|
|
50
|
+
## Related
|
|
51
|
+
|
|
52
|
+
- [How to create a project](/how-to/create-a-project)
|
|
53
|
+
- [How to install the SDK](/how-to/install-the-sdk)
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
## API and MCP
|
|
41
|
+
|
|
42
|
+
You can also do this task with the [Management API](/reference/management-api/schema), the [MCP server](/reference/tools/mcp), or code that you send to [`picked_run`](/reference/tools/mcp-run).
|
|
43
|
+
|
|
44
|
+
| Task | GraphQL | MCP tool | Run |
|
|
45
|
+
| --- | --- | --- | --- |
|
|
46
|
+
| Create a report | [`reportCreate`](/reference/management-api/schema/report#reportcreate) | None | None |
|
|
47
|
+
| Edit a report | [`reportUpdate`](/reference/management-api/schema/report#reportupdate) | None | None |
|
|
48
|
+
| Delete a report | [`reportDelete`](/reference/management-api/schema/report#reportdelete) | None | None |
|
|
49
|
+
|
|
50
|
+
## Related
|
|
51
|
+
|
|
52
|
+
- [Analytics queries](/how-to/analytics) — query the same data with SQL.
|
|
53
|
+
- [About PickedQL](/explanation/how-pickedql-works) — what the query layer expands.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Screenshot } from '../../../../components/Screenshot'
|
|
7
|
+
|
|
8
|
+
# Steps
|
|
9
|
+
|
|
10
|
+
A step is one screen or card that a visitor sees during an experience. Each step
|
|
11
|
+
holds one or more fields. A field collects data or shows content.
|
|
12
|
+
|
|
13
|
+
<Screenshot
|
|
14
|
+
route="/{orgSlug}/{projectId}/workspaces/{workspaceId}/steps"
|
|
15
|
+
alt="The steps list for a workspace on the Picked dashboard"
|
|
16
|
+
/>
|
|
17
|
+
|
|
18
|
+
## Set up a step
|
|
19
|
+
|
|
20
|
+
**Name**: The name that the dashboard shows. Your visitors do not see it.
|
|
21
|
+
|
|
22
|
+
**Key**: The identifier that your application uses for this step. Your
|
|
23
|
+
visitors do not see it.
|
|
24
|
+
|
|
25
|
+
**Layout Name**: The name of the component layout that renders this step. Examples
|
|
26
|
+
are `card`, `modal`, and `fullscreen`.
|
|
27
|
+
|
|
28
|
+
A step can also carry a **Step Layout**. A step layout is a reusable CMS schema, and
|
|
29
|
+
it gives the step a Content Entry. See [Models](/reference/dashboard/content/models).
|
|
30
|
+
|
|
31
|
+
## API and MCP
|
|
32
|
+
|
|
33
|
+
You can also do this task with the [Management API](/reference/management-api/schema), the [MCP server](/reference/tools/mcp), or code that you send to [`picked_run`](/reference/tools/mcp-run).
|
|
34
|
+
|
|
35
|
+
| Task | GraphQL | MCP tool | Run |
|
|
36
|
+
| --- | --- | --- | --- |
|
|
37
|
+
| Create a step | [`stepCreate`](/reference/management-api/schema/step#stepcreate), [`experienceFlowUpdate`](/reference/management-api/schema/experience#experienceflowupdate) | [`update_experience_flow`](/reference/tools/mcp#update_experience_flow) | `tools.update_experience_flow({ experience_id, workspace_id, create_steps, create_nodes })` |
|
|
38
|
+
| Change the layout name of a step | [`stepUpdate`](/reference/management-api/schema/step#stepupdate), [`experienceFlowUpdate`](/reference/management-api/schema/experience#experienceflowupdate) | [`update_experience_flow`](/reference/tools/mcp#update_experience_flow) | `tools.update_experience_flow({ experience_id, workspace_id, update_steps })` |
|
|
39
|
+
| Give a step a Content Entry | [`stepUpdate`](/reference/management-api/schema/step#stepupdate) | [`update_step`](/reference/tools/mcp#update_step) | `tools.update_step({ step_id, layout_content_entry_id })` |
|
|
40
|
+
|
|
41
|
+
## Related
|
|
42
|
+
|
|
43
|
+
- [How to add a step, a field, an action, or a condition](/how-to/add-a-step-field-or-action)
|
|
44
|
+
|
|
45
|
+
- [How to build a flow](/how-to/build-a-flow) — add a step and assign fields to it.
|
|
46
|
+
- [How to reuse a step, a field, or an action](/how-to/reuse-a-step-field-or-action)
|
|
47
|
+
- [Models](/reference/dashboard/content/models) — the step layout schema.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Team management
|
|
7
|
+
|
|
8
|
+
Control who can reach your organization and what each person can do. An organization
|
|
9
|
+
is the top-level container for your projects and members.
|
|
10
|
+
|
|
11
|
+
## Organizations
|
|
12
|
+
|
|
13
|
+
An organization groups your projects, your members, and your settings. You can belong
|
|
14
|
+
to more than one organization.
|
|
15
|
+
|
|
16
|
+
To move between organizations, use the organization control at the top of the
|
|
17
|
+
sidebar.
|
|
18
|
+
|
|
19
|
+
## Roles and permissions
|
|
20
|
+
|
|
21
|
+
Each member holds a role, and the role controls what the member can reach. A role
|
|
22
|
+
decides whether a member can create a project, edit an experience, control other
|
|
23
|
+
members, or read a report.
|
|
24
|
+
|
|
25
|
+
Give each member the smallest role that the work of that member needs.
|
|
26
|
+
|
|
27
|
+
## API and MCP
|
|
28
|
+
|
|
29
|
+
You can also do this task with the [Management API](/reference/management-api/schema), the [MCP server](/reference/tools/mcp), or code that you send to [`picked_run`](/reference/tools/mcp-run).
|
|
30
|
+
|
|
31
|
+
| Task | GraphQL | MCP tool | Run |
|
|
32
|
+
| --- | --- | --- | --- |
|
|
33
|
+
| List your organizations | [`organizations`](/reference/management-api/schema/organization#organizations) | [`list_projects`](/reference/tools/mcp#list_projects) | `tools.list_projects()` |
|
|
34
|
+
| Set what a member can do | [`organizationMemberScopesUpdate`](/reference/management-api/schema/organization#organizationmemberscopesupdate) | None | None |
|
|
35
|
+
|
|
36
|
+
## Related
|
|
37
|
+
|
|
38
|
+
- [How to invite and remove members](/how-to/invite-and-remove-members)
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Workflow runs
|
|
7
|
+
|
|
8
|
+
A run is one execution of a published workflow. An event or an action starts it. Picked
|
|
9
|
+
records each run, each node that the run reached, and each lead that the run created or
|
|
10
|
+
changed.
|
|
11
|
+
|
|
12
|
+
## Where runs show
|
|
13
|
+
|
|
14
|
+
| Page | Address | Content |
|
|
15
|
+
| ---- | ----------------------------------- | -------------------------------------------------------------------------------------------- |
|
|
16
|
+
| Runs | `…/workflows/<workflow>/runs` | The runs of one workflow, the last run first. Open it with the **Runs** tab of the workflow. |
|
|
17
|
+
| Run | `…/workflows/<workflow>/runs/<run>` | One run: its records, its tasks, its details and its labels. |
|
|
18
|
+
| Lead | `…/leads/<lead>` | The **Workflow runs** card. It lists the runs that created or changed the lead. |
|
|
19
|
+
|
|
20
|
+
A run starts only from a published version of the workspace. A change to a workflow that
|
|
21
|
+
you did not publish does not start runs.
|
|
22
|
+
|
|
23
|
+
## Run status
|
|
24
|
+
|
|
25
|
+
| Status | Meaning |
|
|
26
|
+
| ----------- | ----------------------------------------------------------------------------------------------- |
|
|
27
|
+
| `Running` | The run started and did not stop yet. A **Wait** node can keep a run in this status for days. |
|
|
28
|
+
| `Completed` | Each node that the run reached did its work, or failed and the run continued on its error exit. |
|
|
29
|
+
| `Failed` | A node failed. The run stopped at that node. The run shows the reason. |
|
|
30
|
+
|
|
31
|
+
A tool node that fails with an edge on its error exit shows `Failed` on its task. The run
|
|
32
|
+
continues on that edge only when the tool itself fails:
|
|
33
|
+
|
|
34
|
+
- An External API call fails. Refer to the [External APIs reference](/reference/dashboard/external-apis#errors).
|
|
35
|
+
- Another tool refuses the request. For example, a label value is not a number for a
|
|
36
|
+
`number` label, or the lead does not exist. The tool also refuses a row with `increment`
|
|
37
|
+
on a label that is not a `number` label. It refuses some project labels and run labels
|
|
38
|
+
with a key in the format of a hash. Refer to the [Labels reference](/reference/dashboard/labels).
|
|
39
|
+
|
|
40
|
+
When the tool refuses the request, the error record has the code `tool_failed` and a
|
|
41
|
+
reason from the tool, for example `value_invalid_for_type`, `label_write_invalid` or
|
|
42
|
+
`owner_not_found`.
|
|
43
|
+
|
|
44
|
+
Other failures stop the run, with or without an edge on the error exit:
|
|
45
|
+
|
|
46
|
+
- A required argument has no value.
|
|
47
|
+
- An argument has a value that the tool does not accept:
|
|
48
|
+
- The value has the wrong type.
|
|
49
|
+
- The value is not one of the options.
|
|
50
|
+
- A number is not in the range that the tool accepts.
|
|
51
|
+
- A label namespace or key does not have the correct format.
|
|
52
|
+
- Two labels have the same namespace and key.
|
|
53
|
+
- A list of labels is empty.
|
|
54
|
+
- A label row has `value` and `increment`, or neither.
|
|
55
|
+
- A label row has `increment` and `onlyIfAbsent`, or `increment` and a type other than
|
|
56
|
+
`number`.
|
|
57
|
+
- An `expiresIn` is not a whole number from 1 to 31536000.
|
|
58
|
+
- A template cannot be rendered.
|
|
59
|
+
- The workflow does not have a scope that the tool needs.
|
|
60
|
+
- The tool gives output that is not valid.
|
|
61
|
+
- An error occurs in Picked.
|
|
62
|
+
|
|
63
|
+
## Visit cap
|
|
64
|
+
|
|
65
|
+
A run can go back to a node that it reached before, on a loop. Each time that the run gets
|
|
66
|
+
to a node is a visit. The visit cap is the maximum number of visits to one node in a run.
|
|
67
|
+
|
|
68
|
+
| Setting | Value |
|
|
69
|
+
| ------------- | ------------------------------------------------------------------ |
|
|
70
|
+
| **Visit cap** | A number from 1 to 100. If you do not set it, the visit cap is 10. |
|
|
71
|
+
|
|
72
|
+
Set the visit cap in the workflow settings. In the definition of the workflow, the field is
|
|
73
|
+
`maxNodeVisits`.
|
|
74
|
+
|
|
75
|
+
A node can get to the visit cap. If the run then gets to the node again, the run stops.
|
|
76
|
+
The run shows `Failed`, with the code `loop_limit_reached` and the ID of the node. Refer to [How to retry a failed call with a loop](/how-to/retry-a-failed-call-with-a-loop).
|
|
77
|
+
|
|
78
|
+
When you save a workflow, Picked refuses these loops:
|
|
79
|
+
|
|
80
|
+
- A loop that does not have a sleep node on it.
|
|
81
|
+
- A loop that does not have a condition node on it.
|
|
82
|
+
- An edge from a node to the same node.
|
|
83
|
+
- A loop with the **Action response** node on it.
|
|
84
|
+
|
|
85
|
+
## Records
|
|
86
|
+
|
|
87
|
+
The **Records** card lists each lead that the run created or changed. It shows each lead
|
|
88
|
+
one time.
|
|
89
|
+
|
|
90
|
+
| Label | Meaning |
|
|
91
|
+
| --------- | -------------------------------------------------------------------------------------------------- |
|
|
92
|
+
| `Created` | A node of the run created the lead. This label replaces `Updated` for the same lead. |
|
|
93
|
+
| `Updated` | A node of the run changed the lead or its labels. |
|
|
94
|
+
| `Deleted` | A node of the run deleted the lead. This label replaces `Created` and `Updated` for the same lead. |
|
|
95
|
+
|
|
96
|
+
When a lead does not exist now, the card shows `Deleted lead` and the ID of the lead,
|
|
97
|
+
with no link.
|
|
98
|
+
|
|
99
|
+
## Tasks
|
|
100
|
+
|
|
101
|
+
A task is one visit to a node. The **Tasks** card lists the tasks in the order that the
|
|
102
|
+
run reached them. When the run visits a node more than one time, each visit is a task.
|
|
103
|
+
A task of a later visit shows the number of the visit, such as `visit 2`.
|
|
104
|
+
|
|
105
|
+
The card shows 50 tasks. **Show more tasks** adds the next 50.
|
|
106
|
+
|
|
107
|
+
| Column | Value |
|
|
108
|
+
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
109
|
+
| Name | The tool of a tool node, or the kind of node: **Start**, **Condition** or **Wait**. |
|
|
110
|
+
| Node | The ID of the node. It links to the node in the editor while the workflow has the node. |
|
|
111
|
+
| Status | `Running`, `Succeeded` or `Failed`. |
|
|
112
|
+
| Time | The time from the start of the task to its end. |
|
|
113
|
+
| Operations | The leads and the labels that the task created, changed or removed, the first operation first. A label shows its namespace and its key. It never shows its value. |
|
|
114
|
+
|
|
115
|
+
A condition task does not show which branch it chose.
|
|
116
|
+
|
|
117
|
+
## Labels
|
|
118
|
+
|
|
119
|
+
The **Labels** card shows the labels of the run. A user with `ORGANIZATION_PROJECTS_UPDATE` can
|
|
120
|
+
change, add and remove them. Refer to [Labels in the dashboard](/reference/dashboard/labels#labels-in-the-dashboard).
|
|
121
|
+
|
|
122
|
+
## Leads and runs
|
|
123
|
+
|
|
124
|
+
A lead lists a run when a node of that run created the lead, set one of its labels, or
|
|
125
|
+
removed one of its labels. A change to the labels of a lead is a change to the lead.
|
|
126
|
+
|
|
127
|
+
The **Workflow runs** card shows 20 runs. **Show older runs** adds the next 20.
|
|
128
|
+
|
|
129
|
+
## Access
|
|
130
|
+
|
|
131
|
+
| Surface | Scopes |
|
|
132
|
+
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
133
|
+
| Runs, Run | `ORGANIZATION_WORKSPACE_READ` and `ORGANIZATION_PROJECTS_READ` |
|
|
134
|
+
| The labels of a run | `ORGANIZATION_PROJECTS_READ` to read them, and `ORGANIZATION_PROJECTS_UPDATE` to change them |
|
|
135
|
+
| The **Runs** tab of the workflow | `ORGANIZATION_WORKSPACE_READ` and `ORGANIZATION_PROJECTS_READ`. Without these scopes, the workflow does not show the **Runs** tab. |
|
|
136
|
+
| Workflow runs card | `ORGANIZATION_LEADS_READ` for the lead, and `ORGANIZATION_WORKSPACE_READ` and `ORGANIZATION_PROJECTS_READ` for its runs. Without the last two scopes, the card does not show. |
|
|
137
|
+
|
|
138
|
+
## Deleted workflows
|
|
139
|
+
|
|
140
|
+
A run stays after you delete its workflow. The run page and the lead card show it as
|
|
141
|
+
**Deleted workflow**. The **Runs** page of a deleted workflow does not exist, and the run
|
|
142
|
+
page has no link to the editor.
|
|
143
|
+
|
|
144
|
+
## API and MCP
|
|
145
|
+
|
|
146
|
+
You can also do this task with the [Management API](/reference/management-api/schema), the [MCP server](/reference/tools/mcp), or code that you send to [`picked_run`](/reference/tools/mcp-run).
|
|
147
|
+
|
|
148
|
+
| Task | GraphQL | MCP tool | Run |
|
|
149
|
+
| --- | --- | --- | --- |
|
|
150
|
+
| List the runs of a workflow | [`workflow`](/reference/management-api/schema/workflow#workflow) | [`list_workflow_runs`](/reference/tools/mcp#list_workflow_runs) | `tools.list_workflow_runs({ workflow_id })` |
|
|
151
|
+
| Read a run | [`workflowRun`](/reference/management-api/schema/workflow-run#workflowrun) | [`get_workflow_run`](/reference/tools/mcp#get_workflow_run) | `tools.get_workflow_run({ run_id })` |
|
|
152
|
+
| List the tasks of a run | [`workflowRun`](/reference/management-api/schema/workflow-run#workflowrun) | [`list_workflow_run_tasks`](/reference/tools/mcp#list_workflow_run_tasks) | `tools.list_workflow_run_tasks({ run_id })` |
|
|
153
|
+
| List the runs of a lead | [`lead`](/reference/management-api/schema/lead#lead) | None | None |
|
|
154
|
+
|
|
155
|
+
The `workflow` query gives the runs in its `runs` field. The `workflowRun` query gives
|
|
156
|
+
the tasks in its `tasks` field. The `lead` query gives the runs in its `workflowRuns`
|
|
157
|
+
field.
|