@aglyn/aglyn 1.0.0-beta.250 → 1.0.0-beta.252
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/activity-labels.js +1 -0
- package/src/lib/app-utils/activity-labels.js.map +1 -1
- package/src/lib/app-utils/ad-audience.d.ts +42 -0
- package/src/lib/app-utils/ad-audience.js +42 -0
- package/src/lib/app-utils/ad-audience.js.map +1 -0
- package/src/lib/app-utils/business-profile.d.ts +4 -0
- package/src/lib/app-utils/business-profile.js +2 -0
- package/src/lib/app-utils/business-profile.js.map +1 -1
- package/src/lib/app-utils/console-routes.d.ts +9 -0
- package/src/lib/app-utils/console-routes.js +6 -0
- package/src/lib/app-utils/console-routes.js.map +1 -1
- package/src/lib/app-utils/docs-help-sections.generated.js +455 -451
- package/src/lib/app-utils/docs-help-sections.generated.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +27 -3
- package/src/lib/app-utils/docs-help.generated.js +78 -13
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +193 -67
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/health-report.js +11 -0
- package/src/lib/app-utils/health-report.js.map +1 -1
- package/src/lib/app-utils/image-edit.d.ts +77 -0
- package/src/lib/app-utils/image-edit.js +116 -0
- package/src/lib/app-utils/image-edit.js.map +1 -0
- package/src/lib/app-utils/operator-alerts.js +14 -0
- package/src/lib/app-utils/operator-alerts.js.map +1 -1
- package/src/lib/app-utils/release-flags.d.ts +1 -1
- package/src/lib/app-utils/release-flags.js +10 -0
- package/src/lib/app-utils/release-flags.js.map +1 -1
- package/src/lib/plugin-manager/feature-plugins.d.ts +39 -0
- package/src/lib/plugin-manager/feature-plugins.js +13 -1
- package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
|
@@ -205,7 +205,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
205
205
|
title: 'AI credits',
|
|
206
206
|
heading: 'What things cost',
|
|
207
207
|
anchor: '#what-things-cost',
|
|
208
|
-
text: 'What a request costs depends on how much the AI reads and writes, so the figures below are typical, not fixed: what jobs like it cost on real builds. Every job shows its estimate before you confirm it.\n| Request | Typical cost |\n| An answer in the chat, a rewrite, a summary | A few credits |\n| An answer quoted straight from the docs | Free |\n| A vector illustration, icon or logo mark | About
|
|
208
|
+
text: 'What a request costs depends on how much the AI reads and writes, so the figures below are typical, not fixed: what jobs like it cost on real builds. Every job shows its estimate before you confirm it.\n| Request | Typical cost |\n| An answer in the chat, a rewrite, a summary | A few credits |\n| An answer quoted straight from the docs | Free |\n| A vector illustration, icon or logo mark | About 4 credits a picture |\n| A photo, art or design picture | About 108 credits a picture (about 75 on Free) |\n| A new site\'s look | About 1 credit |\n| A page from a brief | About 30 credits for a page of five sections (about 6 a section), plus planning |\n| A layout (header and footer) | About 25 credits |\n| A form | About 30 credits |\n| A component or email design | About 30 credits |\n| A new site started with AI, paid plan | About 160 for 3 pages to 300 for 8 |\n| A new site started with AI, Free plan | About 115 for two pages, within the 300 Free credits |\n| Products, booking services, overlays, A/B tests, funnels, variables in a chat build | Almost nothing |\n| Stock photos in an AI site | Nothing |\nA model you choose with the Model switch can cost more or less than Auto; the switch shows each model\'s cost. See Choosing a model.'
|
|
209
209
|
},
|
|
210
210
|
{
|
|
211
211
|
path: '/ai/ai-credits',
|
|
@@ -632,7 +632,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
632
632
|
title: 'Create images with AI',
|
|
633
633
|
heading: 'Credits',
|
|
634
634
|
anchor: '#credits',
|
|
635
|
-
text: 'Pictures are metered in AI credits from the workspace\'s pool. The window shows an estimate before you create anything:\n| Kinds | About, per picture | What it is made of |\n| Vector |
|
|
635
|
+
text: 'Pictures are metered in AI credits from the workspace\'s pool. The window shows an estimate before you create anything:\n| Kinds | About, per picture | What it is made of |\n| Vector | 4 credits | The words the AI reads and writes to draw the SVG, at the same rates as other AI text |\n| Photo, Art and Design, on the Free plan | 75 credits | A 512 px picture, plus the description and the thinking the image model does before it draws |\n| Photo, Art and Design, on a paid plan | 108 credits | A 1K picture (about 1024 px on its longer side), plus the same |\nThe size comes from your plan: pictures are 512 px on Free and 1K on every paid plan.\nWhat is charged is what was actually spent, so a picture can cost a little more or less than its estimate, and an illustration that needed a second attempt costs about twice its estimate. You are charged only for pictures that reach your library:\n- a picture the safety filter holds back is not charged;\n- an illustration that does not come out right is not charged. The window says This one\'s on us — you weren\'t charged.\n- a picture your library could not store, because your storage is full for example, is not charged;\n- when the AI service fails, nothing is charged.\nA Free workspace spends from its monthly allowance and is told before it starts when the pictures it asked for would cost more than it has left. A paid workspace past its included band keeps working at its plan\'s overage rate unless the workspace stops AI at the band, the same as every other AI request.'
|
|
636
636
|
},
|
|
637
637
|
{
|
|
638
638
|
path: '/ai/create-images',
|
|
@@ -933,7 +933,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
933
933
|
title: 'How Aglyn AI builds',
|
|
934
934
|
heading: 'The plan comes first',
|
|
935
935
|
anchor: '#the-plan-comes-first',
|
|
936
|
-
text: 'Before it generates anything, a build job proposes a plan:\n- what it will reuse from your site: components, layouts, templates, forms, datasets and collections;\n- what it will create, and why nothing you already have will do;\n- the pages it will build, each with its layout, address, search title and sections;\n- any YouTube or Vimeo player your brief asks for, the page or component it goes on, and what it costs: a player loads its host\'s own code when a visitor reaches it, whether or not they press play. A brief that asks for no video gets no player.\nA plan only proposes what your workspace can create: what your plan includes, and what your site still has room for. A plan the job could not build is stopped before you are asked to confirm it, with the reason. What a page\'s plan creates, such as its layout, a card that repeats or its form, is built first when you confirm, in the same job.\nThe job then waits for you. The window you started it from stays with it: it shows the job planning, then the plan itself, with Confirm plan to build it and Cancel job to stop. Nothing is generated until you confirm.'
|
|
936
|
+
text: 'Before it generates anything, a build job proposes a plan:\n- what it will reuse from your site: components, layouts, templates, forms, datasets and collections;\n- what it will create, and why nothing you already have will do;\n- the pages it will build, each with its layout, address, search title and sections;\n- any YouTube or Vimeo player your brief asks for, the page or component it goes on, and what it costs: a player loads its host\'s own code when a visitor reaches it, whether or not they press play. A brief that asks for no video gets no player.\nA plan only proposes what your workspace can create: what your plan includes, and what your site still has room for. A plan the job could not build is stopped before you are asked to confirm it, with the reason. What a page\'s plan creates, such as its layout, a card that repeats or its form, is built first when you confirm, in the same job. If another build on the same site used the last form your plan includes after you confirmed, the page places the form that build just made instead, and the job says so. When no such form will do, the job stops, and you are not charged for what it could not build. Starting a page while another is being built on the same site says A page is already being built: wait for it, or start another anyway.\nThe job then waits for you. The window you started it from stays with it: it shows the job planning, then the plan itself, with Confirm plan to build it and Cancel job to stop. Nothing is generated until you confirm.'
|
|
937
937
|
},
|
|
938
938
|
{
|
|
939
939
|
path: '/ai/how-aglyn-ai-builds',
|
|
@@ -1759,7 +1759,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
1759
1759
|
title: 'Element catalog',
|
|
1760
1760
|
heading: 'Media',
|
|
1761
1761
|
anchor: '#media',
|
|
1762
|
-
text: '| Element | What it\'s for |\n| Image | An image with fit, size and radius controls, an optional link, and an automatic responsive srcSet for media-library URLs. Open in a lightbox shows it full size when pressed. See Image below. |\n| Video | A video file from your media library, poster first. See Video. |\n| Music player | Your own tracks from your media library, one or a playlist of Track elements. See Music player. |\n| Icon | Any icon from the icon picker. |\n| Image List / Image List Item | A dense gallery. See Image List below. |\nImage\nA picture from your media library is delivered in several widths, and each visitor\'s browser downloads the one that fits the space the image takes on their screen — a phone gets a small file, a wide desktop a larger one. You do not set anything for this.\nHow Aglyn knows how big the image shows. Every published page works it out from where the image sits, with nothing for you to do and nothing to re-save:\n- a size you gave the image itself — a pixel Width, or a pixel Height with the width left on auto (a logo set 56px tall is as wide as its picture is at that height), including different sizes per screen size;\n- the layout around it — a Grid cell set to xs:12 md:4 is a third of the page from tablet width up, an image in a grid of three equal columns is a third, the gaps between them come off, and a Container stops the slot growing past its max width.\nOn top of that, the Besigner measures how wide each image renders at the screen size you are looking at, and saving or publishing the page stores it with the image — which covers layouts the rules above cannot read. Check the page on another
|
|
1762
|
+
text: '| Element | What it\'s for |\n| Image | An image with fit, size and radius controls, an optional link, and an automatic responsive srcSet for media-library URLs. Open in a lightbox shows it full size when pressed. See Image below. |\n| Video | A video file from your media library, poster first. See Video. |\n| Music player | Your own tracks from your media library, one or a playlist of Track elements. See Music player. |\n| Icon | Any icon from the icon picker. |\n| Image List / Image List Item | A dense gallery. See Image List below. |\nImage\nA picture from your media library is delivered in several widths, and each visitor\'s browser downloads the one that fits the space the image takes on their screen — a phone gets a small file, a wide desktop a larger one. You do not set anything for this.\nHow Aglyn knows how big the image shows. Every published page works it out from where the image sits, with nothing for you to do and nothing to re-save:\n- a size you gave the image itself — a pixel Width, or a pixel Height with the width left on auto (a logo set 56px tall is as wide as its picture is at that height), including different sizes per screen size;\n- a Width in percent of the space around it — an image at 118% of its grid cell, pulled past the edge of the page, gets a file wide enough for the 118%;\n- the layout around it — a Grid cell set to xs:12 md:4 is a third of the page from tablet width up, an image in a grid of three equal columns is a third, the gaps between them come off, and a Container stops the slot growing past its max width.\nOn top of that, the Besigner measures how wide each image renders at the screen size you are looking at, and saving or publishing the page stores it with the image — which covers layouts the rules above cannot read. Check the page on another '
|
|
1763
1763
|
},
|
|
1764
1764
|
{
|
|
1765
1765
|
path: '/building-sites/besigner/element-catalog',
|
|
@@ -4258,7 +4258,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4258
4258
|
title: 'Bookings & Scheduling',
|
|
4259
4259
|
heading: 'Payments and fees',
|
|
4260
4260
|
anchor: '#payments-and-fees',
|
|
4261
|
-
text: 'Money for a paid booking goes to you, not to Aglyn. The charge is created on your connected Stripe account, and Aglyn takes its platform fee out of it as the Stripe Connect application fee — the same way a storefront sale works.\n- A booking is priced as a service, which bills at your plan\'s digital transaction rate: 5% on Starter, 3% on Pro, 2% on Business, 1% on Scale, and 0% from Advanced up. It is the same rate and the same ladder as digital products — bookings are not charged separately or additionally.\n- The fee is taken on the service price only. Stripe\'s own processing fee is separate and comes out of your account as usual.\n- Your current rate is shown on the Payments card of the Products hub, and the full ladder is on the plans page.\nService tax\nPaid bookings charge no tax by default, and that stays true for every site that does not change it.\nA service is not goods: the sales-tax rate configured for your store is a goods rate, and whether a service is taxable is a different question with frequently the opposite answer. So Aglyn does not apply your store\'s sales rate to an appointment. Instead, Service tax, on the Taxes card
|
|
4261
|
+
text: 'Money for a paid booking goes to you, not to Aglyn. The charge is created on your connected Stripe account, and Aglyn takes its platform fee out of it as the Stripe Connect application fee — the same way a storefront sale works.\n- A booking is priced as a service, which bills at your plan\'s digital transaction rate: 5% on Starter, 3% on Pro, 2% on Business, 1% on Scale, and 0% from Advanced up. It is the same rate and the same ladder as digital products — bookings are not charged separately or additionally.\n- The fee is taken on the service price only. Stripe\'s own processing fee is separate and comes out of your account as usual.\n- Your current rate is shown on the Payments card of the Products hub, and the full ladder is on the plans page.\nService tax\nPaid bookings charge no tax by default, and that stays true for every site that does not change it.\nA service is not goods: the sales-tax rate configured for your store is a goods rate, and whether a service is taxable is a different question with frequently the opposite answer. So Aglyn does not apply your store\'s sales rate to an appointment. Instead, Service tax, on the Taxes card (Products → Taxes), is where you set your own rate for it.\nWhen you set one, Aglyn adds it to the booking charge as its own receipt line using the label you choose, and records the amount and the regime on the booking. It is always your own rate — Stripe Tax is never asked to compute it, because it has no service tax code for this and would apply a goods rate to an appointment.\nThe platform fee is charged on the service price, never on the tax.\nAglyn does not provide tax advice Aglyn applies the rate you enter and records what was charged. It does not determine whether service tax applies to you, at what rate, or where it should be paid. Con'
|
|
4262
4262
|
},
|
|
4263
4263
|
{
|
|
4264
4264
|
path: '/commerce-and-bookings/bookings/overview',
|
|
@@ -4321,7 +4321,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4321
4321
|
title: 'Product catalog',
|
|
4322
4322
|
heading: 'Product reviews',
|
|
4323
4323
|
anchor: '#product-reviews',
|
|
4324
|
-
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
|
|
4324
|
+
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.\nShow reviews on your site {#show-reviews}\nThe Product reviews element, in Besigner\'s Commerce elements, shows published reviews with the average rating, and the form customers write theirs in.\n1. Open your product page template in Besigner and add Product reviews below the product details.\n2. Leave Product id blank, so the block shows whichever product the page is showing. Pick a product only to pin the block to that one product.\n3. Optionally change its Heading, which reads Reviews when blank.\n4. Publish the site.\nTo show your store\'s latest published reviews across every product, on a home page for example, set Show to Whole store and choose Max reviews (6 by default, 12 at most). It shows nothing until a review is published.\nReview settings {#review-settings}\nThe Reviews card on Products → Promotions 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 Promotions: 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'
|
|
4325
4325
|
},
|
|
4326
4326
|
{
|
|
4327
4327
|
path: '/commerce-and-bookings/commerce/catalog',
|
|
@@ -4335,7 +4335,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4335
4335
|
title: 'Product catalog',
|
|
4336
4336
|
heading: 'Google Merchant Center feed',
|
|
4337
4337
|
anchor: '#merchant-center-feed',
|
|
4338
|
-
text: 'Your catalog is published as a product feed for Google Merchant Center, and for Meta, TikTok, Pinterest, Snapchat and Microsoft Shopping too. Each channel has its own feed address and setup steps
|
|
4338
|
+
text: 'Your catalog is published as a product feed for Google Merchant Center, and for Meta, TikTok, Pinterest, Snapchat and Microsoft Shopping too. Each channel has its own feed address and setup steps on the Products → Sales channels page; see Sales channels.'
|
|
4339
4339
|
},
|
|
4340
4340
|
{
|
|
4341
4341
|
path: '/commerce-and-bookings/commerce/catalog',
|
|
@@ -4363,14 +4363,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4363
4363
|
title: 'Couriers for local delivery (DoorDash Drive)',
|
|
4364
4364
|
heading: 'Connect DoorDash Drive',
|
|
4365
4365
|
anchor: '#connect-doordash-drive',
|
|
4366
|
-
text: '1. Sign up for a DoorDash developer account at developer.doordash.com, and create an access key. A test key reaches DoorDash\'s sandbox, where no Dasher is sent; a live key, available once DoorDash has approved your account for production, sends real couriers.\n2. In Aglyn, open
|
|
4366
|
+
text: '1. Sign up for a DoorDash developer account at developer.doordash.com, and create an access key. A test key reaches DoorDash\'s sandbox, where no Dasher is sent; a live key, available once DoorDash has approved your account for production, sends real couriers.\n2. In Aglyn, open Products → Shipping & delivery and find the Couriers card.\n3. Enter your key\'s Developer ID, Key ID and Signing secret — your live key, your test key, or both — and choose Connect DoorDash. Aglyn checks each key with DoorDash before saving it, and keeps the signing secret encrypted.\n4. Under At the store, enter the phone number couriers call when the location your deliveries leave from has none, and a note every courier gets ("Ask at the counter for the order number").\nOrders paid in test mode use your test key, and other orders your live key, so a test order never sends a real courier.\nGet delivery updates as they happen {#webhook}\nThe Couriers card shows a webhook address and, once, a webhook token. In the DoorDash developer portal, add a webhook with that address, set its Authorization type to Basic, and paste the token. DoorDash then tells Aglyn each step of every delivery as it happens.\nWithout the webhook, Aglyn checks every open delivery with DoorDash every 15 minutes, and when you open the order. Lost the token? Choose New webhook token and paste the new one in DoorDash.'
|
|
4367
4367
|
},
|
|
4368
4368
|
{
|
|
4369
4369
|
path: '/commerce-and-bookings/commerce/couriers',
|
|
4370
4370
|
title: 'Couriers for local delivery (DoorDash Drive)',
|
|
4371
4371
|
heading: 'Send a courier',
|
|
4372
4372
|
anchor: '#send-a-courier',
|
|
4373
|
-
text: '1. On the Orders page, in the Pickup & delivery card, choose Send a courier on a local delivery\'s row — or open the order and find its Courier section.\n2. Choose Get a DoorDash quote. Aglyn shows DoorDash\'s price and arrival estimate. The price is good for five minutes.\n3. Choose Send courier.\nA courier needs a full street address for the location your deliveries leave from (Products →
|
|
4373
|
+
text: '1. On the Orders page, in the Pickup & delivery card, choose Send a courier on a local delivery\'s row — or open the order and find its Courier section.\n2. Choose Get a DoorDash quote. Aglyn shows DoorDash\'s price and arrival estimate. The price is good for five minutes.\n3. Choose Send courier.\nA courier needs a full street address for the location your deliveries leave from (Products → Shipping & delivery → Inventory locations) and the buyer\'s street address and phone number on the order. The order must be paid and not yet out for delivery or delivered.\nA delivery has one courier at a time: a second Send courier, or a retry after a lost connection, never books a second Dasher. If DoorDash doesn\'t answer, Aglyn checks with DoorDash within a few minutes and updates the order either way — don\'t book again.\nCancel a courier {#cancel}\nChoose Cancel courier on the order. The delivery stays in your own queue, where you can deliver it yourself or send another courier. DoorDash may still charge your account if the Dasher was already on the way; see DoorDash\'s cancellation terms.\nCanceling or fully refunding an order cancels its courier on Aglyn\'s next check, within 15 minutes.'
|
|
4374
4374
|
},
|
|
4375
4375
|
{
|
|
4376
4376
|
path: '/commerce-and-bookings/commerce/couriers',
|
|
@@ -4379,6 +4379,146 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4379
4379
|
anchor: '#what-your-buyer-sees',
|
|
4380
4380
|
text: 'While a courier is on the way, your buyer\'s order status page shows DoorDash, where the courier is, the arrival estimate and a Track your courier link to DoorDash\'s live map. The Out for delivery and Delivered emails are the ones your own driver\'s steps send.'
|
|
4381
4381
|
},
|
|
4382
|
+
{
|
|
4383
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4384
|
+
title: 'Discounts and coupons',
|
|
4385
|
+
heading: '',
|
|
4386
|
+
anchor: '',
|
|
4387
|
+
text: 'Discounts and coupons\nDiscounts take money off an order: either a code a shopper types at checkout, or an automatic promotion that applies to every cart that qualifies, with nothing to type. You set them up on your site\'s Products page, in its Promotions section.\nAnyone who can edit the site can add, change and delete discounts. Shoppers pay through your own Stripe account, so connect Stripe before you promote a sale.\nThe Promotions section holds two cards for money off:\n| Card | What it makes |\n| -- | -- |\n| Discounts | Codes and automatic promotions: percent off, a fixed amount off, or free shipping, with a minimum subtotal, a use limit and dates. Use this one for anything new. |\n| Coupons | Simple percent-off codes with a use limit and an expiry date. Codes you made here before Discounts existed keep working. |\nGift cards and store credit sit in the same section; see Gift cards & store credit.'
|
|
4388
|
+
},
|
|
4389
|
+
{
|
|
4390
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4391
|
+
title: 'Discounts and coupons',
|
|
4392
|
+
heading: 'Add a discount',
|
|
4393
|
+
anchor: '#add-a-discount',
|
|
4394
|
+
text: 'The Discounts card takes money off with a code or automatically: select Add discount, choose a percent off, an amount off or free shipping, and select Save.\n1. Open your site\'s Products page and choose Promotions.\n2. On the Discounts card, select Add discount.\n3. Fill in the New discount dialog:\n- Code (blank = automatic): the code shoppers type, such as SAVE10. It is saved in capital letters, and anything other than letters, numbers,\n- and is dropped. Leave it empty to make an automatic promotion, and give it a Promotion name instead, such as "Summer sale".\n- Type: Percent off, Fixed amount off or Free shipping. A percent or fixed discount asks for its amount in the % or $ off field next to it.\n- Min subtotal ($): optional. The cart\'s items must add up to at least this much.\n- Max uses: optional. Leave it empty for no limit. See Use limits.\n- Starts and Ends: optional dates. A discount works from the start of its Starts day to the end of its Ends day.\n4. Select Save. Save stays unavailable until a percent or fixed discount has an amount above zero.\nEach discount on the card reads as one line: its code or name, what it takes off, whether it is store-wide or limited to some products, any minimum, and how many times it has been used. A switched-off discount ends in · disabled. Disable stops a discount without deleting it, and Enable switches it back on. Edit opens the same dialog and Delete removes the discount straight away.\nDiscount types {#discount-types}\n- Percent off takes that share off the items in the cart.\n- Fixed amount off takes that amount off the items, never more than they cost.\n- Free shipping charges the shopper no shipping, whichever rate they pick.\nDiscounts come off the items before tax, so tax is worked out on the discounted price. They never come off '
|
|
4395
|
+
},
|
|
4396
|
+
{
|
|
4397
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4398
|
+
title: 'Discounts and coupons',
|
|
4399
|
+
heading: 'Automatic promotions',
|
|
4400
|
+
anchor: '#automatic-promotions',
|
|
4401
|
+
text: 'A discount with no code is an automatic promotion. It shows on the card as a chip with its Promotion name, or Automatic when it has none.\nEvery cart that meets an automatic promotion\'s minimum and dates gets it, without the shopper doing anything. When several could apply, the cart gets the one that takes the most off. Discounts never stack: when a shopper enters a valid code, the code applies instead of any automatic promotion.'
|
|
4402
|
+
},
|
|
4403
|
+
{
|
|
4404
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4405
|
+
title: 'Discounts and coupons',
|
|
4406
|
+
heading: 'Discount codes',
|
|
4407
|
+
anchor: '#discount-codes',
|
|
4408
|
+
text: 'A shopper types a code into the code field on your cart or product page. If the code can\'t be used, checkout stops and tells them why, rather than charging the full price. See What shoppers see.\nCodes are matched without regard to capital letters, so save10 works for SAVE10. A code that isn\'t one of your discounts is checked against your Coupons next.'
|
|
4409
|
+
},
|
|
4410
|
+
{
|
|
4411
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4412
|
+
title: 'Discounts and coupons',
|
|
4413
|
+
heading: 'Use limits',
|
|
4414
|
+
anchor: '#use-limits',
|
|
4415
|
+
text: 'Max uses counts orders, not items: one order uses a discount once, however many items it covers.\nWhile a shopper is on the payment page, their use is held for them, so a limited discount can\'t be handed out more times than its limit allows. The card shows held uses separately, for example 97/100 used · 3 held in checkout. A held use is given back when that checkout expires or is abandoned, and counted when it\'s paid.\nWhen every use is taken or held, the next shopper is told This discount has been fully redeemed. If someone else\'s checkout lets go of a held use, the code works again.'
|
|
4416
|
+
},
|
|
4417
|
+
{
|
|
4418
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4419
|
+
title: 'Discounts and coupons',
|
|
4420
|
+
heading: 'Where discounts apply',
|
|
4421
|
+
anchor: '#where-discounts-apply',
|
|
4422
|
+
text: '| Where | Codes | Automatic promotions |\n| -- | -- | -- |\n| Cart checkout | Yes | Yes |\n| A product\'s Buy button | Yes | Yes |\n| A draft order\'s payment link | No | Yes |\n| The register and the self-service kiosk | No | Yes, except free shipping |\nAt the register, an automatic promotion is added to the cashier\'s own Discount %. The cashier\'s percentage is limited by the store\'s Maximum register discount (%) setting; your promotions are not. See POS & reservations.'
|
|
4423
|
+
},
|
|
4424
|
+
{
|
|
4425
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4426
|
+
title: 'Discounts and coupons',
|
|
4427
|
+
heading: 'Coupons',
|
|
4428
|
+
anchor: '#coupons',
|
|
4429
|
+
text: 'The Coupons card makes simple percent-off codes for online checkout: select Add coupon, enter the code and the percent off, and select Create. For anything more, use a discount.\n1. On the Coupons card, select Add coupon.\n2. Enter the Code (letters and numbers; it is saved in capital letters), the Percent off, and optionally Max redemptions and an Expires date. The code works through the end of the day it expires.\n3. Select Create.\nEach coupon\'s line shows its code, how much it takes off, how many times it has been used, and its expiry, or expired once that day has passed. Use Disable to stop a coupon working and Enable to turn it back on.\nWhen a code matches both a discount and a coupon, the discount wins.'
|
|
4430
|
+
},
|
|
4431
|
+
{
|
|
4432
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4433
|
+
title: 'Discounts and coupons',
|
|
4434
|
+
heading: 'Import and export',
|
|
4435
|
+
anchor: '#import-and-export',
|
|
4436
|
+
text: 'The Discounts and Coupons cards each have Import and Export in their header. A discount or coupon you import starts switched off, unless the file has an Active column that says otherwise. Switch it on with Enable on its row. How many times one has been used is exported but never imported. See Import and export store data.\nAglyn AI can also propose discounts for your store. They are created switched off, so nothing changes at checkout until you select Enable. See Products with AI.'
|
|
4437
|
+
},
|
|
4438
|
+
{
|
|
4439
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4440
|
+
title: 'Discounts and coupons',
|
|
4441
|
+
heading: 'Show the code field to shoppers',
|
|
4442
|
+
anchor: '#show-the-code-field',
|
|
4443
|
+
text: 'Shoppers can only enter a code where your site shows a code field. In Besigner, select the element and turn on its setting:\n- Cart and Cart page: Show coupon and gift card fields. This one setting shows both the Coupon code field and the Gift card field.\n- Product detail and Product page: Show discount code field. This shows a Discount code field above the Buy button.\nAutomatic promotions need no field: they apply on their own.'
|
|
4444
|
+
},
|
|
4445
|
+
{
|
|
4446
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4447
|
+
title: 'Discounts and coupons',
|
|
4448
|
+
heading: 'What shoppers see',
|
|
4449
|
+
anchor: '#what-shoppers-see',
|
|
4450
|
+
text: 'A shopper whose code works pays the discounted price. When a code can\'t be used, checkout stops before payment and the shopper sees one of these messages:\n| Message | Why |\n| -- | -- |\n| This discount has not started yet | Today is before its Starts date. |\n| This discount has expired | Its Ends date has passed. |\n| This discount is disabled | The discount is switched off. |\n| Spend $… to use this | The cart\'s items add up to less than Min subtotal. |\n| This discount does not apply to your items | The discount covers only some products, and none of them are in the cart. |\n| This discount has been fully redeemed | Every use is taken or held in someone else\'s checkout. |\n| Invalid or expired coupon | The code is neither a discount nor a coupon, or the coupon is switched off or past its expiry. |\n| A promotion on your cart has just been fully redeemed. Refresh your cart to see the current price. | An automatic promotion ran out while the shopper was checking out. Refreshing prices the cart without it. |'
|
|
4451
|
+
},
|
|
4452
|
+
{
|
|
4453
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4454
|
+
title: 'Discounts and coupons',
|
|
4455
|
+
heading: 'Troubleshooting',
|
|
4456
|
+
anchor: '#troubleshooting',
|
|
4457
|
+
text: '| What happens | What to do |\n| -- | -- |\n| A shopper can\'t find where to type the code | Turn on the code field on your cart or product page. See Show the code field to shoppers. |\n| A discount ends in · disabled | It was imported or proposed by Aglyn AI, which start switched off, or someone selected Disable. Select Enable on its row. |\n| A capped discount says it is used up but you have fewer orders | Some uses are held by shoppers on the payment page. They come back when those checkouts expire. |\n| A code works online but not at the register | Codes aren\'t entered at the register. Make it an automatic promotion, or use the cashier\'s Discount %. |\n| A free shipping promotion didn\'t apply at the register | Register sales don\'t ship, so free shipping has nothing to take off there. |'
|
|
4458
|
+
},
|
|
4459
|
+
{
|
|
4460
|
+
path: '/commerce-and-bookings/commerce/discounts-and-coupons',
|
|
4461
|
+
title: 'Discounts and coupons',
|
|
4462
|
+
heading: 'Related',
|
|
4463
|
+
anchor: '#related',
|
|
4464
|
+
text: '- Commerce\n- Gift cards & store credit\n- Rewards, referrals and store credit\n- Import and export store data'
|
|
4465
|
+
},
|
|
4466
|
+
{
|
|
4467
|
+
path: '/commerce-and-bookings/commerce/dropship-suppliers',
|
|
4468
|
+
title: 'Dropship suppliers',
|
|
4469
|
+
heading: '',
|
|
4470
|
+
anchor: '',
|
|
4471
|
+
text: 'Dropship suppliers\nWhen a supplier ships some of your products for you, Aglyn can send each paid order for those products straight to them. The supplier gets the items, the shipping address and a link to record the tracking number, and the order is marked shipped when they use it. Suppliers need no Aglyn account.\nDropship suppliers are part of the Pro plan and above. On a lower plan the Dropship suppliers card offers an upgrade instead, and no order is sent.'
|
|
4472
|
+
},
|
|
4473
|
+
{
|
|
4474
|
+
path: '/commerce-and-bookings/commerce/dropship-suppliers',
|
|
4475
|
+
title: 'Dropship suppliers',
|
|
4476
|
+
heading: 'Add a supplier',
|
|
4477
|
+
anchor: '#add-a-supplier',
|
|
4478
|
+
text: 'The Dropship suppliers card, on Products → Shipping & delivery, lists the partners that ship orders for you: select Add supplier, enter its name and how it hears about orders, and select Save.\n1. Open your site\'s Products page and choose Shipping & delivery.\n2. On the Dropship suppliers card, select Add supplier.\n3. Enter the supplier\'s Name.\n4. Choose how it hears about orders. Fill in one or both:\n- Notification email: gets each order\'s details and a tracking link.\n- Webhook URL: an address on the supplier\'s own system that receives each order as JSON. See Webhook orders.\n5. Select Save.\nEach supplier\'s row shows its email and webhook address, or No delivery method set. Edit changes a supplier. Remove deletes it after you confirm: its products stop being sent, and orders already sent are not affected.'
|
|
4479
|
+
},
|
|
4480
|
+
{
|
|
4481
|
+
path: '/commerce-and-bookings/commerce/dropship-suppliers',
|
|
4482
|
+
title: 'Dropship suppliers',
|
|
4483
|
+
heading: 'Assign products to a supplier',
|
|
4484
|
+
anchor: '#assign-products',
|
|
4485
|
+
text: 'A supplier is told only about the products you assign to it.\n1. On the Catalog, open a product the supplier ships.\n2. Choose the supplier under Supplier. None (self-fulfilled) keeps the product with you. The field appears once you have added a supplier.\n3. Save the product.\nRepeat for each of the supplier\'s products. A product has one supplier at a time.'
|
|
4486
|
+
},
|
|
4487
|
+
{
|
|
4488
|
+
path: '/commerce-and-bookings/commerce/dropship-suppliers',
|
|
4489
|
+
title: 'Dropship suppliers',
|
|
4490
|
+
heading: 'What happens when an order is paid',
|
|
4491
|
+
anchor: '#when-an-order-is-paid',
|
|
4492
|
+
text: 'As soon as an order is paid, each supplier with products on it is sent that order, once. This happens for cart orders and for a product\'s Buy button.\n- A supplier is told about its own items only. An order with products from two suppliers, and some you ship yourself, sends each supplier just its lines; the rest wait for you on the Orders page.\n- The order\'s timeline shows a Sent to supplier entry for each supplier that was told.\n- If the order has no shipping address, because nothing on it needed shipping at checkout, the email says so and asks the supplier to contact you for it.\nThe supplier email {#supplier-email}\nThe email is sent in your store\'s name, with the subject New order to fulfill for your store. It gives the order number, what to ship and how many (with each item\'s option and SKU on a cart order), who it ships to and their address, and a link to record the shipment.'
|
|
4493
|
+
},
|
|
4494
|
+
{
|
|
4495
|
+
path: '/commerce-and-bookings/commerce/dropship-suppliers',
|
|
4496
|
+
title: 'Dropship suppliers',
|
|
4497
|
+
heading: 'Record the shipment',
|
|
4498
|
+
anchor: '#record-the-shipment',
|
|
4499
|
+
text: 'The link in the email, also sent in each webhook order as updateUrl, opens a Record this shipment page:\n1. The supplier enters the Carrier and Tracking number.\n2. They select Mark as shipped.\nThe supplier\'s lines are then marked shipped with that tracking, the customer is sent their shipping email, and you get a notification. When other lines on the order are still to ship, the order shows as partly fulfilled, and the notification says how many lines are left. Each supplier\'s link covers only its own lines, and a supplier who already recorded its lines is told so.'
|
|
4500
|
+
},
|
|
4501
|
+
{
|
|
4502
|
+
path: '/commerce-and-bookings/commerce/dropship-suppliers',
|
|
4503
|
+
title: 'Dropship suppliers',
|
|
4504
|
+
heading: 'Webhook orders',
|
|
4505
|
+
anchor: '#webhook-orders',
|
|
4506
|
+
text: 'For a supplier with a Webhook URL, Aglyn sends a POST with a JSON body for each order:\n| Field | What it holds |\n| -- | -- |\n| hostId, orderId | Which store and order this is. |\n| lines | Cart orders: each of this supplier\'s items, with productId, productName, variantLabel, sku and quantity. |\n| productId, productName, quantity | Buy button orders: the one product bought. |\n| customerEmail, shippingName | Who the order is for. |\n| shippingAddress | line1, line2, city, state, postalCode and country, or null when none was collected. |\n| updateUrl | The link to record the shipment. |\nTo record the shipment from the supplier\'s system, POST to updateUrl with a JSON body holding carrier and trackingNumber.\nSigned webhooks {#signed-webhooks}\nEnter a Webhook secret on the supplier, a value you share with it, and each order carries an x-aglyn-signature header: the hex HMAC-SHA256 of the raw body, keyed with that secret. The supplier checks the header to know the order came from your store. Without a secret, orders are sent unsigned.\nWhen the supplier\'s system is down {#webhook-retries}\nAn order that the supplier\'s address does not accept with a 2xx answer is tried again after about 1 minute, 5 minutes, 15 minutes, 1 hour and 6 hours. After six failed tries the order\'s timeline says it was never sent, and you get a notification to send it yourself or ship it by hand. Fixing the Webhook URL on the supplier also fixes orders still waiting to be retried.'
|
|
4507
|
+
},
|
|
4508
|
+
{
|
|
4509
|
+
path: '/commerce-and-bookings/commerce/dropship-suppliers',
|
|
4510
|
+
title: 'Dropship suppliers',
|
|
4511
|
+
heading: 'Troubleshooting',
|
|
4512
|
+
anchor: '#troubleshooting',
|
|
4513
|
+
text: '| What happens | What to do |\n| -- | -- |\n| The card offers an upgrade | Dropship suppliers need the Pro plan or above. |\n| There is no Supplier field in the product editor | Add a supplier first. The field appears once one exists. |\n| A supplier didn\'t hear about an order | Check the product was assigned to the supplier before the order was paid, and that the supplier has an email or webhook address. Orders paid earlier are not sent again. |\n| The timeline says an order was never sent | The supplier\'s webhook address failed six times. Check the address, then send the order to the supplier yourself. |\n| The supplier says the link reports Invalid token | The link was changed or belongs to another order. Ask them to use the link from that order\'s email. |'
|
|
4514
|
+
},
|
|
4515
|
+
{
|
|
4516
|
+
path: '/commerce-and-bookings/commerce/dropship-suppliers',
|
|
4517
|
+
title: 'Dropship suppliers',
|
|
4518
|
+
heading: 'Related',
|
|
4519
|
+
anchor: '#related',
|
|
4520
|
+
text: '- Commerce\n- Product catalog\n- Orders and returns'
|
|
4521
|
+
},
|
|
4382
4522
|
{
|
|
4383
4523
|
path: '/commerce-and-bookings/commerce/fulfillment-networks',
|
|
4384
4524
|
title: 'Fulfillment networks (ShipBob, ShipMonk and Amazon MCF)',
|
|
@@ -4391,7 +4531,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4391
4531
|
title: 'Fulfillment networks (ShipBob, ShipMonk and Amazon MCF)',
|
|
4392
4532
|
heading: 'Connect a network',
|
|
4393
4533
|
anchor: '#connect-a-network',
|
|
4394
|
-
text: '1. Open
|
|
4534
|
+
text: '1. Open Products → Shipping & delivery and find the Fulfillment networks card.\n2. Next to ShipBob or Amazon Multi-Channel Fulfillment (when the card offers them), select Connect.\n3. Sign in to that account and allow Aglyn access. You come back to the store settings with the network connected.\nYou need to be an admin of the site to connect, change or disconnect a network. Aglyn never sees your ShipBob or Amazon password; it keeps only the access the network grants, encrypted.\nShipMonk: connect with your API key\nShipMonk connects with an API key from your own ShipMonk account instead of a sign-in:\n1. In ShipMonk, open Account Settings, then Integration API Keys. If you have no API store yet, ShipMonk sets one up for you when you ask under Stores.\n2. Create an API key for your API store, and note the store\'s id shown beside it.\n3. On Products → Shipping & delivery, select Connect ShipMonk, paste the key, enter the store id and select Connect.\nAglyn checks the key with ShipMonk before keeping it, keeps it encrypted, and never shows it again. To use a new key, revoke the old one in ShipMonk: the card asks you to Connect again, and you paste the new one.\nAfter you connect, the card shows a webhook address and a signing secret, once. Give both to ShipMonk (its webhook settings under Integrations, or ShipMonk support) so it tells Aglyn the moment an order ships. Aglyn checks every webhook\'s signature and ignores any that does not match. Without webhooks, Aglyn still reads each order back from ShipMonk every 15 minutes. New webhook secret makes a new secret and ends the old one at once.\n- ShipBob creates a channel for Aglyn in your ShipBob account. Orders appear under it.\n- Amazon asks you to choose the marketplace whose FBA inventory ships your orders, if your seller account se'
|
|
4395
4535
|
},
|
|
4396
4536
|
{
|
|
4397
4537
|
path: '/commerce-and-bookings/commerce/fulfillment-networks',
|
|
@@ -4482,7 +4622,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4482
4622
|
title: 'Fulfillment, returns and webhooks',
|
|
4483
4623
|
heading: '',
|
|
4484
4624
|
anchor: '',
|
|
4485
|
-
text: 'Fulfillment, returns and webhooks\nWhat happens to an order after it is paid: shipping it, in one parcel or several; taking items back; printing its paperwork; and telling your other systems about it. Everything here is in the order\'s dialog on the Orders tab of the Products hub,
|
|
4625
|
+
text: 'Fulfillment, returns and webhooks\nWhat happens to an order after it is paid: shipping it, in one parcel or several; taking items back; printing its paperwork; and telling your other systems about it. Everything here is in the order\'s dialog on the Orders tab of the Products hub, under Returns beside it, and on its Checkout and Notifications settings pages.'
|
|
4486
4626
|
},
|
|
4487
4627
|
{
|
|
4488
4628
|
path: '/commerce-and-bookings/commerce/orders-and-returns',
|
|
@@ -4503,14 +4643,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4503
4643
|
title: 'Fulfillment, returns and webhooks',
|
|
4504
4644
|
heading: 'Returns',
|
|
4505
4645
|
anchor: '#returns',
|
|
4506
|
-
text: 'A return is its own record beside the order: what is coming back and why, what you decided, the return label, what went back in stock, and the refund. Every return is listed under Returns in the Products hub, newest first; the Status filter shows one state at a time.\nHow a buyer asks {#buyer-requests}\nA buyer asks for a return themselves, from either of two places:\n- the Request a return link beside an order in their account on your store, when they are signed in;\n- the Request a return button on the order\'s status page — the View your order link in every order email — which needs no account. The button shows only while the return window is open and something on the order can still come back.\nBoth open the return page at /order-return in your site\'s header and footer. The page is unlisted, so search engines leave it out; to design your own, make a page at /order-return and place the Return request block on it. The buyer chooses how many of each item to send back and a reason for each — Arrived damaged, Wrong item, Not as described, Size or fit, No longer needed or Other — and can add a note. Only items that have shipped can be returned, and never more than were bought or are already coming back. You and the site\'s managers are told by email and in the console\'s notifications.\nUnder
|
|
4646
|
+
text: 'A return is its own record beside the order: what is coming back and why, what you decided, the return label, what went back in stock, and the refund. Every return is listed under Returns in the Products hub, newest first; the Status filter shows one state at a time.\nHow a buyer asks {#buyer-requests}\nA buyer asks for a return themselves, from either of two places:\n- the Request a return link beside an order in their account on your store, when they are signed in;\n- the Request a return button on the order\'s status page — the View your order link in every order email — which needs no account. The button shows only while the return window is open and something on the order can still come back.\nBoth open the return page at /order-return in your site\'s header and footer. The page is unlisted, so search engines leave it out; to design your own, make a page at /order-return and place the Return request block on it. The buyer chooses how many of each item to send back and a reason for each — Arrived damaged, Wrong item, Not as described, Size or fit, No longer needed or Other — and can add a note. Only items that have shipped can be returned, and never more than were bought or are already coming back. You and the site\'s managers are told by email and in the console\'s notifications.\nUnder Checkout → Returns:\n- Accept return requests online — turn it off to take returns only by contact. You can still start a return for a buyer from the order.\n- Return window in days — counted from the last shipment, or from the order date for an order with nothing to ship. 0 to 365.\n- Returnable product types — physical products only, by default.\nRun a return {#run-a-return}\nOpen a return from the list, or from the Returns section of its order\'s dialog, where Start return opens one for the buye'
|
|
4507
4647
|
},
|
|
4508
4648
|
{
|
|
4509
4649
|
path: '/commerce-and-bookings/commerce/orders-and-returns',
|
|
4510
4650
|
title: 'Fulfillment, returns and webhooks',
|
|
4511
4651
|
heading: 'Order webhooks',
|
|
4512
4652
|
anchor: '#order-webhooks',
|
|
4513
|
-
text: 'An order webhook posts each order event to an address you choose, as it happens: a warehouse system, an ERP, a spreadsheet script. Add them under
|
|
4653
|
+
text: 'An order webhook posts each order event to an address you choose, as it happens: a warehouse system, an ERP, a spreadsheet script. Add them under Notifications → Order webhooks in the Products hub. Managing webhooks needs the admin role and organization-wide membership, the same as refunds.\nAdd endpoint asks for:\n- Endpoint URL — an https:// address on a public server. Redirects are not followed, so give the final address.\n- Events — any of the events below.\nWhen you add an endpoint, its signing secret is shown once. Copy it into your endpoint\'s settings; Roll secret makes a new one if it is lost. A store can keep 10 endpoints. Pause stops deliveries to one without deleting it, and Send test event posts a webhook.test event now.\n| Event | When |\n| order.paid | An order was paid: online, buy-now, a payment link, a POS sale or a subscription renewal. |\n| order.fulfilled | A shipment was recorded, once per shipment. |\n| order.delivered | The order was marked delivered. |\n| order.refunded | Money went back to the buyer, once per refund, including a refund made in the Stripe Dashboard. |\n| order.cancelled | The order was canceled. |\n| return.requested | A buyer asked for a return, or you opened one. |\n| return.approved | You approved a return, or opened one yourself. |\n| return.declined | You declined a return request. |\n| return.received | The returned items arrived. |\n| return.refunded | A return was refunded. |\nWhen an endpoint is down\nAn endpoint has 8 seconds to answer each event. One that doesn\'t is sent the event again, on a schedule that lasts about a day, and the site\'s managers are told if the last try fails.\nWhoever builds your endpoint needs Order webhooks for developers: what each event carries and how to check that it came from your store.\nDeliveries on an endp'
|
|
4514
4654
|
},
|
|
4515
4655
|
{
|
|
4516
4656
|
path: '/commerce-and-bookings/commerce/orders-and-returns',
|
|
@@ -4531,14 +4671,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4531
4671
|
title: 'Commerce',
|
|
4532
4672
|
heading: 'Products hub',
|
|
4533
4673
|
anchor: '#products-hub',
|
|
4534
|
-
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- Import and export: a Shopify product export uploads as it is, a product a file matches by handle or SKU is updated, and every step shows its choices and a dry run first. Gift cards move over by issuing each card. Products, categories, orders, discounts, coupons and gift cards export with the fields you pick. See Import and export store data.\n- Payments — Stripe Connect onboarding status and your plan\'s fee ladder.\nThe
|
|
4674
|
+
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- Import and export: a Shopify product export uploads as it is, a product a file matches by handle or SKU is updated, and every step shows its choices and a dry run first. Gift cards move over by issuing each card. Products, categories, orders, discounts, coupons and gift cards export with the fields you pick. See Import and export store data.\n- Payments — Stripe Connect onboarding status and your plan\'s fee ladder.\nThe store\'s settings sit under Settings at the foot of the Products rail, a page each:\n- Payments — your Stripe account and the payment methods shoppers may use.\n- Checkout — the Store settings card (templates, currency, guest checkout, terms, receipt footer) and online returns.\n- Taxes — your tax rates, and a tax service where one is set up.\n- Shipping & delivery — shipping rates, inventory locations and pickup, local delivery, dropship suppliers, and shipping and fulfillment services.\n- Notifications — which emails customers get, and order webhooks.\n- Point of sale — registers, staff PINs, register hardware and POS devices.\n- Sales channels and Integrations — the shopping channels, marketplaces and other services you connect. Each appears only once there is something on it for your store.\nAn old link to the single Settings page opens Payments.\nThe product list filters through its own toolbar, and every filter and the search reach the whole catalog, not only the rows on screen. The list is in name order and pages through whatever matches.\n- Search '
|
|
4535
4675
|
},
|
|
4536
4676
|
{
|
|
4537
4677
|
path: '/commerce-and-bookings/commerce/overview',
|
|
4538
4678
|
title: 'Commerce',
|
|
4539
4679
|
heading: 'Inventory',
|
|
4540
4680
|
anchor: '#inventory',
|
|
4541
|
-
text: '- Per-variant stock; blank = untracked, 0 = sold out.\n- Oversell policy per product: stop selling or allow backorders.\n- Low-stock alerts notify managers once per threshold crossing.\n- Adjustment history with reason codes (sale, restock, correction…).\n- Locations split stock across warehouses/storefronts (plan-capped); adjustments and POS sales bucket per location.\n- Reserved in checkout holds units for a shopper who has reached the payment page, so the last one cannot be sold twice.\nInventory locations {#inventory-locations}\nThe Inventory locations card,
|
|
4681
|
+
text: '- Per-variant stock; blank = untracked, 0 = sold out.\n- Oversell policy per product: stop selling or allow backorders.\n- Low-stock alerts notify managers once per threshold crossing.\n- Adjustment history with reason codes (sale, restock, correction…).\n- Locations split stock across warehouses/storefronts (plan-capped); adjustments and POS sales bucket per location.\n- Reserved in checkout holds units for a shopper who has reached the payment page, so the last one cannot be sold twice.\nInventory locations {#inventory-locations}\nThe Inventory locations card, on Products → Shipping & delivery, splits your stock across warehouses or storefronts: add a location for each place you keep stock, then set each variant\'s count per location.\nWithout locations, every variant has a single stock count. How many locations you can add depends on your plan; the card says when you reach the limit.\n1. Type a name under New location and select Add. The first location you add becomes the Default; Make default on another row moves it.\n2. Select Add address on a row to give the location its postal address. Shipping labels use it as the address parcels ship from (see Where parcels ship from), and buyers who pick up are sent there.\n3. Optionally select Pickup on a row to let buyers collect orders there, with pickup hours and arrival instructions — see Set up pickup.\n4. In the products hub, enter each variant\'s stock for each location.\nPOS registers sell from the location you give them, so a sale at the till takes stock from that location. Remove deletes a location after you confirm.\nReserved stock {#reserved-stock}\nWhen a shopper reaches the payment page, the units in their basket are reserved — the next shopper is offered what is left, not the same unit. It is what stops two people paying for th'
|
|
4542
4682
|
},
|
|
4543
4683
|
{
|
|
4544
4684
|
path: '/commerce-and-bookings/commerce/overview',
|
|
@@ -4566,14 +4706,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4566
4706
|
title: 'Commerce',
|
|
4567
4707
|
heading: 'Payment methods',
|
|
4568
4708
|
anchor: '#payment-methods',
|
|
4569
|
-
text: 'The Payment methods card,
|
|
4709
|
+
text: 'The Payment methods card, on Products → Payments, chooses what shoppers may pay with besides a card, once your Stripe account is connected on the Payments card. Cards are always on. Every other method is on unless you turn it off, except stablecoins, which you turn on. Stripe shows a method only on orders it suits: the right currency, an amount inside its limits, and a shopper in a country it serves.\n| Method | What the shopper needs | Limits |\n| Apple Pay | Safari on a Mac, iPhone or iPad with a card in Apple Wallet | Same as cards |\n| Google Pay | Chrome or an Android device with a card in Google Pay | Same as cards |\n| Link | A card or bank saved with Link | Same as cards |\n| Klarna | A US shopper paying in USD | From $10 |\n| Afterpay | A US shopper paying in USD | $1 to $4,000, one-time purchases only |\n| Affirm | A US shopper paying in USD | $50 to $30,000, one-time purchases only |\n| Cash App Pay | A US shopper with Cash App | USD only |\n| Amazon Pay | An Amazon account with a saved card | USD only |\n| Stablecoins | A crypto wallet holding USDC or another supported stablecoin | USD only, up to $10,000 |\nThe card only lists the methods the platform offers. A method missing from your card is not available for storefronts yet. Anyone who manages the store can read the card; only a site admin can change it.\nWhat each chip means. Buy-now-pay-later, Cash App Pay, Amazon Pay and stablecoins also need Stripe to enable them on your payout account. Saving the card asks Stripe for that. Stripe is reviewing means it is still checking, and Stripe needs more details means Stripe wants more information. The organization owner presses Finish in Stripe on that method to give it. A method Stripe has not enabled on your account may not be offered to shoppers.\nApple Pay needs your do'
|
|
4570
4710
|
},
|
|
4571
4711
|
{
|
|
4572
4712
|
path: '/commerce-and-bookings/commerce/overview',
|
|
4573
4713
|
title: 'Commerce',
|
|
4574
4714
|
heading: 'Shipping & taxes',
|
|
4575
4715
|
anchor: '#shipping--taxes',
|
|
4576
|
-
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,
|
|
4716
|
+
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, on Products → Taxes, 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 collec'
|
|
4577
4717
|
},
|
|
4578
4718
|
{
|
|
4579
4719
|
path: '/commerce-and-bookings/commerce/overview',
|
|
@@ -4587,21 +4727,21 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4587
4727
|
title: 'Commerce',
|
|
4588
4728
|
heading: 'Dropshipping',
|
|
4589
4729
|
anchor: '#dropshipping',
|
|
4590
|
-
text: '
|
|
4730
|
+
text: 'Add a supplier on the Dropship suppliers card, assign it to the products it ships, and each paid order is sent to it by email or webhook with a link to record the tracking, which marks its items shipped. Pro plan and above. See Dropship suppliers.'
|
|
4591
4731
|
},
|
|
4592
4732
|
{
|
|
4593
4733
|
path: '/commerce-and-bookings/commerce/overview',
|
|
4594
4734
|
title: 'Commerce',
|
|
4595
4735
|
heading: 'Store settings',
|
|
4596
4736
|
anchor: '#store-settings',
|
|
4597
|
-
text: 'The Store settings card,
|
|
4737
|
+
text: 'The Store settings card, on Products → Checkout, sets the pages product and collection links open, the currency prices show in, guest checkout, your terms link and the receipt footer.\n1. Choose the Product page template: a page you designed with the Product detail block, rendered at /products/{slug} for every product. With None, product links lead nowhere. See The product page template.\n2. Choose the Collection page template, a page with a Product grid, rendered at /collections/{slug}.\n3. Leave Currency at USD; charges settle in USD.\n4. Turn on Allow guest checkout to let buyers pay without an account.\n5. Optionally enter a Terms URL, linked from checkout, and a Receipt footer.\n6. Select Save store settings.\nTaxes and shipping have their own pages, Taxes and Shipping & delivery. Store password and maintenance mode live under Site Protection.'
|
|
4598
4738
|
},
|
|
4599
4739
|
{
|
|
4600
4740
|
path: '/commerce-and-bookings/commerce/overview',
|
|
4601
4741
|
title: 'Commerce',
|
|
4602
4742
|
heading: 'Discounts and coupons',
|
|
4603
4743
|
anchor: '#discounts-and-coupons',
|
|
4604
|
-
text: '
|
|
4744
|
+
text: 'Money off lives on the Promotions tab of your site\'s Products page. Discounts and coupons is the full setup guide.\nDiscounts {#discounts}\nDiscounts are codes shoppers type at checkout, or automatic promotions with nothing to type, for a percent off, an amount off or free shipping, with an optional minimum, use limit and dates. See Add a discount.\nCoupons {#coupons}\nCoupons are the older, simpler percent-off codes, with an optional use limit and expiry date. See Coupons.'
|
|
4605
4745
|
},
|
|
4606
4746
|
{
|
|
4607
4747
|
path: '/commerce-and-bookings/commerce/overview',
|
|
@@ -4636,14 +4776,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4636
4776
|
title: 'Pickup & local delivery',
|
|
4637
4777
|
heading: 'Set up pickup',
|
|
4638
4778
|
anchor: '#set-up-pickup',
|
|
4639
|
-
text: 'Pickup is turned on per location, on the Inventory locations card
|
|
4779
|
+
text: 'Pickup is turned on per location, on the Inventory locations card on Products → Shipping & delivery, so buyers can collect orders there at the hours you set. On a location\'s row, choose Pickup, then:\n1. Turn on Buyers can pick up orders here.\n2. Under Pickup hours, switch on each day buyers can collect, then pick the From and To times. For a split day, such as a lunch break, select Add hours on that day.\n3. Add Arrival instructions if buyers need them, such as which door to use.\n4. Choose how long an order is Usually ready in, or leave it unsaid.\nGive the location an address too (Add address on its row), so buyers know where to go. Every location with pickup on is offered at the cart, with your default location first.\nWhen a buyer picks up at a location, that location\'s stock is reserved while they check out and sold from that location when they pay. If the location doesn\'t have enough, the cart says so and the buyer can choose another location or have it shipped. Canceling the order puts the stock back at the same location.\nThe Offer free local pickup switch on the Shipping card is the older, unnamed pickup choice. Once any location offers pickup, the cart uses your locations instead.'
|
|
4640
4780
|
},
|
|
4641
4781
|
{
|
|
4642
4782
|
path: '/commerce-and-bookings/commerce/pickup-and-local-delivery',
|
|
4643
4783
|
title: 'Pickup & local delivery',
|
|
4644
4784
|
heading: 'Set up local delivery',
|
|
4645
4785
|
anchor: '#set-up-local-delivery',
|
|
4646
|
-
text: 'The Local delivery card,
|
|
4786
|
+
text: 'The Local delivery card, on Products → Shipping & delivery, lets your own driver deliver orders: buyers enter their postal code at the cart, pay your fee and book a delivery time. To set it up:\n1. Turn on Deliver orders yourself and enter the two-letter Country you deliver in.\n2. Optionally choose the location orders Leave from. Its stock is reserved and sold for delivery orders.\n3. Add one or more Zones. A zone lists the postal codes it covers: exact codes such as 10001, a prefix ending in such as 100, or a range such as 10010-10020. Each zone has its own Fee, an optional Minimum order and an optional Free over amount. When a postal code is in more than one zone, the zone listed first is used.\n4. Under Delivery windows, switch on each day you deliver and pick a window\'s From and To times. Select Add window for a second window on the same day. Each window is offered on its day.\n5. Choose how long before a window an order must be placed (Order at least) and how many days ahead buyers can book.\n6. Optionally add What buyers should know, such as "We text when we\'re 10 minutes away." It shows at the cart and on the receipt.\nThe card lists anything that stops checkout from offering delivery, such as a zone with no postal codes or no delivery windows.\nAt the cart, the buyer enters their postal code and sees the fee, or why delivery isn\'t available, such as an order below the zone\'s minimum. Checkout charges the fee as the order\'s shipping and asks for an address in your country only. If the address the buyer then enters is outside all of your zones, the order is flagged and you\'re notified, so you can contact the buyer or refund the delivery.'
|
|
4647
4787
|
},
|
|
4648
4788
|
{
|
|
4649
4789
|
path: '/commerce-and-bookings/commerce/pickup-and-local-delivery',
|
|
@@ -4678,7 +4818,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4678
4818
|
title: 'POS & reservations',
|
|
4679
4819
|
heading: 'Registers',
|
|
4680
4820
|
anchor: '#registers',
|
|
4681
|
-
text: 'Create your registers under
|
|
4821
|
+
text: 'Create your registers under Products → Point of sale → POS registers — one per till or device that takes in-person payments. Before your first register exists, the register page and the POS devices card each show an Add a register button that takes you there. Give each a name (and, if you use inventory locations, the location it sells from). Every POS sale is tagged with its register so you can reconcile end-of-day takings per till. Your plan caps how many registers you can run; add more with the register add-on in Billing. If you downgrade below your register count, the extra registers (newest first) stop taking payments and show Over plan limit until you remove them or upgrade again — none are deleted.'
|
|
4682
4822
|
},
|
|
4683
4823
|
{
|
|
4684
4824
|
path: '/commerce-and-bookings/commerce/pos-and-reservations',
|
|
@@ -4713,21 +4853,21 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4713
4853
|
title: 'POS & reservations',
|
|
4714
4854
|
heading: 'Card readers',
|
|
4715
4855
|
anchor: '#card-readers',
|
|
4716
|
-
text: 'A card reader takes card payments at the counter: the customer taps, inserts or swipes, and the reader can ask for a tip. The register works with Stripe\'s smart readers, the Stripe Reader S700 (and S710) and the BBPOS WisePOS E. Card readers are shown only when they are available for your store; when they are not, the POS devices card has no card reader controls and the register has no Card reader button.\nTo add a reader:\n1. On the reader, open Settings and choose Generate pairing code.\n2. In the console, open
|
|
4856
|
+
text: 'A card reader takes card payments at the counter: the customer taps, inserts or swipes, and the reader can ask for a tip. The register works with Stripe\'s smart readers, the Stripe Reader S700 (and S710) and the BBPOS WisePOS E. Card readers are shown only when they are available for your store; when they are not, the POS devices card has no card reader controls and the register has no Card reader button.\nTo add a reader:\n1. On the reader, open Settings and choose Generate pairing code.\n2. In the console, open Products → Point of sale → POS devices and choose Add card reader.\n3. Enter the registration code the reader shows, give the reader a name (such as "Front counter reader") and, optionally, pick the register it belongs to. A reader left on Any register can be used from every register.\n4. The first reader you add asks for the store\'s address — where the reader is used. Stripe sets the reader up for that country.\nEach reader is listed with its register and an Online or Offline status, and can be renamed, moved to another register, or removed. A removed reader has to be registered again with a new code to be used. A reader must be switched on and connected to the internet to take a payment; the register warns you when the selected reader looks offline. See POS hardware for setup notes.\nTrying it in test mode In test mode, add a reader with the code simulated-wpe to get Stripe\'s simulated reader. While a payment waits on it, the register shows Simulate tap to complete it with a test card.'
|
|
4717
4857
|
},
|
|
4718
4858
|
{
|
|
4719
4859
|
path: '/commerce-and-bookings/commerce/pos-and-reservations',
|
|
4720
4860
|
title: 'POS & reservations',
|
|
4721
4861
|
heading: 'Customer display',
|
|
4722
4862
|
anchor: '#customer-display',
|
|
4723
|
-
text: 'A customer display is a tablet facing your customer. It shows your store\'s logo (or name) and a welcome line between sales, the basket with its total as you ring it up, and it lets the customer choose a tip and a receipt themselves.\nTo pair one:\
|
|
4863
|
+
text: 'A customer display is a tablet facing your customer. It shows your store\'s logo (or name) and a welcome line between sales, the basket with its total as you ring it up, and it lets the customer choose a tip and a receipt themselves.\nTo pair one, start from either place:\n- On the register, tap Pair display next to the Register heading.\n- In the console, open Products → Point of sale → POS devices and tap Pair display beside the register the tablet belongs to. Use this when you are setting a tablet up away from the till.\nThen:\n1. Keep Customer display selected. You see an address and a 6-digit code. The code works once and expires in 10 minutes.\n2. On the tablet, open that address — your console address followed by /kiosk/commerce/pos-display — and enter the code. No one signs in on the tablet.\nOnce paired, the register\'s button reads Display connected. During a sale the display shows:\n- The basket — each line, the subtotal, any discount, the total and what has been paid so far. Once a tip is added it is shown on its own line, with the Total with tip under it. Amounts are in your store\'s currency.\n- Tip choices — when tips are on and the cashier taps Ask on display: a button per percentage, an amount the customer types, or no tip.\n- "Tap, insert or swipe your card on the reader." while a card reader payment waits.\n- Receipt choice — when Receipts at the register is Ask the customer: email, text (shown only when text messages are available for your store), print or no receipt. When the customer asks for an email receipt and Offer email sign-up on the customer display is on (it is by default), an unticked Email me news and offers box is shown under the address. Only a ticked box adds them to your marketing audience.\nAfter the customer answers, the display thanks them and sa'
|
|
4724
4864
|
},
|
|
4725
4865
|
{
|
|
4726
4866
|
path: '/commerce-and-bookings/commerce/pos-and-reservations',
|
|
4727
4867
|
title: 'POS & reservations',
|
|
4728
4868
|
heading: 'Self-service kiosk',
|
|
4729
4869
|
anchor: '#self-service-kiosk',
|
|
4730
|
-
text: 'A self-service kiosk is a tablet your customers order from themselves. They browse your products by category, choose sizes and modifiers, review the total with tax, and pay — or send the order to the counter. It belongs to one register, and its orders are register sales: the same prices, tax, automatic promotions and stock as a sale you ring up.\nTo pair one:\n1.
|
|
4870
|
+
text: 'A self-service kiosk is a tablet your customers order from themselves. They browse your products by category, choose sizes and modifiers, review the total with tax, and pay — or send the order to the counter. It belongs to one register, and its orders are register sales: the same prices, tax, automatic promotions and stock as a sale you ring up.\nTo pair one:\n1. Tap Pair display on the register, or beside the register under Products → Point of sale → POS devices, then choose Self-service kiosk. It shows an address and a 6-digit code that works once and expires in 10 minutes.\n2. On the tablet, open that address — your console address followed by /kiosk/commerce/pos-kiosk — and enter the code. No one signs in on the tablet. A customer display code does not pair a kiosk, and a kiosk code does not pair a display.\nThe kiosk keeps working for as long as the person who paired it can use the register. If they are removed from the site or lose access to the register, or the plan no longer includes POS, the kiosk stops taking orders until someone pairs it again.\nA customer\'s order goes like this:\n1. Start order, then tap products to add them. A product with sizes, options or modifiers opens its choices first. Sold-out items cannot be added.\n2. Checkout shows each line with the subtotal, any discount, the tax and the total. Prices and tax always come from your store, never from the tablet.\n3. The customer pays:\n- Pay with card sends the total to the register\'s card reader. It is shown only when card readers are available for your store and one is assigned to the kiosk\'s register. When Ask for tips at the register is on, the kiosk asks for the tip first, so the reader does not ask again.\n- Pay at counter sends the order to the register (see below). It is on by default; turn it off w'
|
|
4731
4871
|
},
|
|
4732
4872
|
{
|
|
4733
4873
|
path: '/commerce-and-bookings/commerce/pos-and-reservations',
|
|
@@ -4769,7 +4909,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4769
4909
|
title: 'POS hardware',
|
|
4770
4910
|
heading: 'Receipt printers',
|
|
4771
4911
|
anchor: '#receipt-printers',
|
|
4772
|
-
text: 'A cloud receipt printer collects its work from Aglyn over the internet, so a receipt prints from the register on any device, even one with no printer driver, and even when the printer is on a different network. Each printer belongs to one register.\nStar printers use CloudPRNT and Epson printers use Server Direct Print. Both come built into the models above.\nAdd a printer\n1. Open
|
|
4912
|
+
text: 'A cloud receipt printer collects its work from Aglyn over the internet, so a receipt prints from the register on any device, even one with no printer driver, and even when the printer is on a different network. Each printer belongs to one register.\nStar printers use CloudPRNT and Epson printers use Server Direct Print. Both come built into the models above.\nAdd a printer\n1. Open Products → Point of sale. Each register has a Hardware card.\n2. Select Add printer on the register\'s card and choose the brand.\n3. Enter the model, a name such as Counter printer, and the printer\'s identity:\n- Star: the printer\'s MAC address. Hold the FEED button while you switch the printer on to print a self-test; the MAC address is on it. Use the Ethernet MAC even when the printer is on Wi-Fi.\n- Epson: any ID you choose, such as counter-1. You enter the same ID in the printer in step 5.\n4. Choose the paper width, whether the printer prints a receipt for every sale, whether it prints kitchen tickets, and whether a cash drawer is plugged into it. Select Add printer. The card shows the printer\'s URL. Copy it.\n5. Enter the URL in the printer\'s own settings page (open the printer\'s IP address, from the self-test, in a browser on the same network):\n- Star: sign in (user root; the password is public or the one on the printer\'s label), go to Settings → CloudPRNT, turn CloudPRNT on, paste the URL as the Server URL, set the polling interval to 5 seconds, then Submit and Save → Restart device.\n- Epson: in EPSON TMNet WebConfig, open Server Direct Print (under Web Service Settings on most models). Select Enable, enter the ID from step 3, paste the URL as the Server 1 URL, set the interval to 5 seconds, select Submit, and reset the printer.\n6. Within a minute the printer shows Online on the card. Select T'
|
|
4773
4913
|
},
|
|
4774
4914
|
{
|
|
4775
4915
|
path: '/commerce-and-bookings/commerce/pos-hardware',
|
|
@@ -4797,7 +4937,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4797
4937
|
title: 'POS hardware',
|
|
4798
4938
|
heading: 'Customer display tablet',
|
|
4799
4939
|
anchor: '#customer-display-tablet',
|
|
4800
|
-
text: 'Any tablet with a modern browser can be the customer display. It needs an internet connection, but not a sign-in: you pair it with a code from the register, as described in Customer display.\nFor a counter that runs all day:\n- Put the tablet on a stand facing the customer; landscape gives the basket and the tip buttons the most room.\n- Keep it plugged in, and set the tablet not to sleep or lock while the display page is open.\n- Use the tablet\'s own single-app or guided-access mode, if it has one, so customers cannot leave the display page.\n- Add the display page to the home screen or bookmark it, so it can be reopened quickly after a restart. A paired display stays paired until you sign it out on the POS devices card
|
|
4940
|
+
text: 'Any tablet with a modern browser can be the customer display. It needs an internet connection, but not a sign-in: you pair it with a code from the register, as described in Customer display.\nFor a counter that runs all day:\n- Put the tablet on a stand facing the customer; landscape gives the basket and the tip buttons the most room.\n- Keep it plugged in, and set the tablet not to sleep or lock while the display page is open.\n- Use the tablet\'s own single-app or guided-access mode, if it has one, so customers cannot leave the display page.\n- Add the display page to the home screen or bookmark it, so it can be reopened quickly after a restart. A paired display stays paired until you sign it out on the POS devices card on Products → Point of sale, remove its register, or clear the tablet browser\'s data for the console.'
|
|
4801
4941
|
},
|
|
4802
4942
|
{
|
|
4803
4943
|
path: '/commerce-and-bookings/commerce/pos-hardware',
|
|
@@ -4811,7 +4951,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4811
4951
|
title: 'Running the register',
|
|
4812
4952
|
heading: '',
|
|
4813
4953
|
anchor: '',
|
|
4814
|
-
text: 'Running the register\nEverything a till needs between the first sale of the day and the last: a counted cash drawer, a quick way to change who is ringing, the customer in front of you, returns, and a proper printed receipt. All of it runs from the register at /{site}/pos. Staff PINs are set
|
|
4954
|
+
text: 'Running the register\nEverything a till needs between the first sale of the day and the last: a counted cash drawer, a quick way to change who is ringing, the customer in front of you, returns, and a proper printed receipt. All of it runs from the register at /{site}/pos. Staff PINs are set on Products → Point of sale, and the register\'s rules under the site\'s Admin → Plugins → Commerce.\nPlan availability These are part of the point of sale, so they need Pro or above, like the register itself. Only members who can use the register — a site admin or editor whose Manage POS permission is on — can open shifts, switch in, look customers up or take returns.'
|
|
4815
4955
|
},
|
|
4816
4956
|
{
|
|
4817
4957
|
path: '/commerce-and-bookings/commerce/pos-operations',
|
|
@@ -4825,7 +4965,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4825
4965
|
title: 'Running the register',
|
|
4826
4966
|
heading: 'Staff PINs',
|
|
4827
4967
|
anchor: '#staff-pins',
|
|
4828
|
-
text: 'A shared tablet stays signed in; each person switches in with their own PIN instead of signing out.\n- Set your 4–6 digit PIN on the Staff PINs card
|
|
4968
|
+
text: 'A shared tablet stays signed in; each person switches in with their own PIN instead of signing out.\n- Set your 4–6 digit PIN on the Staff PINs card on Products → Point of sale. A PIN that is one digit repeated or a straight run like 1234 is refused.\n- At the register, tap Switch cashier, pick your name and enter your PIN. Every sale, shift and return you ring is recorded under you until someone else switches in.\n- A PIN never grants more than your role: the register checks your role and your Manage POS permission each time it is used, so removing someone\'s access takes effect on their next tap.\n- Five wrong PINs in a row lock that person out for 15 minutes. A workspace admin can reset or remove anyone\'s PIN, which also lifts a lockout.\n- Lock the register after (minutes idle) in Admin → Plugins → Commerce locks the register after that long without a tap, so the next person has to enter their PIN. Tap Lock to lock it yourself.\nPINs are stored only as salted hashes and nobody can read them back, not even a workspace admin.'
|
|
4829
4969
|
},
|
|
4830
4970
|
{
|
|
4831
4971
|
path: '/commerce-and-bookings/commerce/pos-operations',
|
|
@@ -4846,7 +4986,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4846
4986
|
title: 'Running the register',
|
|
4847
4987
|
heading: 'Printed receipts',
|
|
4848
4988
|
anchor: '#printed-receipts',
|
|
4849
|
-
text: 'Receipts print on any 80 mm receipt printer through your browser\'s print dialog. Each receipt has your logo and store name, the order number and its barcode, the date, cashier and register, the customer\'s name, every item, discounts, tax, the total, how it was paid (card with its last four digits), the tip and change, and your receipt footer from
|
|
4989
|
+
text: 'Receipts print on any 80 mm receipt printer through your browser\'s print dialog. Each receipt has your logo and store name, the order number and its barcode, the date, cashier and register, the customer\'s name, every item, discounts, tax, the total, how it was paid (card with its last four digits), the tip and change, and your receipt footer from Products → Checkout. Two more lines are set in Admin → Plugins → Commerce: Address on printed receipts, printed under your store name, and Return policy on printed receipts, printed at the foot.\n- After each sale, the register shows Print receipt and Gift receipt for that sale until the next one completes.\n- Gift receipt prints the items and the barcode without any prices.\n- Reprint any register sale from its order on the Orders page: open the order and use Print receipt or Gift receipt.\nMost network receipt printers open the cash drawer cabled to them whenever they print, so printing a cash sale\'s receipt also opens the drawer. That is a setting on the printer.'
|
|
4850
4990
|
},
|
|
4851
4991
|
{
|
|
4852
4992
|
path: '/commerce-and-bookings/commerce/pos-operations',
|
|
@@ -4881,14 +5021,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4881
5021
|
title: 'Review platforms (Trustpilot and Yotpo)',
|
|
4882
5022
|
heading: 'Trustpilot',
|
|
4883
5023
|
anchor: '#trustpilot',
|
|
4884
|
-
text: 'Invite customers to review your store on Trustpilot after their order ships or arrives, by copying one order email to your Trustpilot invitation address.\nGo to
|
|
5024
|
+
text: 'Invite customers to review your store on Trustpilot after their order ships or arrives, by copying one order email to your Trustpilot invitation address.\nGo to Products → Promotions and find the Trustpilot card. Under How Trustpilot hears about orders, choose one way, and under When to invite, choose:\n- When the order ships, goes out for delivery or is picked up, or\n- When the order is delivered or picked up.\nTrustpilot\'s own delay setting still applies after that.\nBy your invitation address {#trustpilot-invitation-address}\nTrustpilot gives every business an Automatic Feedback Service address that ends in @invite.trustpilot.com. No key is needed:\n1. Copy that address from your Trustpilot Business account.\n2. On the Trustpilot card, choose Copy an order email to my Trustpilot invitation address and paste it in Trustpilot invitation address. Only an address on invite.trustpilot.com is accepted.\n3. Select Save in the card\'s header.\nThe customer\'s Order shipped, Order out for delivery, Order picked up or Order delivered email (whichever comes first at the moment you chose) is then blind-copied to Trustpilot, with the customer\'s name, email and order number in a part of the email only Trustpilot reads. The customer does not see the copy. If you turn that email off under Order notifications, no copy is sent.\nBy your Trustpilot API key {#trustpilot-api}\nIf your Trustpilot plan includes API access, you can send invitations through it instead:\n1. In Trustpilot Business, under Integrations → Developers → APIs, create or copy an API key and secret.\n2. On the Trustpilot card, choose Trustpilot API, with my API key, and paste the API key, API secret and your Business unit ID. Add your Business user ID, a Language such as en-US, and an Invitation template ID if you use them.\n3. Selec'
|
|
4885
5025
|
},
|
|
4886
5026
|
{
|
|
4887
5027
|
path: '/commerce-and-bookings/commerce/review-platforms',
|
|
4888
5028
|
title: 'Review platforms (Trustpilot and Yotpo)',
|
|
4889
5029
|
heading: 'Yotpo Reviews',
|
|
4890
5030
|
anchor: '#yotpo-reviews',
|
|
4891
|
-
text: 'Send each shipped order to your Yotpo Reviews account, so Yotpo asks the customer for a review.\n1. In your Yotpo Reviews settings, copy the app key and secret key. These are not the keys of Yotpo Loyalty & Referrals, which connects under Rewards.\n2. On the Yotpo Reviews card under
|
|
5031
|
+
text: 'Send each shipped order to your Yotpo Reviews account, so Yotpo asks the customer for a review.\n1. In your Yotpo Reviews settings, copy the app key and secret key. These are not the keys of Yotpo Loyalty & Referrals, which connects under Rewards.\n2. On the Yotpo Reviews card under Products → Promotions, paste both, turn on Send shipped orders to Yotpo for review requests, and select Save.\nWhen an order first ships or is picked up, Aglyn sends it to Yotpo with its items, marked fulfilled, and Yotpo sends the customer its review request after the delay set in your Yotpo account.'
|
|
4892
5032
|
},
|
|
4893
5033
|
{
|
|
4894
5034
|
path: '/commerce-and-bookings/commerce/review-platforms',
|
|
@@ -4993,14 +5133,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
4993
5133
|
title: 'Sales channels',
|
|
4994
5134
|
heading: '',
|
|
4995
5135
|
anchor: '',
|
|
4996
|
-
text: 'Sales channels\nSales channels put your catalog in front of shoppers on Google (Shopping, free listings, Search, Images and YouTube), Meta (Facebook and Instagram), TikTok, Pinterest, Snapchat and Microsoft Shopping (Bing and Copilot). Each channel reads its own product feed from your store on a schedule you set on the channel\'s side, so a price, photo or stock change reaches it without another upload.\nSales channels come with every plan that sells online. They are set up
|
|
5136
|
+
text: 'Sales channels\nSales channels put your catalog in front of shoppers on Google (Shopping, free listings, Search, Images and YouTube), Meta (Facebook and Instagram), TikTok, Pinterest, Snapchat and Microsoft Shopping (Bing and Copilot). Each channel reads its own product feed from your store on a schedule you set on the channel\'s side, so a price, photo or stock change reaches it without another upload.\nSales channels come with every plan that sells online. They are set up on Products → Sales channels, with one card per channel.'
|
|
4997
5137
|
},
|
|
4998
5138
|
{
|
|
4999
5139
|
path: '/commerce-and-bookings/commerce/sales-channels',
|
|
5000
5140
|
title: 'Sales channels',
|
|
5001
5141
|
heading: 'Set up sales channels',
|
|
5002
5142
|
anchor: '#set-up-sales-channels',
|
|
5003
|
-
text: 'The Sales channels card,
|
|
5143
|
+
text: 'The Sales channels card, on Products → Sales channels, lists your products on shopping channels: set the feed defaults, check your products, then turn on each channel and paste its feed address there.\nYou need the store selling, a web address for the site, and an account with each channel you want — Google Merchant Center, Meta Commerce Manager and so on.\n1. Fill in Defaults for every feed — the brand and other values sent for a product that leaves them blank — and select Save. See Brand, barcode and category.\n2. Select Check products. Each channel\'s card counts what it would list, leave out and list with suggestions. See Check your products.\n3. On each channel you want, switch the feed On and paste its address into the channel. See Turn on a channel.\nAfter that, the channel reads your feed on its own schedule, and each card shows when it last did.'
|
|
5004
5144
|
},
|
|
5005
5145
|
{
|
|
5006
5146
|
path: '/commerce-and-bookings/commerce/sales-channels',
|
|
@@ -5021,7 +5161,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
5021
5161
|
title: 'Sales channels',
|
|
5022
5162
|
heading: 'Check your products',
|
|
5023
5163
|
anchor: '#check-your-products',
|
|
5024
|
-
text: 'Select Check products on the Sales channels card. Each channel\'s card then counts the products it lists, leaves out and lists with suggestions, and Show products names each one with what to fix.\nA product is left out of a channel\'s feed when the channel would refuse it anyway:\n- it has no photo or no price;\n- it is a service, or sold only as a subscription — shopping channels list goods sold at one price;\n- the site has no web address yet, or no product page template is chosen
|
|
5164
|
+
text: 'Select Check products on the Sales channels card. Each channel\'s card then counts the products it lists, leaves out and lists with suggestions, and Show products names each one with what to fix.\nA product is left out of a channel\'s feed when the channel would refuse it anyway:\n- it has no photo or no price;\n- it is a service, or sold only as a subscription — shopping channels list goods sold at one price;\n- the site has no web address yet, or no product page template is chosen on Products → Checkout, so the product\'s link would not open.\nA suggestion means the product is listed but may show less widely: no barcode or part number, no description (its name is sent instead), a name longer than the channel shows, clothing without a Color and a Size option, or missing shipping.'
|
|
5025
5165
|
},
|
|
5026
5166
|
{
|
|
5027
5167
|
path: '/commerce-and-bookings/commerce/sales-channels',
|
|
@@ -5056,21 +5196,21 @@ export const DOCS_SECTION_INDEX = [
|
|
|
5056
5196
|
title: 'Shipping',
|
|
5057
5197
|
heading: '',
|
|
5058
5198
|
anchor: '',
|
|
5059
|
-
text: 'Shipping\nShipping is set up
|
|
5199
|
+
text: 'Shipping\nShipping is set up on Products → Shipping & delivery, on the Shipping card. Every order that ships is priced from the zones and rates you save there, at the storefront\'s cart, on a product\'s Buy button, and on a draft order\'s payment link.'
|
|
5060
5200
|
},
|
|
5061
5201
|
{
|
|
5062
5202
|
path: '/commerce-and-bookings/commerce/shipping',
|
|
5063
5203
|
title: 'Shipping',
|
|
5064
5204
|
heading: 'Zones and rates',
|
|
5065
5205
|
anchor: '#zones-and-rates',
|
|
5066
|
-
text: 'The Shipping card,
|
|
5206
|
+
text: 'The Shipping card, on Products → Shipping & delivery, 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.'
|
|
5067
5207
|
},
|
|
5068
5208
|
{
|
|
5069
5209
|
path: '/commerce-and-bookings/commerce/shipping',
|
|
5070
5210
|
title: 'Shipping',
|
|
5071
5211
|
heading: 'Ask Aglyn AI',
|
|
5072
5212
|
anchor: '#ask-aglyn-ai',
|
|
5073
|
-
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-
|
|
5213
|
+
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- 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.'
|
|
5074
5214
|
},
|
|
5075
5215
|
{
|
|
5076
5216
|
path: '/commerce-and-bookings/commerce/shipping',
|
|
@@ -5079,20 +5219,6 @@ export const DOCS_SECTION_INDEX = [
|
|
|
5079
5219
|
anchor: '#where-parcels-ship-from',
|
|
5080
5220
|
text: 'Each inventory location (the Inventory locations card in the store\'s settings) can carry a postal address: choose Add address on its row, or Edit address once it has one. The address is the street, an optional apartment or suite, city, state or region, postal code, the two-letter country code and a phone number, saved beside the location\'s name.'
|
|
5081
5221
|
},
|
|
5082
|
-
{
|
|
5083
|
-
path: '/commerce-and-bookings/commerce/shipping',
|
|
5084
|
-
title: 'Shipping',
|
|
5085
|
-
heading: 'Carrier accounts',
|
|
5086
|
-
anchor: '#carrier-accounts',
|
|
5087
|
-
text: 'The Carrier accounts card lists the carriers your labels and checkout rates come from, for every site in the workspace. By default these are Aglyn\'s own accounts, marked Discounted rates. A switch on each row turns that carrier on or off.\nIf you have your own negotiated carrier account, choose Connect your own account and pick the carrier. Which carriers are listed depends on the shipping provider behind your labels. For UPS and FedEx you enter the account number, a contact and the account\'s address, and UPS then asks you to sign in at UPS; a row that still needs it shows Sign-in needed or Reconnect needed. Other carriers, such as DHL Express or Canada Post, ask for the credentials that carrier issued you, which are passed to the provider to connect the account and not kept by Aglyn. Labels bought on your own account are billed to you by the carrier, so Aglyn charges nothing for them.'
|
|
5088
|
-
},
|
|
5089
|
-
{
|
|
5090
|
-
path: '/commerce-and-bookings/commerce/shipping',
|
|
5091
|
-
title: 'Shipping',
|
|
5092
|
-
heading: 'Shipping labels',
|
|
5093
|
-
anchor: '#shipping-labels',
|
|
5094
|
-
text: 'A label bought on Aglyn\'s carrier accounts is charged to the workspace at the carrier\'s price, with nothing added. It is taken from your Stripe balance when the label is bought, once a member has agreed to that; when Stripe cannot take it, the label goes on the workspace\'s monthly invoice instead. A voided label that the carrier refunds is given back the same way it was paid.\nBilling → Usage shows a Shipping labels card once the workspace has bought a label: for each month, how many labels, how much came from the Stripe balance, how much went on the invoice, and what voided labels returned.'
|
|
5095
|
-
},
|
|
5096
5222
|
{
|
|
5097
5223
|
path: '/commerce-and-bookings/commerce/store-import-and-export',
|
|
5098
5224
|
title: 'Import and export store data',
|
|
@@ -5126,14 +5252,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
5126
5252
|
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
5127
5253
|
heading: 'Before you start',
|
|
5128
5254
|
anchor: '#before-you-start',
|
|
5129
|
-
text: '- Set your store\'s Taxes to Manual rates (the Taxes card
|
|
5255
|
+
text: '- Set your store\'s Taxes to Manual rates (the Taxes card on Products → Taxes), with a rate for where you sell, and leave Prices include tax off. A tax service is used only then — see When the service is not used. Your own rates stay as the fallback: when the service does not answer, the sale is taxed at them instead.\n- Avalara AvaTax: your account id (a number) and a license key, from AvaTax → Settings → License and API keys. If your AvaTax account has more than one company, the company code to file under.\n- TaxJar: an API token, from TaxJar → Account → TaxJar API. List the states where you collect tax (your nexus) in TaxJar: it charges no tax anywhere else.\nBoth vendors offer a free sandbox account for testing. Connect it as a sandbox first, place a test order, then connect your production account.'
|
|
5130
5256
|
},
|
|
5131
5257
|
{
|
|
5132
5258
|
path: '/commerce-and-bookings/commerce/tax-services',
|
|
5133
5259
|
title: 'Tax services (Avalara AvaTax and TaxJar)',
|
|
5134
5260
|
heading: 'Connect',
|
|
5135
5261
|
anchor: '#connect',
|
|
5136
|
-
text: '1. Open
|
|
5262
|
+
text: '1. Open Products → Taxes and find the Tax service card.\n2. Choose Avalara AvaTax or TaxJar, and Sandbox or Production.\n3. Enter your credentials and select Connect. Aglyn tests them with the vendor first and stores nothing they refuse. The credentials are encrypted on the server and are never shown again, not even to you.\n4. Enter the ship-from address: the street, city, state and postal code you ship or sell from. Aglyn checks it with the service. It is the origin of every sale and the place an in-person sale is taxed.\nOnly an admin of the site can connect, test or disconnect a service and change its address. Test connection checks the stored credentials again whenever you like; the card shows the answer.'
|
|
5137
5263
|
},
|
|
5138
5264
|
{
|
|
5139
5265
|
path: '/commerce-and-bookings/commerce/tax-services',
|
|
@@ -5238,7 +5364,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
5238
5364
|
title: 'Use ShippingEasy with Aglyn',
|
|
5239
5365
|
heading: 'Connect ShippingEasy',
|
|
5240
5366
|
anchor: '#connect',
|
|
5241
|
-
text: 'The ShippingEasy card,
|
|
5367
|
+
text: 'The ShippingEasy card, on Products → Shipping & delivery, sends each paid order to your ShippingEasy account and takes each label back, using the API keys from Before you start. You need to be a site admin.\n1. In Aglyn, open Products → Shipping & delivery and find the ShippingEasy card.\n2. Select Connect ShippingEasy and paste the API key, API secret and store API key. Aglyn checks them with ShippingEasy before it saves them, and keeps the secret encrypted. Nobody can see the secret in Aglyn again, including you.\n3. The card shows a Callback URL. Copy it and paste it into your API store\'s settings in ShippingEasy, so each label you buy there comes back to Aglyn.\n4. Select Send open orders to send the orders that were paid before you connected.'
|
|
5242
5368
|
},
|
|
5243
5369
|
{
|
|
5244
5370
|
path: '/commerce-and-bookings/commerce/use-shippingeasy',
|
|
@@ -5287,7 +5413,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
5287
5413
|
title: 'Use ShipStation with Aglyn',
|
|
5288
5414
|
heading: 'Connect ShipStation',
|
|
5289
5415
|
anchor: '#connect',
|
|
5290
|
-
text: 'The ShipStation card,
|
|
5416
|
+
text: 'The ShipStation card, on Products → Shipping & delivery, connects your store to ShipStation as a Custom Store, so ShipStation imports your paid orders and sends each shipment back. You need to be a site admin.\n1. In Aglyn, open Products → Shipping & delivery and find the ShipStation card.\n2. Select Connect ShipStation. The card shows the URL to custom XML page, a username and a password. Aglyn keeps the password encrypted, and a site admin can select Show on the card to see it again later.\n3. In ShipStation, go to Settings → Selling Channels → Store Setup, select Connect a Store or Marketplace and choose Custom Store.\n4. Paste the URL, username and password from Aglyn.\n5. Type the status names exactly as the Aglyn card shows them. ShipStation matches them letter for letter:\n| ShipStation field | Type |\n| Unpaid Status | unpaid |\n| Paid Status | paid |\n| Shipped Status | shipped |\n| Canceled Status | canceled |\n| On-Hold Status | onhold |\n6. Select Test Connection, then Connect.'
|
|
5291
5417
|
},
|
|
5292
5418
|
{
|
|
5293
5419
|
path: '/commerce-and-bookings/commerce/use-shipstation',
|
|
@@ -7107,7 +7233,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
7107
7233
|
title: 'Forms & Lead Capture',
|
|
7108
7234
|
heading: 'Where submissions go',
|
|
7109
7235
|
anchor: '#where-submissions-go',
|
|
7110
|
-
text: '- Inbox — every submission is captured; open it in the console\'s mail reader dialog.\n- Datasets — bind a form to a dataset (Write to dataset on the Form element) and each submission is also appended as a record. The inbox always gets its copy, and each submission\'s own detail dialog carries chips saying where it went — including saying nothing about a dataset when the record wasn\'t created.\n- Contacts — every submission that carries an email address updates the person in the CRM at stage Lead: a new contact when the address is new, an interaction on their timeline when it is not, and a customer stays a customer. A field can also save its answer into one of your custom contact fields — pick the field under Saves to contact fields on the form\'s own page.\n- Leads — only when the form\'s CRM routing card has the lead switch on. See What makes a lead.\nThe inbox\nThe site\'s Inbox page collects everything visitors send, in three tabs — Submissions, Members & leads, and Campaigns. The Form Submissions table reads as a list of people, not of forms: From, Message, Received, and the row actions.\n- From shows the sender — a colored initials avatar and their name, with the form name as a caption underneath (the Form element\'s Form name attribute, so name your forms distinctly: "Contact", "Newsletter", "Survey"). The avatar\'s color is derived from the name, so one sender keeps one color on every machine.\n- Unread submissions are bold with a dot at the left of the row. There is no "New" chip — bold text and a chip saying New are the same fact twice. Site managers also get an in-app notification per submission, and an email too
|
|
7236
|
+
text: '- Inbox — every submission is captured; open it in the console\'s mail reader dialog.\n- Datasets — bind a form to a dataset (Write to dataset on the Form element) and each submission is also appended as a record. The inbox always gets its copy, and each submission\'s own detail dialog carries chips saying where it went — including saying nothing about a dataset when the record wasn\'t created.\n- Contacts — every submission that carries an email address updates the person in the CRM at stage Lead: a new contact when the address is new, an interaction on their timeline when it is not, and a customer stays a customer. A field can also save its answer into one of your custom contact fields — pick the field under Saves to contact fields on the form\'s own page.\n- Leads — only when the form\'s CRM routing card has the lead switch on. See What makes a lead.\nThe inbox\nThe site\'s Inbox page collects everything visitors send, in three tabs — Submissions, Members & leads, and Campaigns. The Form Submissions table reads as a list of people, not of forms: From, Message, Received, and the row actions.\n- From shows the sender — a colored initials avatar and their name, with the form name as a caption underneath (the Form element\'s Form name attribute, so name your forms distinctly: "Contact", "Newsletter", "Survey"). The avatar\'s color is derived from the name, so one sender keeps one color on every machine.\n- Unread submissions are bold with a dot at the left of the row. There is no "New" chip — bold text and a chip saying New are the same fact twice. Site managers also get an in-app notification per submission, and an email too unless they switched that off. It names the form, the page and the campaign, and opens that submission rather than the list — see What an open submission links to'
|
|
7111
7237
|
},
|
|
7112
7238
|
{
|
|
7113
7239
|
path: '/content-and-data/forms/overview',
|
|
@@ -7282,7 +7408,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
7282
7408
|
title: 'Order webhooks',
|
|
7283
7409
|
heading: '',
|
|
7284
7410
|
anchor: '',
|
|
7285
|
-
text: 'Order webhooks for developers\nA store\'s managers add an endpoint under
|
|
7411
|
+
text: 'Order webhooks for developers\nA store\'s managers add an endpoint under Notifications → Order webhooks in the Products hub, choose its events, and copy its signing secret — see Order webhooks for that side and the list of events. This page is for whoever builds the endpoint.'
|
|
7286
7412
|
},
|
|
7287
7413
|
{
|
|
7288
7414
|
path: '/developers/order-webhooks',
|
|
@@ -9221,7 +9347,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
9221
9347
|
title: 'The console tour',
|
|
9222
9348
|
heading: 'Workspace settings & notifications',
|
|
9223
9349
|
anchor: '#workspace-settings--notifications',
|
|
9224
|
-
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:\nOrganization settings {#organization-settings}\nOrganization → Settings is where you run the workspace itself: its name and workspace URL under General, then — for owners and admins — Profile, Plugins, API keys, Branding, Single sign-on, Privacy, Holds & reviews and Import & export, each a section in the rail on the left. Ownership and Delete appear to the workspace owner only.\nGeneral {#organization-general}\nThe General card renames the organization, changes its workspace URL and sets the time zone its sites inherit — "workspace" is the console\'s word for your organization\'s home.\nChanging the workspace URL changes the address teammates use to reach the workspace, so share the new one after you save.\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 (is one type, or is any of up to thirty — a larger pick is refused, with a note above the feed) and by Status (is New or Read), and both can stand together. Each filter in force shows as a chip above the feed; remove the chip to
|
|
9350
|
+
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:\nOrganization settings {#organization-settings}\nOrganization → Settings is where you run the workspace itself: its name and workspace URL under General, then — for owners and admins — Profile, Plugins, API keys, Branding, Single sign-on, Privacy, Holds & reviews and Import & export, each a section in the rail on the left. Integrations follows Single sign-on once a plugin adds workspace settings there. Privacy, Holds & reviews and Import & export are grouped under Data & compliance. Ownership and Delete, under Danger zone, appear to the workspace owner only.\nGeneral {#organization-general}\nThe General card renames the organization, changes its workspace URL and sets the time zone its sites inherit — "workspace" is the console\'s word for your organization\'s home.\nChanging the workspace URL changes the address teammates use to reach the workspace, so share the new one after you save.\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 (is one type, or is any of up to thirty — a larger pick is refused, with a note above the feed) and by Status (is New or Read), and both can stand together. Each filter in force shows as a chip above the feed; remove the chip to '
|
|
9225
9351
|
},
|
|
9226
9352
|
{
|
|
9227
9353
|
path: '/getting-started/create-a-site',
|
|
@@ -9445,7 +9571,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
9445
9571
|
title: 'Commerce end to end',
|
|
9446
9572
|
heading: '1. Connect payments',
|
|
9447
9573
|
anchor: '#1-connect-payments',
|
|
9448
|
-
text: 'The Payments card,
|
|
9574
|
+
text: 'The Payments card, on Products → Payments, connects your own Stripe account so buyers pay you directly; checkout stays off until Stripe reports charges enabled.\nYou need a paid plan, and only the workspace owner can connect the account.\n1. On the Payments card, select Set up payments.\n2. Finish Stripe\'s Express onboarding: your business details, identity and the bank account your payouts go to.\n3. Back in Aglyn, the card\'s Stripe account line reads Charges enabled. Refresh status checks again if it does not yet.\nUntil then checkout says "This site has not enabled payments yet". Aglyn adds its per-sale platform fee automatically per your plan, and the card shows the fee your plan carries.'
|
|
9449
9575
|
},
|
|
9450
9576
|
{
|
|
9451
9577
|
path: '/guides/commerce-end-to-end',
|
|
@@ -9809,7 +9935,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
9809
9935
|
title: 'Build a newsletter sign-up band',
|
|
9810
9936
|
heading: '5. Create the live audience',
|
|
9811
9937
|
anchor: '#5-create-the-live-audience',
|
|
9812
|
-
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
|
|
9938
|
+
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 once an hour (sooner right after you save it). 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 Matching a rule is not an opt-in, so a live audience records no consent of its own. For the people it added, the Consent column shows the opt-in on their contact (step 8), and that is the same opt-in a campaign checks before it sends. Someone who signed up through the form reads Opted in. See Lists built from a rule.'
|
|
9813
9939
|
},
|
|
9814
9940
|
{
|
|
9815
9941
|
path: '/guides/newsletter-sign-up-band',
|
|
@@ -9830,14 +9956,14 @@ export const DOCS_SECTION_INDEX = [
|
|
|
9830
9956
|
title: 'Build a newsletter sign-up band',
|
|
9831
9957
|
heading: '8. Check it on the live site',
|
|
9832
9958
|
anchor: '#8-check-it-on-the-live-site',
|
|
9833
|
-
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
|
|
9959
|
+
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 an hour the address also appears on the Product updates audience, with Opted in in its Consent column. It is ready for your next email campaign.'
|
|
9834
9960
|
},
|
|
9835
9961
|
{
|
|
9836
9962
|
path: '/guides/newsletter-sign-up-band',
|
|
9837
9963
|
title: 'Build a newsletter sign-up band',
|
|
9838
9964
|
heading: 'Troubleshooting',
|
|
9839
9965
|
anchor: '#troubleshooting',
|
|
9840
|
-
text: '| What you see | Why, and what to do |\n| The audience stays empty | Wait for the
|
|
9966
|
+
text: '| What you see | Why, and what to do |\n| The audience stays empty | Wait for the hourly 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 | Flex direction row is set at the wrong breakpoint. Select the saved form\'s Form, switch the breakpoint picker to SM – Tablet, and check Flexbox & Grid. Then publish the form. |\n| Two buttons show | The Button\'s Type is not Submit. Only a Submit button replaces the form\'s built-in one. |\n| The band shows the wrong colors | Its gradient stops are bound to your theme\'s Primary and Secondary colors. Change them in the theme, not in the band. |\n| A gray outline shows around the field | Set the Input\'s Border Color to the same color as its Background Color. |'
|
|
9841
9967
|
},
|
|
9842
9968
|
{
|
|
9843
9969
|
path: '/guides/newsletter-sign-up-band',
|
|
@@ -10565,7 +10691,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
10565
10691
|
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
10566
10692
|
heading: 'Connect a platform',
|
|
10567
10693
|
anchor: '#connect',
|
|
10568
|
-
text: '1. Open the site, then Setup.
|
|
10694
|
+
text: '1. Open the site, then Setup → Integrations. The Email platforms card lists each platform on a row of its own.\n2. On the platform\'s row, select Connect.\n3. Paste your API key, then Check and connect. Aglyn checks the key with the platform before it saves it, and stores it encrypted; it is never shown again.\n- Mailchimp: in Mailchimp, Profile → Extras → API keys → Create a key. It ends in your data center, like -us21.\n- Klaviyo: in Klaviyo, Settings → API keys → Create private API key, with full access to Profiles, Lists, Subscriptions and Events.\n- Omnisend: in Omnisend, Store settings → API keys → Create API key, with access to Contacts and Events.\n4. For Mailchimp and Klaviyo, choose the audience or list contacts go into. If your account has only one, it is chosen for you.\nThe first sync starts within 15 minutes. Sync now runs it straight away.\nOnly a site admin can connect, change or disconnect a platform; editors can see the card and each platform\'s sync log.'
|
|
10569
10695
|
},
|
|
10570
10696
|
{
|
|
10571
10697
|
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
@@ -10593,7 +10719,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
10593
10719
|
title: 'Email platforms (Mailchimp, Klaviyo, Omnisend)',
|
|
10594
10720
|
heading: 'The sync log, and when something goes wrong',
|
|
10595
10721
|
anchor: '#sync-log',
|
|
10596
|
-
text: 'Each connected platform has a sync log
|
|
10722
|
+
text: 'Each connected platform has a sync log: select Sync log on its row to open it. It lists what each run sent and read back, and every error, newest first.\n- Syncing — working normally; it runs about every 15 minutes.\n- Stopped — the platform failed many times in a row (it was retried with growing waits). Fix the cause shown, then Sync now.\n- Connect again — the platform refused the key (it was deleted, or its access changed). Create a new key and connect again; your settings are kept.\nWhen the platform asks Aglyn to slow down, the sync waits as long as it was told and carries on — nothing is lost. A person the platform will not take (for example an address it has permanently deleted) is skipped and named in the log, and the rest go on.'
|
|
10597
10723
|
},
|
|
10598
10724
|
{
|
|
10599
10725
|
path: '/marketing-and-automation/email-campaigns/email-platforms',
|
|
@@ -11503,7 +11629,7 @@ export const DOCS_SECTION_INDEX = [
|
|
|
11503
11629
|
title: 'Signing In & Sessions',
|
|
11504
11630
|
heading: 'Verifying your email',
|
|
11505
11631
|
anchor: '#verifying-your-email',
|
|
11506
|
-
text: 'A new email-and-password account is verified before it can open a workspace. Right after you sign up, the console emails you a link and waits on a Verify your email page.\n- Open the link from the email.
|
|
11632
|
+
text: 'A new email-and-password account is verified before it can open a workspace. Right after you sign up, the console emails you a link and waits on a Verify your email page.\n- Open the link from the email, then choose Confirm my email. The link opens a new tab (on a phone, often inside your mail app). Opening it doesn\'t verify anything on its own, so a mail security scanner that checks links can\'t verify an address for you. Once you confirm, the page says Email verified. You can close that tab: the tab you signed up in moves on by itself as soon as you return to it. If you would rather carry on in the new tab, choose Continue to Aglyn, or Sign in to continue if that browser isn\'t signed in.\n- Opened it twice? A link works once. If the account signed in on that browser is already verified, the page says You\'re already verified and offers to continue, so there is nothing to fix.\n- No email? Choose Resend verification email on the waiting page. If a link has expired, the same button sends a fresh one.'
|
|
11507
11633
|
},
|
|
11508
11634
|
{
|
|
11509
11635
|
path: '/workspace-and-billing/signing-in-and-sessions',
|