diff --git a/docs/Deployment/Creating-account.md b/docs/Deployment/Creating-account.md index 0bca8bd38..e5a75eeb3 100644 --- a/docs/Deployment/Creating-account.md +++ b/docs/Deployment/Creating-account.md @@ -1,37 +1,31 @@ # Creating a Retail Demo Store account -1 - Creating the Account > [2 - Personalization](2-Personalization.md) - > Before getting started, we advise you to use a Private Window (Firefox) or Incognito Window (Chrome) to make sure you don't mix different demo profiles in the same browser session Since several of the features of the Retail Demo Store require a user/customer account to demonstrate effectively, this section will describe the process of creating a user account using the Retail Demo Store’s web user interface. This process also provides a good demonstration of how Amazon Cognito is used to implement user account and authentication. Click the “Sign In” button in the right side of the top navigation bar. This will take you to the Sign In page. Click the “Create account” link at the bottom of the Sign In form as shown below. These forms are provided by Cognito. -![image.png](../workshop/images/retaildemostore-create-acct-link.png) +![image.png](../assets/retaildemostore-create-acct-link.png) Figure 3. Create Account Link. Complete the “Sign Up Account” form by entering appropriate values in each field. Note that your password must meet the complexity requirements configured in Amazon Cognito (upper- and lower-cased characters, numbers, and special characters). In addition, be sure to enter a valid email address since Cognito will send you a confirmation code via email once you submit the form. Otherwise, the only way to confirm your account is manually in the Cognito User Pool page in the AWS console. If you need to create multiple accounts to demonstrate behavior across users, a useful tip is to append a different mailbox name (“+” notation) to the username portion of your email address for each user account. For example, login+user5@example.com. You will still receive emails addressed using this format in your inbox. -![image.png](../workshop/images/retaildemostore-create-acct.png) +![image.png](../assets/retaildemostore-create-acct.png) Figure 4. Create Account page. Within a few seconds after pressing the “Create Account” button on the “Sign Up Account” form you should receive an email on the provided email address. The email will contain a 6-digit confirmation code. Enter this code on the “Confirm Sign Up” form and press the “Confirm” button. If you don’t receive a confirmation code, you can have it resent or you can manually confirm your user account in the Amazon Cognito User Pool page in the AWS console in the AWS account where the Retail Demo Store instance has been deployed. -![image.png](../workshop/images/retaildemostore-confirm.png) +![image.png](../assets/retaildemostore-confirm.png) Figure 5. Confirm New Account. Once your user account has been confirmed, you can sign in to your account with your username and password. -![image.png](../workshop/images/retaildemostore-signin.png) +![image.png](../assets/retaildemostore-signin.png) Figure 6. Sign In to Account. You can tell if you’re signed in if the “Sign In” button in the top navigation is replaced by your username. - -## Next Steps - -- [Personalized Experience](2-Personalization.md) diff --git a/docs/Deployment/getting-started.md b/docs/Deployment/getting-started.md index 0b7589423..56cb3f7ca 100644 --- a/docs/Deployment/getting-started.md +++ b/docs/Deployment/getting-started.md @@ -41,7 +41,7 @@ cd RetailDemoStore/ git clone https://github.com/aws-samples/retail-demo-store ``` -!!! Note +!!! note If you plan to customize the demo, we recommend using your fork instead of the aws-samples one (see [fork this repo](#optional-fork-this-repo)) @@ -59,7 +59,7 @@ sudo apt install npm ``` curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" -unzip +unzip awscliv2.zip sudo ./aws/install aws configure ``` @@ -79,10 +79,13 @@ Save your access token in a secure location, you will use it the CloudFormation ## Step 2: Create a S3 Staging Bucket -Create a dedicated S3 bucket specifically for staging/deployment, and ensure that [**versioning is enabled**](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) for this bucket. +Create a dedicated S3 bucket specifically for staging/deployment. -> [!IMPORTANT] -> Your staging bucket must be in the **region** with in which you plan to deploy the Retail Demo Store. +!!! warning + Ensure that [**versioning is enabled**](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) for this bucket. + +!!! warning + Your staging bucket must be in the **region** with in which you plan to deploy the Retail Demo Store. ### Enabling Event Notifications diff --git a/docs/Deployment/services/aws-lambda.md b/docs/Deployment/services/aws-lambda.md deleted file mode 100644 index 3a6a48a8e..000000000 --- a/docs/Deployment/services/aws-lambda.md +++ /dev/null @@ -1,3 +0,0 @@ -# AWS Lambda Functions - -The Lambda functions in this folder are used to support the Retail Demo Store deployment as custom resources, to automatically build Amazon Personalize campaigns, or to support service integrations (i.e. between Pinpoint and Personalize). \ No newline at end of file diff --git a/docs/Technical Guides/Geolocation/LocationServices.md b/docs/Technical Guides/Geolocation/LocationServices.md index d6d1d2f0a..e2bec5de2 100644 --- a/docs/Technical Guides/Geolocation/LocationServices.md +++ b/docs/Technical Guides/Geolocation/LocationServices.md @@ -1,163 +1,35 @@ +# Retail Geofencing and Location-aware Personalization with Amazon Location Services - -# Retail Geofencing and Location-aware Personalization +Amazon Location Services is an Amazon provision of maps, location indexing, geofencing, user tracking, and routing. Geofencing can be used to set off chains of events just when they need to be set off - when your customer is in the right place, at the right time. In this demo we use it together with the ecommerce platform and Amazon Pinpoint to engage customers when they approach physical stores. +Customers are inspired to opt in to share their location by being provided with personalized offers. These offers can be related to customer preferences, local stock levels, and more. In this demo we use Amazon Personalize to select an offer to show to a consumer that can be redeemed in-store. The consumer has the extra convenience and we have enaged with them in a targeted fashion and, moreover, attracted them into our bricks and mortar store where the experience will be, naturally, more personal than online. +There is also an in-store interface that shows a sample view for store staff showing orders that are about to be collected, and transactional messaging for user and store staff around pickup that is triggered by the user approaching the store for pickup. -is an Amazon provision of maps, location indexing, geofencing, user tracking, and routing. -Geofencing can be used to -set off chains of events just when they need to be set off -- when your customer is in the right place, at the right time. -In this demo we use it together with the ecommerce platform and Amazon Pinpoint -to engage customers when they approach physical stores. +## Using the Location Services Demo +To use the Amazon Location functionality, Location Services must be enabled in your region. First, ensure you are deploying Retail Demo Store in a region in which Location is enabled. Next, enable "Deploy Location Services resources" and "Deploy personalized offers and pickup notices using Location Services geofencing" when deploying or updating the solution from CloudFormation. A Location geofence will be set up for you. +From any Retail Demo Store "Shop" menu You can access the Location "In-Store View" where you can see orders made to be collected from in-store. From there you can navigate to "Location Geofence" where you can see the Location Services-provided map and simulated user - from here you can initiate simulations of users travelling close to the default configured store either during a scenario where Location Services can be used to enable a quick collection of bought products and related messaging using Pinpoint Transactional Messaging to email, SMS or web ("collection" scenario), or where the user might be inspired to enter the store to make a new purhcase through the triggering of personalised messages sent using Pinpoint Campaigns to email, SMS and web, either containing offers chosen with Amazon Personalize or containing notices about unfinished shopping carts ("purchase" scenario). -Customers are inspired to opt in to share their location by being -provided with personalized offers. These offers can be related to -customer preferences, local stock levels, and more. In this demo -we use Amazon Personalize to select an offer to show to a consumer -that can be redeemed in-store. The consumer has the extra convenience -and we have enaged with them in a targeted fashion and, moreover, -attracted them into our bricks and mortar store where the experience -will be, naturally, more personal than online. +### Enable email sending. +If you are in the email "sandbox" for Pinpoint, then all recipient emails must be verified according to the below process, to ensure that the emails will be sent. -There is also an in-store interface that shows a sample view for store -staff showing orders that are about to be collected, and transactional messaging -for user and store staff around pickup that is triggered by the user approaching -the store for pickup. +* After deploying the demo, navigate to your Pinpoint application called "retaildemostore" in the UI Console (https://console.aws.amazon.com/pinpoint/home making sure that the region is the same one in which you deployed your demo). +* Click on "Settings" > "Email" in the navigation menu. +* Under the "Identities" tab, click "Edit". +* Ensure the email channel for the project is set to "Enabled" (this will be set after Amazon Personalize campaigns are finished deploying, but you may set it beforehand). +* For the email that you used when you deployed the solution under "Reply-To email address", ensure that the email address is verified. Select this as your "Default sender address". +* For every email to which you plan to send emails, ensure that the email address is verified. +* Save the changes. +Note that you can manage your email and SMS limits within the "Settings" > "Email" and "Settings" > "SMS and voice" menus available under your Pinpoint project. Also note that there are additional limits imposed when your account is in the Pinpoint "sandbox". +Enable SMS sending. -Using the Location Services Demo - - - -To use the Amazon Location functionality, Location Services must be enabled in your region. -First, ensure you are deploying Retail Demo Store in a region in which -Location is enabled. Next, enable - -and "Deploy personalized offers and -pickup notices using Location Services geofencing" -when deploying or updating the solution from CloudFormation. -A Location geofence will be set up for you. - - -From any Retail Demo Store "Shop" menu You can access the Location "In-Store View" -where you can see orders made to be collected from in-store. From there you can navigate to -"Location Geofence" where you can see the Location Services-provided map and simulated user -- from here you can initiate -simulations of users travelling close to the default configured store either during a scenario -where Location Services can be used to enable a quick collection of bought products -and related messaging using Pinpoint Transactional Messaging to email, SMS or web -("collection" scenario), or where the user might be inspired to enter the store to make a -new purhcase through the triggering of personalised messages sent using Pinpoint Campaigns -to email, SMS and web, either containing offers chosen with Amazon Personalize or containing -notices about unfinished shopping carts ("purchase" scenario). - - - -If you are in the email "sandbox" for Pinpoint, then all recipient -emails must be verified according to the below process, to ensure -that the emails will be sent. - - -After deploying the demo, navigate to your Pinpoint application -called "retaildemostore" in the UI Console -(https://console.aws.amazon.com/pinpoint/home making sure that the region -is the same one in which you deployed your -demo). - - - -Ensure the email channel for the project is set to "Enabled" -(this will be set after Amazon Personalize campaigns -are finished deploying, but you may set it beforehand). - -For the email that you used when you deployed the solution -under "Reply-To email address", ensure that the email -address is verified. Select this as your "Default sender address". - -For every email to which you plan to send emails, -ensure that the email address is verified. - - - - -Note that you can manage your email and SMS limits within the -"Settings" > "Email" and "Settings" > "SMS and voice" -menus available under your Pinpoint project. -Also note that there are additional limits imposed when your account is -in the Pinpoint "sandbox". - - - -Ensure any phone number in the Pinpoint database -to which you intend to send promotional messages (the "purchase" journey -above - for the "collection" journey, the phone number will be recorded against the order) -has opted in to receive promotional messages. For more information on how to ensure this, -see the section in the - -Pinpoint messaging workshop. -In brief, you need to (in the USA): - - -Subscribe to a long-code that supports SMS through the Pinpoint UI so that Pinpoint has a number -to send messages from (this is a requirement in the USA to send messages). - -Enable 2-way messaging on that long-code and choose the SNS PinpointIncomingTextAlerts -topic that was deployed along with Retail Demo Store to send messages to, so that responses -to verification SMS messages can be processed to opt in users. - -Enter your phone number from the UI to start the verification process and reply to the text -message sent to your phone to opt in. - - - - - - - - -import {mapState} from 'vuex'; - -import ArticleLayout from '../ArticleLayout.vue'; -import ArticleFeature from '../ArticleFeature/ArticleFeature.vue'; - -export default { - name: 'LocationServices', - components: {ArticleLayout, ArticleFeature}, - computed: {...mapState({isMobile: (state) => state.modal.isMobile})}, -}; - - - -.digital-interactions { - margin-bottom: 9rem; -} - -.logo-and-quote--mobile { - margin-bottom: 20px; - flex-direction: column; -} - -.logo-and-quote--mobile .dominos { - width: auto; - max-width: 300px; -} - -.cloudformation-text { - font-family: "Droid Sans Mono", "Courier New", monospace; -} - -.subheading { - font-size: 70%; - font-weight: bold; -} - -.feature-subheading { - font-size: 100%; -} - +Ensure any phone number in the Pinpoint database to which you intend to send promotional messages (the "purchase" journey above - for the "collection" journey, the phone number will be recorded against the order) has opted in to receive promotional messages. For more information on how to ensure this, see the "Two-Way SMS with Pinpoint" section in the Pinpoint messaging workshop. In brief, you need to (in the USA): +* Subscribe to a long-code that supports SMS through the Pinpoint UI so that Pinpoint has a number to send messages from (this is a requirement in the USA to send messages). +* Enable 2-way messaging on that long-code and choose the SNS PinpointIncomingTextAlerts topic that was deployed along with Retail Demo Store to send messages to, so that responses to verification SMS messages can be processed to opt in users. +* Enter your phone number from the UI to start the verification process and reply to the text message sent to your phone to opt in. \ No newline at end of file diff --git a/docs/Technical Guides/Marketing and Amazon Pinpoint/PersonalizedEmails.md b/docs/Technical Guides/Marketing and Amazon Pinpoint/PersonalizedEmails.md index a578945e2..6b46fe70f 100644 --- a/docs/Technical Guides/Marketing and Amazon Pinpoint/PersonalizedEmails.md +++ b/docs/Technical Guides/Marketing and Amazon Pinpoint/PersonalizedEmails.md @@ -24,26 +24,9 @@ to your shopping cart. In the shopping cart page, click on the button that says email”. This action will emulate a signed out event and will trigger the abandoned cart email sent by Amazon Pinpoint. Next, check the email account provided during account creation. The Abandoned Shopping Cart email will be in your inbox. - - -![img](../../assets/netflix.png) - Migrated 100% of email sending activities to Amazon SES - 100M+ emails sent per day in 190n countries - Inbox placement rate > 99% - Reputation score 97/100 - -“Amazon SES helped us be elastic, we could pay as we went along, and we could stop worrying about optimizing -settings for each ISP.” -Devika Chawla -Director of Messaging and Platform Engineering. Netflix - - - - - diff --git a/docs/Technical Guides/Personalisation with Amazon Personalize/2-Personalization.md b/docs/Technical Guides/Personalisation with Amazon Personalize/2-Personalization.md index 2c9c9a543..08e2eff18 100644 --- a/docs/Technical Guides/Personalisation with Amazon Personalize/2-Personalization.md +++ b/docs/Technical Guides/Personalisation with Amazon Personalize/2-Personalization.md @@ -1,10 +1,10 @@ # Personalization -[1 - Creating the Account](../../Deployment/1-Creating-account.md) > 2 - Personalization + Personalized user experiences are implemented across several features within the Retail Demo Store web user interface that demonstrate three core use-cases of Amazon Personalize as well as real-time recommendations. -> In order to demonstrate the personalization capabilities of the Retail Demo Store, the required Amazon Personalize Solutions and Campaigns must already be created and enabled via Amazon SSM Parameters. These Solutions and Campaigns can be created as part of the [Personalization workshop](../workshop/1-Personalization/Lab-01-(Core)-Introduction-and-data-preparation.ipynb) bundled with the Retail Demo Store or automatically when the Retail Demo Store is deployed via CloudFormation. If you’re demonstrating with the Retail Demo Store this should already be done for you but still good to be aware if personalization features are not working as expected. +> In order to demonstrate the personalization capabilities of the Retail Demo Store, the required Amazon Personalize Solutions and Campaigns must already be created and enabled via Amazon SSM Parameters. These Solutions and Campaigns can be created as part of the [Personalization workshop](https://github.com/aws-samples/retail-demo-store/blob/master/workshop/1-Personalization/Lab-01-(Core)-Introduction-and-data-preparation.ipynb) bundled with the Retail Demo Store or automatically when the Retail Demo Store is deployed via CloudFormation. If you’re demonstrating with the Retail Demo Store this should already be done for you but still good to be aware if personalization features are not working as expected. ## Datasets @@ -39,9 +39,9 @@ Events for multiple event types are generated to mimic shopping behavior. For ex ## Emulating Shopper Profiles -With Amazon Personalize Solutions and Campaigns created based on the generated users, items, and interactions datasets, we can emulate (or assume) user profiles for different personas in the web user interface to see recommendations that should be consistent with the persona. In order to emulate a profile, you must first sign in to the user account you created for yourself as described in [Creating a Retail Demo Store account](1-Creating-account.md). Once signed in, you can click on your username in the top right-corner and then select Switch Shoppers. +With Amazon Personalize Solutions and Campaigns created based on the generated users, items, and interactions datasets, we can emulate (or assume) user profiles for different personas in the web user interface to see recommendations that should be consistent with the persona. In order to emulate a profile, you must first sign in to the user account you created for yourself as described in [Creating a Retail Demo Store account](../../Deployment/getting-started.md). Once signed in, you can click on your username in the top right-corner and then select Switch Shoppers. -![image.png](../workshop/images/retaildemostore-user-menu.png) +![image.png](../../assets/retaildemostore-user-menu.png) Figure 7. Access Profile Page. @@ -57,7 +57,7 @@ The user personalization use-case is implemented on the bottom half of the Retai > Since the Retail Demo Store is using a Personalize Event Tracker to record real-time interaction events, it is important to keep in mind that recommendations will change as a result of your clicking and browsing activity in the web application. Therefore, the recommendations may not match up to the original shopper persona used to train the model. This is a powerful demo feature, though, since it shows how Personalize adapts to evolving user intent. It can also show how recommendations adapt for new users (i.e. cold starting users). -![image.png](../workshop/1-Personalization/images/retaildemostore-product-recs.jpg) +![image.png](https://github.com/aws-samples/retail-demo-store/blob/master/workshop/1-Personalization/images/retaildemostore-product-recs.jpg?raw=true) Figure 8. User recommendation use-case. @@ -67,7 +67,7 @@ Figure 8. User recommendation use-case. The related products use-case is implemented on the product detail page in the Retail Demo Store. Since inference calls to campaigns built with the SIMS recipe do not require a user, we are able to display related products using SIMS whether you are signed in as a user or anonymous. -![image.png](../workshop/1-Personalization/images/retaildemostore-related-products.jpg) +![image.png](https://github.com/aws-samples/retail-demo-store/blob/master/workshop/1-Personalization/images/retaildemostore-related-products.jpg?raw=true) Figure 9. Related products use-case. @@ -77,13 +77,13 @@ Figure 9. Related products use-case. When you are signed in as a Retail Demo Store user, the personalized ranking use-case is implemented on the category view in the Retail Demo Store. When you are an anonymous user, products are displayed in their natural order (i.e. not ranked). The most effective view to demonstrate this use-case is on the “Featured” product view. The reason for this is that this is the one category view that includes products from multiple categories. Therefore, the ranking should be more impactful. -![image.png](../workshop/1-Personalization/images/retaildemostore-personalized-ranking.jpg) +![image.png](https://github.com/aws-samples/retail-demo-store/blob/master/workshop/1-Personalization/images/retaildemostore-personalized-ranking.jpg?raw=true) Figure 10. Personalized Ranking use-case. You can also see personalized ranking in product search results. That is, if you are signed in as a user, search results are reranked based on the user's historical and real-time activity. -![image.png](../workshop/1-Personalization/images/retaildemostore-personalized-search.jpg) +![image.png](https://github.com/aws-samples/retail-demo-store/blob/master/workshop/1-Personalization/images/retaildemostore-personalized-search.jpg?raw=true) ## Event Tracking @@ -109,7 +109,7 @@ To assess the impact of real-time event tracking in recommendations made by the If you are demonstrating the Retail Demo Store to a more technical audience, you can illustrate how the events are sent to Pinpoint and Personalize in the background. To do so, open up the Developer Tools in the web browser you’re using (i.e. Chrome), select the Network view, and find the calls to “events” (Personalize) and “legacy” (Pinpoint). The screenshot below illustrates how to display the network call to the Personalize Event Tracker for the “put\_events” endpoint. This is implemented using AWS Amplify to instrument events in the web user interface. -![image.png](../workshop/images/Eventinstrumentationcalls.png) +![image.png](https://github.com/aws-samples/retail-demo-store/blob/master/workshop/images/Eventinstrumentationcalls.png?raw=True) Figure 11. Event instrumentation calls diff --git a/docs/Technical Guides/Personalisation with Amazon Personalize/PopularByPurchases.md b/docs/Technical Guides/Personalisation with Amazon Personalize/PopularByPurchases.md index 1f9554212..4653410d6 100644 --- a/docs/Technical Guides/Personalisation with Amazon Personalize/PopularByPurchases.md +++ b/docs/Technical Guides/Personalisation with Amazon Personalize/PopularByPurchases.md @@ -20,8 +20,3 @@ a great way to ensure that a user-defined percentage of recommended items match relevant to the user. This can be used to highlight products on sale or new products recently added to the catalog. - -You can read more about promotional filters on the . - - - diff --git a/docs/Technical Guides/Personalisation with Amazon Personalize/PopularByViews.md b/docs/Technical Guides/Personalisation with Amazon Personalize/PopularByViews.md index bd2ad30ac..daba3e980 100644 --- a/docs/Technical Guides/Personalisation with Amazon Personalize/PopularByViews.md +++ b/docs/Technical Guides/Personalisation with Amazon Personalize/PopularByViews.md @@ -29,6 +29,4 @@ relevant to the user. This can be used to highlight products on sale or new prod -You can read more about promotional filters on the . - diff --git a/docs/assets/retail-demo-store-personalization-architecture.png b/docs/assets/retail-demo-store-personalization-architecture.png new file mode 100644 index 000000000..7248daef9 Binary files /dev/null and b/docs/assets/retail-demo-store-personalization-architecture.png differ diff --git a/docs/assets/retaildemostore-confirm.png b/docs/assets/retaildemostore-confirm.png new file mode 100644 index 000000000..b0cbb3a2d Binary files /dev/null and b/docs/assets/retaildemostore-confirm.png differ diff --git a/docs/assets/retaildemostore-create-acct-link.png b/docs/assets/retaildemostore-create-acct-link.png new file mode 100644 index 000000000..2193ac2c2 Binary files /dev/null and b/docs/assets/retaildemostore-create-acct-link.png differ diff --git a/docs/assets/retaildemostore-create-acct.png b/docs/assets/retaildemostore-create-acct.png new file mode 100644 index 000000000..766181baa Binary files /dev/null and b/docs/assets/retaildemostore-create-acct.png differ diff --git a/docs/assets/retaildemostore-home-phone.png b/docs/assets/retaildemostore-home-phone.png new file mode 100644 index 000000000..34f242374 Binary files /dev/null and b/docs/assets/retaildemostore-home-phone.png differ diff --git a/docs/assets/retaildemostore-home-tablet.png b/docs/assets/retaildemostore-home-tablet.png new file mode 100644 index 000000000..881f39311 Binary files /dev/null and b/docs/assets/retaildemostore-home-tablet.png differ diff --git a/docs/assets/retaildemostore-home.png b/docs/assets/retaildemostore-home.png new file mode 100644 index 000000000..de991eceb Binary files /dev/null and b/docs/assets/retaildemostore-home.png differ diff --git a/docs/assets/retaildemostore-signin.png b/docs/assets/retaildemostore-signin.png new file mode 100644 index 000000000..6c87e6cee Binary files /dev/null and b/docs/assets/retaildemostore-signin.png differ diff --git a/docs/assets/retaildemostore-user-menu.png b/docs/assets/retaildemostore-user-menu.png new file mode 100644 index 000000000..e479b9944 Binary files /dev/null and b/docs/assets/retaildemostore-user-menu.png differ