diff --git a/.style/.spelling b/.style/.spelling index 3f3dd850d..f7834e5d0 100644 --- a/.style/.spelling +++ b/.style/.spelling @@ -426,7 +426,7 @@ reCAPTCHA v1 invoice_email.html invoice_printable.zip -CyberDuck +Cyberduck prefilled invoice.html PrintableDetailedInvoice.html diff --git a/README.md b/README.md index 0afbf251e..de3fefd77 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Here are some quick links to our [Contribution](/CONTRIBUTING.md) guide: - [Making a Quick Edit](/CONTRIBUTING.md#making-a-quick-edit) - [Editing Locally](/CONTRIBUTING.md#editing-locally) -- [Commit Messages](/CONTRIBUTING.md/cod#commit-messages) +- [Commit Messages](/CONTRIBUTING.md#commit-messages) - [Style Guides](/CONTRIBUTING.md#style-guides) - [Contributing to Other Projects](/CONTRIBUTING.md#contributing-to-other-projects) @@ -53,10 +53,10 @@ Always update your fork to ensure you're working with the newest source files. ```shell . -├── .github/ # github config +├── .github/ # GitHub config └── workflows/ # workflows to lint pull requests, etc. └── ... -├── .idea/ # directory ignored by git - use for yourself +├── .idea/ # directory ignored by Git - use for yourself ├── .style/ # CSPELL data files ├── assets/ ├── csv/ # static files used in docs diff --git a/docs/integrations/apps/guide/buttons.mdx b/docs/integrations/apps/guide/buttons.mdx index a0e2f0904..f339cfec9 100644 --- a/docs/integrations/apps/guide/buttons.mdx +++ b/docs/integrations/apps/guide/buttons.mdx @@ -24,7 +24,7 @@ Your button will link merchants to BigCommerce's install endpoint for your appli ## Rendering success and failure pages -Modify your web site's server-side code to serve either a success or failure page, depending on whether the external installation was successful or unsuccessful. +Modify your website's server-side code to serve either a success or failure page, depending on whether the external installation was successful or unsuccessful. If you skip this step, your application will load in the iFrame created by your button. To ensure a good experience for your users, we strongly recommend that you return a confirmation page, instead of allowing your application to be loaded in that modal. diff --git a/docs/integrations/apps/guide/callbacks.mdx b/docs/integrations/apps/guide/callbacks.mdx index d6fe2df71..bcc64e4a1 100644 --- a/docs/integrations/apps/guide/callbacks.mdx +++ b/docs/integrations/apps/guide/callbacks.mdx @@ -11,7 +11,7 @@ This article is a reference for endpoints to which we send event-driven callback ## Overview -Your app's front-end views render inside an iFrame in the store control panel, so your app has no native ability to listen for a few high-level events. To support your work, BigCommerce sends `GET` requests to callback routes in your app that correspond to three events: opening the app, uninstalling the app, and revoking a user's access to the app. Each request includes a signed JSON web token (_JWT_), which contains identifying information about the store and the user. +Your app's front-end views render inside an iFrame in the store control panel, so your app has no native ability to listen for a few high-level events. To support your work, BigCommerce sends `GET` requests to callback routes in your app that correspond to three events: opening the app, uninstalling the app, and revoking a user's access to the app. Each request includes a signed JSON web token (_JWT_), which contains identifying information about the store and the user. Your app is only required to handle the `GET /auth{:http}` and `GET /load{:http}` endpoints, but we recommend writing handlers for the others, as well. Please see the corresponding detail sections that follow for more about the consequences of not handling optional callback endpoints. @@ -26,7 +26,7 @@ The following table lists the app management callbacks that BigCommerce stores s ## Render the app with load -Once the store owner or authorized user installs your app, it appears on the **Apps** sub-menu list in their store control panel, as well as their authorized users' control panels. When a user clicks your app's listing or another referring UI component, BigCommerce dispatches a request to your app's `GET /load{:http}` endpoint. The following is an example request: +Once the store owner or authorized user installs your app, it appears on the **Apps** sub-menu list in their store control panel, as well as their authorized users' control panels. When a user clicks your app's listing or another referring UI component, BigCommerce dispatches a request to your app's `GET /load{:http}` endpoint. The following is an example request: ```http filename="Example request: /load callback from BigCommerce" GET https://your_app.example.com/load?signed_payload_jwt={header_b64.payload_claims_b64.signature_b64} @@ -98,8 +98,8 @@ The following is an example of the payload claims encoded in the `signed_payload "id": 7654321, "email": "owner@example.com" }, - "url": "/", - "channel_id": null, + "url": "/", + "channel_id": null } ``` diff --git a/docs/integrations/apps/guide/catalyst-compatible-apps.mdx b/docs/integrations/apps/guide/catalyst-compatible-apps.mdx index d9e302758..6f197efac 100644 --- a/docs/integrations/apps/guide/catalyst-compatible-apps.mdx +++ b/docs/integrations/apps/guide/catalyst-compatible-apps.mdx @@ -61,7 +61,7 @@ It’s likely that your app or integration is already compatible with Catalyst i ### I am the developer of a net-new Single-Click App, and want to ensure my app is compatible with Catalyst. -#### Follow these teps: +#### Follow these steps: 1. **Understand Catalyst's Architecture** - Catalyst uses Next.js and React components for storefront UI. - Familiarize yourself with routing, data fetching, and state management. @@ -92,6 +92,6 @@ Our App Marketplace team will review your app compatibility, follow up with any ## Leverage our BigCommerce Developer ecosystem to learn more - Join our [BigCommerce Developers Slack](https://developer.bigcommerce.com/slack). -- Align your app with Catalyst’s roadmap, coming soon on the [Catalyst Github repo](https://github.com/bigcommerce/catalyst)! +- Align your app with Catalyst’s roadmap, coming soon on the [Catalyst GitHub repo](https://github.com/bigcommerce/catalyst)! - Contribute to the [Resource Hub](https://developer.bigcommerce.com/resource-hub) to showcase your integration. diff --git a/docs/integrations/apps/guide/index.mdx b/docs/integrations/apps/guide/index.mdx index fc49c4f44..6499fa5e3 100644 --- a/docs/integrations/apps/guide/index.mdx +++ b/docs/integrations/apps/guide/index.mdx @@ -11,7 +11,7 @@ Here's a few things you'll need before beginning app development: 3. [BigCommerce partnership](https://www.bigcommerce.com/partners/) (required to publish apps to marketplace) ## Beginning quickly -The fastest way to begin app development is by starting with one of our sample apps. You can follow our [Building Apps Quick Start Tutorial](/docs/integrations/apps/quick-start), either alone or in conjunction with [spinning up a Heroku instance](https://heroku.com/deploy?template=https://github.com/bigcommerce/sample-app-nodejs) that runs our [Node / React / Next.js sample app](https://github.com/bigcommerce/sample-app-nodejs/). +The fastest way to begin app development is by starting with one of our sample apps. You can follow our [Building Apps Quick Start Tutorial](/docs/integrations/apps/quick-start), either alone or in conjunction with [spinning up a Heroku instance](https://heroku.com/deploy?template=https://github.com/bigcommerce/sample-app-nodejs) that runs our [Node / React / Next.js sample app](https://github.com/bigcommerce/sample-app-nodejs/). Alternatively, you can clone the GitHub repo for your preferred stack: @@ -34,7 +34,7 @@ cd myapp # move into app dir brew install ngrok/ngrok/ngrok # install ngrok using homebrew -ngrok config add-authtoken # Obtain your authtoken by going to https://dashboard.ngrok.com/get-started/your-authtoken +ngrok config add-authtoken # Obtain your authtoken by going to https://dashboard.ngrok.com/get-started/your-authtoken npm install # install dependencies @@ -61,8 +61,8 @@ Once you've exposed your app to the internet, you can register it as a draft app Any store registered to the same email as your [Developer Portal](https://devtools.bigcommerce.com/my/apps) account can install your draft apps. Use the following steps to install: 1. Sign in to the store and navigate to **Apps** > **My Apps** > [**My Draft Apps**](https://login.bigcommerce.com/deep-links/manage/marketplace/apps/my-apps/drafts). -2. Click the draft app thumbnail to install the draft. -3. Once you click **Install**, BigCommerce will begin the OAuth flow by making a `GET` request to the app's `/auth` callback URL. If the app handles all the requests successfully, the app has been installed and you can begin feature development. +2. Click the draft app thumbnail to install the draft. +3. Once you click **Install**, BigCommerce will begin the OAuth flow by making a `GET` request to the app's `/auth` callback URL. If the app handles all the requests successfully, the app has been installed, and you can begin feature development. ## Next steps * [Learn How Test App Authentication Locally with ngrok](https://medium.com/bigcommerce-developer-blog/how-to-test-app-authentication-locally-with-ngrok-149150bfe4cf) diff --git a/docs/integrations/apps/guide/ui.mdx b/docs/integrations/apps/guide/ui.mdx index 0d5339bd2..735d0b6d5 100644 --- a/docs/integrations/apps/guide/ui.mdx +++ b/docs/integrations/apps/guide/ui.mdx @@ -56,7 +56,7 @@ forms, tables, and modals. You can use these patterns as a starting point for yo * [GitHub repo](https://github.com/bigcommerce/big-design-patterns-sandbox/). ### UX writing -BigDesign also provides a set of UX writing guidelines to help you create clear and consistent copy for your app's UI. These guidelines cover topics such as tone, voice, and terminology, and provide examples of how to write effective UI copy. You can use these guidelines to ensure that your app's UI copy aligns with BigCommerce's design language and provides a consistent user experience. +BigDesign also provides a set of UX writing guidelines to help you create clear and consistent copy for your app's UI. These guidelines cover topics such as tone, voice, and terminology, and provide examples of how to write effective UI copy. You can use these guidelines to ensure that your app's UI copy aligns with BigCommerce's design language and provides a consistent user experience. [BigDesign UX writing guidelines](https://developer.bigcommerce.com/docs/start/design/ux-writing). @@ -71,7 +71,7 @@ Single-click apps benefit from a high level of integration with the BigCommerce To load inside the control panel iFrame, your app must do the following: 1. **Serve app resources over HTTPS:** BigCommerce's control panel is served over HTTPS. Your app must also be served over HTTPS, including any remote resources referenced (such as CSS, JS, and image files). If any resources are served over HTTP, the user's browser will display a mixed content error and refuse to render your app's UI in the control panel iFrame. -2. **Support browser same-origin policies:** Same-origin policities restrict apps running within iFrames from performing certain activities, such as interacting with other services. If your app requires this, open a new tab for actions that cannot occur in an iFrame1. [Learn more about same-origin policies](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) (developer.mozilla.org). +2. **Support browser same-origin policies:** Same-origin policies restrict apps running within iFrames from performing certain activities, such as interacting with other services. If your app requires this, open a new tab for actions that cannot occur in an iFrame1. [Learn more about same-origin policies](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) (developer.mozilla.org). Apps that operate in the iFrame get strong preference during [App Marketplace](https://www.bigcommerce.com/apps/) consideration; however, we sometimes make exceptions for apps that need to interact with other services. diff --git a/docs/integrations/apps/guide/users.mdx b/docs/integrations/apps/guide/users.mdx index d18ed0299..9253832be 100644 --- a/docs/integrations/apps/guide/users.mdx +++ b/docs/integrations/apps/guide/users.mdx @@ -27,7 +27,7 @@ Because you know the store owner or user's `email` and `ID` from the app install - **Users**: Cannot `install` or `uninstall` apps. Users are permitted only to `load` the apps that a store owner authorized. ## The remove user request -Store owners can also remove users. This action generates a `GET` request to the remove user callback URL that you provided in the [Developer Portal](https://devtools.bigcommerce.com/my/apps). When this occurs, your app should remove the user identified in the request from it's records. +Store owners can also remove users. This action generates a `GET` request to the remove user callback URL that you provided in the [Developer Portal](https://devtools.bigcommerce.com/my/apps). When this occurs, your app should remove the user identified in the request from its records. For details about remove user and load requests, see [Single-click App Callbacks](/docs/integrations/apps/guide/callbacks). diff --git a/docs/integrations/apps/index.mdx b/docs/integrations/apps/index.mdx index 209f097a8..3d792e29e 100644 --- a/docs/integrations/apps/index.mdx +++ b/docs/integrations/apps/index.mdx @@ -44,7 +44,7 @@ Use [BigCommerce APIs](/docs/api) to integrate stores with business systems such ### Connect to sales channels List products on external [sales channels](https://www.bigcommerce.com/apps/categories/sales-channels/) with [Channels Toolkit](/docs/integrations/channels/toolkit-reference). -[Learn more about connecting apps to sales channels.](/docs/integrations/channels). +[Learn more about connecting apps to sales channels](/docs/integrations/channels). ### Add and manage scripts Create and manage scripts with [Scripts API](/docs/rest-management/scripts) and [Script Manager](https://support.bigcommerce.com/s/article/Using-Script-Manager). diff --git a/docs/integrations/apps/tutorial/nextjs-setup.mdx b/docs/integrations/apps/tutorial/nextjs-setup.mdx index 5f13f4487..ff005c559 100644 --- a/docs/integrations/apps/tutorial/nextjs-setup.mdx +++ b/docs/integrations/apps/tutorial/nextjs-setup.mdx @@ -15,7 +15,7 @@ For this tutorial, you need Node.js version 18+. To check your version of Node.j node -v ``` -If you do not have Node.js installed, you can download it from [nodejs.org (downloads)](https://nodejs.org/en/download/). +If you do not have Node.js installed, you can download it from [nodejs.org (downloads)](https://nodejs.org/en/download/). ## Set up a project directory @@ -140,7 +140,7 @@ Next.js associates each file in the pages folder with a route based on the file' Next.js allows you to use a theme provider and import CSS files from `node_modules`. In this tutorial, you integrate [BigDesign React components](https://developer.bigcommerce.com/big-design/) to give your app a distinct BigCommerce look and feel. -1. Next.js uses the `App` component to initialize pages. To override the default `App` component, add the `_app.tsx` file to the `pages` folder. This is where you initialize BigDesign. +1. Next.js uses the `App` component to initialize pages. To override the default `App` component, add the `_app.tsx` file to the `pages` folder. This is where you initialize BigDesign. 2. Open `_app.tsx` and import `GlobalStyles` from BigDesign and `AppProps` from Next.js. @@ -160,7 +160,7 @@ const MyApp = ({ Component, pageProps }: AppProps) => ( ); - + export default MyApp; ``` @@ -170,7 +170,7 @@ The `Component` prop represents the active page. Consequently, it will change wh Because BigDesign uses styled-components, we need to add additional configuration for both BigDesign and styled-components to function properly. -1. Add a custom `_document.tsx` file to your pages folder. +1. Add a custom `_document.tsx` file to your pages folder. 2. Import `Document` and `DocumentContext`, the built-in TypeScript types, from Next.js. @@ -218,7 +218,7 @@ export default class MyDocument extends Document { ## Start the development server -1. Using the terminal, open the root directory of your app and start the development server. +1. Using the terminal, open the root directory of your app and start the development server. ```shell copy filename="Start development server" npm run dev diff --git a/docs/integrations/apps/unified-billing/index.mdx b/docs/integrations/apps/unified-billing/index.mdx index 1d24aeda8..7252f6077 100644 --- a/docs/integrations/apps/unified-billing/index.mdx +++ b/docs/integrations/apps/unified-billing/index.mdx @@ -76,7 +76,7 @@ If your app is already published to production (i.e. visibility status = Public) * Test using $0 checkouts, so that you don’t get charged real money. * After you create a checkout, you can test completing of the checkout by creating and logging into a sandbox store as the Store Owner, and completing the checkout as a merchant would do. -If your app is NOT yet published to production (i.e visibility status = Draft, Under Review): +If your app is NOT yet published to production (i.e. visibility status = Draft, Under Review): * Build your app and review the App Marketplace Approval Requirements * Connect your app to Unified Billing * Checkouts are limited to $0, so that you don't get charged real money. diff --git a/docs/integrations/buy-online-pick-up-in-store/api-guide.mdx b/docs/integrations/buy-online-pick-up-in-store/api-guide.mdx index 86bea4ba9..e2824bf99 100644 --- a/docs/integrations/buy-online-pick-up-in-store/api-guide.mdx +++ b/docs/integrations/buy-online-pick-up-in-store/api-guide.mdx @@ -1,14 +1,14 @@ # End-to-End User Journey API Guide -This page is a how-to guide on creating end-to-end Buy Online Pickup In-Store (BOPIS) *customized* experiences for both merchants and shoppers through BigCommerce’s APIs. This guide lays out the API calls in sequence, framed from the perspective of an end-to-end user journey, i.e. +This page is a how-to guide on creating end-to-end Buy Online Pickup In-Store (BOPIS) *customized* experiences for both merchants and shoppers through BigCommerce’s APIs. This guide lays out the API calls in sequence, framed from the perspective of an end-to-end user journey, i.e. ## 1.0 Prerequisites 1. You've created your BigCommerce store and opted into the MLI BOPIS APIs Open Beta (**Settings** > **Inventory Settings** > Click "Try it now" button). 2. Store settings have been configured (e.g. Payments, Shipping, Tax, Catalog, etc) -3. You are not using BigCommerce's defeault Checkout, but are using a custom checkout, i.e. +3. You are not using BigCommerce's default Checkout, but are using a custom checkout, i.e. - You have installed a new custom checkout or you have an existing checkout built on the Checkout JS SDK or; - You have built a headless experience using the Server-to-Server (S2S) Checkout V3 APIs -4. OAuth scopes have been granted and configured on your store: +4. OAuth scopes have been granted and configured on your store: - Store Inventory - Store Locations - Pickup Methods @@ -78,7 +78,7 @@ You start by first creating a location. Customers can pick up their orders from } }, "time_zone": "Etc/UTC", - "address": { + "address": { "email": "jane.doe@bigcommerce.com", "address1": "100 Park Lane", "address2": "", @@ -90,7 +90,7 @@ You start by first creating a location. Customers can pick up their orders from "geo_coordinates": { "longitude": -97.849560, "latitude": 30.404500 - } + } }, "storefront_visibility": true, "special_hours": [ @@ -103,7 +103,7 @@ You start by first creating a location. Customers can pick up their orders from "all_day": false, "annual": false } - ] + ] } ] ``` @@ -231,8 +231,8 @@ At this point, you may have created multiple locations and want to check on all "code": "DTOWN_PARK_ST", "label": "Downtown Location - Park Lane", "description": "Customer-facing additional details about this location.", - "managed_by_external_source": false, - "type_id": "PHYSICAL", + "managed_by_external_source": false, + "type_id": "PHYSICAL", "enabled": true, "operating_hours": { "sunday": { @@ -306,8 +306,8 @@ At this point, you may have created multiple locations and want to check on all "code": "UPTOWN_MAYFAIR)LANE", "label": "Uptown Location - Mayfair Lane", "description": "Customer-facing additional details about this location.", - "managed_by_external_source": false, - "type_id": "PHYSICAL", + "managed_by_external_source": false, + "type_id": "PHYSICAL", "enabled": true, "operating_hours": { "sunday": { @@ -751,7 +751,7 @@ Alternatively, you may want to view inventory information for a product across a ### 2.8 Create a pickup method and assign it to a location -Once locations have been created, you can create pickup methods and assign them to a location. +Once locations have been created, you can create pickup methods and assign them to a location. @@ -935,7 +935,7 @@ Over time, BigCommerce will be investing more in the Storefront GraphQL API, so ### 3.1 Storefront REST API -#### 3.1.1 Find available pickup options with stock available +#### 3.1.1 Find available pickup options with stock available Use this to show pickup options to customers on a storefront page (e.g. the product detail page). @@ -1053,7 +1053,7 @@ The Checkout SDK and Server-to-Server (S2S) Checkout APIs have been updated to s If you’re dependent on webhook events, all [existing Cart webhooks](/api-docs/store-management/webhooks/webhook-events) have been updated to support BOPIS. ### 4.1 Native storefront & custom checkout experience via Checkout SDK -In order to fetch pickup-options via the Checkout SDK, you will need to be on SDK version 1.224.0 or above. This applies to existing custom checkouts as well as new custom checkouts. +In order to fetch pickup-options via the Checkout SDK, you will need to be on SDK version 1.224.0 or above. This applies to existing custom checkouts as well as new custom checkouts. ```js filename="Example JavaScript Code" showLineNumbers copy const consignmentId = '123'; @@ -1074,7 +1074,7 @@ const state = await checkoutService.loadPickupOptions(query: PickupOptionRequest /* * Pickup options are once fetched and then cached against the consignmentId and -* searchArea. So unless you change either of the parameters the options there won’t +* searchArea. So unless you change either of the parameters the options there won’t * be an API call to the server and memoized options will be returned to checkout App */ @@ -1106,7 +1106,7 @@ If you want to show pickup method options to customers on a storefront page (e.g } ] } - ``` + ``` @@ -1142,7 +1142,7 @@ For a successfully-created cart, the response will have: Cart ID is the same as Checkout ID and both represent the same identifier for a cart depending on which API is being consumed: the Cart API uses cart ID and the Checkout API uses Checkout ID. -#### 4.2.2 Find available pickup options with stock available +#### 4.2.2 Find available pickup options with stock available @@ -1258,7 +1258,7 @@ Cart ID is the same as Checkout ID and both represent the same identifier for a ] ... } - } + } ``` @@ -1581,7 +1581,7 @@ Order ID is 126. The order's pickup consignment is 13. -### 5.2 View the newly-created order's products +### 5.2 View the newly-created order's products The response returns products that were assigned to a pickup consignment. @@ -1800,7 +1800,7 @@ No dedicated endpoint exists to reassign inventory from one location to another. #### 7.2.2 Disable a location’s storefront visibility -Storefront visibility is currently a shopper-facing property of a location. +Storefront visibility is currently a shopper-facing property of a location. If it is set to false, then details about the location (e.g. description, operating hours) on the location details page and inventory quantities at that location will be excluded from the "available to sell" quantity on the storefront. If it is set to true, then details about the location on the location details page and inventory quantities at that location will be included in the "available to sell" quantity on the storefront. diff --git a/docs/integrations/buy-online-pick-up-in-store/end-to-end-guide/checkout.mdx b/docs/integrations/buy-online-pick-up-in-store/end-to-end-guide/checkout.mdx index 4e3a5ea5c..c10e36d77 100644 --- a/docs/integrations/buy-online-pick-up-in-store/end-to-end-guide/checkout.mdx +++ b/docs/integrations/buy-online-pick-up-in-store/end-to-end-guide/checkout.mdx @@ -1,8 +1,8 @@ ## 4.0 Manage checkout as a shopper -The [Checkout SDK](/docs/storefront/cart-checkout/checkout-sdk) and [Server-to-Server (S2S) Checkout V3 APIs](/docs/rest-management/checkouts) have been updated to support _Buy Online, Pick up in Store_ experiences. +The [Checkout SDK](/docs/storefront/cart-checkout/checkout-sdk) and [Server-to-Server (S2S) Checkout V3 APIs](/docs/rest-management/checkouts) have been updated to support _Buy Online, Pick up in Store_ experiences. -When building a _Buy Online, Pick up in Store_ solution, you can allow shoppers to find available pickup options and create checkout consignments that are fulfilled by a pickup method. +When building a _Buy Online, Pick up in Store_ solution, you can allow shoppers to find available pickup options and create checkout consignments that are fulfilled by a pickup method. As a developer, you may wonder which to choose and when to use the SDK vs the API. If you’re developing: * A native storefront and custom checkout experience, use the Checkout SDK @@ -11,7 +11,7 @@ As a developer, you may wonder which to choose and when to use the SDK vs the AP If you’re dependent on webhook events, all [existing Cart webhooks](/docs/integrations/webhooks/events) have been updated to support _Buy Online, Pick up in Store_. ### 4.1 Native storefront & custom checkout experience using Checkout SDK -To support _Buy Online, Pick up in Store_, we would be adding a `loadPickupOptions` method to the [CheckoutService](https://github.com/bigcommerce/checkout-sdk-js/blob/master/docs/classes/CheckoutService.md) class, allowing you to load pickup options to your storefront checkout. In order to fetch pickup options using the Checkout SDK, you will need to be on SDK version 1.224.0 or above. This applies to existing custom checkouts, as well as new custom checkouts. +To support _Buy Online, Pick up in Store_, we would be adding a `loadPickupOptions` method to the [CheckoutService](https://github.com/bigcommerce/checkout-sdk-js/blob/master/docs/classes/CheckoutService.md) class, allowing you to load pickup options to your storefront checkout. In order to fetch pickup options using the Checkout SDK, you will need to be on SDK version 1.224.0 or above. This applies to existing custom checkouts, as well as new custom checkouts. ```js filename="Example JavaScript Code" showLineNumbers copy const consignmentId = '123'; @@ -32,7 +32,7 @@ const state = await checkoutService.loadPickupOptions(query: PickupOptionRequest /* * Pickup options are once fetched and then cached against the consignmentId and -* searchArea. So unless you change either of the parameters the options there won’t +* searchArea. So unless you change either of the parameters the options there won’t * be an API call to the server and memoized options will be returned to checkout App */ @@ -40,7 +40,7 @@ const state = await checkoutService.loadPickupOptions(query: PickupOptionRequest console.log(state.data.getPickupOptions(consignmentId, searchArea)); ``` -Youy can show pickup method options to customers on a storefront page, such as the Product Detail Page, before having a consignment. For more information, see [4.2.2 Find available pickup methods with stock available](#422-find-available-pickup-methods-with-stock-available). +You can show pickup method options to customers on a storefront page, such as the Product Detail Page, before having a consignment. For more information, see [4.2.2 Find available pickup methods with stock available](#422-find-available-pickup-methods-with-stock-available). ### 4.2 End-to-end headless experience (S2S APIs) @@ -66,7 +66,7 @@ To create a cart, send a request to the [Create a cart](/docs/rest-management/ca } ] } - ``` + ``` @@ -102,7 +102,7 @@ For a successfully-created cart, the response will have: Cart ID is the same as Checkout ID and both represent the same identifier for a cart depending on which API is being consumed: the Cart API uses cart ID and the Checkout API uses Checkout ID. -#### 4.2.2 Find available pickup options with stock available +#### 4.2.2 Find available pickup options with stock available To find available pickup options, send a request to the [Find available pickup options](/docs/rest-management/pickup-options#find-available-pickup-options) endpoint. @@ -222,7 +222,7 @@ To create the pickup consignment for the checkout, send a request to the [Add co ] ... } - } + } ``` @@ -230,7 +230,7 @@ To create the pickup consignment for the checkout, send a request to the [Add co From the response we can see the consignment object now has a `selected_pickup_option` set with the `pickup_method_id` that you requested. -Currently _Buy Online, Pick up in Store_ only supports 1 consignment of type Pickup. If you attempt to mix pickup and shipping consignments or create multiple pickup consignments, you will receive an error message. +Currently, _Buy Online, Pick up in Store_ only supports 1 consignment of type Pickup. If you attempt to mix pickup and shipping consignments or create multiple pickup consignments, you will receive an error message. ```json filename="Example error response" showLineNumbers copy { diff --git a/docs/integrations/point-of-sale.mdx b/docs/integrations/point-of-sale.mdx index b6322d981..b297cc20e 100644 --- a/docs/integrations/point-of-sale.mdx +++ b/docs/integrations/point-of-sale.mdx @@ -1,6 +1,6 @@ # POS Foundation -POS Foundation provides a proof-of-concept [open source framework](https://github.com/bigcommerce/point-of-sale-foundation) for building point-of-sale (POS) checkout interfaces that serve BigCommerce merchants with physical locations. It provides a template for custom POS solutions that use secure, pre-certified EMV card readers. POS Foundation's default integration with Stripe Terminal can significantly accelerate development time. +POS Foundation provides a proof-of-concept [open source framework](https://github.com/bigcommerce/point-of-sale-foundation) for building point-of-sale (POS) checkout interfaces that serve BigCommerce merchants with physical locations. It provides a template for custom POS solutions that use secure, pre-certified EMV card readers. POS Foundation's default integration with Stripe Terminal can significantly accelerate development time. POS Foundation scaffolds manual connector apps that use [store-level API accounts](/docs/start/authentication/api-accounts#store-level-api-accounts). You do not need to create an app profile or use ngrok. The app will not appear in the store control panel and is only accessible to computers running on the same local network as the app's server. In contrast to [Subscription Foundation](/docs/integrations/subscription)-derived apps, POS Foundation apps do not create their own dedicated sales channels. If you're interested in contributing to this package, see [Contributing](#contributing). @@ -26,7 +26,7 @@ To configure your accounts, complete the following steps: 1. To develop and test safely, you need a BigCommerce sandbox store. If you don't have one, [Create a Sandbox Store](/docs/start/about/sandboxes?source=pos-foundation). 2. In the control panel of your sandbox store, [create a store-level API account](/docs/start/authentication/api-accounts#creating-store-level-api-credentials) and add the following OAuth scopes: - + | UI Name | Permission | Parameter | |:--------|:-----------|:----------| | Customers | modify | `store_v2_customers` | @@ -46,7 +46,7 @@ To configure your accounts, complete the following steps: * In addition, make note of the **store hash**. It is the path parameter that immediately precedes `v3` in the `API PATH` included with your store API account. In a later step, you will specify the store hash as the value of the `BC_STORE_HASH` environment variable. -## Fork and install the source repository +## Fork and install the source repository To fork the repository, complete the following steps: 1. Fork the [point-of-sale-foundation repository (GitHub)](https://github.com/bigcommerce/point-of-sale-foundation) to your GitHub account. @@ -67,8 +67,8 @@ To configure the Stripe account to connect with your implementation, complete th 2. Sign in to the [Stripe Dashboard](https://dashboard.stripe.com/). -3. In the top right corner of your Stripe Dashboard, click **Test Mode** and verify that [**Test mode**](https://dashboard.stripe.com/test/developers) is selected. - +3. In the top right corner of your Stripe Dashboard, click **Test Mode** and verify that [**Test mode**](https://dashboard.stripe.com/test/developers) is selected. + ![pos-stripe-test-mode](https://storage.googleapis.com/bigcommerce-production-dev-center/images/pos-stripe-test-mode.png) @@ -76,14 +76,14 @@ To configure the Stripe account to connect with your implementation, complete th Simulate transactions using test mode to confirm your integration works correctly. -4. Select **API keys** in the left menu, then locate the **Standard keys** section of the page. In the **Secret key** table row, click **Reveal test key** and copy the string that appears. +4. Select **API keys** in the left menu, then locate the **Standard keys** section of the page. In the **Secret key** table row, click **Reveal test key** and copy the string that appears. #### Record the Stripe secret key Record the **secret key** and keep it in a safe location. In a later step, you will [update the .env file](#declare-environment-variables) and specify the secret key as the value of the `STRIPE_SECRET_KEY` environment variable. -5. On your [Stripe Dashboard](https://dashboard.stripe.com/), click **More > Terminal** to enable [Stripe Terminal](https://stripe.com/terminal). +5. On your [Stripe Dashboard](https://dashboard.stripe.com/), click **More > Terminal** to enable [Stripe Terminal](https://stripe.com/terminal). 6. When prompted to configure Stripe Terminal, click **Get Started**. @@ -113,35 +113,35 @@ To configure the store to make purchases using the POS interface, complete the f ## Create and configure the database -POS Foundation uses MongoDB as a database engine. If you want to use a different data store, you'll need to modify the Prisma configuration, migration, and seed files. To learn more, see [Prisma's list of database connectors](https://www.prisma.io/docs/concepts/database-connectors). +POS Foundation uses MongoDB as a database engine. If you want to use a different data store, you'll need to modify the Prisma configuration, migration, and seed files. To learn more, see [Prisma's list of database connectors](https://www.prisma.io/docs/orm/overview/databases). -To configure your POS implementation to use MongoDB, complete the following steps: +To configure your POS implementation to use MongoDB, complete the following steps: -1. On your computer, navigate to the fork of the project repository, and locate the `/prisma` directory. +1. On your computer, navigate to the fork of the project repository, and locate the `/prisma` directory. -2. In the `/prisma/schema.prisma` settings file, set `provider` to `mongodb`. +2. In the `/prisma/schema.prisma` settings file, set `provider` to `mongodb`. ![pos-provider-mongodb](https://storage.googleapis.com/bigcommerce-production-dev-center/images/pos-provider-mongodb.png) ### Configure MongoDB Cloud -After you configure your application to use MongoDB, connect to a MongoDB instance. You can use MongoDB Cloud to get your implementation up and running quickly. As an added benefit, MongoDB Cloud makes your data collections accessible from anywhere. +After you configure your application to use MongoDB, connect to a MongoDB instance. You can use MongoDB Cloud to get your implementation up and running quickly. As an added benefit, MongoDB Cloud makes your data collections accessible from anywhere. To configure MongoDB Cloud and generate a connection URL, complete the following steps: 1. Navigate to [MongoDB Cloud](https://account.mongodb.com/) and [sign in](https://account.mongodb.com/account/login) or [sign up](https://account.mongodb.com/account/register) for an account. 2. From the left menu, select **Database Access**, then click **Add New Database User**. - + a. For **Authentication Method**, select **Password**. - + b. Enter a username and password. Leave all other information unchanged. - + c. To save, click **Add User**. 3. From the left menu, select **Network Access**, then click **Add IP Address**. - + a. For **Access List Entry**, enter an IP address. Using `0.0.0.0/0` allows you to connect from anywhere, but is not secure in production. To learn more, consult [MongoDB's IP access documentation](https://www.mongodb.com/docs/atlas/security/ip-access-list/). ![pos-ip-address](https://storage.googleapis.com/bigcommerce-production-dev-center/images/pos-ip-address.png) @@ -149,7 +149,7 @@ To configure MongoDB Cloud and generate a connection URL, complete the following b. To save, click **Confirm**. 4. From the left menu, select **Database**. - + a. Locate your running cluster, then click **Connect**. b. In the dialog that opens, click **Connect your application**. @@ -199,22 +199,22 @@ cp .env.sample .env After you add environment variables to your project, run the migration script that creates the initial collections and documents your MongoDB instance needs to run the POS system. To run the migration script and seed the database, complete the following steps: - -1. Run the Prisma migration script that is pre-defined in `/prisma/migrations/*` with the following command: + +1. Run the Prisma migration script that is pre-defined in `/prisma/migrations/*` with the following command: ```shell filename="Create the database" showLineNumbers copy npx prisma db push ``` 2. Seed your database with pre-configured collections and documents using the following command: - + ```shell filename="Seed the database" showLineNumbers copy npm run seed ``` #### Important -If you miss the preceding steps, you will not have any data to work with. +If you miss the preceding steps, you will not have any data to work with. 3. Generate a new Prisma client with the following command: @@ -231,7 +231,7 @@ npx prisma generate ```shell filename="Verify migration and seed" showLineNumbers copy npx prisma studio -``` +``` 5. To start the server that runs the POS system, run the following command: @@ -257,10 +257,10 @@ To connect the POS with a card reader, complete the following steps: 2. Locate the tablet, phone, computer, or other device you want to use to take payment at checkout. Connect it to the local network that's running your application and sign in at `http://localhost:3000/signin`. -3. To scan the local network for Stripe Terminal card readers connected with your account, navigate to the main register view. Click or press the **Wifi** icon. +3. To scan the local network for Stripe Terminal card readers connected with your account, navigate to the main register view. Click or press the **Wi-Fi** icon. 4. In the list of card readers that appears, locate the reader you want to connect. Click or press **Connect**. - + ## Troubleshooting @@ -283,7 +283,7 @@ Want to help expand this foundation? We'd love to hear from you. Submit a pull r * [Create a Store-level API Account](/docs/start/authentication/api-accounts#creating-store-level-api-credentials) * [Connecting with Stripe](https://support.bigcommerce.com/s/article/Connecting-Stripe-Payment-Gateway#foundations) * [Setting up an "In-Store Pickup" Shipping Method](https://support.bigcommerce.com/s/article/Free-Shipping#in-store) -* [Switching to Optimized One-Page Checkout](https://support.bigcommerce.com/s/article/Optimized-Single-Page-Checkout#enabling) +* [Switching to Optimized One-Page Checkout](https://support.bigcommerce.com/s/article/Optimized-Single-Page-Checkout#enabling) ### External resources * [Stripe Terminal](https://stripe.com/terminal) @@ -291,7 +291,7 @@ Want to help expand this foundation? We'd love to hear from you. Submit a pull r * [MongoDB Cloud](https://account.mongodb.com/) * [MongoDB Cloud IP access list](https://www.mongodb.com/docs/atlas/security/ip-access-list/) * [Compass MongoDB GUI](https://www.mongodb.com/products/compass) -* [Prisma database connectors](https://www.prisma.io/docs/concepts/database-connectors) +* [Prisma database connectors](https://www.prisma.io/docs/orm/overview/databases) ### BigCommerce developer resources * [Application to join BC Developer Community Slack workspace](https://forms.gle/rtRjbGo2L95U9Fjy9) diff --git a/docs/integrations/tax.mdx b/docs/integrations/tax.mdx index 4073de490..4db211bd0 100644 --- a/docs/integrations/tax.mdx +++ b/docs/integrations/tax.mdx @@ -1,6 +1,6 @@ --- title: Tax Providers -keywords: address, providers, apps, tax, invoices, +keywords: address, providers, apps, tax, invoices, --- # Tax Providers @@ -46,11 +46,11 @@ Once your tax provider configuration is ready, we'll let you know through email. ### Tax profile (optional) BigCommerce sets the tax provider registry with your URLs for [Tax Provider API](/docs/rest-contracts/tax) requests. BigCommerce sends requests to these URLs, for example, when a shopper requests tax estimates. -If you would like to support multiple connections for a merchant, BigCommerce can set the registry with flexible URLs that use our new profile option. -These URLs would include a reserved string, for example, `https://{profile}/estimate`, allowing merchants to customize the base domain. +If you would like to support multiple connections for a merchant, BigCommerce can set the registry with flexible URLs that use our new profile option. +These URLs would include a reserved string, for example, `https://{profile}/estimate`, allowing merchants to customize the base domain. -When connecting or installing your app, you must allow merchants to enter the URL's base domain in the control panel. Merchants need to be able to self-serve updates to the URL through your app. -When you [Establish a Tax Provider connection](#establishing-a-connection), include the `profile` base domain along with credentials associated with the merchant's account. +When connecting or installing your app, you must allow merchants to enter the URL's base domain in the control panel. Merchants need to be able to self-serve updates to the URL through your app. +When you [Establish a Tax Provider connection](#establishing-a-connection), include the `profile` base domain along with credentials associated with the merchant's account. You must liaise with the merchant to provide them with customized URLs. BigCommerce merely consumes the URL values the merchant enters and uses the provided string value for Tax Provider API requests. @@ -124,7 +124,7 @@ Merchants can adjust these settings by navigating to **Settings > Setup > Tax > Is your tax provider not visible in the control panel? Ensure that you have sent the update connection request as described in the [establishing a connection](#establishing-a-connection) section. -Before you can provide tax estimates, the merchant must choose which regions they want you to service. The control panel displays a list of countries and subdivisions that you support. +Before you can provide tax estimates, the merchant must choose which regions they want you to service. The control panel displays a list of countries and subdivisions that you support. If you support document submission, the merchant can choose to select the **Submit Order Data** checkbox. This allows merchants to submit tax documents for supported transactions on their store. @@ -171,7 +171,7 @@ BigCommerce sends requests for tax estimates on product item, shipping, and hand ### Performance -Merchants expect fast tax estimate responses to facilitate a streamlined checkout experience for their shoppers. Hence performance is an essential consideration for a tax provider. +Merchants expect fast tax estimate responses to facilitate a streamlined checkout experience for their shoppers. Hence, performance is an essential consideration for a tax provider. To protect the shopper checkout experience from overly slow tax responses, tax estimate requests will time out after a set period of time. The default timeout threshold of four seconds is intended to support a wide variety of use cases (e.g., large tax estimate requests). @@ -191,7 +191,7 @@ Using [Tax Properties](/docs/store-operations/tax/tax-properties) to enhance the Several BigCommerce API endpoints will automatically invoke an estimate call to a tax provider under certain conditions (e.g., when there is not already a tax quote applied to a cart). These API endpoints must not be called by your tax provider's implementation as doing so will cause an infinite loop of requests, resulting in a memory timeout. -An infinite loop is able to be identified by observing any duplicated requests being received by a tax provider within a very short time frame. +An infinite loop can be identified by observing any duplicated requests being received by a tax provider within a very short time frame. ## Document submission diff --git a/docs/integrations/webhooks/events/index.mdx b/docs/integrations/webhooks/events/index.mdx index c16e12890..6a14d2ce7 100644 --- a/docs/integrations/webhooks/events/index.mdx +++ b/docs/integrations/webhooks/events/index.mdx @@ -761,17 +761,17 @@ Payload objects with the following scopes take the form that follows: "scope": "store/priceList/records/created", "store_id": "1001197568", "data": [ - 0: { - "price_list_id": 1, - "variant_id": 179, - "currency": "USD" - }, - 1: { - "price_list_id": 2, - "variant_id": 180, - "currency": "USD" - }, - ], + { + "price_list_id": 1, + "variant_id": 179, + "currency": "USD" + }, + { + "price_list_id": 2, + "variant_id": 180, + "currency": "USD" + } + ], "hash": "0424a15f158bbfe7277c5f84f9c55a1d4a762e60", "created_at": 1709327895, "producer": "stores/{store_hash}" diff --git a/docs/integrations/webhooks/https-webhook-overview.mdx b/docs/integrations/webhooks/https-webhook-overview.mdx index 0a5061154..0fac53dbe 100644 --- a/docs/integrations/webhooks/https-webhook-overview.mdx +++ b/docs/integrations/webhooks/https-webhook-overview.mdx @@ -6,7 +6,7 @@ HTTPS webhooks are push APIs delivered over HTTPS, triggered by an event on the -To create a webhook, send a `POST` request to the [Create a webhook](/docs/webhooks/webhooks/manage-webhooks-bulk#create-a-webhooks) endpoint. Set the `scope` property value equal to the **Name / Scope** of the webhook you want to create. If a hook fires twice for the same event, both request bodies rely on the same hash. +To create a webhook, send a `POST` request to the [Create a webhook](/docs/webhooks/webhooks/manage-webhooks-bulk#create-a-webhooks) endpoint. Set the `scope` property value equal to the **Name / Scope** of the webhook you want to create. If a hook fires twice for the same event, both request bodies rely on the same hash. ```http filename="Example request: Create a webhook" showLineNumbers copy @@ -72,9 +72,8 @@ mutation CreateHTTPWebhook($input:CreateHttpsWebhookInput!) { { "input": { - - "scope": "store/order/updated", - "destination": "https://6676-8-29-231-139.ngrok-free.app/" + "scope": "store/order/updated", + "destination": "https://yourapp.example.com/webhooks/order-updated" } } ``` @@ -89,8 +88,8 @@ mutation CreateHTTPWebhook($input:CreateHttpsWebhookInput!) { "id": "bc/store/webhook/26713462", "scope": "store/order/updated", "destination": "https://yourapp.example.com/", - "status": ACTIVE, - "isActive": true, + "status": "ACTIVE", + "isActive": true, "createdAt": "2023-07-05T20:14:05Z" } } @@ -110,15 +109,15 @@ When a webhook is triggered, BigCommerce will `POST` a light payload containing ```json filename="HTTPS example: store/order/statusUpdated payload object" showLineNumbers copy { - "store_id":"11111", - "producer":"stores/abcde", - "scope":"store/order/statusUpdated", - "data":{ - "type":"order", - "id":173331 - }, - "hash":"3f9ea420af83450d7ef9f78b08c8af25b2213637" - } + "store_id": "11111", + "producer": "stores/abcde", + "scope": "store/order/statusUpdated", + "data": { + "type": "order", + "id": 173331 + }, + "hash": "3f9ea420af83450d7ef9f78b08c8af25b2213637" +} ``` You can then make a request to the [Get an order](/docs/rest-management/orders#get-an-order) endpoint to obtain full order details. @@ -193,21 +192,21 @@ After the final retry attempt (cumulatively **48 hours** after the first deliver To ensure webhook callback requests are secure, BigCommerce takes the following precautions: -* Create webhook requests to accept a header object in every HTTP webhook, which you can use to authenticate callback requests. -* We advise merchants to use libraries provided by [Standard Webhook](https://github.com/standard-webhooks/standard-webhooks/tree/main/libraries) to verify the legitimacy of the events. +* Create webhook requests to accept a header object in every HTTP webhook, which you can use to authenticate callback requests. +* We advise merchants to use libraries provided by [Standard Webhook](https://github.com/standard-webhooks/standard-webhooks/tree/main/libraries) to verify the legitimacy of the events. * A timestamp is used to protect against replay attacks. * We recommend validating the signature and timestamp before processing any webhook event. ### Webhook signature -You can verify the signature is legitimate by using the [Webhook Verifer](https://www.standardwebhooks.com/verify) provided by Standard Webhook or the code samples provided below. +You can verify the signature is legitimate by using the [Webhook Verifier](https://www.standardwebhooks.com/verify) provided by Standard Webhook or the code samples provided below. The code samples below show how to validate the webhook signature in different programming languages. - + -Use the following command to run the calculation: +Use the following command to run the calculation: ```py filename="Python" showLineNumbers copy import functions_framework @@ -229,7 +228,7 @@ def hello_http(request): print(str(webhook_headers)) result = 'no_result' - + # Use the encoded client secret wh = Webhook(encoded_client_secret) try: @@ -244,7 +243,7 @@ def hello_http(request): -Use the following command to run the calculation: +Use the following command to run the calculation: ```js filename="Node.js" showLineNumbers copy const functions = require('@google-cloud/functions-framework'); diff --git a/docs/start/about/index.mdx b/docs/start/about/index.mdx index 1b047a30c..47ae9c82b 100644 --- a/docs/start/about/index.mdx +++ b/docs/start/about/index.mdx @@ -9,7 +9,7 @@ The BigCommerce suite of APIs empowers you to create apps, automate store proces If you're new to building BigCommerce apps, we recommend that you start by exploring the [App Marketplace](https://www.bigcommerce.com/apps/) to get a feel for what's possible. -When you're ready to play with our APIs, check out the [API Request Quick Start](/archive/start/making-requests). +When you're ready to play with our APIs, check out the [API Request Quick Start](/archive/start/making-requests). ## Available APIs @@ -204,7 +204,7 @@ HTTP response header names are case-insensitive; see the [HTTP specification on When requesting a resource that returns a body, specify the type of content you want to receive with the `Accept` header. Alternatively, you can supply an extension to the resource you're requesting. The priorities with which you can process these methods are: -* Accept header high-priority types (eg. `Accept: application/json`) extensions on the resource (e.g. `customers.json`). +* Accept header high-priority types (e.g. `Accept: application/json`) extensions on the resource (e.g. `customers.json`). * Accept header low priority types (priorities less than 1, e.g. `Accept: application/json;q=0.9`) #### Response structure diff --git a/docs/start/authentication/customer-login.mdx b/docs/start/authentication/customer-login.mdx index f88d53807..26bd38a10 100644 --- a/docs/start/authentication/customer-login.mdx +++ b/docs/start/authentication/customer-login.mdx @@ -10,9 +10,9 @@ keywords: login, log in, sign in, sign-in, headless, embedded, checkouts In this tutorial, you will learn how to enable single sign-on for storefront customers using the Customer Login API and JSON Web Tokens. -You can also use the [GraphQL Storefront API](/docs/start/authentication/graphql-storefront#customer-login) to authorize your application to work with customer-specific storefront data. +You can also use the [GraphQL Storefront API](/docs/start/authentication/graphql-storefront#customer-login) to authorize your application to work with customer-specific storefront data. - + ## Overview Single sign-on (SSO) is an authentication mechanism that enables users to sign in to multiple software applications using the same set of credentials that the user enters only once. It eliminates the need to maintain multiple passwords, which streamlines the process of accessing web applications. For more details, see [Single Sign-On](https://en.wikipedia.org/wiki/Single_sign-on). @@ -123,7 +123,7 @@ https://storedomain.com/login/token/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3M 7. Paste the URL into the address bar of your web browser. -If the request was successful, you will be signed in as a customer and directed to `/account.php`. If it was unsuccessful, a sign in attempt error message will be displayed and you will be directed to `/login.php`. +If the request was successful, you will be signed in as a customer and directed to `/account.php`. If it was unsuccessful, a sign in attempt error message will be displayed, and you will be directed to `/login.php`. ![Login Error](https://storage.googleapis.com/bigcommerce-production-dev-center/images/invalid-login.png "Login Error") @@ -159,7 +159,7 @@ $ npm install jsonwebtoken uuid ```js showLineNumbers copy const jwt = require('jsonwebtoken'); const {v4: uuidv4} = require('uuid'); - + function getLoginUrl(customerId, storeHash, storeUrl, clientId, clientSecret) { const dateCreated = Math. round((new Date()). getTime() / 1000); const payload = { @@ -173,13 +173,13 @@ function getLoginUrl(customerId, storeHash, storeUrl, clientId, clientSecret) { let token = jwt.sign(payload, clientSecret, {algorithm:'HS256'}); return `${storeUrl}/login/token/${token}`; }; - + const clientId = "Your client id"; const clientSecret = "Your client secret"; const customerId = "Your customer id"; const storeHash = "Your store hash"; const storeUrl = "Your store url"; - + const loginUrl = getLoginUrl(customerId, storeHash, storeUrl, clientId, clientSecret); console.log(loginUrl); ``` @@ -187,7 +187,7 @@ console.log(loginUrl); 6. Replace your app and customer-specific values in the variables. 7. Run the code: - + ```bash copy $ node youFileName.js ``` diff --git a/docs/start/authentication/graphql-storefront.mdx b/docs/start/authentication/graphql-storefront.mdx index bd16a2993..ab8a460f5 100644 --- a/docs/start/authentication/graphql-storefront.mdx +++ b/docs/start/authentication/graphql-storefront.mdx @@ -1,6 +1,6 @@ # Authenticating requests to the GraphQL Storefront API -Authenticate GraphQL Storefront API requests using bearer tokens passed with the `Authorization` header. You can authenticate using two different kinds of tokens: [storefront tokens](#storefront-tokens) or [customer impersonation tokens](#customer-impersonation-tokens). +Authenticate GraphQL Storefront API requests using bearer tokens passed with the `Authorization` header. You can authenticate using two different kinds of tokens: [storefront tokens](#storefront-tokens) or [customer impersonation tokens](#customer-impersonation-tokens). ```http filename="Example request configuration" showLineNumbers copy POST https://your_store.example.com/graphql @@ -15,11 +15,11 @@ Content-Type: application/json ## Storefront tokens -Storefront tokens are most appropriate to use directly from the web browser but you can use them in server-to-server communications. If you're creating a token for an application that will make server-to-server or proxied requests to the GraphQL Storefront API, or you work with customer data, use a [customer impersonation token](#customer-impersonation-tokens). If you only wish to query information from an anonymous shopper's perspective, use a storefront token. +Storefront tokens are most appropriate to use directly from the web browser, but you can use them in server-to-server communications. If you're creating a token for an application that will make server-to-server or proxied requests to the GraphQL Storefront API, or you work with customer data, use a [customer impersonation token](#customer-impersonation-tokens). If you only wish to query information from an anonymous shopper's perspective, use a storefront token. ### Storefront token security -Generally speaking, vanilla storefront tokens are not considered sensitive, and it is safe to expose them in web browsers. Storefront tokens can only expose information and actions that shoppers can access when they browse a storefront. +Generally speaking, vanilla storefront tokens are not considered sensitive, and it is safe to expose them in web browsers. Storefront tokens can only expose information and actions that shoppers can access when they browse a storefront. It is possible to create a long-lived token that does not expire. For greater security, we recommend creating shorter-lived tokens and rotating them periodically. @@ -68,7 +68,7 @@ content-type: application/json #### Customer access tokens -A customer access token is unique to an individual user's account because it represents an authenticated storefront session for GraphQL requests. You can obtain and use a customer access token only for server-to-server requests. Therefore, you must use the customer access token with a regular storefront token. A customer access token becomes invalid on all devices when you log out of a single device. +A customer access token is unique to an individual user's account because it represents an authenticated storefront session for GraphQL requests. You can obtain and use a customer access token only for server-to-server requests. Therefore, you must use the customer access token with a regular storefront token. A customer access token becomes invalid on all devices when you log out of a single device. Do not use this token for browser-side or client-side requests. @@ -83,14 +83,14 @@ There are two options to obtain a customer access token. ###### Login mutation -Enter your user email and password to use the login mutation. When using the login mutation in a server-to-server context, the mutation will return a customer access token in response to login actions as part of the GraphQL body instead of a cookie header. From there, you can store the customer access token in the presentation layer's session management system and send it with future GraphQL requests. If the login mutation request is from a browser, we will not return the customer access token in the body, and will instead set a cookie. +Enter your user email and password to use the login mutation. When using the login mutation in a server-to-server context, the mutation will return a customer access token in response to login actions as part of the GraphQL body instead of a cookie header. From there, you can store the customer access token in the presentation layer's session management system and send it with future GraphQL requests. If the login mutation request is from a browser, we will not return the customer access token in the body, and will instead set a cookie. * Use the [Create a Token](/docs/rest-authentication/tokens#create-a-token) endpoint to generate the storefront bearer token needed to run the login mutation call. -* If you request a customer access token in wrong communication context, you will receive the following error: +* If you request a customer access token in wrong communication context, you will receive the following error: ***Customer access token was requested in the body, but it's only returned for server-to-server requests. For browser requests it's set as an httpOnly cookie instead.*** -* If you still have issues creating a customer access token, we recommend clearing your cookies to resolve any loading issues. +* If you still have issues creating a customer access token, we recommend clearing your cookies to resolve any loading issues. @@ -117,10 +117,10 @@ mutation Login($email: String!, $pass: String!) { } ``` -```json filename="GraphQL variables" showLineNumbers copy +```json filename="GraphQL variables" showLineNumbers copy { -"email": "user@email.com", -"pass": "password" + "email": "user@email.com", + "pass": "password" } ``` @@ -149,7 +149,7 @@ mutation Login($email: String!, $pass: String!) { ###### Login with a JWT -There are two options for logging in using a JWT. +There are two options for logging in using a JWT. 1. Customer Login API @@ -184,9 +184,8 @@ mutation Login($jwt: String!) { } ``` -```json filename="GraphQL variables" showLineNumbers copy -{"jwt": "your_jwt_token" -} +```json filename="GraphQL variables" showLineNumbers copy +{"jwt": "your_jwt_token"} ``` @@ -262,11 +261,11 @@ query CustomerAttributes { "attributes": { "shirtSize": { "entityId": 123, - "value": medium + "value": "medium" }, "favoriteColor": { "entityId": 456, - "value": blue + "value": "blue" } } } @@ -291,7 +290,7 @@ Because of the flexible use of the customer impersonation token, BigCommerce rec * A customer access token becomes invalid on all devices when you log out on a single device. -You can use customer impersonation tokens to authenticate requests to the GraphQL Storefront API in server-to-server and headless interactions. The API will reject any customer impersonation token-authenticated requests that originate from a web browser and are not proxied. +You can use customer impersonation tokens to authenticate requests to the GraphQL Storefront API in server-to-server and headless interactions. The API will reject any customer impersonation token-authenticated requests that originate from a web browser and are not proxied. In the future, we will not support all customer features when using a customer impersonation token. More security-sensitive features will only work with the customer access token. For example, features like exposing a customer's Saved Payment Methods will only work with a customer access token. @@ -299,13 +298,13 @@ In the future, we will not support all customer features when using a customer i Customer impersonation token-authenticated requests will be specific to the customer, including product pricing and availability, customer account details, and more. -It is not necessary to generate a new token for each customer ID. You may use a single token at any given time for your application and specify a distinct customer ID for each set of requests. +It is not necessary to generate a new token for each customer ID. You may use a single token at any given time for your application and specify a distinct customer ID for each set of requests. Using a customer impersonation token does not automatically sign a customer in. For that, use the [customer login mutation](#signing-customers-in) or the [Customer Login API](/docs/rest-authentication/customer-login). ### Create a customer impersonation token -Add the [Storefront API customer impersonation tokens creation scope](/docs/start/authentication/api-accounts#token-creation-scopes) to the [store-level or app-level API account](/docs/start/authentication/api-accounts) you use when you [Create a customer impersonation token](/docs/rest-authentication/tokens/customer-impersonation-token). +Add the [Storefront API customer impersonation tokens creation scope](/docs/start/authentication/api-accounts#token-creation-scopes) to the [store-level or app-level API account](/docs/start/authentication/api-accounts) you use when you [Create a customer impersonation token](/docs/rest-authentication/tokens/customer-impersonation-token). @@ -317,7 +316,7 @@ Accept: application/json Content-Type: application/json { - "channel_ids": [1, 2, 3] // array of integers (must be a valid channel IDs on the store) + "channel_ids": [1, 2, 3], // array of integers (must be a valid channel IDs on the store) "expires_at": 1602288000 // when the token will expire, as an integer unix timestamp (in seconds) } ``` @@ -338,7 +337,7 @@ Content-Type: application/json ### Customer impersonation token security -Unlike storefront API tokens, customer impersonation tokens _are_ sensitive and should **never** be exposed publicly. Treat them with the same care as other application secrets, such as API account access tokens. +Unlike storefront API tokens, customer impersonation tokens _are_ sensitive and should **never** be exposed publicly. Treat them with the same care as other application secrets, such as API account access tokens. If your token is compromised, you can use the [Revoke a token](/docs/rest-authentication/tokens#revoke-a-token) endpoint. Only use this in emergencies; do not revoke tokens unnecessarily. Instead, use a shorter expiration and allow them to expire naturally. @@ -351,7 +350,7 @@ A customer can only sign in on one device. When you run the customer login mutat If you're using the GraphQL Storefront API from a browser, for example, on top of your Stencil storefront, you can use the login mutation to sign in to a customer account with an email address and a password. This will set a session cookie in the browser, which will authenticate the customer account on future requests. You can also perform a login operation by passing the `guestCartEntityID` variable and assigning a cart to a customer. -This mutation is also useful for server-to-server or headless storefront applications that use a customer impersonation token. For example, you can use a sign in form to validate a customer's email address and password. When the mutation returns successfully, you can take the resulting customer ID and store it in a session to pass with the `X-Bc-Customer-Id` header. +This mutation is also useful for server-to-server or headless storefront applications that use a customer impersonation token. For example, you can use a sign in form to validate a customer's email address and password. When the mutation returns successfully, you can take the resulting customer ID and store it in a session to pass with the `X-Bc-Customer-Id` header. As a security best practice, you should inject the email address and password using GraphQL query variables. This prevents the password from being exposed in the query itself. In the [GraphQL Storefront playground](/graphql-storefront/playground), you can set variables for requests. diff --git a/docs/start/best-practices/integration-design.mdx b/docs/start/best-practices/integration-design.mdx index 684edf3d2..3290f456e 100644 --- a/docs/start/best-practices/integration-design.mdx +++ b/docs/start/best-practices/integration-design.mdx @@ -1,12 +1,12 @@ ## Best Practices for API Integration Design -The **Unlimited** rate plan for BigCommerce Enterprise clients does not impose rate limits by request magnitude per unit of time. However, there are physical infrastructure-related constraints that may limit the maximum throughput of requests for a given resource. +The **Unlimited** rate plan for BigCommerce Enterprise clients does not impose rate limits by request magnitude per unit of time. However, there are physical infrastructure-related constraints that may limit the maximum throughput of requests for a given resource. -Regardless of whether your store or the stores your app serves are rate limited, good design patterns are both responsible stewards of our API ecosystem and critical to healthy, performant apps and headless storefronts. +Regardless of whether your store or the stores your app serves are rate limited, good design patterns are both responsible stewards of our API ecosystem and critical to healthy, performant apps and headless storefronts. -This article describes three tenets of good SaaS design patterns; [efficiency](#efficiency), [mindfulness](#mindfulness), and [responsiveness](#responsiveness). It also outlines some behaviors that BigCommerce considers abusive. +This article describes three tenets of good SaaS design patterns; [efficiency](#efficiency), [mindfulness](#mindfulness), and [responsiveness](#responsiveness). It also outlines some behaviors that BigCommerce considers abusive. -To maintain service quality at scale, BigCommerce observes API traffic. We reserve the right to throttle or take offline abusive apps or stores per our [Terms of Service](https://www.bigcommerce.com/terms/api-terms/). Following the happy paths laid out in this article can help you write robust, resilient implementations that provide the greatest business benefit with the smallest infrastructure footprint. +To maintain service quality at scale, BigCommerce observes API traffic. We reserve the right to throttle or take offline abusive apps or stores per our [Terms of Service](https://www.bigcommerce.com/terms/api-terms/). Following the happy paths laid out in this article can help you write robust, resilient implementations that provide the greatest business benefit with the smallest infrastructure footprint. ## Efficiency @@ -22,9 +22,9 @@ In addition, consider using conditional logic to avoid making API calls when the ## Mindfulness -**There should be a distinct purpose for each API call.** +**There should be a distinct purpose for each API call.** -Using an API with no artificial rate limit does not confer the privilege of making unlimited requests. For an analogy, consider an unlimited mobile data plan. Although the provider allows unlimited data transfer without additional cost, the volume of traffic is considered abusive if you constantly download, upload, or stream over the cellular network. A bit of mindfulness would mitigate the cost to the cellular infrastructure by streaming over WiFi when available and downloading large files prior to leaving WiFi. +Using an API with no artificial rate limit does not confer the privilege of making unlimited requests. For an analogy, consider an unlimited mobile data plan. Although the provider allows unlimited data transfer without additional cost, the volume of traffic is considered abusive if you constantly download, upload, or stream over the cellular network. A bit of mindfulness would mitigate the cost to the cellular infrastructure by streaming over Wi-Fi when available and downloading large files prior to leaving Wi-Fi. Resource calls that contain a body - typically POST and PUT requests - are more resource intensive than GET or DELETE requests. When your app or implementation updates a resource, there should be an inciting action, such as a BigCommerce webhook or a change instigated by an external resource controller that requires updates to the BigCommerce Product object. @@ -32,27 +32,27 @@ Resource calls that contain a body - typically POST and PUT requests - are more **Shift tactics when your requests return errors.** -Stores with more business have resources that change more frequently. These stores typically generate a high volume of API traffic. However, interaction between enterprise resource planning systems, or _ERPs_, and BigCommerce is a two way street. ERPs require proper error handling. When BigCommerce servers return HTTP codes that indicate your app's requests are failing, your service should compensate for what is happening rather than continuing to send unsuccessful requests. +Stores with more business have resources that change more frequently. These stores typically generate a high volume of API traffic. However, interaction between enterprise resource planning systems, or _ERPs_, and BigCommerce is a two-way street. ERPs require proper error handling. When BigCommerce servers return HTTP codes that indicate your app's requests are failing, your service should compensate for what is happening rather than continuing to send unsuccessful requests. The following sections describe responsive error handling organized by the HTTP code that BigCommerce returns, using ERP sync systems as an example. ### 404 and 422 client errors -Sync systems commonly return [404 Not Found (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404) and [422 Unprocessable Entity (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422) statuses. +Sync systems commonly return [404 Not Found (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404) and [422 Unprocessable Entity (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422) statuses. -When a resource is moved, changed, or removed, the expected behavior is that some requests for that resource return 404 statuses. In this case, the ERP connector should re-evaluate where the desired resource is located and adjust its requests accordingly. +When a resource is moved, changed, or removed, the expected behavior is that some requests for that resource return 404 statuses. In this case, the ERP connector should re-evaluate where the desired resource is located and adjust its requests accordingly. Changes to the attributes of resource can also render subsequent requests to it unintelligible, resulting in 422 errors. In this case, the ERP should re-evaluate the properties of the target resource and adjust its requests accordingly. ### 429 client errors -All infrastructure has physical limits. Even an unlimited rate plan may sometimes receive the [429 Too Many Requests (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) status. +All infrastructure has physical limits. Even an unlimited rate plan may sometimes receive the [429 Too Many Requests (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) status. If your ERP starts receiving intermittent 429 statuses, use our [retry headers](/docs/start/about#bigcommerce-specific-response-headers) to queue your requests. Regardless of developer intention, BigCommerce considers implementations abusive when they do not handle 429 errors responsively. Design applications that devote serious attention to avoiding consecutive 429 responses. ### 500 through 504 server errors -Each of the five [500-type statuses (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses) indicates a different server-related error. +Each of the five [500-type statuses (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses) indicates a different server-related error. * [500 Internal Server Error (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) * [501 Not Implemented (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501) diff --git a/docs/start/migration/3_testing.md b/docs/start/migration/3_testing.md index 45aee4aeb..aa7460164 100644 --- a/docs/start/migration/3_testing.md +++ b/docs/start/migration/3_testing.md @@ -11,7 +11,7 @@ In order to properly prepare data for migration, data validation and testing are Before attempting to load any data, be sure to familiarize yourself with the [BigCommerce API Best Practices and Rate Limits](https://developer.bigcommerce.com/resource-hub/navigating-bigcommerces-api-rate-limits-update). -To ensure a smooth execution during migration, prepare a subset of your catalog to perform a partial migration as a test. This should be around `50` to `1000` data records, depending on the size and complexity of of your catalog, that cover a broad range of potential product configurations +To ensure a smooth execution during migration, prepare a subset of your catalog to perform a partial migration as a test. This should be around `50` to `1000` data records, depending on the size and complexity of your catalog, that cover a broad range of potential product configurations If your catalog contains any of the following, ensure that your representative sample contains at least one product with each to test the associated BigCommerce APIs. diff --git a/docs/store-operations/catalog/index.mdx b/docs/store-operations/catalog/index.mdx index 3dd6bc93b..69f211718 100644 --- a/docs/store-operations/catalog/index.mdx +++ b/docs/store-operations/catalog/index.mdx @@ -1,6 +1,6 @@ --- title: Catalog Overview -keywords: products, get all products, get products, sort, +keywords: products, get all products, get products, sort, --- # Catalog Overview @@ -157,7 +157,7 @@ X-Auth-Token: {{ACCESS_TOKEN}} * If using `image_file`, set `Content-Type` header to `multipart/form-data` -- otherwise, you will be unable to add subsequent requests. - * Set `is_thumbmail` to true to set the image as the thumbnail used on product listing pages. + * Set `is_thumbnail` to true to set the image as the thumbnail used on product listing pages. * A product can have only one thumbnail image at a time. * If only one image is on the product, it becomes both the thumbnail and the main product image. * You can also add images to [variants](/docs/rest-catalog/product-variants). @@ -278,7 +278,7 @@ X-Auth-Token: {{ACCESS_TOKEN}} - You can add metafields to variants, products, categories, and brands. - - Product and variant metafields won't be duplicated when you [duplicate a product](https://support.bigcommerce.com/s/article/Adding-Products-v3?language=en_US#product-details) in the control panel unless the [metafield is for ShipperHQ](/docs/store-operations/shipping/shipper-hq) and you [install ShipperHQ](https://support.bigcommerce.com/s/article/ShipperHQ?language=en_US#install). + - Product and variant metafields won't be duplicated when you [duplicate a product](https://support.bigcommerce.com/s/article/Adding-Products-v3?language=en_US#product-details) in the control panel unless the [metafield is for ShipperHQ](/docs/store-operations/shipping/shipper-hq) and you [install ShipperHQ](https://support.bigcommerce.com/s/article/ShipperHQ?language=en_US#install). @@ -807,7 +807,7 @@ For general information on brands and their use cases, see [Managing Brands](htt [Categories](/docs/rest-catalog/categories#get-all-categories) are a hierarchy of products available on the store, presented in a tree structure. A store's category structure determines the primary menu structure of most storefront themes directly tied to it. -BigCommerce's V3 REST API does not require products to be associated with a category during creation. You can add new products to a catalog without a category, which can be assigned later if desired. A store's category can contain multiple products or no products at all and still be valid. +BigCommerce's V3 REST API does not require products to be associated with a category during creation. You can add new products to a catalog without a category, which can be assigned later if desired. A store's category can contain multiple products or no products at all and still be valid. You can associate products with multiple categories. A product associated with categories does not currently have any priority or weighted order (there's no “primary category”). The absence of priority or weighted order makes it difficult to integrate with some external systems that might wish to use a product's categories to map to a category structure. @@ -924,14 +924,14 @@ X-Auth-Token: {{ACCESS_TOKEN}} [Product Sort Order](/docs/rest-catalog/categories/sort-order#get-product-sort-order) allows you to manage the sort order of products displayed on any given category page. Products assigned to multiple storefront categories can have different sort order values per category. -### Product sorting on a storefront +### Product sorting on a storefront The Catalog API supports two manually managed methods of product sorting: on a category level and a product level. If a user combines both sorting methods on a storefront, products with sort order values on a category level take priority. If there is no sort order value on a category level, the Catalog API sorts products by values on a product level. Product sorting methods: 1. Manually specified sort order on a category level. -2. Manually specified sort order on a product level. `0` by default. +2. Manually specified sort order on a product level. `0` by default. Products with the same sort order value either on a category or a product level are sorted by `product id` as a second criterion. diff --git a/docs/store-operations/emails/object-reference/abandoned-cart-deprecated.yml b/docs/store-operations/emails/object-reference/abandoned-cart-deprecated.yml index 1cd67fbd6..6a5329b4e 100644 --- a/docs/store-operations/emails/object-reference/abandoned-cart-deprecated.yml +++ b/docs/store-operations/emails/object-reference/abandoned-cart-deprecated.yml @@ -1,5 +1,5 @@ title: Abandoned Cart Email Template (Deprecated) -description: Abandoned cart email triggers when a shopper doesnʼt complete an order. +description: Abandoned cart email triggers when a shopper doesn't complete an order. type: object deprecated: true properties: @@ -85,35 +85,35 @@ properties: properties: unsubscribe: type: string -examples: +examples: Abandoned Cart example (deprecated): value: - abandoned_cart: - body: You recently visited our online store and we noticed that you didnʼt complete your order.\n
To complete your order right now, just click on the link below:\n Complete your order + abandoned_cart: + body: You recently visited our online store and we noticed that you didn't complete your order.\n
To complete your order right now, just click on the link below:\n Complete your order unsubscribe_link: 'example.com/unsubscribe' - store: + store: name: My Dev Store 97434969 domain_name: my-dev-store-97434969.store.bcdev - logo: + logo: title: [= My Dev Store 97434969 =] name: avatar-2020_1612860757__16350.jpeg - url: 'https://valeryderived-cloud-dev-vm.store.bcdev/store/f1kr2akw96/product_images/avatar-2020_1612860757__16350.jpeg' - ssl_path: 'https://my-dev-store-97434969.store.bcdev' - cdn_path: 'https://valeryderived-cloud-dev-vm.store.bcdev/store/f1kr2akw96' + url: 'https://your-store.example.com/store/f1kr2akw96/product_images/avatar-2020_1612860757__16350.jpeg' + ssl_path: 'https://store-somehash-12345.mybigcommerce.com' + cdn_path: 'https://your-store.example.com/store/f1kr2akw96' image_directory: product_images - img_path: 'https://valeryderived-cloud-dev-vm.store.bcdev/r08d84bb67d250c7624502ed76d8e0bafb1a5cacf/g-themes/ClassicNext/images' - path_normal: 'https://my-dev-store-97434969.store.bcdev' - path: 'https://my-dev-store-97434969.store.bcdev' + img_path: 'https://your-store.example.com/r08d84bb67d250c7624502ed76d8e0bafb1a5cacf/g-themes/ClassicNext/images' + path_normal: 'https://store-somehash-12345.mybigcommerce.com' + path: 'https://store-somehash-12345.mybigcommerce.com' address: '123 Fake St, Dallas, TX 75225' language: code: en direction: ltr - customer: + customer: first_name: John full_name: John Jr email: 'john.f@example.com' - misc: + misc: year: 2021 - translations: - en: + translations: + en: unsubscribe: 'Unsubscribe from future emails like this.' diff --git a/docs/store-operations/emails/object-reference/abandoned-cart.yml b/docs/store-operations/emails/object-reference/abandoned-cart.yml index 3c283fec8..c636ec6d5 100644 --- a/docs/store-operations/emails/object-reference/abandoned-cart.yml +++ b/docs/store-operations/emails/object-reference/abandoned-cart.yml @@ -1,5 +1,5 @@ title: Abandoned Cart Email Template -description: Abandoned cart email triggers when a shopper doesnʼt complete an order. +description: Abandoned cart email triggers when a shopper doesn't complete an order. type: object properties: notification: diff --git a/docs/store-operations/emails/object-reference/draft/_all.yml b/docs/store-operations/emails/object-reference/draft/_all.yml index 3b1991123..b5c877ba7 100644 --- a/docs/store-operations/emails/object-reference/draft/_all.yml +++ b/docs/store-operations/emails/object-reference/draft/_all.yml @@ -68,7 +68,7 @@ properties: type: integer Abandoned Cart: title: Abandoned Cart Email Template - description: Abandoned cart email triggers when a shopper doesnʼt complete an order. + description: Abandoned cart email triggers when a shopper doesn't complete an order. type: object oneOf: - properties: @@ -744,7 +744,7 @@ properties: items: type: object properties: - name: + name: type: string sku: type: string @@ -762,7 +762,7 @@ properties: items: type: object properties: - name: + name: type: string sku: type: string @@ -1291,28 +1291,28 @@ properties: items: type: object properties: - id: + id: type: integer - email: + email: type: string - phone: + phone: type: string - instructions: + instructions: type: string - name: + name: type: string - location: + location: type: array - items: + items: type: object properties: - name: + name: type: string - address_lines: + address_lines: type: array - items: + items: type: string - city: + city: type: string state: type: string @@ -1320,7 +1320,7 @@ properties: type: string zip: type: string - operating_hours: + operating_hours: type: array items: type: object @@ -1328,79 +1328,79 @@ properties: sunday: type: object properties: - is_open: + is_open: type: boolean opening_time: formatted: type: string - closing_time: - formatted: + closing_time: + formatted: type: string - monday: + monday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string - closing_time: - formatted: + closing_time: + formatted: type: string tuesday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: + type: string + closing_time: + formatted: type: string - closing_time: - formatted: - type: string - wednesday: + wednesday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: + type: string + closing_time: + formatted: type: string - closing_time: - formatted: - type: string thursday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string closing_time: - formatted: + formatted: type: string - friday: + friday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string - closing_time: - formatted: + closing_time: + formatted: type: string saturday: type: object properties: is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string - closing_time: - formatted: + closing_time: + formatted: type: string payment: type: object @@ -1412,7 +1412,7 @@ properties: deprecated: true offline_payment_message: type: string - payment_method: + payment_method: type: string provider: type: object @@ -1580,7 +1580,7 @@ properties: properties: store: type: string - example: "Boutique" + example: "Boutique" Order Notification: title: Order Notification Email Template description: Order notification email triggers when a merchant or store admin adds a message to an order. @@ -1720,28 +1720,28 @@ properties: items: type: object properties: - id: + id: type: integer - email: + email: type: string - phone: + phone: type: string - instructions: + instructions: type: string - name: + name: type: string - location: + location: type: array - items: + items: type: object properties: - name: + name: type: string - address_lines: + address_lines: type: array - items: + items: type: string - city: + city: type: string state: type: string @@ -1749,7 +1749,7 @@ properties: type: string zip: type: string - operating_hours: + operating_hours: type: array items: type: object @@ -1757,79 +1757,79 @@ properties: sunday: type: object properties: - is_open: + is_open: type: boolean opening_time: formatted: type: string - closing_time: - formatted: + closing_time: + formatted: type: string - monday: + monday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string - closing_time: - formatted: + closing_time: + formatted: type: string tuesday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string - closing_time: - formatted: - type: string - wednesday: + closing_time: + formatted: + type: string + wednesday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: + type: string + closing_time: + formatted: type: string - closing_time: - formatted: - type: string thursday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string closing_time: - formatted: + formatted: type: string - friday: + friday: type: object properties: - is_open: + is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string - closing_time: - formatted: + closing_time: + formatted: type: string saturday: type: object properties: is_open: type: boolean - opening_time: - formatted: + opening_time: + formatted: type: string - closing_time: - formatted: + closing_time: + formatted: type: string store: type: object @@ -2104,7 +2104,7 @@ properties: type: string Return Requested: title: Return Requested Email Template - description: Return requested email triggers after a customerʼs return is approved. + description: Return requested email triggers after a customer's return is approved. type: object properties: return: @@ -2223,7 +2223,7 @@ properties: quantity: type: string Return Status Change: - description: Return status change email triggers after a customer returnʼs status has changed. + description: Return status change email triggers after a customer return's status has changed. type: object title: Return Status Change Email Template properties: diff --git a/docs/store-operations/emails/object-reference/draft/abandoned_cart_email.yml b/docs/store-operations/emails/object-reference/draft/abandoned_cart_email.yml index bc03343bb..c1dab9630 100644 --- a/docs/store-operations/emails/object-reference/draft/abandoned_cart_email.yml +++ b/docs/store-operations/emails/object-reference/draft/abandoned_cart_email.yml @@ -1,6 +1,6 @@ Abandoned Cart: title: Abandoned Cart Email Template - description: Abandoned cart email triggers when a shopper doesnʼt complete an order. + description: Abandoned cart email triggers when a shopper doesn't complete an order. type: object oneOf: - properties: @@ -404,14 +404,14 @@ Abandoned Cart: name: string misc: - year: 0 - examples: - abandoned_cart: + examples: + abandoned_cart: body: You recently visited our online store and we noticed that you didn't complete your order.\n
To complete your order right now, just click on the link below:\n Complete your order unsubscribe_link: #unsubscribe-link - store: + store: name: My Dev Store 97434969 domain_name: my-dev-store-97434969.store.bcdev - logo: + logo: title: [= My Dev Store 97434969 =] name: avatar-2020_1612860757__16350.jpeg url: 'https://valeryderived-cloud-dev-vm.store.bcdev/store/f1kr2akw96/product_images/avatar-2020_1612860757__16350.jpeg' @@ -420,17 +420,17 @@ Abandoned Cart: image_directory: product_images img_path: 'https://valeryderived-cloud-dev-vm.store.bcdev/r08d84bb67d250c7624502ed76d8e0bafb1a5cacf/g-themes/ClassicNext/images' path_normal: 'https://my-dev-store-97434969.store.bcdev' - path: 'https://my-dev-store-97434969.store.bcdev' - address: + path: 'https://my-dev-store-97434969.store.bcdev' + address: language: code: en direction: ltr - customer: + customer: first_name: John full_name: John Jr email: 'john.f@example.com' - misc: + misc: year: 2021 - translations: - en: + translations: + en: unsubscribe:'Unsubscribe from future emails like this. diff --git a/docs/store-operations/emails/object-reference/draft/return_status_change_email.yml b/docs/store-operations/emails/object-reference/draft/return_status_change_email.yml index 0733e1205..d0f9e3219 100644 --- a/docs/store-operations/emails/object-reference/draft/return_status_change_email.yml +++ b/docs/store-operations/emails/object-reference/draft/return_status_change_email.yml @@ -1,5 +1,5 @@ Return Status Change: - description: Return status change email triggers after a customer returnʼs status has changed. + description: Return status change email triggers after a customer return's status has changed. type: object title: Return Status Change Email Template properties: @@ -145,29 +145,29 @@ Return Status Change: examples: Return Status Change example: value: - return: + return: id: 1 reason: reason of return action: action comments: sample comment - product: + product: name: ProductName quantity: 2 thumbnail_url: '' - status: + status: value: 1 formatted: Pending - store_credit: + store_credit: value: 10.1 formatted: '$10.1 USD' link: 'https://my-dev-store-97434969.store.bcdev/account.php?action=view_returns' - instructions: - order: + instructions: + order: id: 1 - store: + store: name: My Dev Store 97434969 domain_name: my-dev-store-97434969.store.bcdev - logo: + logo: title: '[= My Dev Store 97434969 =]' name: avatar-2020_1612860757__16350.jpeg url: 'https://valeryderived-cloud-dev-vm.store.bcdev/store/f1kr2akw96/product_images/avatar-2020_1612860757__16350.jpeg' @@ -177,18 +177,18 @@ Return Status Change: img_path: 'https://valeryderived-cloud-dev-vm.store.bcdev/r08d84bb67d250c7624502ed76d8e0bafb1a5cacf/g-themes/ClassicNext/images' path_normal: 'https://my-dev-store-97434969.store.bcdev' path: 'https://my-dev-store-97434969.store.bcdev' - address: - language: + address: + language: code: en direction: ltr - customer: + customer: first_name: John full_name: John Jr email: 'john.f@example.com' - misc: + misc: year: 2021 - translations: - en: + translations: + en: title: 'Return request status changed' hello: 'Hello {{name}}' message: 'The status of your return request for order #{{id}} has changed to {{status}}.' diff --git a/docs/store-operations/emails/object-reference/invoice.yml b/docs/store-operations/emails/object-reference/invoice.yml index 66d303f2e..0b2d48c81 100644 --- a/docs/store-operations/emails/object-reference/invoice.yml +++ b/docs/store-operations/emails/object-reference/invoice.yml @@ -32,7 +32,7 @@ properties: type: array items: type: object - properties: + properties: address: type: object properties: @@ -63,7 +63,7 @@ properties: type: array items: type: object - properties: + properties: label: type: string value: @@ -86,7 +86,7 @@ properties: example: ["512 Bluebonnet Lane","Austin","Texas","78704","United States"] address_custom_fields: type: array - desription: Contains the label and value for custom form fields on the address. + description: Contains the label and value for custom form fields on the address. items: type: object properties: @@ -157,13 +157,13 @@ properties: description: A list of strings that represents product variant options. items: type: object - properties: + properties: configurable_fields: type: array description: Object array with properties name and value. items: type: object - properties: + properties: name: type: string value: @@ -368,7 +368,7 @@ properties: type: array items: type: object - properties: + properties: label: type: string value: @@ -391,7 +391,7 @@ properties: type: array items: type: object - properties: + properties: total_cost: type: object properties: @@ -557,57 +557,57 @@ properties: email_address: type: string examples: - order: + order: id: 1 customer_message: Order custom message customer_id: 11 - date_placed: + date_placed: formatted: 11th Feb 2021 value: 1613060604 account_order_status_url: #url pickup_methods: ["Store Pickup", "Curbside Pickup"] - shipping: - methods: + shipping: + methods: address: email: 'customer@example.com' phone: +112233445566 first_name: John last_name: Wick company: MyCompany - country: - city: - state: + country: + city: + state: zip: 1622 - address_lines: - custom_fields: - products: + address_lines: + custom_fields: + products: - name: "Sample Product" quantity: 2 sku: SF42 - address_lines: + address_lines: address_custom_fields: address_id: 0 - options: + options: Size: XL download_url: https://example.com/download/file.pdf thumbnail: /test.jpg brand: Nike type: physical - event: + event: name: Summer Sale Event - date: + date: value: 1640995200 formatted: "Jan 1, 2022" - price: + price: value: 250.1 formatted: 250.1 - total: + total: value: 250.1, formatted: 250.1 - preorder: + preorder: is_preorder: false message: Available for pre-order - date: + date: value: 1640995200 formatted: "Jan 1, 2022" attribute_lines: @@ -669,17 +669,17 @@ examples: formatted: "10:00" closing_time: formatted: "19:00" - payment: + payment: is_test: false provider_name: PaymentMethod offline_payment_message: Please pay at store - gateway_amount: + gateway_amount: formatted: $100.00 value: 100.00 payment_method: Credit Card provider: name: Stripe - billing: + billing: is_managed_by_amazon: false address: email: 'customer@example.com' @@ -688,30 +688,30 @@ examples: last_name: Wick company: MyCompany country: - city: + city: state: zip: 1622 - address_lines: - custom_fields: - total_rows: + address_lines: + custom_fields: + total_rows: - label: Total, - price: + price: value: 250.1, formatted: 250.1 - shipping_discounts: - total_cost: + shipping_discounts: + total_cost: formatted: 100.0$, value: 100 - meta: + meta: mandate_url: https://stripe.com/mandate/123456 mandate_tag: SEPA Direct Debit mandate_id: "mandate_123456789" shipping_addresses_num: 1 show_immediate_download: false - store: + store: name: My Dev Store 97434969 domain_name: 'my-dev-store-97434969.store.bcdev' - logo: + logo: title: [= My Dev Store 97434969 =] name: 'avatar-2020_1612860757__16350.jpeg' url: 'https://valeryderived-cloud-dev-vm.store.bcdev/store/f1kr2akw96/product_images/avatar-2020_1612860757__16350.jpeg' @@ -722,17 +722,17 @@ examples: path_normal: 'https://my-dev-store-97434969.store.bcdev' path: 'https://my-dev-store-97434969.store.bcdev' address: '123 Fake St, Dallas, TX 75225' - language: + language: code: en direction: ltr - customer: + customer: first_name: John, full_name: John Jr email: 'john.f@example.com' - misc: + misc: year: 2021 - translations: - en: + translations: + en: comment_label: Order Instructions/Comments order_id_line: Your order ID is #{{id}}. view_summary: A summary of your order is shown below. To view the status of your order click here. diff --git a/docs/store-operations/emails/object-reference/return-status-change.yml b/docs/store-operations/emails/object-reference/return-status-change.yml index 7b712671b..3e65767e9 100644 --- a/docs/store-operations/emails/object-reference/return-status-change.yml +++ b/docs/store-operations/emails/object-reference/return-status-change.yml @@ -1,4 +1,4 @@ -description: Return status change email triggers after a customer returnʼs status has changed. +description: Return status change email triggers after a customer return's status has changed. type: object title: Return Status Change Email Template properties: @@ -142,29 +142,29 @@ properties: go_shopping: type: string example: - return: + return: id: 1 reason: reason of return action: action comments: sample comment - product: + product: name: ProductName quantity: 2 thumbnail_url: '' - status: + status: value: 1 formatted: Pending - store_credit: + store_credit: value: 10.1 formatted: '$10.1 USD' link: 'https://my-dev-store-97434969.store.bcdev/account.php?action=view_returns' - instructions: - order: + instructions: + order: id: 1 - store: + store: name: My Dev Store 97434969 domain_name: my-dev-store-97434969.store.bcdev - logo: + logo: title: '[= My Dev Store 97434969 =]' name: avatar-2020_1612860757__16350.jpeg url: 'https://valeryderived-cloud-dev-vm.store.bcdev/store/f1kr2akw96/product_images/avatar-2020_1612860757__16350.jpeg' @@ -175,17 +175,17 @@ example: path_normal: 'https://my-dev-store-97434969.store.bcdev' path: 'https://my-dev-store-97434969.store.bcdev' address: '123 Fake St, Dallas, TX 75225' - language: + language: code: en direction: ltr - customer: + customer: first_name: John full_name: John Jr email: 'john.f@example.com' - misc: + misc: year: 2021 - translations: - en: + translations: + en: title: 'Return request status changed' hello: 'Hello {{name}}' message: 'The status of your return request for order #{{id}} has changed to {{status}}.' diff --git a/docs/store-operations/orders/invoice-templates.mdx b/docs/store-operations/orders/invoice-templates.mdx index 96e57f283..285f48b0b 100644 --- a/docs/store-operations/orders/invoice-templates.mdx +++ b/docs/store-operations/orders/invoice-templates.mdx @@ -24,7 +24,7 @@ The invoice that is generated by clicking **Print Invoice** relies on template f 1. Download the [invoice_printable.zip](https://storage.googleapis.com/bigcommerce-production-dev-center/template-files/invoice_printable.zip) file, which contains the skeleton of a printable invoice. 2. Open the file in the text editor of your choice and edit the HTML file to match your desired customization. -3. Use WebDAV to upload your customized HTML file to WebDAV's /template/ folder. We recommend CyberDuck, the freeware [WebDAV](https://support.bigcommerce.com/s/article/File-Access-WebDAV#webdav-client) client, available for Windows and Mac OS. Your store's control panel offers a downloadable connection file pre-filled with most store credentials. +3. Use WebDAV to upload your customized HTML file to WebDAV's /template/ folder. We recommend Cyberduck, the freeware [WebDAV](https://support.bigcommerce.com/s/article/File-Access-WebDAV#webdav-client) client, available for Windows and macOS. Your store's control panel offers a downloadable connection file pre-filled with most store credentials. **Note** @@ -45,7 +45,7 @@ Localization of the merchant-printed invoice is handled the same way as system a |`%%LNG_Code%%`| Code Translation | |`%%LNG_ProdName%%`| Product Name Translation | -3. Upload the edited templates via [WebDAV](https://support.bigcommerce.com/s/article/File-Access-WebDAV#webdav-client). We recommend CyberDuck, the freeware [WebDAV](https://support.bigcommerce.com/s/article/File-Access-WebDAV#webdav-client) client, available for Windows and Mac OS. Your store's control panel offers a downloadable connection file pre-filled with most store credentials. +3. Upload the edited templates via [WebDAV](https://support.bigcommerce.com/s/article/File-Access-WebDAV#webdav-client). We recommend Cyberduck, the freeware [WebDAV](https://support.bigcommerce.com/s/article/File-Access-WebDAV#webdav-client) client, available for Windows and macOS. Your store's control panel offers a downloadable connection file pre-filled with most store credentials. 4. Review the merchant printable invoice via the control panel. ## Customizing the detailed merchant printable invoice @@ -54,7 +54,7 @@ Use this invoice when a store receives an order from a shipping address in a cou 1. Download the [PrintableDetailedInvoice.html](https://storage.googleapis.com/bigcommerce-production-dev-center/template-files/PrintableDetailedInvoice.html) file, which contains the skeleton of the detailed printable invoice. 2. Open the file in the text editor of your choice and edit the HTML file to match your desired customization. -3. Use WebDAV to upload your customized HTML file to WebDAV's /template/ folder. We recommend CyberDuck, the freeware [WebDAV](https://support.bigcommerce.com/s/article/File-Access-WebDAV#webdav-client) client, available for Windows and Mac OS. Your store's control panel offers a downloadable connection file pre-filled with most store credentials. +3. Use WebDAV to upload your customized HTML file to WebDAV's /template/ folder. We recommend Cyberduck, the freeware [WebDAV](https://support.bigcommerce.com/s/article/File-Access-WebDAV#webdav-client) client, available for Windows and macOS. Your store's control panel offers a downloadable connection file pre-filled with most store credentials. ## Customizing the customer printable invoice diff --git a/docs/store-operations/promotions/index.mdx b/docs/store-operations/promotions/index.mdx index 0c7230dc4..a188ab9bb 100644 --- a/docs/store-operations/promotions/index.mdx +++ b/docs/store-operations/promotions/index.mdx @@ -1,4 +1,4 @@ -# Promotions API +# Promotions API @@ -199,10 +199,10 @@ You can set `apply_once` to `true` or `false`. If set to `true`, the action will #### Use care with `apply_once` Set `apply_once` carefully to avoid giving a more generous discount than intended. - + **Stop** -Stop determines whether the remaining rules apply. Promotions can have more than one rule. If you set stop to `true` on a rule and it is applied successfully, you will end the evaluation. If you set stop to `false` the following rule will be evaluated regardless of the outcome. +Stop determines whether the remaining rules apply. Promotions can have more than one rule. If you set stop to `true` on a rule, and it is applied successfully, you will end the evaluation. If you set stop to `false` the following rule will be evaluated regardless of the outcome. If there is only one rule, you can set stop to either `true` or `false` without affecting the results. @@ -620,7 +620,7 @@ To see the list of codes attached to a promotion, send a request to the [Get cou
## Merchant view -After you create the promotion, it will appear under **Marketing > Promotions > Automatic**. Promotions that are simple enough can be edited using the Promotions Manager. For information on what makes a promotion "too complex" to be edited, see the [Advanced Promotions FAQ (Help Center)](https://support.bigcommerce.com/s/article/Automatic-and-Coupon-Promotions-Standard-Editor#faq). Authorized control panel users can change the priority, set the end date, disable, and delete all promotions. +After you create the promotion, it will appear under **Marketing > Promotions > Automatic**. Promotions that are simple enough can be edited using the Promotions Manager. For information on what makes a promotion "too complex" to be edited, see the [Advanced Promotions FAQ (Help Center)](https://support.bigcommerce.com/s/article/Automatic-and-Coupon-Promotions-Standard-Editor#faq). Authorized control panel users can change the priority, set the end date, disable, and delete all promotions. #### Complex promotions @@ -776,7 +776,7 @@ The following two examples demonstrate the flexibility of using logical operator "minimum_quantity": 2, "items": { "categories": [y] - } + } } } ] @@ -896,7 +896,7 @@ The following promotion uses Cart Items Action > Item Matcher > Not Item Matcher ``` ## Recommended usage -BigCommerce recommends having less than 100 active promotions on storefronts, and there should be at most ten rules per promotion. This recommended usage helps to prevent a slowdown of the checkout process or contribute to an out-of-memory error. +BigCommerce recommends having less than 100 active promotions on storefronts, and there should be at most ten rules per promotion. This recommended usage helps to prevent a slowdown of the checkout process or contribute to an out-of-memory error. ## Definitions diff --git a/docs/store-operations/settings/configuration.mdx b/docs/store-operations/settings/configuration.mdx index 0e78f298b..5b7713720 100644 --- a/docs/store-operations/settings/configuration.mdx +++ b/docs/store-operations/settings/configuration.mdx @@ -94,7 +94,7 @@ Accept: application/json ```json filename="Example response: Get store profile settings for channel 123" showLineNumbers copy { "data": { - "store_name": "My Channel-Specific Name for Channel 123", + "store_name": "My Channel-Specific Name for Channel 123" }, "meta": {} } diff --git a/docs/store-operations/settings/logs.mdx b/docs/store-operations/settings/logs.mdx index 38c0ddad7..d896a4dfe 100644 --- a/docs/store-operations/settings/logs.mdx +++ b/docs/store-operations/settings/logs.mdx @@ -2,9 +2,9 @@ The Store Logs API allows merchants to track events in their store. Each event creates an entry in the log. To process events over time, you can configure external systems to retrieve store log entries. For example, you can see how often merchants request shipping quotes from a carrier. You can also learn more about errors that occur on a store. -The store logs track events from all storefront channels. Examples of events include sign-ups for newsletters and changes to order statuses. You can retrieve an entry for 365 days after its timestamp. +The store logs track events from all storefront channels. Examples of events include sign-ups for newsletters and changes to order statuses. You can retrieve an entry for 365 days after its timestamp. -This guide demonstrates how to use the Store Logs API. For more info, see the [Store Logs API reference](/docs/rest-management/store-logs#get-system-logs). +This guide demonstrates how to use the Store Logs API. For more info, see the [Store Logs API reference](/docs/rest-management/store-logs#get-system-logs). ## Get store logs @@ -12,9 +12,9 @@ Send a request to the [Get system logs](/docs/rest-management/store-logs#get-sys ### Filter by log ID -To filter the entries by log ID, pass a comma-separated list of log IDs to the `id:in` query parameter. +To filter the entries by log ID, pass a comma-separated list of log IDs to the `id:in` query parameter. -The following example retrieves entries by log ID: +The following example retrieves entries by log ID: @@ -68,9 +68,9 @@ Accept: application/json -### Filter by type +### Filter by type -The store logs categorize entries into various types. For example, requesting shipping quotes at checkout creates a `shipping` entry. To filter entries by type, use the `type` query parameter. For a list of log types, see the [Get system logs](/docs/rest-management/store-logs#get-system-logs) endpoint reference. +The store logs categorize entries into various types. For example, requesting shipping quotes at checkout creates a `shipping` entry. To filter entries by type, use the `type` query parameter. For a list of log types, see the [Get system logs](/docs/rest-management/store-logs#get-system-logs) endpoint reference. The following example retrieves shipping entries: @@ -129,7 +129,7 @@ Accept: application/json ### Filter by module -To see how often merchants request shipping quotes from a specific carrier, URL-encode the carrier name and pass it to the `module` query parameter. +To see how often merchants request shipping quotes from a specific carrier, URL-encode the carrier name and pass it to the `module` query parameter. The following example retrieves shipping entries by module: @@ -177,7 +177,7 @@ Accept: application/json
-### Filter by severity +### Filter by severity Each event has an associated outcome, also known as `severity`. To filter the results by severity, use the `severity` query parameter. Specify the severity's corresponding integer in the query. For a list of severity values, see the [Get system logs](/docs/rest-management/store-logs#get-system-logs) endpoint reference. @@ -238,9 +238,9 @@ Accept: application/json ### Filter with pagination -As stated at the beginning of the section, the [Get system logs](/docs/rest-management/store-logs#get-system-logs) endpoint returns the **earliest** 20 entries by default. To retrieve newer or differently grouped subsets of entries, use a combination of the `page` and `limit` query parameters. +As stated at the beginning of the section, the [Get system logs](/docs/rest-management/store-logs#get-system-logs) endpoint returns the **earliest** 20 entries by default. To retrieve newer or differently grouped subsets of entries, use a combination of the `page` and `limit` query parameters. -The following example requests page two with two entries per page, which returns the third and fourth oldest entries: +The following example requests page two with two entries per page, which returns the third and fourth-oldest entries: diff --git a/docs/store-operations/shipping/packing-slips.mdx b/docs/store-operations/shipping/packing-slips.mdx index 6125d45c4..646a405bb 100644 --- a/docs/store-operations/shipping/packing-slips.mdx +++ b/docs/store-operations/shipping/packing-slips.mdx @@ -65,7 +65,7 @@ The following variables are available for HTML elements to alter CSS styling. The "Hide" variables are all used to selectively hide HTML elements depending on whether the content they have under them is available. You will need to wrap the "Hide" variables around specific variables, for example: ShippingPhone (pairs with `HideShippingPhone`). If you were to use `%%GLOBAL_ShippingPhone%%` somewhere, then it should be enclosed in an element that will hide it when not set, i.e., -```
Phone number: %%GLOBAL_ShippingPhone%%
.``` +`
Phone number: %%GLOBAL_ShippingPhone%%
.` | Variable | Description | diff --git a/docs/store-operations/translations/products.mdx b/docs/store-operations/translations/products.mdx index 76614f35a..11cefb41a 100644 --- a/docs/store-operations/translations/products.mdx +++ b/docs/store-operations/translations/products.mdx @@ -136,7 +136,7 @@ Product translation management (list, update, delete) is available via the Admin -The request below uses several variables for resuability. Replace `{{resourceType}}`, `{{channel_id}}`, and `{{locale_code}}` with the appropriate values for your use case. +The request below uses several variables for reusability. Replace `{{resourceType}}`, `{{channel_id}}`, and `{{locale_code}}` with the appropriate values for your use case. ```graphql filename="Example query: Query a list of translations" showLineNumbers copy GRAPHQL https://api.bigcommerce.com/stores/{{store_hash}}/graphql @@ -210,7 +210,7 @@ The response example below specifically references product translations. If your ### Query a Product Translation by Resource ID -The request below uses several variables for resuability. Replace `{{resourceId}}`, `{{resourceType}}`, `{{channel_id}}`, and `{{locale_code}}` with appropriate values for your use case. Make sure `resourceId` follows the format from the [Resource fields](#resource-fields) table. +The request below uses several variables for reusability. Replace `{{resourceId}}`, `{{resourceType}}`, `{{channel_id}}`, and `{{locale_code}}` with appropriate values for your use case. Make sure `resourceId` follows the format from the [Resource fields](#resource-fields) table. diff --git a/docs/storefront/cart-checkout/checkout-sdk/index.mdx b/docs/storefront/cart-checkout/checkout-sdk/index.mdx index 45b8f440f..cd1b93bf2 100644 --- a/docs/storefront/cart-checkout/checkout-sdk/index.mdx +++ b/docs/storefront/cart-checkout/checkout-sdk/index.mdx @@ -2,7 +2,7 @@ The Checkout SDK is a JavaScript library of methods for performing actions related to checkout. It includes methods for logging in a customer, adding addresses to the checkout object, and surfacing the shipping and payment methods a merchant configures. It’s everything you need to build your own custom checkout page on BigCommerce. -Our [reference implementation](https://github.com/bigcommerce/checkout-js) is a great place to start if you prefer to develop within a framework. However, the SDK, built with vanilla JavaScript, is framework agnostic. +Our [reference implementation](https://github.com/bigcommerce/checkout-js) is a great place to start if you prefer to develop within a framework. However, the SDK, built with vanilla JavaScript, is framework-agnostic. This article will walk you through becoming familiar with Checkout SDK and experimenting with building checkouts using Cornerstone. At the end of the article, you will have installed the Checkout SDK, created a new JavaScript module for your custom checkout, and console-logged the checkout object. @@ -16,15 +16,15 @@ This article will walk you through becoming familiar with Checkout SDK and exper For example, `cd cornerstone` -2. Add the Checkout SDK loader script to your theme in `templates/pages/checkout.html` right after `{{#partial “page”}}`. +2. Add the Checkout SDK loader script to your theme in `templates/pages/checkout.html` right after `{{#partial “page”}}`. -```html copy +```html copy ``` 3. Then, add an async function right after the Checkout SDK loader script in `templates/pages/checkout.html`. -```html showLineNumbers copy +```html showLineNumbers copy @@ -197,7 +197,7 @@

Styling Checkout

If no SSL is detected, shoppers will be redirected to the BigCommerce checkout page, on the domain of the BigCommerce store. Because BigCommerce stores provide an SSL certificate by default, this ensures that the checkout page is always accessed on an encrypted domain. If you are using this checkout experience, visit our Stencil documentation to review all available options for styling the checkout page.

If an SSL is detected, shoppers will visit an embedded version of the BigCommerce checkout page, on your WordPress domain. This has the advantage of providing a seamless experience for the shopper.

Embedded Checkout

-

Embedded Checkout includes settings within the WordPress theme customizer that allow you to adjust colors to blend the checkout page with your theme. For advanced users, the plugin provides the Checkout Config hook to filter all available Embedded Checkout config options (Github). Because of the method used to load the Embedded Checkout within the iframe, styling checkout must be accomplished by filtering the available $checkout_config options rather than targeting element classes or IDs with CSS.

+

Embedded Checkout includes settings within the WordPress theme customizer that allow you to adjust colors to blend the checkout page with your theme. For advanced users, the plugin provides the Checkout Config hook to filter all available Embedded Checkout config options (GitHub). Because of the method used to load the Embedded Checkout within the iframe, styling checkout must be accomplished by filtering the available $checkout_config options rather than targeting element classes or IDs with CSS.

Below, we define a function called myCheckoutFunction() that accepts $checkout_config as an argument. The function builds an array of checkout config styles that make the checkout step header text red, step number icons blue, and checkout body text green. Finally, we pass myCheckoutFunction to the Checkout Config hook. Try adding the below snippet to your theme’s functions.php file to test it out

@@ -218,7 +218,7 @@

Embedded Checkout

add_filter( 'bigcommerce/checkout/config', 'myCheckoutFunction');
-

Following this format, you can apply styles to other elements, like buttons, input fields, and checkboxes. See the full list of checkout elements that can be styled and which properties you can adjust in the Embedded Checkout Styles documentation (Github).

+

Following this format, you can apply styles to other elements, like buttons, input fields, and checkboxes. See the full list of checkout elements that can be styled and which properties you can adjust in the Embedded Checkout Styles documentation (GitHub).

Note that styles apply globally to all elements on the checkout page. For example, styles applied to steps will apply to all steps rather than targeting only step 2 or 3.

Email Templates

You may wish to customize the built-in transactional emails sent from BigCommerce when an order is placed or updated. You can add custom text or images to email templates to reflect your store’s branding.

diff --git a/docs/storefront/wordpress/platform-integration/enabling-amp.mdx b/docs/storefront/wordpress/platform-integration/enabling-amp.mdx index 133057323..e85b287bb 100644 --- a/docs/storefront/wordpress/platform-integration/enabling-amp.mdx +++ b/docs/storefront/wordpress/platform-integration/enabling-amp.mdx @@ -26,7 +26,7 @@ The good news is that BigCommerce for WordPress ships with AMP by default. ## How to enable AMP -Enabling AMP in the BigCommerce for WordPress plugin is simple. All you need to do is download the [Official AMP Plugin for WordPress](https://wordpress.org/plugins/amp/), noting that its the “official” one by WordPress.com VIP, XWP, and Google. +Enabling AMP in the BigCommerce for WordPress plugin is simple. All you need to do is download the [Official AMP Plugin for WordPress](https://wordpress.org/plugins/amp/), noting that it's the “official” one by WordPress.com VIP, XWP, and Google. Once you’ve downloaded the plugin, extract it to the plugins directory of your WordPress install and activate the plugin from WordPress admin. @@ -38,7 +38,7 @@ Once the plugin is installed and activated, your store will immediately start se The Official AMP Plugin for WordPress is currently at version 0.7.2 and the BigCommerce for WordPress plugin fully supports this version. -Version 1.0 of the Official AMP Plugin for WordPress is due to be released shortly and the great news is that BigCommerce for WordPress already fully supports this version of the AMP plugin. Version 1.0 brings a whole new set of features including the ability to validate AMP inside WordPress and we’re excited to be able to support that with the BigCommerce plugin. +Version 1.0 of the Official AMP Plugin for WordPress is due to be released shortly and the great news is that BigCommerce for WordPress already fully supports this version of the AMP plugin. Version 1.0 brings a whole new set of features including the ability to validate AMP inside WordPress, and we’re excited to be able to support that with the BigCommerce plugin. ## Choosing an AMP mode @@ -62,13 +62,13 @@ For more technical details on how the 3 modes are differentiated, please check o Classic is now considered legacy -- Paired and Native are the recommended AMP Plugin modes. -This is the original mode for rendering AMP pages and it renders an AMP theme that is separate and different from your WordPress theme. Think of it as a whole new WordPress theme that is only displayed when the site is being viewed as AMP. The AMP theme is customizable and can be branded to align with your brand. +This is the original mode for rendering AMP pages, and it renders an AMP theme that is separate and different from your WordPress theme. Think of it as a whole new WordPress theme that is only displayed when the site is being viewed as AMP. The AMP theme is customizable and can be branded to align with your brand. -Generally this mode works out of the box and not much customization is needed to be done to your website for it to be AMP valid, this is because it uses specific a specific AMP valid theme. The draw back being that your website theme is different from the AMP theme. +Generally this mode works out of the box and not much customization is needed to be done to your website for it to be AMP valid, this is because it uses specific a specific AMP valid theme. The drawback being that your website theme is different from the AMP theme. ## Previewing AMP -Once AMP is enabled and you’ve decided on a mode, you will probably want to preview what your site looks like. This is easy to do but depending on the mode you selected, you would need to preview the AMP theme differently. +Once AMP is enabled, and you’ve decided on a mode, you will probably want to preview what your site looks like. This is easy to do but depending on the mode you selected, you would need to preview the AMP theme differently. Classic mode If you’re running with classic, you can preview the mode in two ways: @@ -119,12 +119,12 @@ The BigCommerce for WordPress plugin ships with beautifully customized AMP templ ### Classic Mode -The classic AMP theme can be customized in the WordPress Customizer. Click on `Appearance` on the WordPress Admin menu and then click `Customize`. The WordPress Customizer will then open and you’ll see a panel for AMP. Click `AMP` and then `Design` and from this panel you can change the look and feel. +The classic AMP theme can be customized in the WordPress Customizer. Click on `Appearance` on the WordPress Admin menu and then click `Customize`. The WordPress Customizer will then open, and you’ll see a panel for AMP. Click `AMP` and then `Design` and from this panel you can change the look and feel. You may want to go a step further and customize the actual HTML markup and output. This is customized in the same way as the non-AMP BigCommerce templates. -Firstly, create a folder in your theme called `bigcommerce`. In this folder add an additional folder called `amp`. You can now copy and paste any template you would like to override from `bigcommerce/templates/public/amp` in to this folder and modify them. The BigCommerce plugin will look in your theme first for an AMP template before it looks at the template from the plugin. +Firstly, create a folder in your theme called `bigcommerce`. In this folder, add an additional folder called `amp`. You can now copy and paste any template you would like to override from `bigcommerce/templates/public/amp` in to this folder and modify them. The BigCommerce plugin will look in your theme first for an AMP template before it looks at the template from the plugin. ### Paired and Native Mode -Paired and native mode uses your existing WordPress theme to display. So there is little to no customization needed in terms of the theme layout and branding. You may however want to override the html outputted by the components on a product archive or product page. To do this, you do exactly what you would in classic. Create a folder in your theme called `bigcommerce/amp/components`. In this folder copy and paste any components that you would want to override from the plugin `bigcommerce/templates/public/amp`. +Paired and native mode uses your existing WordPress theme to display. So there is little to no customization needed in terms of the theme layout and branding. You may however want to override the HTML outputted by the components on a product archive or product page. To do this, you do exactly what you would in classic. Create a folder in your theme called `bigcommerce/amp/components`. In this folder copy and paste any components that you would want to override from the plugin `bigcommerce/templates/public/amp`. diff --git a/docs/storefront/wordpress/platform-integration/features.mdx b/docs/storefront/wordpress/platform-integration/features.mdx index 49568952b..6e2381c61 100644 --- a/docs/storefront/wordpress/platform-integration/features.mdx +++ b/docs/storefront/wordpress/platform-integration/features.mdx @@ -8,7 +8,7 @@ The BigCommerce for WordPress (BC4WP) plugin supports the following features: * Product pick lists and bundled products * Product variants and product variant pricing * Product promotions -* Secure shopper accounts and logins with PCI compliant checkout +* Secure shopper accounts and logins with PCI-compliant checkout * Ability to overwrite and customize template files * ShipperHQ integration * Gutenberg and Classic Editor integration diff --git a/docs/storefront/wordpress/platform-integration/multi-channel.mdx b/docs/storefront/wordpress/platform-integration/multi-channel.mdx index 26a720905..1af5f3d16 100644 --- a/docs/storefront/wordpress/platform-integration/multi-channel.mdx +++ b/docs/storefront/wordpress/platform-integration/multi-channel.mdx @@ -1,6 +1,6 @@ --- title: Multi-Channel Capabilities -keywords: channel, multi-channel, multi-storefront, multistorefront, msf, currency, currencies, if, headless, +keywords: channel, multi-channel, multi-storefront, multistorefront, msf, currency, currencies, if, headless, --- # Multi-Channel Capabilities @@ -38,7 +38,7 @@ The filter above displays the connected channel associated to the WordPress `ter ## Plugin Example -A common use case for multiple channels and storefronts is offering differentiated shopping experiences for multiple geographic regions (ex: a UK and US storefronts with different translations, currencies, products, and pricing). With BigCommerce for WordPress's multi-channel capabilities, its possible to create a multi-region storefront using a single WordPress instance powered by a BigCommerce back-end. To demonstrate, this section provides steps to creating a simple plugin for switching channels and currency symbols via query string parameters. +A common use case for multiple channels and storefronts is offering differentiated shopping experiences for multiple geographic regions (ex: a UK and US storefronts with different translations, currencies, products, and pricing). With BigCommerce for WordPress's multi-channel capabilities, it's possible to create a multi-region storefront using a single WordPress instance powered by a BigCommerce back-end. To demonstrate, this section provides steps to creating a simple plugin for switching channels and currency symbols via query string parameters. ### Prerequisites @@ -148,7 +148,7 @@ Now let's switch the channel and currency symbol by passing in `region=uk` in th ## Developing Further -Obviously, the example plugin above is simple and not super useful as-is; however, its a starting point to creating rich, multi-storefront shopping experiences. +Obviously, the example plugin above is simple and not super useful as-is; however, it's a starting point to creating rich, multi-storefront shopping experiences. For additional implementation ideas (such as adding a region selection dropdown and switching regions based on a shopper's geo IP), checkout how to [Build a Multi-Region Storefront with BigCommerce for WordPress 3.1.0+](https://medium.com/bigcommerce-developer-blog/build-a-multi-region-storefront-with-bigcommerce-for-wordpress-3-1-0-80cf56c3e8e9) on our developer blog. diff --git a/docs/storefront/wordpress/platform-integration/unexpected-behavior.mdx b/docs/storefront/wordpress/platform-integration/unexpected-behavior.mdx index 9738c8a7f..a9594223c 100644 --- a/docs/storefront/wordpress/platform-integration/unexpected-behavior.mdx +++ b/docs/storefront/wordpress/platform-integration/unexpected-behavior.mdx @@ -1,6 +1,6 @@ # Troubleshooting BigCommerce for WordPress Plugin -Find solutions to some unexpected issues encountered when using the BigCommerce for WordPress plugin. +Find solutions to some unexpected issues encountered when using the BigCommerce for WordPress plugin. ## First steps @@ -8,7 +8,7 @@ Reading an error log is the first step in diagnosing common issues and error mes ## Account -These are the most common account issues: +These are the most common account issues: ### Necessary scopes for full functionality @@ -24,7 +24,7 @@ The following topics cover solutions for product sync and import type errors. ### Sync stuck. No handler found for the current import state -If your product sync is stuck or you've come across the message below, steps are available to get things back in sync. +If your product sync is stuck, or you've come across the message below, steps are available to get things back in sync. ```shell showLineNumbers copy BigCommerce.NOTICE: No handler found for current import state {"state":"completed"} @@ -32,9 +32,9 @@ BigCommerce.NOTICE: No handler found for current import state {"state":"complete The following steps will get your products syncing once again. -1. Go to the WordPress admin panel and click on **BigCommerce** > **Settings** > **Diagnostics**. -2. Click the **Abort import button** and wait one to two minutes. -3. Now try to restart the import. Check to see if WP-Cron is working and if there aren't any server issues. +1. Go to the WordPress admin panel and click on **BigCommerce** > **Settings** > **Diagnostics**. +2. Click the **Abort import button** and wait one to two minutes. +3. Now try to restart the import. Check to see if WP-Cron is working and if there aren't any server issues. If the import still doesn't work, contact BigCommerce support and/or create an issue in the [GitHub repository](https://github.com/bigcommerce/bigcommerce-for-wordpress/issues). Be sure to provide as many details as possible, including the BigCommerce for WordPress plugin version, PHP version, and my SQL version. @@ -42,7 +42,7 @@ The following steps will get your products syncing once again. ### Price is not correct on the single product page (Fast Import) -The price on the product page often has the wrong value because of heavy caching. This incorrect value can happen due to an expired `X-Nonce` for price request. Fix this issue by removing that nonce from the price request. +The price on the product page often has the wrong value because of heavy caching. This incorrect value can happen due to an expired `X-Nonce` for price request. Fix this issue by removing that nonce from the price request. You should take the following step: @@ -54,7 +54,7 @@ If products are missing in the WordPress control panel, verify that you have ass ### Import is too slow -The import time depends on the number of products synced from your catalog. In general, if you have more than 200 products and use `Full` import, then it is normal for the import to run for more than 30 minutes. +The import time depends on the number of products synced from your catalog. In general, if you have more than 200 products and use `Full` import, then it is normal for the import to run for more than 30 minutes. Note that the import process also relies on WP-Cron. Import tasks are processed only when the site has visitors. To avoid this kind of issue, follow the [Server Side Cron](/docs/storefront/wordpress/deployment/creating-reliable-cron-jobs#using-server-cron-to-enhance-wp-cron) guide. @@ -87,7 +87,7 @@ Ensure that your channel attached to WordPress isn't in pre-launch status. If it ### WP-Cron -If products are no longer syncing, or progress has stalled, check to see if WP-Cron is working. Determine if your WP-Cron job is running by using the plugin WP Crontrol. +If products are no longer syncing, or progress has stalled, check to see if WP-Cron is working. Determine if your WP-Cron job is running by using the plugin WP Crontrol. Ensure you have a browser window open on the site; otherwise, the product import will continue to fail. If WP-Cron isn't working, contact the site's hosting provider. @@ -95,15 +95,15 @@ Ensure you have a browser window open on the site; otherwise, the product import In cases where cart and checkout pages won't render correctly, try looking into these solutions. -### Mini-cart/cart page doesn't render or the wrong amount of products appear +### Mini-cart/cart page doesn't render or the wrong amount of products appears -Check to see if this is a cache problem. Each time you add a product to a cart, an API request is sent. Without a cache set, the cart's content updates after successfully processing of the API request. However, if you apply cache rules, they can affect the cart and return the wrong version of the cart (e.g., empty cart page, not a sufficient amount of products, etc.). +Check to see if this is a cache problem. Each time you add a product to a cart, an API request is sent. Without a cache set, the cart's content updates after successfully processing of the API request. However, if you apply cache rules, they can affect the cart and return the wrong version of the cart (e.g., empty cart page, not a sufficient amount of products, etc.). To resolve the issue, exclude the cart page and mini-cart requests from the cache. ## Error Messages -The following topics cover error messages that can occur with the plugin. +The following topics cover error messages that can occur with the plugin. ### Error on "Add to Cart" button, 404 error @@ -115,7 +115,7 @@ Additionally, a 404 Not Found error was encountered while trying to use an Error ``` To reset the site's redirects use the following steps: -1. Make changes in WordPress by going to **Settings** > **Permalinks**. +1. Make changes in WordPress by going to **Settings** > **Permalinks**. 2. Scroll to the bottom of the page and click **Save**. This button resets the site's redirects. ### PHP getenv() Errors @@ -126,7 +126,7 @@ When the plugin floods the error log with the following message: PHP message: PHP Warning: getenv() expects exactly 1 parameter, 2 given in wp-content/plugins/bigcommerce-for-wordpress-0.11.1/bigcommerce.php on line 58 ``` -This message appears if you're running on PHP version 5.4 or lower. The plugin requires 5.6+ or higher to function properly. +This message appears if you're running on PHP version 5.4 or lower. The plugin requires 5.6+ or higher to function properly. ### 403 error on API request @@ -136,7 +136,7 @@ When sending an API request and you get a 403 error, or encounter the following [429] Error connecting to the API (https://api.bigcommerce.com/stores/hash/v3/catalog/categories?id%3Ain=138%2C139%2C140%2C142%2C143%2C144%2C145%2C146%2C147%2C149&limit=10&include_fields=id) ``` -Ensure that either the server or service isn't blocking requests. +Ensure that either the server or service isn't blocking requests. Be sure to whitelist requests to the BigCommerce API and the responses from it. @@ -179,13 +179,13 @@ When using the `Fast` (headless) import, apply the accurate scopes to your API k ### PHP errors in server logs related to the plugin -If you encounter the following PHP errors (shown below) in your server logs related to the plugin, then extension-related issues could be the problem. +If you encounter the following PHP errors (shown below) in your server logs related to the plugin, then extension-related issues could be the problem. ```shell showLineNumbers -PHP Fatal error: Uncaught Error: Call to undefined function BigCommerce\Import\Importers\Products\ctype_alpha() in path/wp-content/plugins/bigcommerce/src/BigCommerce/Import/Importers/Products/Product_Builder.php:461 +PHP Fatal error: Uncaught Error: Call to undefined function BigCommerce\Import\Importers\Products\ctype_alpha() in path/wp-content/plugins/bigcommerce/src/BigCommerce/Import/Importers/Products/Product_Builder.php:461 ``` -First, check that this is not a PHP extension specific issue, e.g https://www.php.net/manual/en/function.ctype-alpha.php (function is disabled by hosting/service provider and similar). If that doesn't resolve the issue, contact BigCommerce support, or create an issue in the [GitHub repository](https://github.com/bigcommerce/bigcommerce-for-wordpress/issues). +First, check that this is not a PHP extension specific issue, e.g. https://www.php.net/manual/en/function.ctype-alpha.php (function is disabled by hosting/service provider and similar). If that doesn't resolve the issue, contact BigCommerce support, or create an issue in the [GitHub repository](https://github.com/bigcommerce/bigcommerce-for-wordpress/issues). ### Webhooks incorrect password @@ -196,9 +196,9 @@ BigCommerce-webhooks.ERROR: Incoming webhook password does not match ``` Use the following steps to reset the webhook settings: - -1. Go to **BigCommerce** > **Settings** > **Product Sync**. -2. Disable webhooks and save settings. + +1. Go to **BigCommerce** > **Settings** > **Product Sync**. +2. Disable webhooks and save settings. 3. After the page reloads, go to the **BigCommerce** > **Settings** > **Product Sync** again and re-enable webhooks. ### Cart/Checkout URL doesn't work or gives a 404 error @@ -217,7 +217,7 @@ The message in the error logs means that a product has already been imported to ### Failed to download image. cURL error 28: Resolving timed out after 10000 milliseconds -If the images fail to download or you come across the following error below, there are steps to resolve this. +If the images fail to download, or you come across the following error below, there are steps to resolve this. ```shell BigCommerce.NOTICE: Failed to download image {"url":"https://cdn11.bigcommerce.com/s-hash/products/18id20/images/id/hps_bottle__13339.1611096484.1280.1280.png?c=2","error":["cURL error 28: Resolving timed out after 10000 milliseconds"]} [] @@ -227,7 +227,7 @@ This issue occurs during a product/category image import. The issue is environme * Network/Firewall settings - outgoing requests can be blocked by it * DNS failure -* Server limits (e.g., some proxy set on the server and it has its own timeout limit) +* Server limits (e.g., some proxy set on the server, and it has its own timeout limit) * Security modules (Mod_Security) can block requests * Server is trying to resolve the bigcommerce.com domain using IPv6 instead of IPv4 diff --git a/docs/storefront/wordpress/start/index.mdx b/docs/storefront/wordpress/start/index.mdx index 9f133c908..f688c63dd 100644 --- a/docs/storefront/wordpress/start/index.mdx +++ b/docs/storefront/wordpress/start/index.mdx @@ -22,4 +22,4 @@ Once connected, you will set up a new [channel name](https://support.bigcommerce For multisite instructions, see [Multisite Setup](/docs/storefront/wordpress/start/multi-site). -After you have created your new channel name, the initial product sync will begin and you can begin configuring your plugin settings. +After you have created your new channel name, the initial product sync will begin, and you can begin configuring your plugin settings. diff --git a/docs/storefront/wordpress/start/plugin-settings.mdx b/docs/storefront/wordpress/start/plugin-settings.mdx index 7798bd8db..cd7d2e8da 100644 --- a/docs/storefront/wordpress/start/plugin-settings.mdx +++ b/docs/storefront/wordpress/start/plugin-settings.mdx @@ -38,15 +38,15 @@ The cart page should be excluded from any page caching system enabled for your s The visual presentation of your store can be customized using the WordPress theme customizer. Open the theme customizer and find the "BigCommerce" panel, which contains several sections. -* **Buttons:** Control the labels applied to buttons for interacting with products. +* **Buttons:** Control the labels applied to buttons for interacting with products. * **Colors & Themes:** Customize colors to better match your theme. - + * **Catalog Pages:** Control the presentation of lists of products. -* **Product Single:** Control the presentation of individual product pages. +* **Product Single:** Control the presentation of individual product pages. -* **Product Archive:** Customize labels and filters for the prouct archive. +* **Product Archive:** Customize labels and filters for the product archive. ## Navigation Menus @@ -54,10 +54,10 @@ The BigCommerce for WordPress plugin creates several pages, which can be added t Some of these pages acquire special functionality when they are added to navigation menus: * **Cart:** The cart menu item will show the number of items in the current user's cart. - + * **Login:** If the user is logged in, the login page menu item becomes a link to log out. - -* **Register:** If user registration is disabled, the menu item will be disabled (it won't render on the front end of the site). If the user is logged in, the menu item will link to the user's account profile. + +* **Register:** If user registration is disabled, the menu item will be disabled (it won't render on the front end of the site). If the user is logged in, the menu item will link to the user's account profile. * **Account Profile, Order History, Addresses:** If the user is not logged in, these menu items will be disabled (they won't render on the front end of the site). ## Reviews diff --git a/docs/webhooks/callbacks/_all.yml b/docs/webhooks/callbacks/_all.yml index a7c986c9e..52e39a8f0 100644 --- a/docs/webhooks/callbacks/_all.yml +++ b/docs/webhooks/callbacks/_all.yml @@ -211,7 +211,7 @@ properties: allOf: - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_customer_deleted.yml store/customer/payment/instrument/default/updated: - description: Fires when a customerʼs default payment instrument is updated. + description: Fires when a customer's default payment instrument is updated. type: object properties: allOf: @@ -240,7 +240,7 @@ properties: type: object properties: allOf: - - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_inventory_location_updated.yml + - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_inventory_location_updated.yml store/inventory/location/metafield/created: description: Fires when a new inventory location metafield is created. type: object @@ -276,7 +276,7 @@ properties: type: object properties: allOf: - - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_metafield_updated.yml + - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_metafield_updated.yml store/modifier/updated: description: Only fires when you edit attributes for a local or shared modifier in a context of a channel and locale. For information on updating overrides, see the [International Enhancements for Multi-Storefront](/docs/store-operations/catalog/msf-international-enhancements/overview) overview. type: object @@ -461,7 +461,7 @@ properties: type: object properties: allOf: - - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_product_metafield_updated.yml + - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_product_metafield_updated.yml store/product/updated: description: Fires when product details are edited. The `properties` and `context` fields are present for only updates to overrides, not the global store. For a full list of product fields that trigger an updated event, see the product updated events that follow. For information on updating overrides, see the [International Enhancements for Multi-Storefront](/docs/store-operations/catalog/msf-international-enhancements/overview) overview. type: object @@ -565,7 +565,7 @@ properties: type: object properties: allOf: - - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_store_metafield_updated.yml + - $ref: https://raw.githubusercontent.com/bigcommerce/docs/main/docs/webhooks/callbacks/store_store_metafield_updated.yml store/subscriber/created: description: Fires when a subscriber is created. type: object