@aglyn/aglyn 1.0.0-beta.243 → 1.0.0-beta.246
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/browser-family.d.ts +49 -0
- package/src/lib/app-utils/browser-family.js +78 -0
- package/src/lib/app-utils/browser-family.js.map +1 -0
- package/src/lib/app-utils/docs-help-sections.generated.js +7 -6
- package/src/lib/app-utils/docs-help-sections.generated.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +5 -5
- package/src/lib/app-utils/docs-help.generated.js +8 -1
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +124 -12
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/error-beacon.d.ts +96 -4
- package/src/lib/app-utils/error-beacon.js +149 -6
- package/src/lib/app-utils/error-beacon.js.map +1 -1
- package/src/lib/app-utils/health-report.d.ts +71 -0
- package/src/lib/app-utils/health-report.js +63 -0
- package/src/lib/app-utils/health-report.js.map +1 -1
- package/src/lib/app-utils/media-takedown-reach.d.ts +12 -6
- package/src/lib/app-utils/media-takedown-reach.js +11 -6
- package/src/lib/app-utils/media-takedown-reach.js.map +1 -1
- package/src/lib/plugin-manager/plugin-ai-capabilities.d.ts +7 -0
- package/src/lib/plugin-manager/plugin-ai-capabilities.js.map +1 -1
- package/src/lib/plugin-manager/usage-alert-contributors.d.ts +12 -0
- package/src/lib/plugin-manager/usage-alert-contributors.js.map +1 -1
|
@@ -387,7 +387,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
387
387
|
title: 'Build from Assist chat',
|
|
388
388
|
heading: 'What one request can build',
|
|
389
389
|
anchor: '#what-it-can-build',
|
|
390
|
-
text: 'One message can ask for any mix of:\n- pages: home, about, services, contact, pricing, a landing page;\n- a header and footer shared by the pages;\n- a form: a contact form, a quote request, a sign-up form;\n- a reusable component: a card or block placed on several pages;\n- an email design, such as a welcome, a reply or an announcement, and an email campaign, drafted and left unsent;\n- a page template for blog posts, products or authors;\n- an automation: when a form is sent, do something;\n- a site function that works out a value, such as a price or a quote, and site variables, such as a phone number kept in one place;\n- products to sell, with a description, tags and options;\n- a booking service visitors can book online, with its length, hours and price;\n- an announcement bar or a popup;\n- an A/B test of a page or of an email\'s subject line;\n- a funnel that counts visits from one step to the next;\n- a change to a page or layout the site already has, saved as a new version visitors do not see until you publish it
|
|
390
|
+
text: 'One message can ask for any mix of:\n- pages: home, about, services, contact, pricing, a landing page;\n- a header and footer shared by the pages;\n- a form: a contact form, a quote request, a sign-up form;\n- a reusable component: a card or block placed on several pages;\n- an email design, such as a welcome, a reply or an announcement, and an email campaign, drafted and left unsent;\n- a page template for blog posts, products or authors;\n- an automation: when a form is sent, do something;\n- a site function that works out a value, such as a price or a quote, and site variables, such as a phone number kept in one place;\n- products to sell, with a description, tags and options;\n- a booking service visitors can book online, with its length, hours and price;\n- an announcement bar or a popup;\n- an A/B test of a page or of an email\'s subject line;\n- a funnel that counts visits from one step to the next;\n- CRM setup: a deal pipeline with its stages, and custom fields on contacts, companies, deals or leads. These are saved straight to your CRM, as they are when you set them up yourself;\n- a change to a page or layout the site already has, saved as a new version visitors do not see until you publish it;\n- redirects: send an old address to a page you have, change where a redirect goes, or stop one, such as redirect /old-menu to /menu. See Redirects;\n- a change to the site\'s settings: its name, search title and description, title pattern, favicon, logo or social image (from images already in your media library), its language, time zone, business name, description, phone, contact email or address, or the cookie banner\'s mode. For example, rename my site to Juniper Clay Studio or make the site Spanish.\n- store setup: shipping zones and rates, local pickup, local delivery and sales tax, s'
|
|
391
391
|
},
|
|
392
392
|
{
|
|
393
393
|
path: '/ai/assist-builds',
|
|
@@ -408,7 +408,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
408
408
|
title: 'Build from Assist chat',
|
|
409
409
|
heading: 'One job, many parts',
|
|
410
410
|
anchor: '#one-job-many-parts',
|
|
411
|
-
text: 'Everything in the plan is built by one job, each part by the same builder that makes it on its own page, in the order the parts need each other: the layout and the form before the page that places them.\n- Each part stands on its own. A part that fails does not undo the others. What depends on it is built without it, or not built, and the card says which.\n- Everything is a draft. Pages are unpublished drafts unless you ticked the publish box. Products have no photo and the price you stated, if any. Booking services and funnels are drafts to activate. Overlays and automations are switched off, A/B tests are stopped, and campaigns are unsent and aimed at nobody.\n- Names are your own. A new variable or function never takes a name the site already uses.\
|
|
411
|
+
text: 'Everything in the plan is built by one job, each part by the same builder that makes it on its own page, in the order the parts need each other: the layout and the form before the page that places them.\n- Each part stands on its own. A part that fails does not undo the others. What depends on it is built without it, or not built, and the card says which.\n- Everything is a draft. Pages are unpublished drafts unless you ticked the publish box. Products have no photo and the price you stated, if any. Booking services and funnels are drafts to activate. Overlays and automations are switched off, A/B tests are stopped, and campaigns are unsent and aimed at nobody. The exceptions are a redirect, CRM setup, store setup and site settings: a redirect rule, a CRM pipeline or custom field, the shipping, pickup, delivery and tax settings, and the site\'s settings have no draft, so they work as soon as the build saves them, as they do when you save them yourself. The plan card lists each one before you confirm, and Aglyn AI uses only the prices and rates you state.\n- Names are your own. A new variable or function never takes a name the site already uses.\n- Settings are saved live. A change to the site\'s settings has no draft: like a save in Settings, it reaches your live site as soon as that part is built. Making the site Spanish sets its language; it does not translate the pages. A value that cannot be used, such as an email address that is not one, is named on the card and the rest are saved. Assist never changes your site\'s address, domain, members, billing, plugins or tracking ids, and never hides the site from search engines.\nWhen it is done the card says how many parts were built, such as 5 of 6 built; 1 failed. Try again what failed builds only the parts that failed, and shows'
|
|
412
412
|
},
|
|
413
413
|
{
|
|
414
414
|
path: '/ai/assist-builds',
|
|
@@ -422,7 +422,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
422
422
|
title: 'Build from Assist chat',
|
|
423
423
|
heading: 'What it costs',
|
|
424
424
|
anchor: '#what-it-costs',
|
|
425
|
-
text: 'A build spends AI credits for each part it makes, and the card shows the estimate before you confirm. Products, booking services, overlays, A/B tests, funnels and
|
|
425
|
+
text: 'A build spends AI credits for each part it makes, and the card shows the estimate before you confirm. Products, booking services, overlays, A/B tests, funnels, variables and CRM setup cost almost nothing, and redirects and store setup cost nothing. If the build fails because of something on our side, the credits are given back, and the card says so. See Credits given back.'
|
|
426
426
|
},
|
|
427
427
|
{
|
|
428
428
|
path: '/ai/assist-builds',
|
|
@@ -723,7 +723,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
723
723
|
title: 'The AI CRM built into Aglyn',
|
|
724
724
|
heading: '',
|
|
725
725
|
anchor: '',
|
|
726
|
-
text: 'The AI CRM built into Aglyn\nAglyn AI works in three places in the CRM. In each one it makes a suggestion and you decide what happens next: nothing is saved, sent or imported until you do it yourself.\n- On a record\'s page, a short summary of where things stand with a contact, company, deal or lead, with a suggested next step.\n- In the email composer, a draft of the one-to-one email you describe.\n- In an import, a suggested match between the columns of your file and the fields they fill.'
|
|
726
|
+
text: 'The AI CRM built into Aglyn\nAglyn AI works in three places in the CRM. In each one it makes a suggestion and you decide what happens next: nothing is saved, sent or imported until you do it yourself.\n- On a record\'s page, a short summary of where things stand with a contact, company, deal or lead, with a suggested next step.\n- In the email composer, a draft of the one-to-one email you describe.\n- In an import, a suggested match between the columns of your file and the fields they fill.\nIt can also set up the CRM from the Assist chat: your deal pipelines and their stages, and your custom fields. You confirm the plan before anything is saved.'
|
|
727
727
|
},
|
|
728
728
|
{
|
|
729
729
|
path: '/ai/crm-by-ai',
|
|
@@ -753,6 +753,13 @@ export const DOCS_SECTION_INDEX = [
|
|
|
753
753
|
anchor: '#what-is-sent',
|
|
754
754
|
text: 'The CRM decides what AI may read, and it reads the same record you would see. For a summary or an email draft, AI is given the whole record as the CRM shows it to you:\n- every standard field — for a person their name and its parts, salutation, job title, department, company, every email address, every phone and fax number, birthdate, assistant, who they report to, mailing and other address, lifecycle stage, lead source and Do not call; for a company its domain, website, phone, fax, account fields, billing and shipping address and parent company; for a deal its pipeline and stages, stage, amount, products, type, lead source, campaign, next step, probability, forecast category, the person and company it is with, and up to 10 of its contacts by name with the role each plays and which is Primary (a contact you cannot see is left out); for a lead its contact details, address, account fields, status and campaigns;\n- your picklists\' labels as the record holds them, and your custom fields, each under its label;\n- the person\'s marketing consent — opted in and since when, declined, or none recorded;\n- who owns the record and who each open task is assigned to, by name;\n- the record\'s notes (their first 600 characters);\n- its 12 newest timeline entries: the day, the kind of activity, an email\'s sender, recipient, subject and delivery state, and the first 280 characters of what was logged;\n- up to 8 open tasks with their notes and, for a contact or company, up to 5 deals.\nText you wrote is sent as written. A record that holds a great deal at once has its longest texts — notes, timeline entries, task notes and custom values — shortened to fit, and no field is left out.\nAI is never given a password, a sign-in token, an account identifier or a record\'s internal id. A related record — t'
|
|
755
755
|
},
|
|
756
|
+
{
|
|
757
|
+
path: '/ai/crm-by-ai',
|
|
758
|
+
title: 'The AI CRM built into Aglyn',
|
|
759
|
+
heading: 'Set up the CRM from the chat',
|
|
760
|
+
anchor: '#set-up-the-crm',
|
|
761
|
+
text: 'Ask Assist to build your CRM setup, for example "set up a sales pipeline for my agency: Discovery, Proposal, Negotiation, Won/Lost" or "add a Budget field to opportunities". The plan card lists each pipeline and field; once you confirm, they are saved to your CRM exactly as if you had set them up yourself in Deals and Custom fields. Unlike pages and emails, they are not drafts: a pipeline and a field are in use as soon as they are saved.\n- Pipelines. A new pipeline gets the stages you list, in order, with its Won and Lost stages named as you ask (otherwise Closed Won and Closed Lost). A stage\'s win probability is the one you give, such as "Proposal at 60%", or else is spread from low to high across the stages. Your first pipeline becomes the default; a later one does only when you say so. Ask to rename a pipeline, add a stage or put stages in a new order and the pipeline you have is changed instead of a second one made.\n- Custom fields go on contacts, companies (accounts), deals (opportunities) or leads, with the CRM\'s field types: text, number, date, choice, checkbox and link. There is no currency type, so an amount such as a budget is a number field.\n- Nothing twice, nothing removed. Pipelines, stages and fields are matched by name, ignoring capitals, so asking again changes nothing that is already there. AI never removes a stage or a field, and a stage it was not told about stays where it is, after the ones you listed. A name a retired field still uses is refused: restore that field in CRM → Fields instead.\nCRM setup needs the CRM on your plan (Starter and up) and, like setting it up yourself, the Manage data permission as an owner, admin or editor. A custom field belongs to the whole organization, so adding one needs access to every site. It uses no AI credits.'
|
|
762
|
+
},
|
|
756
763
|
{
|
|
757
764
|
path: '/ai/crm-by-ai',
|
|
758
765
|
title: 'The AI CRM built into Aglyn',
|
|
@@ -1143,7 +1150,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
1143
1150
|
title: 'Product copy and catalogs with AI',
|
|
1144
1151
|
heading: '',
|
|
1145
1152
|
anchor: '',
|
|
1146
|
-
text: 'Product copy and catalogs with AI\nAglyn AI can write the copy for your products and help you set up a store. Everything it does is a proposal: you review it, and nothing is saved to your catalog until you apply it.
|
|
1153
|
+
text: 'Product copy and catalogs with AI\nAglyn AI can write the copy for your products and help you set up a store. Everything it does is a proposal: you review it, and nothing is saved to your catalog until you apply it. A proposed product comes with a suggested price you can change, and it never publishes a product.'
|
|
1147
1154
|
},
|
|
1148
1155
|
{
|
|
1149
1156
|
path: '/ai/products-with-ai',
|
|
@@ -1164,7 +1171,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
1164
1171
|
title: 'Product copy and catalogs with AI',
|
|
1165
1172
|
heading: 'Propose a first catalog',
|
|
1166
1173
|
anchor: '#propose-a-first-catalog',
|
|
1167
|
-
text: 'On the products page, press Create with AI beside Add product (and beside Add your first product while the catalog is empty), or Propose products in Build your catalog with AI — both open the same brief. Propose products takes a brief, such as "a candle studio: hand-poured soy candles in 8 oz and 16 oz jars, and wax melts", and proposes up to twelve products, usually six or more unless your brief says how many: each with a name, type, description, tags, options, a search listing
|
|
1174
|
+
text: 'On the products page, press Create with AI beside Add product (and beside Add your first product while the catalog is empty), or Propose products in Build your catalog with AI — both open the same brief. Propose products takes a brief, such as "a candle studio: hand-poured soy candles in 8 oz and 16 oz jars, and wax melts", and proposes up to twelve products, usually six or more unless your brief says how many: each with a name, type, description, tags, options, a search listing, a sentence saying what its photo should show, and a suggested price for that kind of product, such as about $8–12 for a bar of handmade soap or $30–45 for a gift set.\nReview the table, untick any you do not want, and press Create drafts. Each product is created as a draft:\n- It starts at its suggested price on every variant (the table shows it), or at a default price where none was suggested, for you to change in the product editor. You may clear a price on purpose: the product still saves, the table marks it Set a price, and your storefront shows Price coming soon with no way to buy it until it has one again.\n- It has no photo, and the table marks it Needs a photo with the suggested shot. Nothing is uploaded or linked for you.\n- Nothing is on your storefront until you set it to Active.\nA proposed product with the same name as one already in your catalog is left out.'
|
|
1168
1175
|
},
|
|
1169
1176
|
{
|
|
1170
1177
|
path: '/ai/products-with-ai',
|
|
@@ -1178,7 +1185,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
1178
1185
|
title: 'Product copy and catalogs with AI',
|
|
1179
1186
|
heading: 'What the copy never says',
|
|
1180
1187
|
anchor: '#what-the-copy-never-says',
|
|
1181
|
-
text: 'Every proposal is checked before you see it, and a proposal that breaks a rule is written again or not shown:\n- No health claims, such as a product that cures, treats or prevents a condition, or is clinically proven or doctor recommended.\n- No financial or legal promises, such as guaranteed returns, income, or legal compliance.\n- No certification, award or endorsement your own product text does not state. If your text says certified organic, the copy may say so too.\n- No prices you did not give, and no links, emoji or formatting marks.\nThe rules help, but you are still the publisher: read the copy before you apply it.'
|
|
1188
|
+
text: 'Every proposal is checked before you see it, and a proposal that breaks a rule is written again or not shown:\n- No health claims, such as a product that cures, treats or prevents a condition, or is clinically proven or doctor recommended.\n- No financial or legal promises, such as guaranteed returns, income, or legal compliance.\n- No certification, award or endorsement your own product text does not state. If your text says certified organic, the copy may say so too.\n- No prices in the text you did not give (a proposed product\'s suggested price is a field of its own, never in its copy), and no links, emoji or formatting marks.\nThe rules help, but you are still the publisher: read the copy before you apply it.'
|
|
1182
1189
|
},
|
|
1183
1190
|
{
|
|
1184
1191
|
path: '/ai/products-with-ai',
|
|
@@ -1332,7 +1339,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
1332
1339
|
title: 'Start a new site with AI',
|
|
1333
1340
|
heading: 'A store from the start',
|
|
1334
1341
|
anchor: '#a-store-from-the-start',
|
|
1335
|
-
text: 'On a paid plan, a site with the Online store style also gets three to six products, each with a description and a photo, and a Cart button in the header. Each product gets a
|
|
1342
|
+
text: 'On a paid plan, a site with the Online store style also gets three to six products, each with a description and a photo, and a Cart button in the header. Each product gets a suggested price for what it is, so it can be bought; review or change it, and add your own photo, in Products. A product without a price shows Price coming soon on the store, with no Add to cart, until you give it one. See Product copy and catalogs with AI.\nIt also gets the pages every store needs, ready to use and published with the rest of the site. They do not count toward the pages you asked for:\n- Your account at /account, where shoppers sign in or create an account, see their orders with status and tracking, keep their addresses, and find the items they saved with Save on a product page. User accounts are turned on for the site.\n- Your cart at /cart, with checkout.\nThese two are set to Unlisted, so search engines don\'t index them. The policy pages below are listed like the rest of your site.\n- Shipping & returns, Privacy policy and Terms of sale, written as drafts. The facts only you know, such as your return window or where you ship from, are left in [brackets] for you to fill in. If your plan already has a shipping page, it is used instead of a second one.\nThe header links Account beside the cart, and the footer links your account and policies. When the site is built, Finish your store lists what is left: connect payments, review your products and prices, set shipping and tax, and fill in your policies, each with a button to the page where you do it.'
|
|
1336
1343
|
},
|
|
1337
1344
|
{
|
|
1338
1345
|
path: '/ai/start-with-ai',
|
|
@@ -3203,6 +3210,13 @@ export const DOCS_SECTION_INDEX = [
|
|
|
3203
3210
|
anchor: '#import-and-export',
|
|
3204
3211
|
text: 'Import and Export sit at the top of the URL redirects card and work on the site you have open. Like adding a rule by hand, importing takes a publishing role (Editor or Admin) and a plan that includes redirects.\nExport writes every rule on the site as CSV, JSON or NDJSON. You pick the columns and their order; the default (Re-importable) puts the Aglyn ID first so the file can come back in and update the same rules. Deleted rules are never exported.\nImport takes a CSV, JSON or NDJSON file of up to 5,000 rules.\nColumns\n| Column | What it holds |\n| -- | -- |\n| Aglyn ID | The rule\'s ID. Exported, and used on import to find the rule; never changed by a file. |\n| From path | Required for a new rule. A path like /old-page, saved the way the manager saves it: lowercase, without a trailing slash or a query string. For a regular expression rule, the pattern. |\n| Kind | exact, prefix or regex; Path prefix and Regular expression work too. Blank means exact. |\n| To | Required for a new rule. A path on your site or an https:// address. |\n| Status code | 301, 302, 307 or 308. Blank means 302. |\n| Priority | A whole number; lower fires first. Blank means 100. |\n| Enabled | Yes or no. Blank means on. |\n| Hits in the last 30 days, Last hit, Off-site destination approved by, Created, Updated, Created by | Exported only. |\nColumns from Shopify (Redirect from, Redirect to), the WordPress Redirection plugin (source, target, code), Yoast SEO (Origin, Target, Type), Wix (Old URL, New URL) and Webflow (Old path, Redirect to path) are recognized by name.\nHow a row finds an existing rule\n1. By its Aglyn ID, when the file has that column (an exported file does).\n2. Otherwise by its from path within its kind, read the way the manager saves it, so /Old-Page/ finds the exact rule for /old-page. An exa'
|
|
3205
3212
|
},
|
|
3213
|
+
{
|
|
3214
|
+
path: '/building-sites/redirects/overview',
|
|
3215
|
+
title: 'Redirects',
|
|
3216
|
+
heading: 'Ask Aglyn AI',
|
|
3217
|
+
anchor: '#ask-aglyn-ai',
|
|
3218
|
+
text: 'You can ask Aglyn Assist for a redirect in plain words, such as redirect /old-menu to /menu, send /shop to my store page or stop redirecting /promo. The plan card lists each one, and Confirm plan saves it.\n- A redirect Aglyn AI makes is checked exactly as one you save: the same publishing role, plan and limit, the same loop and duplicate checks, and the same review of an off-site destination. It also never sends visitors into a loop other rules already make.\n- It works as soon as it is saved, like one you save yourself. It is 302 unless you say the move is permanent.\n- It never redirects the address of a published page unless you ask for that page to send visitors elsewhere.\n- To change or stop a redirect, name its address. Stopping one deletes it, as Delete does on this page.\n- It costs no AI credits.'
|
|
3219
|
+
},
|
|
3206
3220
|
{
|
|
3207
3221
|
path: '/building-sites/redirects/overview',
|
|
3208
3222
|
title: 'Redirects',
|
|
@@ -4265,7 +4279,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4265
4279
|
title: 'Product catalog',
|
|
4266
4280
|
heading: 'Products, options, and variants',
|
|
4267
4281
|
anchor: '#products-options-and-variants',
|
|
4268
|
-
text: 'A product is what you manage; a variant is what a customer actually buys. Products define up to 3 options (like Size or Color, each with up to 25 values), and the products hub expands them into a variants matrix — up to 100 variants per product, each with its own SKU, barcode, price, compare-at price, weight, image, and inventory count.\n- Types: physical (shippable), digital (delivered as downloads), or service.\n- Status: draft (invisible to visitors), active, or archived. A product created for you rather than added in the editor — a proposed product, for one — starts as a draft with no photo,
|
|
4282
|
+
text: 'A product is what you manage; a variant is what a customer actually buys. Products define up to 3 options (like Size or Color, each with up to 25 values), and the products hub expands them into a variants matrix — up to 100 variants per product, each with its own SKU, barcode, price, compare-at price, weight, image, and inventory count.\n- Types: physical (shippable), digital (delivered as downloads), or service.\n- Status: draft (invisible to visitors), active, or archived. A product created for you rather than added in the editor — a proposed product, for one — starts as a draft with no photo, at the price it was given (an AI proposal\'s suggested price) or else a default price, for you to change. It counts toward your plan\'s product allowance like any other product.\n- Pricing: a variant with a compare-at price above its price shows a sale badge on storefront blocks.\n- Inventory: leave blank for untracked, 0 means sold out — the same semantics the original product block used. Stock is not tracked on a digital or service subscription-only product: nothing decrements it, on the first charge or on any renewal, so the field is disabled there. A physical subscription tracks normally — every paid cycle decrements one unit per box shipped — and Both — buyer chooses keeps tracking on the one-time sales.\nProducts created with the earlier single-price product block are lifted into this model automatically as a single default variant — nothing breaks and no migration step is needed.'
|
|
4269
4283
|
},
|
|
4270
4284
|
{
|
|
4271
4285
|
path: '/commerce-and-bookings/commerce/catalog',
|
|
@@ -4279,7 +4293,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4279
4293
|
title: 'Product catalog',
|
|
4280
4294
|
heading: 'Write and propose with AI',
|
|
4281
4295
|
anchor: '#ai',
|
|
4282
|
-
text: 'Aglyn AI can write a product\'s description, search listing and tags from what it says and shows, write copy for many products or an import at once, propose a first catalog from a brief, and propose categories and discounts. Every proposal is reviewed before it is saved. Proposed products are created as drafts
|
|
4296
|
+
text: 'Aglyn AI can write a product\'s description, search listing and tags from what it says and shows, write copy for many products or an import at once, propose a first catalog from a brief, and propose categories and discounts. Every proposal is reviewed before it is saved. Proposed products are created as drafts at their suggested prices, and proposed discounts are created switched off. See Products with AI.'
|
|
4283
4297
|
},
|
|
4284
4298
|
{
|
|
4285
4299
|
path: '/commerce-and-bookings/commerce/catalog',
|
|
@@ -4300,7 +4314,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4300
4314
|
title: 'Product catalog',
|
|
4301
4315
|
heading: 'Product reviews',
|
|
4302
4316
|
anchor: '#product-reviews',
|
|
4303
|
-
text: '
|
|
4317
|
+
text: 'Shoppers rate a product from 1 to 5 and write a review in the Product reviews block on your product page template. Pro plan and above.\nReview settings {#review-settings}\nThe Reviews card in Settings decides who can review your products and when customers are asked for a review.\nWho can review. By default only customers who bought the product can review it, and their reviews show a Verified buyer badge. A customer is verified when they are signed in to their account on your store with the email their order went to, or when they open the link in their review-request email. Typing an email address into the form never verifies anyone. Everyone else sees "Only customers who bought this can review" and a Sign in link. To accept reviews from anyone, set Who can review to Anyone on the Reviews card in Settings: verified buyers still publish right away, and everyone else gives a name and an email (never shown) and waits for your approval.\nThe review-request email. A set number of days after an order is fulfilled (7 by default, anywhere from 3 to 30), the buyer gets one email asking for a review, with a link for each product on the order. Each link works once, for 60 days, and only for that order, product and buyer. Items that were refunded are left out, and register sales are never asked. The email respects unsubscribes and your suppression list. Turn it off or change the delay on the Reviews card, and change its wording under Emails → Review request.\nReview moderation {#review-moderation}\nThe Review moderation card, in the products hub\'s Promotions section, lists your reviews so you can publish, hide and reply to them:\n1. Verified reviews publish as soon as they are written, good or bad. You can Hide one only for a content reason: spam or advertising, abusive or hateful languag'
|
|
4304
4318
|
},
|
|
4305
4319
|
{
|
|
4306
4320
|
path: '/commerce-and-bookings/commerce/catalog',
|
|
@@ -4552,7 +4566,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4552
4566
|
title: 'Commerce',
|
|
4553
4567
|
heading: 'Shipping & taxes',
|
|
4554
4568
|
anchor: '#shipping--taxes',
|
|
4555
|
-
text: '- Shipping zones own countries (\'\' = rest of world); rates are flat, free-over-subtotal, or subtotal/weight tiers; optional local pickup. See Shipping.\n- Taxes: manual per-region rates (state beats country, VAT-style inclusive pricing supported) or Stripe Tax automatic calculation; products can be tax-exempt.\nTax settings {#tax-settings}\nThe Taxes card, in the store\'s settings, decides how your store charges sales tax: rates you enter, Stripe Tax, or none at all. Checkout stays off until you choose an option and save, so no order is taken that cannot be taxed correctly.\n1. Choose the Calculation:\n- Manual rates — you enter the rates.\n- Stripe Tax (automatic) — Stripe works out the tax for each buyer\'s location at checkout. Activate Stripe Tax in your Stripe dashboard first.\n- Don\'t collect sales tax — no tax is added to any order, and orders still go through. Choose it when you have no obligation to collect.\n2. For manual rates, enter the Origin country and Origin state: where the store ships or sells from. It is not the address Aglyn bills your workspace at, and not where your payouts go.\n3. Select Add rate for each region you collect in: a Country, an optional State, the rate in % and the Label buyers see. A state rate beats a country rate.\n4. Turn on Prices include tax if your prices already include it, VAT-style.\n5. Optionally set a Lodging tax rate for reservations (see below) and a Service tax rate for paid bookings (see Bookings).\n6. Select Save tax settings.\nWhat the store has collected is reported on the Storefront sales tax card. A store that uses Avalara or TaxJar sets that up separately: see Tax services.\
|
|
4569
|
+
text: '- Shipping zones own countries (\'\' = rest of world); rates are flat, free-over-subtotal, or subtotal/weight tiers; optional local pickup. See Shipping.\n- Taxes: manual per-region rates (state beats country, VAT-style inclusive pricing supported) or Stripe Tax automatic calculation; products can be tax-exempt.\nTax settings {#tax-settings}\nThe Taxes card, in the store\'s settings, decides how your store charges sales tax: rates you enter, Stripe Tax, or none at all. Checkout stays off until you choose an option and save, so no order is taken that cannot be taxed correctly.\n1. Choose the Calculation:\n- Manual rates — you enter the rates.\n- Stripe Tax (automatic) — Stripe works out the tax for each buyer\'s location at checkout. Activate Stripe Tax in your Stripe dashboard first.\n- Don\'t collect sales tax — no tax is added to any order, and orders still go through. Choose it when you have no obligation to collect.\n2. For manual rates, enter the Origin country and Origin state: where the store ships or sells from. It is not the address Aglyn bills your workspace at, and not where your payouts go.\n3. Select Add rate for each region you collect in: a Country, an optional State, the rate in % and the Label buyers see. A state rate beats a country rate.\n4. Turn on Prices include tax if your prices already include it, VAT-style.\n5. Optionally set a Lodging tax rate for reservations (see below) and a Service tax rate for paid bookings (see Bookings).\n6. Select Save tax settings.\nWhat the store has collected is reported on the Storefront sales tax card. A store that uses Avalara or TaxJar sets that up separately: see Tax services.\nAsk Aglyn AI. You can ask Aglyn Assist to set up tax, such as charge 8.25% Texas sales tax, we sell from Austin, calculate tax automatically or we don\'t co'
|
|
4556
4570
|
},
|
|
4557
4571
|
{
|
|
4558
4572
|
path: '/commerce-and-bookings/commerce/overview',
|
|
@@ -4631,6 +4645,13 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4631
4645
|
anchor: '#queue',
|
|
4632
4646
|
text: 'The Pickup & delivery card on the Orders page lists what needs doing, soonest first:\n| Tab | What\'s in it |\n| -- | -- |\n| To prepare | Pickup orders you haven\'t marked ready. |\n| Ready for pickup | Pickup orders waiting to be collected. |\n| To deliver | Local deliveries, by delivery time. |\n| Out for delivery | Deliveries your driver has taken out. |\n| Delivery failed | Deliveries that couldn\'t be completed, to send out again. |\nPick a location at the top of the card to see only that location\'s orders. Each row has its next step as a button, and Open shows the whole order. The same steps are in the order\'s dialog.\n| Step | What happens |\n| -- | -- |\n| Mark ready | The buyer gets the Order ready for pickup email with the location, your pickup hours and instructions. Not ready yet takes it back. |\n| Picked up | The order is fulfilled and delivered, and the buyer gets a short confirmation. |\n| Out for delivery | The buyer gets the Order out for delivery email with their delivery time. |\n| Delivered | The order is fulfilled and delivered, and the buyer gets the Order delivered email. |\n| Couldn\'t deliver | The delivery moves to Delivery failed, with an optional note. Send it out again when you\'re ready. |\nEach email is sent once per step, and each can be turned off on the Customer notifications card. When text messages are available, buyers can add a mobile number at the cart to get these updates by text as well. Picked up and delivered orders count as fulfilled for your reports, outbound webhooks and accounting, exactly like shipped ones.\nThe buyer\'s order status page shows where to pick up, the pickup hours, or the delivery time, and each step as it happens.'
|
|
4633
4647
|
},
|
|
4648
|
+
{
|
|
4649
|
+
path: '/commerce-and-bookings/commerce/pickup-and-local-delivery',
|
|
4650
|
+
title: 'Pickup & local delivery',
|
|
4651
|
+
heading: 'Ask Aglyn AI',
|
|
4652
|
+
anchor: '#ask-aglyn-ai',
|
|
4653
|
+
text: 'You can ask Aglyn Assist to set up pickup or delivery, such as offer local pickup at our Austin shop, weekdays 9 to 5 or deliver to 78701 and 78702 for $5, free over $75, weekday mornings. The plan card lists each change, and Confirm plan saves it.\n- Pickup is turned on for one of your inventory locations, found by its name, city or street. Aglyn AI never adds a location: add it first, then ask. Without a location, it turns on the store-wide Offer free local pickup choice.\n- Local delivery uses postal-code zones. Aglyn AI turns delivery on only when checkout can offer it: a country, at least one zone and at least one delivery window. Distance zones need your store placed on the map, so you set those up yourself.\n- It uses only the fees and times you give.\n- Changes work as soon as they are saved, and cost no AI credits.\n- Only an admin or editor on the site can ask Aglyn AI for these changes. An author can still make them on the card.'
|
|
4654
|
+
},
|
|
4634
4655
|
{
|
|
4635
4656
|
path: '/commerce-and-bookings/commerce/pickup-and-local-delivery',
|
|
4636
4657
|
title: 'Pickup & local delivery',
|
|
@@ -5037,6 +5058,13 @@ export const DOCS_SECTION_INDEX = [
|
|
|
5037
5058
|
anchor: '#zones-and-rates',
|
|
5038
5059
|
text: 'The Shipping card, in the store\'s settings, prices every parcel: group the countries you ship to into zones, then give each zone one or more rates.\n1. Under Zones, select Add zone, enter a Zone name and its Countries as two-letter codes, such as US, CA, or for everywhere else.\n2. Under Rates, select Add rate, choose its Zone, give it a Name buyers see (a rate without one is dropped at checkout), and choose its Type and price.\n3. Optionally turn on Offer free local pickup.\n4. Check the Coverage line, which names any destination no rate reaches, then select Save shipping settings.\nA zone owns countries; is the rest of the world. A rate belongs to one zone and prices a parcel in one of four ways:\n| Rate type | What the shopper pays |\n| -- | -- |\n| Flat | One price. |\n| Free over subtotal | One price, or nothing once the cart reaches the subtotal you set. |\n| Subtotal tiers | The price of the first tier the cart\'s subtotal fits under. |\n| Weight tiers | The price of the first tier the cart\'s weight fits under. Weight is each variant\'s weight times its quantity. |\nLocal pickup adds a free collection choice beside your rates. It does not widen where you ship: a destination no rate reaches is still refused. To let buyers choose which location to collect from, with pickup hours and a ready-for-pickup email, turn on pickup for the location instead: see Pickup & local delivery.\nCheckout charges only the rates of the zone the destination falls in, and narrows the address it collects to that destination, so a shopper cannot pick another zone\'s cheaper rate. The destination coverage rules explain what your zones make checkout ask and refuse.'
|
|
5039
5060
|
},
|
|
5061
|
+
{
|
|
5062
|
+
path: '/commerce-and-bookings/commerce/shipping',
|
|
5063
|
+
title: 'Shipping',
|
|
5064
|
+
heading: 'Ask Aglyn AI',
|
|
5065
|
+
anchor: '#ask-aglyn-ai',
|
|
5066
|
+
text: 'You can ask Aglyn Assist to set up shipping in plain words, such as free shipping over $50, otherwise $5 flat in the US, add $15 express to Canada or stop shipping to the UK. The plan card lists each change, and Confirm plan saves it.\n- Aglyn AI saves exactly what this card saves: a zone with its countries, and a flat, free-over-subtotal, subtotal-tier or weight-tier rate in it. A zone or rate you already have is changed in place, found by its name.\n- It uses only the prices you give. A rate you do not price is not added; Aglyn AI asks instead.\n- If the change leaves some destinations with no rate, the build says so, as the Coverage line does.\n- Carrier rates need a carrier account, so you set those up yourself.\n- Changes work as soon as they are saved, like a save on this card. They cost no AI credits.\n- Only an admin or editor on the site can ask Aglyn AI for these changes. An author can still make them on the card.'
|
|
5067
|
+
},
|
|
5040
5068
|
{
|
|
5041
5069
|
path: '/commerce-and-bookings/commerce/shipping',
|
|
5042
5070
|
title: 'Shipping',
|
|
@@ -9664,6 +9692,90 @@ export const DOCS_SECTION_INDEX = [
|
|
|
9664
9692
|
anchor: '#related',
|
|
9665
9693
|
text: '- Members-only areas\n- Commerce end to end\n- CRM\n- Site protection & error pages'
|
|
9666
9694
|
},
|
|
9695
|
+
{
|
|
9696
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9697
|
+
title: 'Build a newsletter sign-up band',
|
|
9698
|
+
heading: '',
|
|
9699
|
+
anchor: '',
|
|
9700
|
+
text: 'Build a newsletter sign-up band\nThis walkthrough builds a full-width "Get product updates" band from parts you already have. Each part does one job:\n- A saved form collects the address. Its design is an email field and a Subscribe button, and it is set up as a sign-up form, so submitting it records the person\'s opt-in.\n- A live audience picks up everyone who submits that form.\n- A reusable component draws the band and places the form in it. Every page that shows the band uses this one component.\nBy the end you have a band you can drop on any page, styled entirely with your theme\'s colors and spacing, and filling an audience you can send campaigns to.'
|
|
9701
|
+
},
|
|
9702
|
+
{
|
|
9703
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9704
|
+
title: 'Build a newsletter sign-up band',
|
|
9705
|
+
heading: 'Why not the Newsletter signup block?',
|
|
9706
|
+
anchor: '#why-not-the-newsletter-signup-block',
|
|
9707
|
+
text: 'The Newsletter signup element in the Commerce group is one fixed piece: a heading, a small outlined field and a primary button. It works, but it cannot look like your design. Building the band from these parts gets you:\n- Your design. Every part is an ordinary element you can style, at every breakpoint.\n- One place to change it. Change the component once and every page that uses it updates. The same goes for the form.\n- Theme tokens only. Colors, spacing and type come from your theme, so the band follows a theme change or a different site\'s theme with nothing to re-pick.\n- An audience by rule. The audience fills itself from the form\'s submissions, so you never paste a list id into an element.\nWhat the block does that this does not The block sends a confirmation email when the site asks new subscribers to confirm. A saved sign-up form records the opt-in at once and sends no confirmation. If your site requires confirmation, keep using the block for now.'
|
|
9708
|
+
},
|
|
9709
|
+
{
|
|
9710
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9711
|
+
title: 'Build a newsletter sign-up band',
|
|
9712
|
+
heading: '1. Create the saved form',
|
|
9713
|
+
anchor: '#1-create-the-saved-form',
|
|
9714
|
+
text: '1. Open your site\'s Forms tab and choose Create Form.\n2. In Create new form, enter a Display name: Product updates. Choose Next.\nYou land on the form\'s own page. Remember the display name. The audience in step 5 finds people by it, so renaming the form later means updating the audience too.'
|
|
9715
|
+
},
|
|
9716
|
+
{
|
|
9717
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9718
|
+
title: 'Build a newsletter sign-up band',
|
|
9719
|
+
heading: '2. Design the form: one email field and a button',
|
|
9720
|
+
anchor: '#2-design-the-form-one-email-field-and-a-button',
|
|
9721
|
+
text: 'Choose Edit in besigner on the form\'s page. The form\'s own design opens with an empty Form at its root.\n1. Choose Add Element. In the Forms group, insert a Form Field inside the Form.\n2. Set the field\'s Attributes:\n| Attribute | Value | Why |\n| Field name | email | The key the address is stored under. |\n| Type | Email | The browser checks it is an address before sending. |\n| Label | Email address | Keep it set, even though step 3 hides it from view. It is the field\'s name for screen readers. |\n| Placeholder | you@company.com | The gray hint inside the empty field. |\n| Required? | On | No empty sign-ups. |\n3. Select the Form itself and set Submit label to Subscribe and Success message to Thanks — you\'re on the list. No spam, ever. The message replaces the form after a successful sign-up.'
|
|
9722
|
+
},
|
|
9723
|
+
{
|
|
9724
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9725
|
+
title: 'Build a newsletter sign-up band',
|
|
9726
|
+
heading: '3. Style the form on one line',
|
|
9727
|
+
anchor: '#3-style-the-form-on-one-line',
|
|
9728
|
+
text: 'A form stacks its fields and button by default. The band puts them side by side on wider screens and stacks them on phones. Style this here, on the saved form: a page that places the form draws its styling from the form itself, so it is set once for every page.\nYou set these in Styles → Classes & custom CSS → JSS (sx). That tab holds an element\'s whole style object, and it accepts what the other style fields cannot express: nested selectors and per-breakpoint values. See Custom CSS (sx).\nThe Form. Select it, open JSS (sx), paste the following, and choose Apply JSS:\nWhat each part does:\n- flexDirection stacks the field and button on phones (xs) and puts them in a row from tablet width (sm) up.\n- gap spaces them. The & > :not(style) :not(style) line removes the vertical margin the form adds between stacked children, which would otherwise push the button down in a row.\n- & .MuiAlert-root gives an error or notice message its own full-width line.\n- & button[type="submit"] styles the Subscribe button: dark fill, white text, a slightly larger click target, and a hover shade.\nThe Form Field. Select it and apply:\n- The field is full width on phones and 320px from tablet width up.\n- The label is visually hidden, not removed. It still names the field for assistive technology, which a placeholder cannot do.\n- The field is white with dark text on any background, has no outline until it has focus, and its placeholder is a readable gray.\nWhy these values are tokens Every value above is a theme token, not a hard-coded value:\n- Spacing. A bare number such as 1.5 or 2.75 is a step on your theme\'s spacing scale. py: 1.5 is 12px on the default 8px scale.\n- Colors. A dotted path such as grey.900 or common.white is a color from your theme\'s palette.\n- Corners. borderRadius: 1 is one step of '
|
|
9729
|
+
},
|
|
9730
|
+
{
|
|
9731
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9732
|
+
title: 'Build a newsletter sign-up band',
|
|
9733
|
+
heading: '4. Make it a sign-up form',
|
|
9734
|
+
anchor: '#4-make-it-a-sign-up-form',
|
|
9735
|
+
text: 'On the form\'s page, in the CRM routing card:\n1. Leave Also create a lead from the address someone gives this form off. A newsletter reader is a subscriber, not a sales lead.\n2. Turn on This is a sign-up form: submitting it subscribes the person.\n3. Leave Marketing consent field on None. Its help text now reads "Not needed on a sign-up form: submitting it is the opt-in."\n4. Choose Save.\nEvery submission now:\n- creates or updates the person in Contacts,\n- records their marketing consent for this site, and\n- makes them at least a Subscriber. A lead or customer who signs up keeps their stage.\nNormally submitting a form is never consent, and a person opts in only by ticking a box. The switch is the one exception, and you choose it, form by form, for a form whose only purpose is subscribing. That is why the band\'s copy says plainly what the person is signing up for.\nSites in a consent group If your site shares a consent group, a sign-up form records the opt-in for this site alone.'
|
|
9736
|
+
},
|
|
9737
|
+
{
|
|
9738
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9739
|
+
title: 'Build a newsletter sign-up band',
|
|
9740
|
+
heading: '5. Create the live audience',
|
|
9741
|
+
anchor: '#5-create-the-live-audience',
|
|
9742
|
+
text: '1. Open your site\'s Emails tab → Audiences and choose Create audience. Name it Product updates and create it.\n2. On the audience\'s page choose Edit list.\n3. Set Membership to Live — keeps growing.\n4. Set People from to Form submissions, and Submitted form to Product updates, the form\'s display name from step 1.\n5. Choose Save. The This audience box reads Submitted any of: Product updates.\nThe audience refreshes about every fifteen minutes. Its chip reads Rule · not yet evaluated until the first refresh. After that, everyone who has submitted the form is on it. Submitted form matches the form\'s display name exactly (ignoring case), so if you rename the form, update the audience too.\nThe Consent column on a live audience The members table shows the consent recorded on the membership. A live audience never writes consent onto its members, because matching a rule is not an opt-in. So its rows read No basis on record even for people who signed up.\nTheir opt-in is on their contact (step 8), and that is what a campaign checks before it sends. See Lists built from a rule.'
|
|
9743
|
+
},
|
|
9744
|
+
{
|
|
9745
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9746
|
+
title: 'Build a newsletter sign-up band',
|
|
9747
|
+
heading: '6. Build the band as a reusable component',
|
|
9748
|
+
anchor: '#6-build-the-band-as-a-reusable-component',
|
|
9749
|
+
text: '1. Open Components → Create Component. Under Where will you use it? choose On pages, name it Newsletter band, and choose Next. Then Open Besigner.\n2. Give it two text properties so each page can change the words. Choose File → Properties… → Add property:\n| Name | Type | Label | Default |\n| heading | Text | Heading | Get product updates |\n| description | Text | Description | New features, guides, and early-access news — straight to your inbox. No spam. |\nChoose Save properties.\n3. Build the band from the Choose element picker:\n- a Section: the band itself. Set its Accessible label to Newsletter sign-up so screen readers can find it.\n- inside it, two Typography elements. Set the first one\'s text to {{prop.heading}}, its Variant to Heading 4 and its Component to h2. Set the second one\'s text to {{prop.description}} and its Variant to Body 1. Type the tokens, or insert them with the field\'s {} button from its Properties group. See Insert a variable.\n- a Form, from the Forms group. Pick Product updates under Form. The band now draws that form\'s field, button and styles.\n4. Style the Section in Styles → Classes & custom CSS → JSS (sx):\nHow the Section\'s styles work:\n- The gradient uses theme tokens. var(--mui-palette-primary-main) and var(--mui-palette-secondary-main) are your theme\'s primary and secondary colors. They are filled in from the site\'s theme when the page renders, so each site\'s band uses that site\'s colors. Don\'t add a hex fallback: the theme always supplies the color.\n- Text color. color: common.white makes everything inside white, the two Typography elements included.\n- Spacing. py: 8 and px: 3 are spacing steps (64px and 24px on the default scale). gap: 2.25 spaces the heading, copy and form.\nGive the two Typography elements a little polish of their own:\n- Th'
|
|
9750
|
+
},
|
|
9751
|
+
{
|
|
9752
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9753
|
+
title: 'Build a newsletter sign-up band',
|
|
9754
|
+
heading: '7. Place the band on your pages',
|
|
9755
|
+
anchor: '#7-place-the-band-on-your-pages',
|
|
9756
|
+
text: 'On any page, choose Add Element. Your saved components are under Your components. Insert Newsletter band.\nWith it selected, the Attributes panel shows Heading and Description, with the defaults as their starting text. Change them on this page, or leave them to follow the component. Then publish the page. See Publish & roll back.\nTo change the band everywhere, edit the component, never one page\'s copy. See Change it on this page only for the rare page that needs to differ.'
|
|
9757
|
+
},
|
|
9758
|
+
{
|
|
9759
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9760
|
+
title: 'Build a newsletter sign-up band',
|
|
9761
|
+
heading: '8. Check it on the live site',
|
|
9762
|
+
anchor: '#8-check-it-on-the-live-site',
|
|
9763
|
+
text: 'Open the published page. On a wide screen the field and button share a row. On a phone they stack at full width:\nSign up with an address of your own, then open CRM → Contacts and the contact. Check two things:\n- The Stage chip reads Subscriber.\n- In the Relationship card, Marketing email reads Opted in · recorded with the date. Its timeline shows Submitted "Product updates".\nWithin about fifteen minutes the address also appears on the Product updates audience. It is ready for your next email campaign.'
|
|
9764
|
+
},
|
|
9765
|
+
{
|
|
9766
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9767
|
+
title: 'Build a newsletter sign-up band',
|
|
9768
|
+
heading: 'Troubleshooting',
|
|
9769
|
+
anchor: '#troubleshooting',
|
|
9770
|
+
text: '| What you see | Why, and what to do |\n| The audience stays empty | Wait for the fifteen-minute refresh. Then check that Submitted form matches the form\'s Display name exactly. A rename breaks the match. |\n| The contact has no opt-in | The sign-up switch was off, or not saved, when they submitted. Turn it on and Save. It applies to new submissions, not past ones. |\n| The field and button stack on a wide screen | The row layout lives on the saved form. Check that step 3\'s JSS is on the saved form\'s Form element, and that you published the form afterwards. |\n| The band shows the wrong colors | It follows your theme\'s primary and secondary colors. Change them in the theme, not in the band. |\n| A visible "Email address" label sits on the field | The Form Field\'s label styles are missing. Re-apply step 3\'s JSS to the Form Field. Don\'t clear the Label itself. |'
|
|
9771
|
+
},
|
|
9772
|
+
{
|
|
9773
|
+
path: '/guides/newsletter-sign-up-band',
|
|
9774
|
+
title: 'Build a newsletter sign-up band',
|
|
9775
|
+
heading: 'Related',
|
|
9776
|
+
anchor: '#related',
|
|
9777
|
+
text: '- Forms: saved forms, placing one on a page and CRM routing\n- Reusable components: properties and publishing\n- Responsive styling: per-breakpoint styles, spacing steps and custom CSS (sx)\n- Email campaigns: email lists and asking subscribers to confirm\n- Build & publish a survey, a sibling walkthrough with a form that writes to a dataset'
|
|
9778
|
+
},
|
|
9667
9779
|
{
|
|
9668
9780
|
path: '/guides/run-an-agency-workspace',
|
|
9669
9781
|
title: 'Run an agency workspace',
|