@aglyn/aglyn 1.0.0-beta.196 → 1.0.0-beta.198
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/package.json +11 -11
- package/src/lib/app-utils/consent-group-change.d.ts +519 -0
- package/src/lib/app-utils/consent-group-change.js +671 -0
- package/src/lib/app-utils/consent-group-change.js.map +1 -0
- package/src/lib/app-utils/consent-groups.d.ts +106 -8
- package/src/lib/app-utils/consent-groups.js +163 -8
- package/src/lib/app-utils/consent-groups.js.map +1 -1
- package/src/lib/app-utils/contact-merge.js +37 -4
- package/src/lib/app-utils/contact-merge.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +7 -7
- package/src/lib/app-utils/docs-help.generated.js +14 -0
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +49 -35
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/health-report.js +13 -0
- package/src/lib/app-utils/health-report.js.map +1 -1
- package/src/lib/app-utils/marketing-consent.d.ts +59 -0
- package/src/lib/app-utils/marketing-consent.js +86 -0
- package/src/lib/app-utils/marketing-consent.js.map +1 -1
- package/src/lib/foundation/definitions/org-billing.types.d.ts +22 -3
- package/src/lib/foundation/definitions/org-billing.types.js.map +1 -1
- package/src/lib/plugin-manager/plugin-consent-group-change.d.ts +116 -0
- package/src/lib/plugin-manager/plugin-consent-group-change.js +113 -0
- package/src/lib/plugin-manager/plugin-consent-group-change.js.map +1 -0
- package/src/lib/plugin-manager/plugin-contact-capture.d.ts +8 -0
- package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -1
|
@@ -1500,7 +1500,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
1500
1500
|
title: 'Reusable components',
|
|
1501
1501
|
heading: 'Manage',
|
|
1502
1502
|
anchor: '#manage',
|
|
1503
|
-
text: 'From the site\'s Components page you can rename, edit the description, open the besigner, or delete a reusable component. The component\'s ID is persisted inside every screen that places it and never changes.\nYou can also give a component its own icon, from the same picker the besigner uses for icon elements — either in the Edit component dialog on the Components page, or on the component\'s detail page. Every instance is then marked with it: in the hierarchy, on the canvas badge, and in the element drawer under Your components. A page assembled from promoted sections becomes readable at a glance. Components without an icon keep the generic package glyph.\nFilters in the Components table\'s toolbar narrows the list by name, Used in (page or email), ID, description, or date, and Search matches any word of the name, ID, or description. Each filter in force shows as a chip above the table. The list pages as you go, so
|
|
1503
|
+
text: 'From the site\'s Components page you can rename, edit the description, open the besigner, or delete a reusable component. The component\'s ID is persisted inside every screen that places it and never changes.\nYou can also give a component its own icon, from the same picker the besigner uses for icon elements — either in the Edit component dialog on the Components page, or on the component\'s detail page. Every instance is then marked with it: in the hierarchy, on the canvas badge, and in the element drawer under Your components. A page assembled from promoted sections becomes readable at a glance. Components without an icon keep the generic package glyph.\nFilters in the Components table\'s toolbar narrows the list by name, Used in (page or email), ID, description, or date, and Search matches any word of the name, ID, or description. Each filter in force shows as a chip above the table. The list pages as you go, so the first filter or search reads 100 components and matches over them, and paging past the last match reads further. See Filter and search a list.'
|
|
1504
1504
|
},
|
|
1505
1505
|
{
|
|
1506
1506
|
path: '/building-sites/besigner/reusable-components',
|
|
@@ -2263,7 +2263,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
2263
2263
|
title: 'Layouts',
|
|
2264
2264
|
heading: 'Find a layout',
|
|
2265
2265
|
anchor: '#find-a-layout',
|
|
2266
|
-
text: 'The site\'s Layouts page lists every layout. Filters in the table\'s toolbar narrows it by display name, ID, description, or the date it was created or last updated, and Search matches any word of the name, ID, or description. Each filter in force shows as a chip above the table; remove a chip to drop it. The list pages as you go, so
|
|
2266
|
+
text: 'The site\'s Layouts page lists every layout. Filters in the table\'s toolbar narrows it by display name, ID, description, or the date it was created or last updated, and Search matches any word of the name, ID, or description. Each filter in force shows as a chip above the table; remove a chip to drop it. The list pages as you go, so the first filter or search reads 100 layouts and matches over them, and paging past the last match reads further; the table says so while more remain. See Filter and search a list.'
|
|
2267
2267
|
},
|
|
2268
2268
|
{
|
|
2269
2269
|
path: '/building-sites/screens-and-layouts/layouts',
|
|
@@ -2774,7 +2774,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
2774
2774
|
title: 'Build a blog',
|
|
2775
2775
|
heading: '2. Write entries',
|
|
2776
2776
|
anchor: '#2-write-entries',
|
|
2777
|
-
text: 'Add rich blog entries with images, a live preview, and scheduling so posts publish at the right time.\nNew entry, or clicking any row in the entries table, opens that entry on its own page. The page has its own address, so you can bookmark an entry you\'re mid-way through or paste the link to a colleague and they land on the same one. Back to entries — or your browser\'s Back button — returns to the list; if the entry has edits you haven\'t saved, you\'re asked before they\'re dropped.\nThe table opens with the most recently Published entries first. A scheduled entry sorts by the date it\'s due to go out, so the next posts in your queue open the list, and when you reverse the column they come last among the dated entries. Click the Title, Status, Updated or Published header to sort by that column, and again to reverse it. Entries with nothing in the sorted column, such as a draft with no published date, follow the rest in either direction rather than dropping out. Filters in the table\'s toolbar narrows the list to one Status or one Category across the whole collection, not only the page you\'re on, and the filter in force shows as a chip above the table.\nEach entry carries, besides the title, excerpt, cover image, and markdown body:\n- Category — a single bucket (e.g. Guides) used for filtering and related posts, picked from the collection\'s category list (see below), never typed free-form.\n- Tags — comma-separated labels (e.g. nextjs, seo).\n- Author — the entry\'s byline: an author record from the Authors tab or a one-off custom byline. An entry needs one to be published or scheduled; a draft can be saved without it. See Authors.\n- SEO title / SEO
|
|
2777
|
+
text: 'Add rich blog entries with images, a live preview, and scheduling so posts publish at the right time.\nNew entry, or clicking any row in the entries table, opens that entry on its own page. The page has its own address, so you can bookmark an entry you\'re mid-way through or paste the link to a colleague and they land on the same one. Back to entries — or your browser\'s Back button — returns to the list; if the entry has edits you haven\'t saved, you\'re asked before they\'re dropped.\nThe table opens with the most recently Published entries first. A scheduled entry sorts by the date it\'s due to go out, so the next posts in your queue open the list, and when you reverse the column they come last among the dated entries. Click the Title, Status, Updated or Published header to sort by that column, and again to reverse it. Entries with nothing in the sorted column, such as a draft with no published date, follow the rest in either direction rather than dropping out. Filters in the table\'s toolbar narrows the list to one Status or one Category across the whole collection, not only the page you\'re on, and the filter in force shows as a chip above the table. One filter applies at a time, so a new one replaces the last, and the entries table has no search box. See Filter and search a list.\nEach entry carries, besides the title, excerpt, cover image, and markdown body:\n- Category — a single bucket (e.g. Guides) used for filtering and related posts, picked from the collection\'s category list (see below), never typed free-form.\n- Tags — comma-separated labels (e.g. nextjs, seo).\n- Author — the entry\'s byline: an author record from the Authors tab or a one-off custom byline. An entry needs one to be published or scheduled; a draft can be saved without it. See Authors.\n- SEO title / SEO d'
|
|
2778
2778
|
},
|
|
2779
2779
|
{
|
|
2780
2780
|
path: '/building-sites/site-templates/build-a-blog',
|
|
@@ -2886,7 +2886,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
2886
2886
|
title: 'Your templates library',
|
|
2887
2887
|
heading: '',
|
|
2888
2888
|
anchor: '',
|
|
2889
|
-
text: 'Your templates library\nTemplates are saved starting points. A template is inert: nothing in your library is on your live site until you deliberately use it. That is the whole point of the library — it means installing something from the marketplace can never publish pages to a site you are running.\nFind it at Templates in a site\'s navigation, alongside Screens, Layouts and Components — the three things a template can produce.\nA template is a copy, not a live link: once you use one, the result is yours outright and editing the template never changes what you already made. If you want one edit to update every place a thing appears, you want a reusable component. If you want one frame around many pages, you want a layout.\nFilters in the library\'s toolbar narrows it by Kind (page, component, or layout), Source (marketplace, starter, or saved here), name, description, or date, and Search matches any word of the name or
|
|
2889
|
+
text: 'Your templates library\nTemplates are saved starting points. A template is inert: nothing in your library is on your live site until you deliberately use it. That is the whole point of the library — it means installing something from the marketplace can never publish pages to a site you are running.\nFind it at Templates in a site\'s navigation, alongside Screens, Layouts and Components — the three things a template can produce.\nA template is a copy, not a live link: once you use one, the result is yours outright and editing the template never changes what you already made. If you want one edit to update every place a thing appears, you want a reusable component. If you want one frame around many pages, you want a layout.\nFilters in the library\'s toolbar narrows it by Kind (page, component, or layout), Source (marketplace, starter, or saved here), name, description, or date, and Search matches any word of the name, description or template ID. Filters look at every template the library read — its first 200 — not only the page on screen, and each one in force shows as a chip above the table. See Filter and search a list.'
|
|
2890
2890
|
},
|
|
2891
2891
|
{
|
|
2892
2892
|
path: '/building-sites/site-templates/templates-library',
|
|
@@ -3152,7 +3152,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
3152
3152
|
title: 'Commerce',
|
|
3153
3153
|
heading: 'Products hub',
|
|
3154
3154
|
anchor: '#products-hub',
|
|
3155
|
-
text: 'The Products page is the catalog manager:\n- Products with up to 3 options and 100 variants each — per-variant SKU, barcode, price, compare-at (sale badge), weight, and stock. See Product catalog.\n- Categories & collections — a category tree plus manual and smart (rule-based) collections with a live match preview.\n- CSV import/export in the Shopify column dialect, with a dry-run report — switching from Shopify is a file upload.\n- Payments — Stripe Connect onboarding status and your plan\'s fee ladder.\nThe product list filters through its own toolbar. Search looks for the text in the field Search in names — Name, SKU (whole) or Barcode (whole) — and reaches the whole catalog, not only the rows on screen. Filters offers Status (Active, Draft, Archived); on its own it also reaches the whole catalog, and beside a search it narrows that search\'s matches. Each filter in force shows as a chip above the table; remove the chip to clear it.'
|
|
3155
|
+
text: 'The Products page is the catalog manager:\n- Products with up to 3 options and 100 variants each — per-variant SKU, barcode, price, compare-at (sale badge), weight, and stock. See Product catalog.\n- Categories & collections — a category tree plus manual and smart (rule-based) collections with a live match preview.\n- CSV import/export in the Shopify column dialect, with a dry-run report — switching from Shopify is a file upload.\n- Payments — Stripe Connect onboarding status and your plan\'s fee ladder.\nThe product list filters through its own toolbar. Search looks for the text in the field Search in names — Name, SKU (whole) or Barcode (whole) — and reaches the whole catalog, not only the rows on screen. Filters offers Status (Active, Draft, Archived); on its own it also reaches the whole catalog, and beside a search it narrows that search\'s matches. Each filter in force shows as a chip above the table; remove the chip to clear it. A search reads up to 500 matching products and uses the first word you type, matched on the start of a word. See Filter and search a list.'
|
|
3156
3156
|
},
|
|
3157
3157
|
{
|
|
3158
3158
|
path: '/commerce-and-bookings/commerce/overview',
|
|
@@ -3579,7 +3579,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
3579
3579
|
title: 'Companies',
|
|
3580
3580
|
heading: 'The companies list',
|
|
3581
3581
|
anchor: '#the-companies-list',
|
|
3582
|
-
text: 'The list shows every company your site may see, newest activity first, with its domain, how many contacts are linked to it, its owner, when it was last changed and its next activity — when the earliest open task against it is due. The table\'s Search box, or Filters › Company, finds a company by the start of its name — the search reaches every company, not only the page on screen — Filters › Owner shows one teammate\'s accounts, and Next activity › is empty keeps only the companies with nothing scheduled. Clicking a row opens the company\'s page.\nThe Contacts column is a count kept on the company and moved with every link and unlink, so a page of companies costs no lookup per row. A company linked before the count existed can read lower than its page shows; the company\'s own page counts live, and is the figure to trust when the two differ.'
|
|
3582
|
+
text: 'The list shows every company your site may see, newest activity first, with its domain, how many contacts are linked to it, its owner, when it was last changed and its next activity — when the earliest open task against it is due. The table\'s Search box, or Filters › Company, finds a company by the start of its name — the search reaches every company, not only the page on screen — Filters › Owner shows one teammate\'s accounts, and Next activity › is empty keeps only the companies with nothing scheduled. Company and Owner are answered by the query, one at a time — a new one replaces the other — while Next activity narrows the page already loaded and stays beside either; see Filter and search a list. Clicking a row opens the company\'s page.\nThe Contacts column is a count kept on the company and moved with every link and unlink, so a page of companies costs no lookup per row. A company linked before the count existed can read lower than its page shows; the company\'s own page counts live, and is the figure to trust when the two differ.'
|
|
3583
3583
|
},
|
|
3584
3584
|
{
|
|
3585
3585
|
path: '/content-and-data/crm/companies',
|
|
@@ -3684,7 +3684,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
3684
3684
|
title: 'The contact record',
|
|
3685
3685
|
heading: 'What each site keeps to itself',
|
|
3686
3686
|
anchor: '#what-each-site-keeps-to-itself',
|
|
3687
|
-
text: 'A contact document is shared by every site in your workspace — one human who touched two of your sites is one row. Almost nothing on it is shared: the notes, tags, timeline, phone, title, company, address, owner and stage are one
|
|
3687
|
+
text: 'A contact document is shared by every site in your workspace — one human who touched two of your sites is one row. Almost nothing on it is shared: the notes, tags, timeline, phone, title, company, address, owner and stage are one sender\'s knowledge of the person and are never shown to another sender\'s console. A sender is one site, or, where your organization has declared several sites one sender, the whole group, which keeps one record for everyone its sites have met. The email and the name the person gave are the only shared identity.\nWhen sites join or leave a group {#when-sites-join-or-leave-a-group}\nChanging a consent group moves these records with it, once the new group has taken effect:\n- Sites that join have their records of the same person combined into one. Where two records disagree about a single value — the owner, the stage, the company — the group\'s is kept, or, for a new group, the one from the site that met the person first. Tags and other lists are combined, notes are kept end to end, the earliest and latest dates are kept, and figures such as order totals are added together.\n- A site that leaves gets a copy of the group\'s record for each person it met itself, with the timeline entries from that site. The group keeps its record. The copy carries the person\'s order totals only when the leaving site is the only one that captured them; otherwise the totals stay with the group.\n- Dissolving a group gives each site a copy on the same terms. Order totals for someone who bought on more than one of the group\'s sites can\'t be split, so they are removed.\n- Company links, and each company\'s count of contacts, are recalculated as records move.\nThe review before the change counts how many people each of these affects. While the change is being applied, a person can '
|
|
3688
3688
|
},
|
|
3689
3689
|
{
|
|
3690
3690
|
path: '/content-and-data/crm/contact-record',
|
|
@@ -3719,7 +3719,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
3719
3719
|
title: 'The contact record',
|
|
3720
3720
|
heading: 'Finding a contact',
|
|
3721
3721
|
anchor: '#finding-a-contact',
|
|
3722
|
-
text: 'The list\'s
|
|
3722
|
+
text: 'The list\'s filters reach every contact by name or email, one served filter at a time, and its search box narrows the thousand contacts the list read — see Filters on the Contacts list. The console\'s search (the magnifying glass in the top bar) finds contacts too — by name, email, phone number or company name — and opens the person\'s page. Contacts appear in that search only for members who can manage data on the site, and only while the CRM is available to them.\nThe phone number and company name are kept on the record itself for that lookup, as this site last saved them; the values you see on a person\'s page are always your own site\'s.'
|
|
3723
3723
|
},
|
|
3724
3724
|
{
|
|
3725
3725
|
path: '/content-and-data/crm/contact-record',
|
|
@@ -3824,7 +3824,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
3824
3824
|
title: 'Deals pipeline',
|
|
3825
3825
|
heading: 'The board and the table',
|
|
3826
3826
|
anchor: '#the-board-and-the-table',
|
|
3827
|
-
text: 'The section opens as a board of the chosen pipeline: one column per open stage, with Won and Lost folded away at the end until you expand them. Each card shows the deal\'s title, amount, the contact and company it is with, its owner, and how many days it has sat in its current stage. Drag a card between columns to move it, or use the card\'s menu to move it, mark it won, or mark it lost from the keyboard.\nAbove the board, three figures summarize what is open: the open count, the pipeline value (every open deal\'s amount, per currency) and the weighted value (each amount multiplied by its stage\'s probability).\nSwitch to the table for a paged list with the title, stage, amount, owner, expected close date, status and next activity of every deal in the pipeline, including the closed ones. The table\'s Filters panel narrows it by Status (open, won or lost), and Next activity › is empty keeps only the deals on the page with no open task scheduled against them — the ones the reports page counts as stuck. Search finds a deal by any word of its title, the middle of a title too, across every deal of the status and pipeline on screen rather than only the page. While it holds a word, the table lists the matches a page at a time, and a notice says so if it read the 1,000 most recently changed deals rather than all of them.\nThe table\'s rows have checkboxes: tick some and a bulk bar appears above it to set their stage, set their owner, mark them lost with one reason, export them or delete them. Export CSV above the table downloads the deals on screen as deals.csv — title, pipeline and stage by name, the amount in major units beside its currency, the owner by email address, the expected close
|
|
3827
|
+
text: 'The section opens as a board of the chosen pipeline: one column per open stage, with Won and Lost folded away at the end until you expand them. Each card shows the deal\'s title, amount, the contact and company it is with, its owner, and how many days it has sat in its current stage. Drag a card between columns to move it, or use the card\'s menu to move it, mark it won, or mark it lost from the keyboard.\nAbove the board, three figures summarize what is open: the open count, the pipeline value (every open deal\'s amount, per currency) and the weighted value (each amount multiplied by its stage\'s probability).\nSwitch to the table for a paged list with the title, stage, amount, owner, expected close date, status and next activity of every deal in the pipeline, including the closed ones. The table\'s Filters panel narrows it by Status (open, won or lost), and Next activity › is empty keeps only the deals on the page with no open task scheduled against them — the ones the reports page counts as stuck. Search finds a deal by any word of its title, the middle of a title too, across every deal of the status and pipeline on screen rather than only the page. While it holds a word, the table lists the matches a page at a time, and a notice says so if it read the 1,000 most recently changed deals rather than all of them. Status is answered by the query, and Next activity stays beside it; see Filter and search a list.\nThe table\'s rows have checkboxes: tick some and a bulk bar appears above it to set their stage, set their owner, mark them lost with one reason, export them or delete them. Export CSV above the table downloads the deals on screen as deals.csv — title, pipeline and stage by name, the amount in major units beside its currency, the owner by email address, the expected close '
|
|
3828
3828
|
},
|
|
3829
3829
|
{
|
|
3830
3830
|
path: '/content-and-data/crm/deals',
|
|
@@ -3992,7 +3992,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
3992
3992
|
title: 'Leads',
|
|
3993
3993
|
heading: 'The Leads list',
|
|
3994
3994
|
anchor: '#the-leads-list',
|
|
3995
|
-
text: 'The list shows the most recently seen leads first — a person who booked yesterday sits above one who signed up last month, whichever came first. Each row carries:\n| Column | What it shows |\n| Lead | The name the person gave, with their email beneath it — or the email alone. |\n| Company, Title | The lead\'s own company and job title, as text. |\n| Status | New, Working, Qualified or Unqualified. Change it in place from the row. |\n| Email | The last verdict on the lead\'s address — see Email state — or a dash when nothing is known. |\n| Owner | The team member working the lead, or Unassigned. A lead inherits its contact\'s owner when one is assigned on capture. |\n| Source | Every surface that captured this person: Booking, the form they submitted, an import, New lead, or the API — and Sign-up on leads filed before sign-ups stopped making leads. |\n| Lead source | The lead\'s lead source. Sorting by it follows the order of your list, not the alphabet. |\n| Tags | The lead\'s tags. |\n| Campaign | The campaigns the lead is filed under, by name. Under a site only — a campaign belongs to one site. |\n| Last seen | When the person last did something on your site. |\nThe table\'s own toolbar filters the list: Filters opens the filter panel, and Search finds a lead by name, email, company, title or tag. Status, Email, Owner, Lead source and Campaign are picked from a list in the panel, and from each column\'s menu. Status starts on Open (new or working), every lead that still needs working; pick one status instead, or remove the filter to see every lead. A lead nobody has touched yet has no status of its own and reads as New, so the leads your site collected before the CRM existed are already in the Open view. Email narrows by the address\'s
|
|
3995
|
+
text: 'The list shows the most recently seen leads first — a person who booked yesterday sits above one who signed up last month, whichever came first. Each row carries:\n| Column | What it shows |\n| Lead | The name the person gave, with their email beneath it — or the email alone. |\n| Company, Title | The lead\'s own company and job title, as text. |\n| Status | New, Working, Qualified or Unqualified. Change it in place from the row. |\n| Email | The last verdict on the lead\'s address — see Email state — or a dash when nothing is known. |\n| Owner | The team member working the lead, or Unassigned. A lead inherits its contact\'s owner when one is assigned on capture. |\n| Source | Every surface that captured this person: Booking, the form they submitted, an import, New lead, or the API — and Sign-up on leads filed before sign-ups stopped making leads. |\n| Lead source | The lead\'s lead source. Sorting by it follows the order of your list, not the alphabet. |\n| Tags | The lead\'s tags. |\n| Campaign | The campaigns the lead is filed under, by name. Under a site only — a campaign belongs to one site. |\n| Last seen | When the person last did something on your site. |\nFilter and search the leads {#filter-the-leads}\nThe table\'s own toolbar filters the list: Filters opens the filter panel, and Search finds a lead by name, email, company, title or tag. Status, Email, Owner, Lead source and Campaign are picked from a list in the panel, and from each column\'s menu. Status starts on Open (new or working), every lead that still needs working; pick one status instead, or remove the filter to see every lead. A lead nobody has touched yet has no status of its own and reads as New, so the leads your site collected before the CRM existed are already in the Open view. Email narrows by the address\'s verd'
|
|
3996
3996
|
},
|
|
3997
3997
|
{
|
|
3998
3998
|
path: '/content-and-data/crm/leads',
|
|
@@ -4069,7 +4069,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4069
4069
|
title: 'CRM',
|
|
4070
4070
|
heading: 'The contacts page',
|
|
4071
4071
|
anchor: '#the-contacts-page',
|
|
4072
|
-
text: 'The Contacts section is the list the rest of the CRM is built on. It lets you:\n- Browse the list, with Owner and Stage columns
|
|
4072
|
+
text: 'The Contacts section is the list the rest of the CRM is built on. It lets you:\n- Browse the list, with Owner and Stage columns and one optional column per custom field, and narrow it by stage, owner (Me included) and the rest through the table\'s Filters — see Filters on the Contacts list.\n- Add a contact by hand with New contact — see The contact record.\n- Open a contact\'s own page to edit their profile, see where they came from, and read their history.\n- Add tags and notes.\n- Log calls, emails, meetings and notes against a person, and read them in one timeline with everything the platform captured — see Activities & the timeline.\n- Tick rows and act on all of them at once — tag them, set their owner or stage, add them to an email audience, export them, or remove them from this site; see Bulk actions.\n- Export to CSV, and Import CSV — see below.\nThe Contacts section is part of the CRM, included from Starter. On Free it is shown locked in the rail with the rest of the CRM; the people your sites capture are still kept, and can be exported from Settings → Privacy.\nUnder the list, a Recent activity feed shows the newest calls, emails, meetings and notes anyone on the team has logged against any record.'
|
|
4073
4073
|
},
|
|
4074
4074
|
{
|
|
4075
4075
|
path: '/content-and-data/crm/overview',
|
|
@@ -4111,7 +4111,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4111
4111
|
title: 'CRM',
|
|
4112
4112
|
heading: 'Who can open the CRM',
|
|
4113
4113
|
anchor: '#who-can-open-the-crm',
|
|
4114
|
-
text: 'Opening the CRM takes the workspace\'s manage data permission — owners, admins and editors by default, or a custom role granting it. What a reader then sees follows the site they have open: a record captured on one site is visible to that site, to every site declared to be one sender with it, or to the whole organization when the organization has chosen to share its data. A collaborator scoped to one site sees that site\'s people, deals and tasks and no others. The rule is the same in every section, so no section can show a record the reader could not open as a contact.'
|
|
4114
|
+
text: 'Opening the CRM takes the workspace\'s manage data permission — owners, admins and editors by default, or a custom role granting it. What a reader then sees follows the site they have open: a record captured on one site is visible to that site, to every site declared to be one sender with it, or to the whole organization when the organization has chosen to share its data. A collaborator scoped to one site sees that site\'s people, deals and tasks and no others. The rule is the same in every section, so no section can show a record the reader could not open as a contact.\nOne sender, one CRM {#one-sender-one-crm}\nSites your organization has declared one sender share one CRM: a person they have both met is one record, with one owner, one stage, one timeline and one set of notes, and everyone who works on any of those sites sees it. A collaborator who can open only some of a group\'s sites keeps seeing only the people those sites met.\nWhen a group changes, the records move with it — combined when sites join, copied when a site leaves, with order totals following the site that clearly earned them. The contact record says exactly how, and the review before any change counts how many people it affects.'
|
|
4115
4115
|
},
|
|
4116
4116
|
{
|
|
4117
4117
|
path: '/content-and-data/crm/overview',
|
|
@@ -4279,21 +4279,21 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4279
4279
|
title: 'Sequences',
|
|
4280
4280
|
heading: 'Sequences',
|
|
4281
4281
|
anchor: '#sequences',
|
|
4282
|
-
text: 'A sequence is the emails, and the tasks between them, one person gets from one rep. Sequences → All sequences lists each one with its mailbox, its status, and how many people it has enrolled, and how many of them are still active, replied, bounced or opted out.\nThe table\'s toolbar filters the list. Filters narrows it by Status (pick one or several), name or mailbox, and Search matches any word of a sequence\'s name or mailbox. Both look at every sequence, not only the page on screen, and each filter in force shows as a chip above the table; remove a chip to drop its filter. The Filters panel edits one filter at a time, and filters on different columns add up.\nBuild a sequence {#build-a-sequence}\nSelect New sequence, name it, and choose the site whose CRM the people you enroll are contacts of and the mailbox it sends from. A sequence sends as the member who connected its mailbox, so only that member, or an organization owner or admin, can edit or activate it.\nThe Mailbox list offers the mailboxes you connected, and an owner or admin every mailbox in the organization. A disconnected mailbox is never offered. When exactly one of your own mailboxes is active, a new sequence starts on it. With none, connect one first.\nA sequence holds up to eight steps, of which up to four are emails:\n- Email — a subject and a body, or a CRM email template whose body is sent. Insert merge fields — the contact\'s first name, company or job title, your own name, the site\'s name — and {{enrollment.personalLine}}, the sentence you write for each person when you enroll them. Every email after the first replies in the first one\'s
|
|
4282
|
+
text: 'A sequence is the emails, and the tasks between them, one person gets from one rep. Sequences → All sequences lists each one with its mailbox, its status, and how many people it has enrolled, and how many of them are still active, replied, bounced or opted out.\nThe table\'s toolbar filters the list. Filters narrows it by Status (pick one or several), name or mailbox, and Search matches any word of a sequence\'s name or mailbox. Both look at every sequence the list read — the 200 newest, which for nearly every organization is all of them, and a note under the table says when there are older ones — not only the page on screen, and each filter in force shows as a chip above the table; remove a chip to drop its filter. The Filters panel edits one filter at a time, and filters on different columns add up; see Filter and search a list.\nBuild a sequence {#build-a-sequence}\nSelect New sequence, name it, and choose the site whose CRM the people you enroll are contacts of and the mailbox it sends from. A sequence sends as the member who connected its mailbox, so only that member, or an organization owner or admin, can edit or activate it.\nThe Mailbox list offers the mailboxes you connected, and an owner or admin every mailbox in the organization. A disconnected mailbox is never offered. When exactly one of your own mailboxes is active, a new sequence starts on it. With none, connect one first.\nA sequence holds up to eight steps, of which up to four are emails:\n- Email — a subject and a body, or a CRM email template whose body is sent. Insert merge fields — the contact\'s first name, company or job title, your own name, the site\'s name — and {{enrollment.personalLine}}, the sentence you write for each person when you enroll them. Every email after the first replies in the first one\'s'
|
|
4283
4283
|
},
|
|
4284
4284
|
{
|
|
4285
4285
|
path: '/content-and-data/crm/sequences',
|
|
4286
4286
|
title: 'Sequences',
|
|
4287
4287
|
heading: 'Enroll people',
|
|
4288
4288
|
anchor: '#enroll',
|
|
4289
|
-
text: 'Select Enroll people on an active sequence, and choose them from a saved Contacts or Leads view, by searching your contacts at the sequence\'s site, or from the Leads tab — the site\'s open leads — up to 50 at a time. Enrolling reads your contacts and leads, so it takes the Manage data permission as well as Use Sequences.\nA lead is enrolled as it is, with no contact made: the emails read the lead\'s name, company and title wherever the steps say {{contact.firstName}}, {{contact.company}} or {{contact.title}} (and {{lead.…}} reads the same fields), the sends and replies land on the lead\'s page, a call step files its task on the lead, and a reply moves a lead from New to Working. When the lead converts, its enrollment carries on as the contact\'s — same thread, same place in the steps — so a person is never enrolled twice by being two records. A lead that already converted, one whose address is already a contact, and one closed as unqualified are blocked with the reason: enroll the contact, or reopen the lead.\nBefore anything is enrolled, each person is marked:\n- Eligible — enrolled as they are.\n- Needs you — enrolled once you\'ve written their personal line and confirmed what\'s asked below.\n- Blocked — not enrolled, with the reason: a personal mailbox, which a cold email never goes to; an address outside the allowed countries, or in no known country; on the platform\'s or your site\'s suppression list after a bounce, a complaint or an unsubscribe; opted out of sales email from the site; on your organization\'s do-not-contact list, or at a domain on it; a member of your workspace; a customer, unless the sequence includes customers; already in a sequence; or a lead that converted, is already a contact, or was closed as unqualified.\
|
|
4289
|
+
text: 'Select Enroll people on an active sequence, and choose them from a saved Contacts or Leads view, by searching your contacts at the sequence\'s site, or from the Leads tab — the site\'s open leads — up to 50 at a time. Enrolling reads your contacts and leads, so it takes the Manage data permission as well as Use Sequences.\nA lead is enrolled as it is, with no contact made: the emails read the lead\'s name, company and title wherever the steps say {{contact.firstName}}, {{contact.company}} or {{contact.title}} (and {{lead.…}} reads the same fields), the sends and replies land on the lead\'s page, a call step files its task on the lead, and a reply moves a lead from New to Working. When the lead converts, its enrollment carries on as the contact\'s — same thread, same place in the steps — so a person is never enrolled twice by being two records. A lead that already converted, one whose address is already a contact, and one closed as unqualified are blocked with the reason: enroll the contact, or reopen the lead.\nBefore anything is enrolled, each person is marked:\n- Eligible — enrolled as they are.\n- Needs you — enrolled once you\'ve written their personal line and confirmed what\'s asked below.\n- Blocked — not enrolled, with the reason: a personal mailbox, which a cold email never goes to; an address outside the allowed countries, or in no known country; on the platform\'s or your site\'s suppression list after a bounce, a complaint or an unsubscribe; opted out of sales email from the site; on your organization\'s do-not-contact list, or at a domain on it; a member of your workspace; a customer, unless the sequence includes customers; already in a sequence; or a lead that converted, is already a contact, or was closed as unqualified.\nBeside each person, Preview the first email shows'
|
|
4290
4290
|
},
|
|
4291
4291
|
{
|
|
4292
4292
|
path: '/content-and-data/crm/sequences',
|
|
4293
4293
|
title: 'Sequences',
|
|
4294
4294
|
heading: 'Enrollments',
|
|
4295
4295
|
anchor: '#enrollments',
|
|
4296
|
-
text: 'A sequence\'s Enrollments tab lists everyone in it: their status, the step they\'re on, when the next one is due in the mailbox\'s timezone, when the last one went, and why they stopped when they have. A person enrolled as a lead is marked Lead until the lead converts. For each one you can:\n- Pause and Resume — nothing is sent while they\'re paused.\n- Stop — they get nothing more from this sequence.\n- Mark do-not-contact — puts the address on your organization\'s do-not-contact list, which every sequence checks before every send, and stops them in every other sequence too.\nThe tab\'s toolbar filters the people in it. Filters narrows them by Status, Enrolled as (contact or lead), name, email or stop reason, and Search matches any word of a name, address, step or stop reason. The filters look at the enrollments read so far; on a sequence with more than
|
|
4296
|
+
text: 'A sequence\'s Enrollments tab lists everyone in it: their status, the step they\'re on, when the next one is due in the mailbox\'s timezone, when the last one went, and why they stopped when they have. A person enrolled as a lead is marked Lead until the lead converts. For each one you can:\n- Pause and Resume — nothing is sent while they\'re paused. An enrollment the engine held because its mail gateway refused you twice is paused the same way, and Resume on it sends the email anyway.\n- Stop — they get nothing more from this sequence.\n- Mark do-not-contact — puts the address on your organization\'s do-not-contact list, which every sequence checks before every send, and stops them in every other sequence too.\nThe tab\'s toolbar filters the people in it. Filters narrows them by Status, Enrolled as (contact or lead), name, email or stop reason, and Search matches any word of a name, address, step or stop reason. The filters look at the enrollments read so far, 200 at a time; on a sequence with more than that, the table says so, and paging forward reads the next 200. See Filter and search a list.'
|
|
4297
4297
|
},
|
|
4298
4298
|
{
|
|
4299
4299
|
path: '/content-and-data/crm/sequences',
|
|
@@ -4314,7 +4314,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4314
4314
|
title: 'Sequences',
|
|
4315
4315
|
heading: 'What stops a sequence',
|
|
4316
4316
|
anchor: '#what-stops-a-sequence',
|
|
4317
|
-
text: 'Each connected mailbox is read every 15 minutes for what came back:\n| What happens | What it does |\n| The person replies | Stops the sequence (Replied), files the reply on the contact\'s timeline with a line saying the sequence stopped, and gives the rep the task Reply from their name. |\n| An out-of-office reply | Keeps the sequence going, and moves the next step to at least five business days after the reply. |\n| They ask not to be emailed — a reply such as "no" or "unsubscribe", or, when the sequence adds the mail-client unsubscribe button, that button\'s link or a message to the unsubscribe address | Stops the sequence (Opted out), puts the address on your do-not-contact list, unsubscribes it from the site\'s Sales outreach email, and stops it in every other sequence. |\n| The email hard-bounces | Stops the sequence (Bounced) and puts the address on your do-not-contact list and on the platform\'s suppression list. When the bounce says the recipient\'s mail gateway refused it rather than that the address is unknown, the whole domain goes on the list too, and the enrollment says so. |\n| A check refuses them before the next email — a customer now, a member of your workspace, on a suppression list | Stops the sequence, saying which check. |\n| The mailbox is disconnected or removed, or the member who connected it leaves the organization | Stops the sequences that send from it. |\n| The next email needs something the contact doesn\'t have — a first name for {{contact.firstName}} | Pauses the enrollment, naming what is missing. Fill it in and select Resume. |\nA reply that arrives
|
|
4317
|
+
text: 'Each connected mailbox is read every 15 minutes for what came back:\n| What happens | What it does |\n| The person replies | Stops the sequence (Replied), files the reply on the contact\'s timeline with a line saying the sequence stopped, and gives the rep the task Reply from their name. |\n| An out-of-office reply | Keeps the sequence going, and moves the next step to at least five business days after the reply. |\n| They ask not to be emailed — a reply such as "no" or "unsubscribe", or, when the sequence adds the mail-client unsubscribe button, that button\'s link or a message to the unsubscribe address | Stops the sequence (Opted out), puts the address on your do-not-contact list, unsubscribes it from the site\'s Sales outreach email, and stops it in every other sequence. |\n| The email hard-bounces | Stops the sequence (Bounced) and puts the address on your do-not-contact list and on the platform\'s suppression list. When the bounce says the recipient\'s mail gateway refused it rather than that the address is unknown, the whole domain goes on the list too, and the enrollment says so. |\n| A check refuses them before the next email — a customer now, a member of your workspace, on a suppression list | Stops the sequence, saying which check. |\n| Their mail gateway refused you twice this month and delivered nothing | Holds the next email (Held — gateway refused this sender twice) until a member selects Resume on the row — see mail gateways. |\n| The mailbox is disconnected or removed, or the member who connected it leaves the organization | Stops the sequences that send from it. |\n| The next email needs something the contact doesn\'t have — a first name for {{contact.firstName}} | Pauses the enrollment, naming what is missing. Fill it in and select Resume. |\nA reply that arrives aft'
|
|
4318
4318
|
},
|
|
4319
4319
|
{
|
|
4320
4320
|
path: '/content-and-data/crm/sequences',
|
|
@@ -4412,7 +4412,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4412
4412
|
title: 'Tasks & follow-ups',
|
|
4413
4413
|
heading: 'The tasks page',
|
|
4414
4414
|
anchor: '#the-tasks-page',
|
|
4415
|
-
text: 'The Tasks section is one list with six views, chosen under Show in the table\'s Filters panel — My tasks unless you choose another:\n| View | What it shows |\n| My tasks | Open tasks assigned to you, soonest due first. Tasks with no due date come last. |\n| Overdue | Open tasks whose due date is before today. |\n| Today | Open tasks due at any time today. |\n| Upcoming | Open tasks due tomorrow or later. |\n| All open | Every open task, whoever it is assigned to. |\n| Done | Completed tasks, most recently due first. |\n"Overdue" and "today" are not stored on the task — nothing runs at midnight to stamp them. Each view is a window over the due date computed from your own clock and time zone when you look, and a tab left open across midnight repaints yesterday\'s work as overdue on its own.\nEach row shows a checkbox that completes or reopens the task, the title (with the first line of notes under it), the kind, the priority, the due date colored by where it stands — red when overdue, amber when due today — with a snooze beside it, the assignee, and the record it is for, as a link into that record\'s page. A view shows at most 200 rows and says so when it is full; narrow the view to see the rest.\nThe calendar view\nList and Calendar sit beside the view control. The calendar draws one month, placing each task on the day it is due, and clicking one opens the same drawer a row does. The arrows page a month at a time and Today comes back.\nThe calendar draws the same tasks the list is showing — the
|
|
4415
|
+
text: 'The Tasks section is one list with six views, chosen under Show in the table\'s Filters panel — My tasks unless you choose another:\n| View | What it shows |\n| My tasks | Open tasks assigned to you, soonest due first. Tasks with no due date come last. |\n| Overdue | Open tasks whose due date is before today. |\n| Today | Open tasks due at any time today. |\n| Upcoming | Open tasks due tomorrow or later. |\n| All open | Every open task, whoever it is assigned to. |\n| Done | Completed tasks, most recently due first. |\n"Overdue" and "today" are not stored on the task — nothing runs at midnight to stamp them. Each view is a window over the due date computed from your own clock and time zone when you look, and a tab left open across midnight repaints yesterday\'s work as overdue on its own.\nEach row shows a checkbox that completes or reopens the task, the title (with the first line of notes under it), the kind, the priority, the due date colored by where it stands — red when overdue, amber when due today — with a snooze beside it, the assignee, and the record it is for, as a link into that record\'s page. A view shows at most 200 rows and says so when it is full; narrow the view to see the rest.\nBeside Show, the Filters panel narrows a view by Kind (call, email, meeting, to-do), Priority (low, normal, high) and Assignee, and Search matches words in a task\'s title and notes. Those narrow the rows the view loaded — at most 200 — and add up with each other; see Filter and search a list.\nThe calendar view\nList and Calendar sit beside the view control. The calendar draws one month, placing each task on the day it is due, and clicking one opens the same drawer a row does. The arrows page a month at a time and Today comes back.\nThe calendar draws the same tasks the list is showing — the sa'
|
|
4416
4416
|
},
|
|
4417
4417
|
{
|
|
4418
4418
|
path: '/content-and-data/crm/tasks',
|
|
@@ -4496,21 +4496,21 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4496
4496
|
title: 'Saved views',
|
|
4497
4497
|
heading: 'Filters',
|
|
4498
4498
|
anchor: '#filters',
|
|
4499
|
-
text: 'Every CRM list filters through its table\'s own toolbar: Filters opens the filter panel, Search finds a record by its name and the words beside it, and each column\'s menu has Filter too. Pick a column, a condition and a value; a field with fixed choices — a status, a stage, an owner, a lead source, a campaign, a kind, a priority — is picked from a list, a date from a calendar, anything else typed.\nThe panel edits one filter at a time. Filters on different columns add up: filter one column, then another, and the list keeps both. Every filter in force shows as a chip beside the views control, where its ✕ removes it, and all of them are part of the saved view. A view saved before the panel existed keeps its filters as they were.'
|
|
4499
|
+
text: 'Every CRM list filters through its table\'s own toolbar: Filters opens the filter panel, Search finds a record by its name and the words beside it, and each column\'s menu has Filter too. Pick a column, a condition and a value; a field with fixed choices — a status, a stage, an owner, a lead source, a campaign, a kind, a priority — is picked from a list, a date from a calendar, anything else typed.\nThe panel edits one filter at a time. Filters on different columns add up: filter one column, then another, and the list keeps both. Every filter in force shows as a chip beside the views control, where its ✕ removes it, and all of them are part of the saved view. A view saved before the panel existed keeps its filters as they were. The toolbar works the way it does on every console list — see Filter and search a list — and the sections below say what each CRM list\'s filters reach. On the companies and deals lists one served filter applies at a time, so a new one replaces the last.'
|
|
4500
4500
|
},
|
|
4501
4501
|
{
|
|
4502
4502
|
path: '/content-and-data/crm/views',
|
|
4503
4503
|
title: 'Saved views',
|
|
4504
4504
|
heading: 'Filters on the Contacts list',
|
|
4505
4505
|
anchor: '#filters-on-the-contacts-list',
|
|
4506
|
-
text: 'On the Contacts list the fields are the list\'s columns and a few that are not — owner, stage, source, company, tags, form, orders, lifetime value, created and updated dates, email verdict, next activity, and one field per custom field your organization has defined.\nOne chip reaches every contact and the rest narrow what it found. The database answers one filter per query, so the first filter it can serve — a name, an email, a tag, a form, a date, an order count — is run against the whole collection, and every other filter narrows the
|
|
4506
|
+
text: 'On the Contacts list the fields are the list\'s columns and a few that are not — owner, stage, source, company, tags, form, orders, lifetime value, created and updated dates, email verdict, next activity, and one field per custom field your organization has defined.\nOne chip reaches every contact and the rest narrow what it found. The database answers one filter per query, so the first filter it can serve — a name, an email, a tag, a form, a date, an order count — is run against the whole collection, and every other filter narrows the first thousand contacts that query returned — the newest, unless the served filter sorts them its own way. The search box, over name, email, phone, company and tags, narrows those same thousand. The served chip is filled; the others are outlined; and the caption under the chips says which is which. Owner, stage, source, company and custom-field filters always narrow rather than reach, because those facts are kept per site and no query can reach them directly. On a site\'s Contacts list a name or tag contains filter narrows too, because the query already spends its one list match on the site. Sorting reorders the loaded window.'
|
|
4507
4507
|
},
|
|
4508
4508
|
{
|
|
4509
4509
|
path: '/content-and-data/crm/views',
|
|
4510
4510
|
title: 'Saved views',
|
|
4511
4511
|
heading: 'Filters on the other lists',
|
|
4512
4512
|
anchor: '#filters-on-the-other-lists',
|
|
4513
|
-
text: '- Leads — Status, Email, Owner, Lead source and Campaign; see the leads list. The list reads the 200 most recently seen leads, and every filter and the search narrow those.\n- Companies — Company (starts with or is) and Owner reach every company; the search box is the same Company starts with filter. The list is paged, so one of the two applies at a time.\n- Deals (the table) — Status reaches every deal. The search box finds a deal by any word of its title, across the 1,000 most recently changed deals of that status and pipeline — for nearly every organization, all of them.\n- Tasks — Show is the task view (My tasks, Overdue, Today, Upcoming, All open, Done) and
|
|
4513
|
+
text: '- Leads — Status, Email, Owner, Lead source and Campaign; see the leads list. The list reads the 200 most recently seen leads, and every filter and the search narrow those.\n- Companies — Company (starts with or is) and Owner reach every company; the search box is the same Company starts with filter. The list is paged, so one of the two applies at a time.\n- Deals (the table) — Status reaches every deal. The search box finds a deal by any word of its title, across the 1,000 most recently changed deals of that status and pipeline — for nearly every organization, all of them.\n- Tasks — Show is the task view (My tasks, Overdue, Today, Upcoming, All open, Done) and is answered by the query, up to 200 tasks a view; Kind, Priority and Assignee, and the search over title and notes, narrow the rows that view loaded.\nOn the contacts, companies and deals lists, Next activity › is empty keeps only the records with no open task scheduled against them (see next activity). It narrows the rows already loaded rather than the whole collection, the way a contacts filter that cannot be served does, and it stays beside the companies and deals lists\' one served filter.'
|
|
4514
4514
|
},
|
|
4515
4515
|
{
|
|
4516
4516
|
path: '/content-and-data/crm/views',
|
|
@@ -4636,7 +4636,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4636
4636
|
title: 'Datasets & Dynamic Content',
|
|
4637
4637
|
heading: 'Filter and search the records',
|
|
4638
4638
|
anchor: '#filter-records',
|
|
4639
|
-
text: 'The records table filters through its own toolbar: Filters opens the filter panel, where every field of the dataset\'s model is a column, and Search finds records by the words in their text. A field with a fixed list of options, and a true/false field, are picked from a list; numbers and dates take a value; reference, map, bytes, coordinates and null fields are not filterable. Each filter shows as a chip above the table, and removing the chip removes the filter.\nOne condition reaches every record. A single filter or a single search word is answered across the whole dataset and paged like the unfiltered table, when it is:\n- a field equals a value — for a text field, ignoring case;\n- a text field contains a word, which matches words that start with what you typed (kett finds Kettle, ttle does not);\n- a list field contains one of its entries;\n- one search word, which likewise matches the start of any word in the record\'s text fields, option fields and lists.\nIts chip is highlighted. Anything more is matched over the first 1,000 records that the first condition finds (or the first 1,000 records of the dataset, when none of the conditions can be answered that way): a second filter or search word, a filter that contains several words, number and date ranges, is empty, is not, and is any of. When there were more than 1,000 to look through, the table says so. A word is matched on its first 12 characters, and a text value\'s first 40 words are searchable.\nThis needs no database index — nothing to deploy on a self-hosted project. Records keep their filter terms in a filterKeys field that every write keeps current. Records written before the field existed
|
|
4639
|
+
text: 'The records table filters through its own toolbar: Filters opens the filter panel, where every field of the dataset\'s model is a column, and Search finds records by the words in their text. A field with a fixed list of options, and a true/false field, are picked from a list; numbers and dates take a value; reference, map, bytes, coordinates and null fields are not filterable. Each filter shows as a chip above the table, and removing the chip removes the filter. The panel and chips work as on every console list — see Filter and search a list; what differs here is how far a filter reaches.\nOne condition reaches every record. A single filter or a single search word is answered across the whole dataset and paged like the unfiltered table, when it is:\n- a field equals a value — for a text field, ignoring case;\n- a text field contains a word, which matches words that start with what you typed (kett finds Kettle, ttle does not);\n- a list field contains one of its entries;\n- one search word, which likewise matches the start of any word in the record\'s text fields, option fields and lists.\nIts chip is highlighted. Anything more is matched over the first 1,000 records that the first condition finds (or the first 1,000 records of the dataset, when none of the conditions can be answered that way): a second filter or search word, a filter that contains several words, number and date ranges, is empty, is not, and is any of. When there were more than 1,000 to look through, the table says so. A word is matched on its first 12 characters, and a text value\'s first 40 words are searchable.\nThis needs no database index — nothing to deploy on a self-hosted project. Records keep their filter terms in a filterKeys field that every write keeps current. Records written before the field existed '
|
|
4640
4640
|
},
|
|
4641
4641
|
{
|
|
4642
4642
|
path: '/content-and-data/datasets/overview',
|
|
@@ -4811,7 +4811,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
4811
4811
|
title: 'Forms & Lead Capture',
|
|
4812
4812
|
heading: 'Find a form in the list',
|
|
4813
4813
|
anchor: '#find-a-form',
|
|
4814
|
-
text: 'The Forms table filters through its toolbar by display name, slug and Status (active or retired), and Search matches a name or slug. Retired forms stay out of the list until you ask for them: choose Status in the Filters panel and pick Retired to find one and restore it. The list is paged, so the first filter reads the first 100 forms and matches over them; the table says when there are more, and paging forward reads the next page.'
|
|
4814
|
+
text: 'The Forms table filters through its toolbar by display name, slug and Status (active or retired), and Search matches a name or slug. Retired forms stay out of the list until you ask for them: choose Status in the Filters panel and pick Retired to find one and restore it. The list is paged, so the first filter reads the first 100 forms and matches over them; the table says when there are more, and paging forward reads the next page. See Filter and search a list.'
|
|
4815
4815
|
},
|
|
4816
4816
|
{
|
|
4817
4817
|
path: '/content-and-data/forms/overview',
|
|
@@ -5441,7 +5441,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
5441
5441
|
title: 'Publisher handbook',
|
|
5442
5442
|
heading: 'How installs work (the buyer side)',
|
|
5443
5443
|
anchor: '#how-installs-work-the-buyer-side',
|
|
5444
|
-
text: 'Browse is a catalog — cards link to the detail page, which is the only place an install happens. The buyer picks targets (all sites, selected sites, or org-wide for plugins), confirms a dialog that names exactly where the install lands, and the pin is written: your exact {version, sha256} pinned to the site or org, the plugin enabled for the workspace, loaded on their next visit. Buyers can uninstall from the listing\'s own detail page (Uninstall, or Uninstall org-wide for an org-scope pin) as well as from Marketplace → Installed — removing the pin and disabling it. Data your plugin created stays, so reinstalls resume cleanly. Paid listings require purchase before install; you see sales in your publisher ledger.\nThe detail page shows two install figures side by side: installs is the cumulative all-time total and only ever grows, while active counts the organizations and sites that currently hold a pin — it goes down when someone uninstalls. A big gap between the two is churn worth investigating.\nA purchase licenses the buyer\'s organization, and Marketplace → Licenses lists what the workspace holds and what the buyer bought across every workspace, one table each. Each table filters through its own toolbar: Search finds a listing by name, and Filters offers the listing, who bought it (You or A colleague) on the workspace\'s table, and which workspace a purchase landed in on the buyer\'s own. Both answer over every license the table holds, and each filter in force shows as a chip above it.\nEvery listing shows its artifact type as a chip — Plugin, Component, Site template, Layout, Dataset schema, Email template or Email starter — so buyers know what they\'re getting before they open it. Dataset schemas and email templates read "Added (v1) · add
|
|
5444
|
+
text: 'Browse is a catalog — cards link to the detail page, which is the only place an install happens. The buyer picks targets (all sites, selected sites, or org-wide for plugins), confirms a dialog that names exactly where the install lands, and the pin is written: your exact {version, sha256} pinned to the site or org, the plugin enabled for the workspace, loaded on their next visit. Buyers can uninstall from the listing\'s own detail page (Uninstall, or Uninstall org-wide for an org-scope pin) as well as from Marketplace → Installed — removing the pin and disabling it. Data your plugin created stays, so reinstalls resume cleanly. Paid listings require purchase before install; you see sales in your publisher ledger.\nThe detail page shows two install figures side by side: installs is the cumulative all-time total and only ever grows, while active counts the organizations and sites that currently hold a pin — it goes down when someone uninstalls. A big gap between the two is churn worth investigating.\nA purchase licenses the buyer\'s organization, and Marketplace → Licenses lists what the workspace holds and what the buyer bought across every workspace, one table each. Each table filters through its own toolbar: Search finds a listing by name, and Filters offers the listing, who bought it (You or A colleague) on the workspace\'s table, and which workspace a purchase landed in on the buyer\'s own. Both answer over every license the table holds, and each filter in force shows as a chip above it; see Filter and search a list.\nEvery listing shows its artifact type as a chip — Plugin, Component, Site template, Layout, Dataset schema, Email template or Email starter — so buyers know what they\'re getting before they open it. Dataset schemas and email templates read "Added (v1) · add aga'
|
|
5445
5445
|
},
|
|
5446
5446
|
{
|
|
5447
5447
|
path: '/developers/plugins/publishing/publisher-handbook',
|
|
@@ -5751,6 +5751,13 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
5751
5751
|
anchor: '#person-erasure--plugin-person-erasure-server',
|
|
5752
5752
|
text: 'The person erasure removes one person from one workspace: the contact, what the CRM files beside it, and the leads, list memberships and delivery log under the address. A plugin that keeps records about such a person under the organization — keyed by the contact or by the address — registers an eraser from its declarations:\n| API | Semantics |\n| registerPluginPersonEraser(eraser, { pluginId? }) | One eraser per plugin; registering again replaces it in place. |\n| runPluginPersonErasers({ orgId, email, key, contactIds, dryRun }) | What the erasure calls after every site\'s suppression row is written and before the contacts are deleted. Every eraser in registration order; each plugin\'s report by plugin id, or null for an eraser that threw — logged, and never the erasure\'s failure. |\nkey is personKey(email): how every suppression list names the person without the address. A record that the person asked not to be contacted, keyed that way, is kept — the promise outlives the data — with anything that could identify the person removed from it. A dry run counts and writes nothing. Reports land under plugins on the erasure\'s counts and audit row.'
|
|
5753
5753
|
},
|
|
5754
|
+
{
|
|
5755
|
+
path: '/developers/plugins/reference/plugin-manager-api',
|
|
5756
|
+
title: 'Plugin-manager API reference',
|
|
5757
|
+
heading: 'Consent group changes — `plugin-consent-group-change` (`/server`)',
|
|
5758
|
+
anchor: '#consent-group-changes--plugin-consent-group-change-server',
|
|
5759
|
+
text: 'When an organization creates, edits or dissolves a consent group, its sites start or stop reading each other\'s refusals, and records keyed by a group\'s id have to move. Core carries the refusals it stores per site — the unsubscribe list, the topic opt-outs, the email frequency — and flips the declaration. A plugin that keeps its own per-site refusals, or records keyed by a group\'s id, registers a participant from its server declarations:\n| API | Semantics |\n| registerPluginConsentGroupParticipant(participant, { pluginId? }) | One participant per plugin; registering again replaces it in place. Participants run in registration order. |\n| preview({ orgId, plan }) | Lines for the admin\'s review step, each { id, text, count, severity }, with count: null for a figure it did not count. Isolated: a preview that throws shows as null lines, and the review says part of the change could not be counted. |\n| run({ orgId, changeId, plan, phase, cursor, deadlineMs, dryRun }) | Called for carry before the declaration flips (twice: once, and again as the catch-up), rehome after it, and sweep six minutes after it. Answers { done, cursor, counts }; the executor calls again from cursor until done. Not isolated: a throw stops the change before it takes effect, and five failures in a row mark it stalled while it keeps retrying. |\n| summarize(counts) | Optional. The participant\'s clause of the "Finished a consent group change" activity line, from its counts totaled over the change. |\nThe plan names each carry — toHostId is about to stop reading fromHostId\'s refusals, so copy them first — and each holder flow, a move or a split of the records under a group\'s id or a lone site\'s id. A run returns before deadlineMs, writes nothing on dryRun, and keeps every write create-if-absent or a restrictive'
|
|
5760
|
+
},
|
|
5754
5761
|
{
|
|
5755
5762
|
path: '/developers/plugins/reference/plugin-manager-api',
|
|
5756
5763
|
title: 'Plugin-manager API reference',
|
|
@@ -6395,6 +6402,13 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
6395
6402
|
anchor: '#in-context-help',
|
|
6396
6403
|
text: 'Look for the small ? icons throughout the console — next to page titles, card titles, form fields, table column headers, and the Besigner\'s style and attribute panels. Hover one for a one- or two-line explanation, and click it (or the Open documentation link in the tooltip) to jump straight to the matching section of these docs in a new tab.'
|
|
6397
6404
|
},
|
|
6405
|
+
{
|
|
6406
|
+
path: '/getting-started/console-tour',
|
|
6407
|
+
title: 'The console tour',
|
|
6408
|
+
heading: 'Filter and search a list',
|
|
6409
|
+
anchor: '#filter-and-search',
|
|
6410
|
+
text: 'Most lists in the console are tables with the same toolbar above them: Columns shows and hides columns, Filters narrows the rows, Export downloads the table, and Search finds rows by their words. They work the same way on every list.\n- Filters opens a panel that edits one filter at a time: pick a column, an operator and a value. Pick another column and set it too, and both apply — filters on different columns add up, and each column holds one filter. Clearing the value, or deleting the panel\'s row, drops that column\'s filter.\n- Chips above the table show every filter in force, each read as a sentence such as "Status is Live". The panel shows one filter at a time; the chips show them all. Remove a chip to drop its filter.\n- Search matches words. Type several and a row is kept when every word appears, in any order and either case, in one of the things that list searches — each list\'s page names them. Search adds to the filters, and an empty box shows the list unfiltered again.\n- The pager at the foot of the table then turns through the matches, not the whole list.\nHow far a filter or a search reaches depends on how the list reads its rows, and each list\'s page says which:\n- The whole list. A list that reads every row at once, or whose query applies the filter itself, answers across all of it — not only the page on screen.\n- The rows read. A long list reads a window of its rows instead: its newest rows up to a cap its page names, or, on a list that reads a page at a time, 100 rows as soon as the first filter or search word is set, and one page more each time you turn past the last match. A filter there looks through what has been read, and the table says when there is more.\n- One served filter. Some lists hand one filter to the server, which looks through every record, and'
|
|
6411
|
+
},
|
|
6398
6412
|
{
|
|
6399
6413
|
path: '/getting-started/console-tour',
|
|
6400
6414
|
title: 'The console tour',
|
|
@@ -6414,7 +6428,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
6414
6428
|
title: 'The console tour',
|
|
6415
6429
|
heading: 'The Sites list',
|
|
6416
6430
|
anchor: '#the-sites-list',
|
|
6417
|
-
text: 'All Sites is the front door of a workspace: a table with one row per site, for the workspace currently selected in the switcher. A site you can reach in another organization isn\'t missing — it\'s behind the workspace switcher.\nEach row carries:\n- The site\'s display name, with its hostname underneath — the custom domain when the site has one, otherwise its name.aglyn.app address. Both are also columns of their own, Aglyn domain and Custom domain.\n- A status pill (below).\n- When the site was created and last updated.\n- Visit, which opens the live site in a new tab, and Manage, which opens that site\'s dashboard in the console.\nFilters in the table\'s toolbar narrows the list by name, Status (Live, Draft, Maintenance or Suspended), either domain, Custom domain status (Connected, Pending while a connect or disconnect is unfinished, or None), or the date a site was created or last updated. Search matches any word of the name, the slug, or either domain. Each filter in force shows as a chip above the table; remove a chip to drop it. The list holds every site you have in the workspace, so a filter or a search looks through all of them, not only the page on screen. The site count beside the heading always counts every site.\nThe status pill {#the-status-pill}\n| Pill | Hover tells you |\n| Live (green) | How many pages are published — "12 published pages." |\n| Draft (gray outline) | "Nothing published yet — visitors see the placeholder." |\n| Maintenance (amber) | "Every path serves the maintenance screen." |\n| Suspended (red) | "This site is serving a lockdown notice instead of content." |\nLive means exactly one thing: the site has at least one published page. Publishing writes the routing map the site is served from, and the pill is read off that map —
|
|
6431
|
+
text: 'All Sites is the front door of a workspace: a table with one row per site, for the workspace currently selected in the switcher. A site you can reach in another organization isn\'t missing — it\'s behind the workspace switcher.\nEach row carries:\n- The site\'s display name, with its hostname underneath — the custom domain when the site has one, otherwise its name.aglyn.app address. Both are also columns of their own, Aglyn domain and Custom domain.\n- A status pill (below).\n- When the site was created and last updated.\n- Visit, which opens the live site in a new tab, and Manage, which opens that site\'s dashboard in the console.\nFilters in the table\'s toolbar narrows the list by name, Status (Live, Draft, Maintenance or Suspended), either domain, Custom domain status (Connected, Pending while a connect or disconnect is unfinished, or None), or the date a site was created or last updated. Search matches any word of the name, the slug, or either domain. Each filter in force shows as a chip above the table; remove a chip to drop it. The list holds every site you have in the workspace, so a filter or a search looks through all of them, not only the page on screen. The site count beside the heading always counts every site. See Filter and search a list.\nThe status pill {#the-status-pill}\n| Pill | Hover tells you |\n| Live (green) | How many pages are published — "12 published pages." |\n| Draft (gray outline) | "Nothing published yet — visitors see the placeholder." |\n| Maintenance (amber) | "Every path serves the maintenance screen." |\n| Suspended (red) | "This site is serving a lockdown notice instead of content." |\nLive means exactly one thing: the site has at least one published page. Publishing writes the routing map the site is served from, and the pill is read off that map — '
|
|
6418
6432
|
},
|
|
6419
6433
|
{
|
|
6420
6434
|
path: '/getting-started/console-tour',
|
|
@@ -6435,7 +6449,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
6435
6449
|
title: 'The console tour',
|
|
6436
6450
|
heading: 'Workspace settings & notifications',
|
|
6437
6451
|
anchor: '#workspace-settings--notifications',
|
|
6438
|
-
text: 'Organization-wide settings (name, workspace URL) live under Organization → Settings, which also holds Profile, API keys, Branding, Single sign-on, Privacy, Ownership and Delete. Turning plugins on and off for the workspace is its own section, Organization → Plugins — Marketplace is for finding and installing new ones, not for administering what you already run:\nThe notifications feed\nYour in-app notification feed — billing, publishing, workflow failures — lives under Notifications, which has two sections in the rail on the left: All notifications and Settings. The first shows what arrived, newest first, with Mark all read above it. The feed\'s Filters narrows it by Type (one type, or several) and by Status (New or Read), and both can stand together. Each filter in force shows as a chip above the feed; remove the chip to drop it. The filters apply to the whole feed, not just the page on screen, and the pager then turns through the matches. There is no search box, because a notification\'s words are not indexed:\nNotification settings\nEverything about what reaches you lives on the second section, Settings.\nWhat you are told about is a table: one row per category, one column for In console and one for Email. Each row says what arrives in that category, so you are never switching off a bucket you would have to guess the contents of.\n- In console is on for every category. Switching it off stops that category appearing in the feed and in the bell.\n- Email is off for every category. Switch one on and you also get a message in your inbox when one of those notifications arrives. This does not touch the mail Aglyn already sends you — invites, verification, receipts, password resets and dunning are separate, and are not affected by anything on this page
|
|
6452
|
+
text: 'Organization-wide settings (name, workspace URL) live under Organization → Settings, which also holds Profile, API keys, Branding, Single sign-on, Privacy, Ownership and Delete. Turning plugins on and off for the workspace is its own section, Organization → Plugins — Marketplace is for finding and installing new ones, not for administering what you already run:\nThe notifications feed\nYour in-app notification feed — billing, publishing, workflow failures — lives under Notifications, which has two sections in the rail on the left: All notifications and Settings. The first shows what arrived, newest first, with Mark all read above it. The feed\'s Filters narrows it by Type (one type, or several) and by Status (New or Read), and both can stand together. Each filter in force shows as a chip above the feed; remove the chip to drop it. The filters apply to the whole feed, not just the page on screen, and the pager then turns through the matches; see Filter and search a list. There is no search box, because a notification\'s words are not indexed:\nNotification settings\nEverything about what reaches you lives on the second section, Settings.\nWhat you are told about is a table: one row per category, one column for In console and one for Email. Each row says what arrives in that category, so you are never switching off a bucket you would have to guess the contents of.\n- In console is on for every category. Switching it off stops that category appearing in the feed and in the bell.\n- Email is off for every category. Switch one on and you also get a message in your inbox when one of those notifications arrives. This does not touch the mail Aglyn already sends you — invites, verification, receipts, password resets and dunning are separate, and are not affected by anything on this page.'
|
|
6439
6453
|
},
|
|
6440
6454
|
{
|
|
6441
6455
|
path: '/getting-started/create-a-site',
|
|
@@ -6946,7 +6960,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
6946
6960
|
title: 'Member accounts',
|
|
6947
6961
|
heading: '5. Manage members from the console',
|
|
6948
6962
|
anchor: '#5-manage-members-from-the-console',
|
|
6949
|
-
text: 'The site\'s Users page has two cards: Site users (your members — this guide) and Users (console collaborators). The Site users card is
|
|
6963
|
+
text: 'The site\'s Users page has two cards: Site users (your members — this guide) and Users (console collaborators). The Site users card is paged, newest first, with Email, Name, Joined, and Status columns, and no search box — filter by email instead. Filters in the table\'s toolbar narrows it by email, name, or join date, one filter at a time, across every member rather than the page on screen. Status (Active or Suspended) is a filter too, and it combines with any one of the others — suspended members whose email starts with a given address, say. Each filter in force shows as a chip above the table; see Filter and search a list. For members who may open the CRM, each row\'s ⋮ menu holds Open in CRM — the member\'s contact, found by the address they signed up with.\nClick a member to open the member drawer:\n- Profile — email, display name, and join date, with a Suspended chip when applicable.\n- Lifetime purchases — charged order totals minus refunds (pending and canceled orders excluded).\n- Orders — the member\'s payment history, newest first: order number, status, total, date, any refunded amount, and the Stripe payment reference. Needs the editor or admin role on the site.\n- Subscriptions — each with its renewal date and status chip.\n- Addresses — the member\'s saved addresses.\nSuspend & reactivate\nThe drawer\'s action button flips between Suspend member and Reactivate member, each behind a confirmation:\n- Suspend — the member can no longer sign in on the published site (they see an "account suspended" message), and their account page signs out on its next load. Orders, subscriptions, and history are all kept.\n- Reactivate — restores access with the member\'s existing password.\nBoth actions are recorded in the site\'s activity log.\nPassword help\nThe drawer\'s Password section gets a '
|
|
6950
6964
|
},
|
|
6951
6965
|
{
|
|
6952
6966
|
path: '/guides/member-accounts',
|
|
@@ -7359,7 +7373,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
7359
7373
|
title: 'Designed emails',
|
|
7360
7374
|
heading: 'Find a template',
|
|
7361
7375
|
anchor: '#find-a-template',
|
|
7362
|
-
text: 'The templates table filters through its toolbar by name and Origin (yours, or installed from a listing), and Search matches any word of a template\'s name. On your organization\'s Emails page it also filters by Site, and Search matches site names too. The filters look at every template the table read, not only the page on screen;
|
|
7376
|
+
text: 'The templates table filters through its toolbar by name and Origin (yours, or installed from a listing), and Search matches any word of a template\'s name. On your organization\'s Emails page it also filters by Site, and Search matches site names too. The filters look at every template the table read, not only the page on screen. A site\'s own table reads its first 200 screens of every kind and lists the email templates among them; the organization\'s table reads up to 50 templates from each site on the page of sites it shows, and its Site filter offers those sites. Where a site holds more than the table reads, the note under it says so. See Filter and search a list.'
|
|
7363
7377
|
},
|
|
7364
7378
|
{
|
|
7365
7379
|
path: '/marketing-and-automation/email-campaigns/designed-emails',
|
|
@@ -7471,21 +7485,21 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
7471
7485
|
title: 'Email Campaigns',
|
|
7472
7486
|
heading: 'Send a campaign',
|
|
7473
7487
|
anchor: '#send-a-campaign',
|
|
7474
|
-
text: '1. Create a campaign on Marketing → Campaigns — a name, the dates it runs between, the lists it is aimed at, and the sites it runs on. Your organization has its own Marketing page beside CRM, and every site has one too.\n2. Open it and write an email inside it. Pick the audience for that email — leads, site members, segments, or an email list. An audience built from a rule can also reuse a saved Contacts view beside a segment.\n3. Send — subject to your plan\'s send cap.\nA campaign lives under Marketing because that is what it is: a window of dates, a set of lists, a topic and the revenue it earned, which happens to reach people by email. The individual messages it sent, the templates they are built from, the audiences, the topics, the sending domains and the suppression list are all on the Emails page, and each message links back to the campaign it belongs to.\nCampaigns belong to your organization {#campaigns-belong-to-the-organization}\nA campaign is your organization\'s, like its contacts, lists and topics, so one campaign can coordinate a push across every site you run, the sequences your reps send and the leads they produce.\n- Which sites it runs on. A campaign is placed on every site or on the sites you choose. It is offered in a site\'s pickers — on its forms, screens and automations — only where it is placed, and a collaborator invited to one site sees only the campaigns placed there. A campaign created from a site\'s own Marketing page starts on that site; one created from the organization\'s starts on every site, and you can change either later from the organization\'s page.\n- Which site an email is sent as. Each email goes out as one site: that site\'s sender, its unsubscribe page and the consent people gave it. Writing an email from the
|
|
7488
|
+
text: '1. Create a campaign on Marketing → Campaigns — a name, the dates it runs between, the lists it is aimed at, and the sites it runs on. Your organization has its own Marketing page beside CRM, and every site has one too.\n2. Open it and write an email inside it. Pick the audience for that email — leads, site members, segments, or an email list. An audience built from a rule can also reuse a saved Contacts view beside a segment.\n3. Send — subject to your plan\'s send cap.\nA campaign lives under Marketing because that is what it is: a window of dates, a set of lists, a topic and the revenue it earned, which happens to reach people by email. The individual messages it sent, the templates they are built from, the audiences, the topics, the sending domains, the consent groups and the suppression list are all on the Emails page, and each message links back to the campaign it belongs to.\nCampaigns belong to your organization {#campaigns-belong-to-the-organization}\nA campaign is your organization\'s, like its contacts, lists and topics, so one campaign can coordinate a push across every site you run, the sequences your reps send and the leads they produce.\n- Which sites it runs on. A campaign is placed on every site or on the sites you choose. It is offered in a site\'s pickers — on its forms, screens and automations — only where it is placed, and a collaborator invited to one site sees only the campaigns placed there. A campaign created from a site\'s own Marketing page starts on that site; one created from the organization\'s starts on every site, and you can change either later from the organization\'s page.\n- Which site an email is sent as. Each email goes out as one site: that site\'s sender, its unsubscribe page and the consent people gave it. Writing an email from the organizatio'
|
|
7475
7489
|
},
|
|
7476
7490
|
{
|
|
7477
7491
|
path: '/marketing-and-automation/email-campaigns/overview',
|
|
7478
7492
|
title: 'Email Campaigns',
|
|
7479
7493
|
heading: 'Email lists',
|
|
7480
7494
|
anchor: '#email-lists',
|
|
7481
|
-
text: 'Lists are audiences shared across your organization\'s sites. Create them on the Marketing page and target any of them from the campaign composer. A list is one of two kinds, chosen when you create it.\nThe lists table filters through its toolbar: Filters narrows it by name or by Membership (manual or rule), and Search matches any word of a list\'s name. The table is paged, so the first filter reads the first 100 lists and matches over them; the table says when there are more, and paging forward reads the next page.\nManual lists\nA manual list holds the people you put in it. Grow it with the "Enroll in a list" automation step (e.g. on form completion), popup email capture, the Add to a list card in the Inbox, or by hand from the list itself. Members stay until they are removed.\nSee and manage who is on a list {#list-members}\nPress Members on any list row to open it. You get the membership a page at a time — address, name, when they joined, how they got there, and what their consent record says — plus the controls to change it. Press Close to collapse it again; nothing is read until you open a list.\nHow tells a rule match apart from somebody who was added. A person a rule enrolled leaves when they stop matching; a person who was added stays.\nThe membership table filters through its toolbar by address, name, How (rule or added) and Consent (each of the kinds below), and Search matches an address, name or source. Like the lists table, it filters over the first 100 members it read and says when there are more. The address and name boxes above the table add people; they are not filters.\nConsent is the basis the membership carries, read for the site you are on — or, on your organization\'s Emails page, for the site chosen
|
|
7495
|
+
text: 'Lists are audiences shared across your organization\'s sites. Create them on the Marketing page and target any of them from the campaign composer. A list is one of two kinds, chosen when you create it.\nThe lists table filters through its toolbar: Filters narrows it by name or by Membership (manual or rule), and Search matches any word of a list\'s name. The table is paged, so the first filter reads the first 100 lists and matches over them; the table says when there are more, and paging forward reads the next page. See Filter and search a list.\nManual lists\nA manual list holds the people you put in it. Grow it with the "Enroll in a list" automation step (e.g. on form completion), popup email capture, the Add to a list card in the Inbox, or by hand from the list itself. Members stay until they are removed.\nSee and manage who is on a list {#list-members}\nPress Members on any list row to open it. You get the membership a page at a time — address, name, when they joined, how they got there, and what their consent record says — plus the controls to change it. Press Close to collapse it again; nothing is read until you open a list.\nHow tells a rule match apart from somebody who was added. A person a rule enrolled leaves when they stop matching; a person who was added stays.\nThe membership table filters through its toolbar by address, name, How (rule or added) and Consent (each of the kinds below), and Search matches an address, name or source. Like the lists table, it filters over the first 100 members it read and says when there are more; see Filter and search a list. The address and name boxes above the table add people; they are not filters.\nConsent is the basis the membership carries, read for the site you are on — or, on your organization\'s Emails page, for the site chosen'
|
|
7482
7496
|
},
|
|
7483
7497
|
{
|
|
7484
7498
|
path: '/marketing-and-automation/email-campaigns/overview',
|
|
7485
7499
|
title: 'Email Campaigns',
|
|
7486
7500
|
heading: 'Experiments',
|
|
7487
7501
|
anchor: '#experiments',
|
|
7488
|
-
text: 'Business plans can A/B test screens, sections, and emails from the Experiments card on the Marketing page: weighted variants, deterministic visitor assignment, a conversion goal, and per-variant exposure/conversion rates with a pick-the-winner flow.\nTwo ways to finish a test without watching it:\n- End date — past it, visitors get the default and stats stop accruing until you pick a winner.\n- Auto-declare winner — opt in with a minimum exposure count per variant and a confidence level (90/95/99%); once a challenger clears the bar (or every challenger confidently loses to the control), the experiment completes itself and serves the winner. Auto-completed tests carry a chip in the results dialog.\n- Screens & sections — variants pin a screen version; visitors are split deterministically and the winning version serves to everyone once you pick it. Start a section test straight from the Besigner\'s Interactions panel.\n- Emails — variants override the campaign\'s subject and/or body. Attach a running email experiment in the campaign composer; each recipient deterministically receives one variant (re-sends reach the same variant), sends count as exposures, and once a winner is picked every later send uses the winning copy.\nThe Experiments table filters through its toolbar by name, what it tests (screen, section or email) and status. The list is paged, so the first filter reads the first 100 experiments and matches over them; the table says when there are more, and paging forward reads the next page.\nAcross your organization\'s sites {#experiments-across-sites}\nYour organization\'s own Marketing → A/B testing lists every site\'s tests, grouped by site, with what each one tests, how many
|
|
7502
|
+
text: 'Business plans can A/B test screens, sections, and emails from the Experiments card on the Marketing page: weighted variants, deterministic visitor assignment, a conversion goal, and per-variant exposure/conversion rates with a pick-the-winner flow.\nTwo ways to finish a test without watching it:\n- End date — past it, visitors get the default and stats stop accruing until you pick a winner.\n- Auto-declare winner — opt in with a minimum exposure count per variant and a confidence level (90/95/99%); once a challenger clears the bar (or every challenger confidently loses to the control), the experiment completes itself and serves the winner. Auto-completed tests carry a chip in the results dialog.\n- Screens & sections — variants pin a screen version; visitors are split deterministically and the winning version serves to everyone once you pick it. Start a section test straight from the Besigner\'s Interactions panel.\n- Emails — variants override the campaign\'s subject and/or body. Attach a running email experiment in the campaign composer; each recipient deterministically receives one variant (re-sends reach the same variant), sends count as exposures, and once a winner is picked every later send uses the winning copy.\nThe Experiments table filters through its toolbar by name, what it tests (screen, section or email) and status, and Search matches any word of an experiment\'s name. The list is paged, so the first filter or search reads the first 100 experiments and matches over them; the table says when there are more, and paging forward reads the next page. See Filter and search a list.\nAcross your organization\'s sites {#experiments-across-sites}\nYour organization\'s own Marketing → A/B testing lists every site\'s tests, grouped by site, with what each one tests, how many varia'
|
|
7489
7503
|
},
|
|
7490
7504
|
{
|
|
7491
7505
|
path: '/marketing-and-automation/email-campaigns/overview',
|
|
@@ -7604,7 +7618,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
7604
7618
|
title: 'Actions builder',
|
|
7605
7619
|
heading: 'Run history',
|
|
7606
7620
|
anchor: '#run-history',
|
|
7607
|
-
text: 'Every automation row has a Runs button. It opens Runs — your automation with a Recent runs table of that one automation\'s executions, in four columns:\n| Column | What\'s in it |\n| Time | The clock time of the run; hover it for the full date and time. |\n| Trigger | The event, in words — formSubmission shows as Form submitted. A custom event keeps the name you gave it. |\n| Result | Succeeded, Failed, or Skipped. |\n| What happened | For a run, what each step did, joined with ·. For a failure, the errors. For a skip, which condition stopped it. |\nThe table\'s toolbar narrows it. Filters offers Trigger and Result as picked values, Time by day, and What happened as typed text; Search finds words in the trigger or in what happened. Both reach every run the table read — the runs among the
|
|
7621
|
+
text: 'Every automation row has a Runs button. It opens Runs — your automation with a Recent runs table of that one automation\'s executions, in four columns:\n| Column | What\'s in it |\n| Time | The clock time of the run; hover it for the full date and time. |\n| Trigger | The event, in words — formSubmission shows as Form submitted. A custom event keeps the name you gave it. |\n| Result | Succeeded, Failed, or Skipped. |\n| What happened | For a run, what each step did, joined with ·. For a failure, the errors. For a skip, which condition stopped it. |\nThe table\'s toolbar narrows it. Filters offers Trigger and Result as picked values, Time by day, and What happened as typed text; Search finds words in the trigger or in what happened. Both reach every run the table read — the runs among the 200 most recent activity entries this automation wrote — not only the page on screen, and each filter in force shows as a chip above the table. When the automation has written more than that, a note under the table says so. See Filter and search a list.\nSkipped is a result, not an absence — see Only run when a field matches. A run that fired but whose steps errored is Failed, and the errors are in the last column rather than in a log you have to go and find.\nAt the top of the Actions tab — and again on the Workflows tab, counting workflow runs — a line reads 1,284 action runs this month · 50,000 included: how many metered runs this site has used this calendar month, against the number your plan includes. This line is the only place action runs are counted for you — the billing usage meters meter workflow runs, not action runs. Watch it: once the month\'s runs reach the limit, triggered automations stop running rather than queueing or billing on. The line renders nothing at all while the counter o'
|
|
7608
7622
|
},
|
|
7609
7623
|
{
|
|
7610
7624
|
path: '/marketing-and-automation/workflows-and-actions/actions-builder',
|
|
@@ -7961,7 +7975,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
7961
7975
|
title: 'Downgrading, canceling & your data',
|
|
7962
7976
|
heading: 'Deleting a single site',
|
|
7963
7977
|
anchor: '#deleting-a-single-site',
|
|
7964
|
-
text: 'To remove just one site (not the whole organization), open the site\'s Admin → Danger zone and use Delete site. A site admin types the site name to confirm, and it\'s deleted immediately — its screens, media, and settings are permanently removed and its address stops resolving. Unlike an organization deletion there\'s no hold, so export a backup first (Setup → Backup & restore) if you might want it back. Your other sites and the organization are unaffected.'
|
|
7978
|
+
text: 'To remove just one site (not the whole organization), open the site\'s Admin → Danger zone and use Delete site. A site admin types the site name to confirm, and it\'s deleted immediately — its screens, media, and settings are permanently removed and its address stops resolving. Unlike an organization deletion there\'s no hold, so export a backup first (Setup → Backup & restore) if you might want it back. Your other sites and the organization are unaffected.\nA site in a consent group can\'t be deleted while it\'s in the group, because the group\'s other sites honor the unsubscribes it holds. Remove it from the group first, which copies those opt-outs to the sites that stay, then delete it. The same applies while a consent group change that includes the site is still finishing.'
|
|
7965
7979
|
},
|
|
7966
7980
|
{
|
|
7967
7981
|
path: '/workspace-and-billing/billing-and-plans/downgrading-and-canceling',
|
|
@@ -8374,7 +8388,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
8374
8388
|
title: 'Invite teammates',
|
|
8375
8389
|
heading: 'Activity log',
|
|
8376
8390
|
anchor: '#activity-log',
|
|
8377
|
-
text: 'The organization\'s Team page shows a Recent Activity
|
|
8391
|
+
text: 'The organization\'s Team page shows a Recent Activity log: what happened at organization level — renames, workspace URL changes, ownership transfers, members added/removed or re-roled, and invites sent, revoked, or accepted — together with the changes made on each of the organization\'s sites, newest first, each with who did it, where and when.\nVisible to members whose role carries the Activity & audit log permission. Owners and admins have it by default; viewers do not, and neither does a custom role until you grant it. Revoking it does not merely hide the card — the feed is served by an API that checks the permission, so a member without it cannot read the log by any route.\nEntries name the thing that changed and link straight to it, so "Saved the screen — Home" takes you to that screen. Entries recorded before this shipped show a plain description instead of a link.\nThe log filters through its table\'s toolbar, across the whole log rather than the page on screen:\n- Filters narrows it by Action — picked from the actions the log records as named entries, such as the AI entries below — by Who (one of the organization\'s members), by Where (the organization itself or one of its sites), and by When (before or after a date). They add up, and every one is answered by the log\'s own query.\n- Search matches the address of the person who made the change and the name of what changed. It reads the log as it goes, up to 250 entries a page, so a page of results can come back short; Next carries on from where it stopped.\nChanging a filter or the search starts the log again at its first page. See Filter and search a list.\nA site\'s own activity log, on its Setup page, filters through its table\'s toolbar: Filters narrows it to one Action (or several, with is any of) — typed as the action i'
|
|
8378
8392
|
},
|
|
8379
8393
|
{
|
|
8380
8394
|
path: '/workspace-and-billing/teams-and-roles/invite-teammates',
|
|
@@ -8430,7 +8444,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
8430
8444
|
title: 'Members-only areas',
|
|
8431
8445
|
heading: 'Manage your members',
|
|
8432
8446
|
anchor: '#manage-your-members',
|
|
8433
|
-
text: 'The site\'s Users page lists everyone who signed up on your published site —
|
|
8447
|
+
text: 'The site\'s Users page lists everyone who signed up on your published site — paged, newest first. Filters in the table\'s toolbar narrows the list by email, name or join date, one at a time, and by Status (Active or Suspended) beside any one of them, across every member rather than the page on screen; the table has no search box. See Filter and search a list. Click a member to open their detail drawer:\n- Profile — email, display name, join date, and saved addresses.\n- Order history — the member\'s payment records, newest first: order number, status, total, and date, plus the Stripe payment reference and any refunded amount. Order history is visible to site admins and editors.\n- Subscriptions — active and past storefront subscriptions with their renewal date.\n- Lifetime purchases — everything the member actually paid: charged order totals minus refunds (pending and canceled orders don\'t count).\nSuspend or reactivate a member\nFrom the drawer you can suspend a member (with a confirmation). A suspended member:\n- can no longer sign in on your published site — they see a clear "account suspended" message;\n- is signed out the next time their account page loads;\n- keeps all orders, subscriptions, and history — nothing is deleted.\nReactivate restores access with the member\'s existing password. The member list shows each account\'s Active/Suspended status at a glance.'
|
|
8434
8448
|
},
|
|
8435
8449
|
{
|
|
8436
8450
|
path: '/workspace-and-billing/teams-and-roles/members-only',
|
|
@@ -8451,7 +8465,7 @@ export const ASSIST_DOCS_INDEX = [
|
|
|
8451
8465
|
title: 'Teams, Roles & Membership',
|
|
8452
8466
|
heading: '',
|
|
8453
8467
|
anchor: '',
|
|
8454
|
-
text: 'Teams, Roles & Membership\nAglyn has two kinds of people: your team (who build and manage the site) and site members (visitors who sign up to your site). Both are permission-aware.\nPlan availability Paid. Seats are metered per tier; see Billing & plans.\nThe Team page\'s roster filters through its table\'s toolbar: Filters narrows it by Role or
|
|
8468
|
+
text: 'Teams, Roles & Membership\nAglyn has two kinds of people: your team (who build and manage the site) and site members (visitors who sign up to your site). Both are permission-aware.\nPlan availability Paid. Seats are metered per tier; see Billing & plans.\nThe Team page\'s roster filters through its table\'s toolbar: Filters narrows it by Member (the name), Role or Access (team manager or site collaborator), and Search matches any word of a member\'s name, email, or title. Both look at the whole roster, not only the page on screen, and each filter in force shows as a chip above the table; see Filter and search a list. The role pickers and Permissions in each row work as before.'
|
|
8455
8469
|
},
|
|
8456
8470
|
{
|
|
8457
8471
|
path: '/workspace-and-billing/teams-and-roles/overview',
|